I filtri Infinite Impulse Response (IIR) sono scelte popolari per la loro semplicità e l'efficienza computazionale. Questo articolo fornisce una guida completa per la progettazione di questi filtri, la teoria della copertura, l'implementazione pratica e le migliori pratiche per migliorare le prestazioni del dispositivo IoT.

Comprensione dei filtri IIR a basso ordine

I filtri IIR sono filtri digitali caratterizzati da feedback, il che significa che la loro uscita dipende sia dagli input attuali che dal passato, sia dalle uscite precedenti. Il termine "basso ordine" si riferisce tipicamente ai filtri con uno o due poli e uno o due zeri - filtri di primo ordine o secondo ordine. Questi filtri sono particolarmente adatti per dispositivi IoT con risorse, perché richiedono meno operazioni con moltiplicazioni e meno memoria rispetto agli equivalenti di ordine superiore o filtri FiniFIR.

Un filtro IIR di primo ordine ha una funzione di trasferimento del modulo:

Un filtro IIR di secondo ordine (spesso chiamato biquad) ha la forma:

I coefficienti b0, b1, b2 (per secondo ordine) determinano gli zero (feedforward), mentre a1, a2 determinano i poli (feedback).

I filtri IIR di basso ordine eccelleno in attività come riduzione del rumore, spianamento del segnale e selezione di frequenza. Ad esempio, un filtro a basso passaggio può rimuovere il rumore ad alta frequenza da un sensore di temperatura, mentre un filtro ad alto passaggio può rimuovere la deriva DC in un segnale di accelerometro. La loro natura ricorsiva consente un roll-off affilato con pochissimi coefficienti, rendendoli ideali per dispositivi alimentati a batteria dove ogni microamp della corrente e ogni byte di memoria.

Principi di progettazione

Selezione del tipo di filtro

La scelta del prototipo del filtro (analogico o digitale) definisce i trade-off tra flatness del passband, attenuazione della banda ferma e linearità di fase.

  • Butterworth[]: Fornisce una banda passante maximente piatta senza alcuna increspatura. Offre un roll-off monotonico ma richiede un ordine più alto per ottenere una data attenuazione della banda di arresto rispetto ai filtri Chebyshev. Spesso preferibile per il condizionamento del segnale del sensore in cui l'accuratezza dell'ampiezza è critica.
  • Chebyshev[]: Consente di increspare nella banda passante (Tipo I) o stopband (Tipo II). In cambio di una piccola quantità di banda passante, i filtri Chebyshev forniscono una banda di transizione più affilata per un dato ordine di filtro.
  • Belle[]: Ottimizzato per la risposta di fase lineare (ritorno di gruppo costante), mantenendo la forma del segnale nel dominio del tempo. Tuttavia, i filtri Bessel hanno un roll-off più lento. Ideale per applicazioni in cui la risoluzione e la ringhiatura devono essere minimizzate, come ad esempio nei loop di controllo o crossover audio.
  • Elliptic (Cauer)[[]: Fornisce il roll-off più ripido per un dato ordine permettendo la ripple sia in banda passante che in stopband. Raramente utilizzato per i disegni IoT di basso ordine perché le prestazioni migliorate spesso richiedono la precisione di punto mobile e la quantizzazione accurata del coefficiente.

Per la maggior parte delle applicazioni IoT di basso ordine, i filtri Chebyshev Butterworth e di primo ordine forniscono un buon equilibrio. Il design del filtro viene spesso eseguito nel dominio continuo utilizzando i tavoli del prototipo normalizzato, poi trasformato nel domain a z discrete-time tramite la trasformazione bilineare (con pre-riscaldamento) o il metodo di invarianza dell'impulso.

Parametri di progettazione chiave

  • Frequenza di Cutoff (fc)[]: La frequenza alla quale la risposta di magnitudo del filtro scende di 3 dB (per il passaggio basso/altopasso).
  • Filter Order (N)[]: Per i filtri di ordine basso, N è 1 o 2. Gli ordini più elevati possono essere realizzati mediante la cascata di più sezioni biquad, ma l'articolo si concentra sui disegni a sezione singola.
  • Passband Ripple e Stopband Attenuation[[[]: Critical per Chebyshev e filtri Ellittici. Un passabanda comune di 0,5 dB è accettabile in molte applicazioni di sensori IoT. L'attenuazione di stopband di 20–40 dB è spesso sufficiente per rimuovere le sorgenti tipiche di rumore.
  • Stability Margins[: Con aritmetica a punto fisso, la arrotondazione del coefficiente può spingere i poli fuori dal cerchio dell'unità. Scegliere le rappresentazioni del coefficiente con i bit sufficienti (ad esempio, il formato Q15 o Q31) e verificare le posizioni dei poli dopo la quantizzazione.

Trade-offs in Low-Order Design

La limitazione primaria dei filtri IIR di basso ordine è la graduale roll-off (slope) e la più ampia banda di transizione rispetto ai filtri di ordine superiore. Un filtro di primo ordine a basso passaggio attenua solo 20 dB per decennio, mentre un filtro di secondo ordine fornisce 40 dB per decennio. Per molte applicazioni di IoT - come il filtraggio 50/60 Hz principale hum da un segnale sensore di bassa frequenza - un filtro di seconda fase deve tagliare spesso i costi rispetto ai requisiti.

Il processo di progettazione

La progettazione di un filtro IIR di basso ordine per un dispositivo IoT comporta diversi passaggi sistematici, illustrando un flusso di lavoro tipico utilizzando un filtro di passaggio basso di secondo ordine come esempio.

Passo 1: Definire le specifiche

Determinare la frequenza del bordo del passband (fp), frequenza del bordo della banda di stopband (fs), ripple del passband (Ap), e attenuazione della banda di stopband (As). Per esempio, potremmo desiderare un filtro a basso passaggio con un cutoff 3dB a 10 Hz, un bordo della banda di stopband a 30 Hz con almeno 20 dB attenuazione, e una frequenza di campionamento di 100 Hz.

Passo 2: Selezionare Prototipo e Ordine

Scegli un tipo di filtro e trova l'ordine richiesto utilizzando grafici o formule. Per un filtro Butterworth, l'ordine N soddisfa:

Nel nostro esempio, con As=20 dB, Ap=3 dB (in realtà il riferimento è spesso il punto 3-dB), un Butterworth di primo ordine produce solo circa 7 dB a 30 Hz (20 dB/decendio, rapporto 3:1 dà ~11 dB attenuazione, non abbastanza).

Passo 3: Determinare i poli e gli zero del prototipo analogico

Per un secondo ordine Butterworth low-pass, i poli analogici normalizzati sono a s = -0.7071 ± j0.7071 (per un cutoff di 1 rad/s). Utilizzare pre-warping se la progettazione tramite la trasformazione bilineare: frequenza critica pre-warped ωa = (2/T) * tan(ωd*T/2), dove T = 1/fsω.

Passo 4: Trasformazione bilineare a digitale

Applicare la sostituzione s = (2/T) * (z-1)/(z+1). Per una funzione di trasferimento analogico di secondo ordine, la manipolazione algebrica produce i coefficienti digitali. In alternativa, utilizzare formule o tabelle di design ben note. Per un biquad di passaggio basso Butterworth con frequenza di cutoff ωc (digitale), i coefficienti possono essere calcolati come segue (forma):






] [


][
]
[F] [FLT]] [FLT]] [FLT] [FLT]] [F] [FLT]] [FLT] [FLT]]]]] [FLT]]] [F] [F] [F] [F]]] [FLT] [F]]] [FLT] [FLT] [FLT]]]]]] [FLT] [F:9] [F] [F] [F] [FLT]] [FLT] [F]]]]] [F] [FLT] [FLT]]]]] [FLT]]]]] [FLT]]]]]] [FLT] [FLT] [

Per il nostro taglio 10 Hz a campionamento 100 Hz, theta = 0.628, sin(theta)=0.588. I numeri di inserimento producono coefficienti che garantiscono stabilità. Strumenti come Analog Devices Filter Wizard[] o ]TI FilterPro]]] automatizzare questo passaggio.

Passo 5: Quantize Coefficients per Fixed-Point

Convertire coefficienti a punto variabile in rappresentazione a punto fisso, come il formato Q15 (16-bit firmato con 15 bit frazionari). La quantizzazione introduce l'errore di arrotondazione; verificare che i coefficienti quantizzati non causano instabilità. Per un filtro di secondo ordine, anche la quantizzazione a 16 bit è di solito sufficiente se le posizioni dei poli non sono estremamente vicine al cerchio di unità (cioè fattori bassi).

Passo 6: Esecuzione dell'equazione di differenza

La struttura trasposta diretta I o II è comune per IIR di basso ordine. La forma diretta II trasposta è consigliata per ridurre il rumore di quantizzazione e la prevenzione del sovraflusso. L'equazione di differenza per un filtro di secondo ordine è:

Per il punto fisso, utilizzare accumulatori aritmetici o a doppia scala se disponibili (ad esempio, accumulo a 32 bit per coefficienti e dati a 16 bit) Molti fornitori di microcontrollori forniscono librerie DSP ottimizzate, come ARM CMSIS-DSP, che includono funzioni di filtro biquad con coefficienti bilanciati correttamente.

Attuazione in IoT Dispositivi

I filtri IIR di basso ordine su microcontroller richiedono attenzione al layout della memoria, interrompere la latenza e il consumo di energia.

Strategie aritmetiche a punto fisso

La maggior parte dei microcontrollori ARM Cortex-M0/M4 supportano le operazioni a 32 bit. Un approccio comune è quello di memorizzare i coefficienti e i dati come interi firmati a 16 bit in formato Q15 (range -1.0 a 0.9999). Le moltiplicazioni producono risultati a 32 bit; per un biquad, utilizzare un doppio-accumulatore quindi spostare e saturare indietro a 16 bit.

Minimizzare la memoria e il formato del codice

Un singolo biquad richiede la memorizzazione di 5 coefficienti e 2 variabili di stato (per la forma diretta recepita II). Si tratta di circa 7-10 parole a 16 bit, trascurabili su qualsiasi MCU moderno. Il loop del filtro può essere scritto in tre o quattro linee di codice C. Per più canali (ad esempio, audio stereo o multisensore), condividere gli stessi coefficienti ma mantenere stati per canale.

Operazione in tempo reale

I dispositivi IoT spesso campionano i sensori a bassa velocità (1 Hz a 1 kHz). Un singolo filtro biquad consuma solo pochi microsecondi di tempo della CPU per campione, lasciando ampio tempo per altre attività. Per i flussi di dati continui, implementare il filtro in una routine di servizio di interruzione (ISR) o tramite un buffer circolare DMA dedicato. I coefficienti di filtro possono essere modificati on-the-fly se il dispositivo deve adattarsi a diverse condizioni di rumore fatto, ma assicurarsi che il passaggio è stato è stato.

Ottimizzazione di potenza

Il filtro stesso contribuisce molto poco all'estrazione di potenza complessiva — spesso inferiore allo 0,1% dell'energia MCU quando si esegue a velocità di clock basse. Tuttavia, il filtro può consentire al MCU di utilizzare tassi di campione più bassi o di dormire più a lungo tra i campioni.

Vantaggi e trade-off di filtri IIR a basso ordine

Vantaggi

  • Low computational complessity[: tipicamente 5 moltiplicatori per campione per secondo ordine, rispetto a decine o centinaia per un filtro FIR.
  • Elaborazione rapida[]: Adatto per applicazioni in tempo reale con alti tassi di campionamento (ad esempio, audio fino a 48 kHz).
  • Requisiti di memoria minimi[[]: Solo poche variabili e coefficienti di stato, non è necessario alcun buffer di rubinetto.
  • Ease of Implementation[: Disponibile nelle librerie MCU DSP; il codice è breve e facile da verificare.
  • Buone attenuazioni per ordine[[: Un IIR di secondo ordine può outperform un FIR di alto ordine quando la fase lineare non è richiesta.

Scambi e limitazioni

  • Risposta non lineare di fase[[[]: I filtri IIR hanno ritardo di gruppo dipendente dalla frequenza, che può distorcere le forme del segnale.
  • Instabilità potenziale[[]: La quantizzazione coefficiente, soprattutto in punto fisso, può spingere i poli fuori dal cerchio dell'unità.
  • Ricchezza di roll-off a limited[[]: Per un dato ordine, la banda di transizione è più ampia di un FIR equivalente con molti rubinetti. Se avete bisogno di un cutoff molto tagliente, è necessario cascata più biquad, aumentando la complessità.
  • Nessuna fase lineare[[]: I filtri FIR possono raggiungere esattamente la fase lineare, rendendoli preferibili per determinate comunicazioni di dati e elaborazione delle immagini.
  • Sensibilità al coefficiente di arrotondazione[[: I filtri ellittici e i disegni ad alto livello di Q soffrono di grandi cambiamenti di coefficiente dovuti alla quantizzazione, che richiedono una maggiore precisione (ad esempio, punto fisso a 32 bit o punto galleggiante).

Nonostante questi compromessi, la maggior parte dei compiti di filtraggio dei sensori IoT (temperatura, umidità, pressione, vibrazioni, audio semplice) possono essere adeguatamente serviti dai filtri IIR di basso ordine ben progettati.

Applicazioni pratiche ed esempi

Riduzione del rumore nei sensori di temperatura

Un'uscita del sensore di temperatura contiene spesso un rumore ad alta frequenza da quantizzazione ADC e interferenza elettromagnetica. Un filtro IIR a basso passaggio di primo ordine con un cutoff di 0,1 Hz (se campionamento a 1 Hz) leviga la lettura senza aggiungere lag significativo. I coefficienti per un tale filtro sono estremamente semplici — spesso un singolo alfa costante dove y[n] = alfa * x[n] + (1-alfa) * y[n-controllo medio] è classico.

Rimozione di Offset DC in Accelerometers

Gli acclerometro utilizzati nel monitoraggio delle attività o delle vibrazioni hanno spesso un componente DC a causa della gravità. Un filtro passa-alto con un cutoff molto basso (ad esempio, 0,5 Hz) può rimuovere questo offset mentre passa i segnali dinamici. Un biquad di passaggio ad alto valore Butterworth di secondo ordine fornisce un roll-off affilato per regolare rapidamente dopo l'inizializzazione.

Pre-processsing audio per comandi vocali

I dispositivi IoT con microfoni utilizzano filtri IIR di basso ordine come parte di una catena di rilevamento delle attività vocali (VAD). Un filtro passabanda (cascata di passaggio basso e alto-pass) incentrato sulla gamma di frequenza vocale (300-3400 Hz) riduce il rumore di fondo prima di alimentare in un rilevatore di parole di sveglia. I filtri devono essere progettati con attenzione per evitare distorsioni di fase che potrebbero influenzare la consistenza delle caratteristiche audio.

Reiezione del rumore della linea di alimentazione

Per i sensori che misurano i segnali di basso livello vicino alla rete AC, è essenziale un filtro di notch (band-stop) a 50/60 Hz. Un filtro di secondo ordine IIR notch può essere progettato con una tacca molto stretta. La funzione di trasferimento posiziona gli zero sul cerchio dell'unità alla frequenza di tacca. Il filtro richiede coefficienti di alta precisione perché gli zero sono esattamente sul cerchio dell'unità; l'implementazione di punto fisso deve gestire questo con attenzione, spesso richiedendo a 32-m.

Conclusioni

Progettare filtri IIR di basso ordine per dispositivi IoT è un equilibrio pratico tra qualità del segnale e conservazione delle risorse. Selezionando il tipo di filtro appropriato e misurando con attenzione i coefficienti, gli sviluppatori possono ottenere una rimozione efficace del rumore e la selezione della frequenza con minimo impronta della CPU e della memoria. La semplicità dei filtri di primo e secondo ordine li rende ideali per sensori alimentati a batteria, monitor per la salute indossabili e dispositivi smart home.