[TUTORIAL] Acquisire e filtrare segnali con Arduino – Realizzare facilmente un filtro software a media mobile

Se ci troviamo davanti alla necessità di filtrare un segnale analogico che dobbiamo acquisire con Arduino, la prima cosa che ci viene in mente di fare è quella di inserire, tra il sensore e l’ingresso analogico, una rete RC che “lisci” il nostro segnale. In questo articolo illustro come implementare con Arduino un filtro software a media mobile.

 

 Iscriviti al nostro canale YouTube per saperne di più! 🙂

IL FILTRAGGIO DIGITALE

Nonostante questa sia un’ottima soluzione, penso che avere un filtraggio a livello software sia una soluzione più elegante. I motivi per i quali un filtro software a media mobile è preferibile essenzialmente due:

-Non necessita di componenti aggiuntivi (anche se un filtro RC esterno sarebbe opportuno per evitare l’aliasing)

-E possibile regolare (anche dinamicamente) il livello di filtraggio desiderato.

Iscriviti al nostro canale YouTube per saperne di più! 🙂

Esistono più tecniche di filtraggio digitale, ma per me che non sono mai stato in mago del filtraggio digitale, il filtro più semplice e intuitivo che sono riuscito a realizzare è il FILTRO A MEDIA MOBILE (filtro FIR).

Questa tipologia di filtro non fa altro che calcolare la media tra l’ultimo campione acquisito e un numero variabile di campioni precedentemente acquisiti. Il numero di campioni sui quali viene effettuata la media è detta PROFONDITA’ DEL FILTRO e, maggiore sarà questo numero, maggiore sarà il livello di filtraggio. C’è anche da considerare che il livello di filtraggio dipende anche dalla frequenza di campionamento.

ATTENZIONE: La controindicazione che in questo particolare caso abbiamo, è quella di non impostare la profondità del filtro non superiore ai 30 campioni. Questo perchè, essendo la variabile utilizzate per fare la somma un intero, e essendo il valore massimo di ogni campione 1023, c’è il rischio di andare in OVERFLOW. Questo comporterebbe un valore errato di uscita.

Riporto di seguito l’esempio e i sorgenti d’esempio scaricabili
[crayon-5dd876b4944cc706211797/]
Potere scaricare il codice d’esempio per il filtraggio software e le librerie annesse a questo link:

https://github.com/nerdityourself/Filtro_media_mobile

Precedente [TUTORIAL]Misurare il battito cardiaco con Arduino - Connettere il sensore XD-58C ad Arduino XD58C Successivo Come iniziare con il Raspberry Pi