Salta al contenuto
Note per Studenti Discretizzazione di Eulero e Tustin

Discretizzazione di Eulero e Tustin

In questa pagina 3

Un filtro o un regolatore sono quasi sempre progettati nel dominio continuo, con una funzione di trasferimentorapporto tra trasformata dell'uscita e dell'ingresso di un sistema lineare F(s)F(s). Per realizzarlo in un µC o DSP bisogna trasformarlo in un algoritmo a tempo discreto (Filtri numerici IIR e FIRUn filtro numerico è una equazione alle differenzerelazione che dà il campione di uscita in funzione di campioni di ingresso e di uscita passati $y(k)=\sum_ib_ix(k-i)+\sum_ia_iy(k-i)$. IIR (ricorsivo: qualche $a_i\ne0$) ha risposta impulsiva infinita e bastano pochi termini; FIR (tutti $a_i=0$) è sempre stabile ma richiede molti termini. Il passa-basso IIR del primo ordine $y(k)=b,x(k)+a,y(k-1)$ con $a+b=1$ ha guadagno 1 ed è stabile se $|a|<1$; la risposta al gradino è $y(k)=1-a^{k+1}$. Il filtro analogico equivalente (Eulero) ha $\tau=\dfrac{a,T_c}{1-a}$ e $f_T=\dfrac1{2\pi\tau}$. La media mobile di $N$ campioni è un FIR passa-basso che si assesta in $N$ passi.Filtri numerici IIR e FIR →). Il modo più comune è la discretizzazione: si approssima l'operatore integrale 1s\frac1s con una sua versione a tempo discreto. Il periodo di campionamento Tc=1/fcT_c=1/f_c è anche detto passo di integrazionel'intervallo di tempo tra due campioni usato per approssimare l'integrale.

Approssimazione di Eulero

Sia x(k)x(k) il segnale campionato. L'integrale si approssima con una somma di rettangoli: ∫0nTcx dt≈Tc∑k=1nx(k)⇒Int(nTc)=Int((n−1)Tc)+Tc x(n).\int_0^{nT_c}x\,dt\approx T_c\sum_{k=1}^nx(k)\quad\Rightarrow\quad\mathrm{Int}(nT_c)=\mathrm{Int}\big((n-1)T_c\big)+T_c\,x(n). In termini di operatori: con z−1z^{-1} ritardo di un campioneoperatore z elevato a meno 1: restituisce il campione precedente, I(z)=Tc X(z)1−z−1I(z)=T_c\,\dfrac{X(z)}{1-z^{-1}} e quindi  s=1−z−1Tc ⟺1s=Tc1−z−1.\boxed{\ s=\frac{1-z^{-1}}{T_c}\ }\qquad\Longleftrightarrow\qquad\frac1s=\frac{T_c}{1-z^{-1}} . Nel codice vuol dire: la moltiplicazione per ss è la differenza x(k)−x(k−1)Tc\frac{x(k)-x(k-1)}{T_c} e la divisione per ss è un accumulatorevariabile a cui si somma a ogni passo un nuovo termine y(k)=y(k−1)+Tc x(k)y(k)=y(k-1)+T_c\,x(k).

Dall'analogico all'algoritmo

Si sostituisce s=1−z−1Tcs=\frac{1-z^{-1}}{T_c} in F(s)F(s), si moltiplica numeratore e denominatore per TcT_c e si riconosce l'equazione alle differenze (il coefficiente di y(k)y(k) si porta a 1).

Dall'algoritmo all'analogico equivalente

Dato y(k)=a1y(k−1)+b0x(k)+b1x(k−1)y(k)=a_1y(k-1)+b_0x(k)+b_1x(k-1), la funzione di trasferimento è F(z)=b0+b1z−11−a1z−1F(z)=\dfrac{b_0+b_1z^{-1}}{1-a_1z^{-1}}. Con z−1≈e−sTc≈1−sTcz^{-1}\approx e^{-sT_c}\approx1-sT_c: F(s)≈(b0+b1)−b1Tc s(1−a1)+a1Tc s=b0+b11−a1⏟guadagno in continua⋅1+sτz1+sτp,τp=a1Tc1−a1,τz=−b1Tcb0+b1.F(s)\approx\frac{(b_0+b_1)-b_1T_c\,s}{(1-a_1)+a_1T_c\,s}=\underbrace{\frac{b_0+b_1}{1-a_1}}_{\text{guadagno in continua}}\cdot\frac{1+s\tau_z}{1+s\tau_p},\qquad\tau_p=\frac{a_1T_c}{1-a_1},\quad\tau_z=-\frac{b_1T_c}{b_0+b_1}. Esempio (tema d'esame febbraio 2026): y(k)=0,8 y(k−1)+12,2 x(k)−12 x(k−1)y(k)=0{,}8\,y(k-1)+12{,}2\,x(k)-12\,x(k-1). Guadagno in continua 12,2−121−0,8=1\frac{12{,}2-12}{1-0{,}8}=1; τp=0,80,2Tc=4Tc\tau_p=\frac{0{,}8}{0{,}2}T_c=4T_c (poloradice del denominatore della funzione di trasferimento in ωp=fc4\omega_p=\frac{f_c}4 [rad/s con fcf_c in Hz]); τz=120,2Tc=60Tc\tau_z=\frac{12}{0{,}2}T_c=60T_c (zeroradice del numeratore della funzione di trasferimento in ωz=fc60\omega_z=\frac{f_c}{60}). Zero prima del polo: il guadagno sale da 1 (bassa frequenza) a τzτp=15\frac{\tau_z}{\tau_p}=15 (alta frequenza): è una reteblocco lineare con una data funzione di trasferimento anticipatricerete con uno zero prima del polo, che aumenta il guadagno e anticipa la fase (un passa-alto "con guadagno in continua 1"). Per esempio, il valore finale della risposta al gradino è 1 e il rapporto tra guadagno in alta e in bassa frequenza è 15.

Per il passa-basso y(k)=a y(k−1)+b x(k)y(k)=a\,y(k-1)+b\,x(k) si ritrova τ=a1−aTc\tau=\frac{a}{1-a}T_c (Filtri numerici IIR e FIRUn filtro numerico è una equazione alle differenzerelazione che dà il campione di uscita in funzione di campioni di ingresso e di uscita passati $y(k)=\sum_ib_ix(k-i)+\sum_ia_iy(k-i)$. IIR (ricorsivo: qualche $a_i\ne0$) ha risposta impulsiva infinita e bastano pochi termini; FIR (tutti $a_i=0$) è sempre stabile ma richiede molti termini. Il passa-basso IIR del primo ordine $y(k)=b,x(k)+a,y(k-1)$ con $a+b=1$ ha guadagno 1 ed è stabile se $|a|<1$; la risposta al gradino è $y(k)=1-a^{k+1}$. Il filtro analogico equivalente (Eulero) ha $\tau=\dfrac{a,T_c}{1-a}$ e $f_T=\dfrac1{2\pi\tau}$. La media mobile di $N$ campioni è un FIR passa-basso che si assesta in $N$ passi.Filtri numerici IIR e FIR →).

Limiti dell'approssimazione e Tustin

Trattandosi di un procedimento approssimato, la discretizzazionetrasformazione di un filtro a tempo continuo in un algoritmo a tempo discreto non conserva la risposta in frequenza del filtro originale: introduce una distorsione (warpingdeformazione dell'asse delle frequenze introdotta dall'approssimazione). Regola di comodo: i risultati sono affidabili solo fino a 110fc\frac1{10}f_c. Per il filtro a 500 Hz con fc=50f_c=50 kHz si ha:

ff ∣F∣\lvert F\rvert analogico ∣F∣\lvert F\rvert Eulero fase analogico fase Eulero fase Tustin
500 Hz 0,707 0,696 −45,0∘-45{,}0^\circ −44,1∘-44{,}1^\circ −45,0∘-45{,}0^\circ
1 kHz 0,447 0,437 −63,4∘-63{,}4^\circ −60,6∘-60{,}6^\circ −63,5∘-63{,}5^\circ
5 kHz 0,0995 0,0981 −84,3∘-84{,}3^\circ −66,6∘-66{,}6^\circ −84,5∘-84{,}5^\circ
10 kHz 0,0499 0,0518 −87,1∘-87{,}1^\circ −51,6∘-51{,}6^\circ −87,5∘-87{,}5^\circ

L'errore di fase di Eulero cresce rapidamente: +3∘+3^\circ a 1 kHz, +18∘+18^\circ a fc/10f_c/10 e oltre. Metodi più accurati:

  • Tustin (integrazione trapezoidaleapprossimazione dell'integrale con trapezi invece che con rettangoli): s=2Tc1−z−11+z−1s=\dfrac2{T_c}\dfrac{1-z^{-1}}{1+z^{-1}}; per il passa-basso 11+sτ\frac1{1+s\tau}: y(k)=2τ−Tc2τ+Tcy(k−1)+Tc2τ+Tc[x(k)+x(k−1)]y(k)=\frac{2\tau-T_c}{2\tau+T_c}y(k-1)+\frac{T_c}{2\tau+T_c}\big[x(k)+x(k-1)\big]. Mantiene la fase molto vicina all'originale (per esempio −63,5∘-63{,}5^\circ a 1 kHz), ma ha uno zero in z=−1z=-1 (guadagno nullo alla frequenza di Nyquistmetà della frequenza di campionamento).
  • Metodi basati sull'invarianza della risposta a un segnale canonico (gradino, rampa).

Errori comuni

  • Dimenticare di dividere per (Tc+τp)(T_c+\tau_p) (il coefficiente di y(k)y(k) deve essere 1).
  • Scambiare τz\tau_z e τp\tau_p nelle formule dei coefficienti.
  • Usare la discretizzazione di Eulero per frequenze oltre fc/10f_c/10.
  • Confondere TcT_c (periodo) con fcf_c (frequenza) nel calcolo di τ=a Tc1−a\tau=\frac{a\,T_c}{1-a}.

Versione ripasso

Esercizi su questo argomento

Teoria collegata