Vai al contenuto
ELECTRONICS ENGINEERINGelectronics-engineering.com
Metodi Matematici

Esercizi sulla trasformata Zeta svolti: dalle equazioni alle differenze al codice del microcontrollore

Undici esercizi con soluzione e grafico: trasformate e antitrasformate, filtro esponenziale, Fibonacci, stabilità, guadagno statico, media mobile, ZOH, Eulero e Tustin, prewarping, PI digitale scritto in C.

https://www.electronics-engineering.com/esercizi-trasformata-zeta-svolti

Nessun voto ancora: sii il primo a votare questa pagina.

Esercizi sulla trasformata Zeta del tipo che si danno nei corsi di Metodi matematici, Elaborazione numerica dei segnali e Controllo digitale, in tre livelli: base, con trasformate e antitrasformate; medio, con equazioni alle differenze, stabilità e risposta in frequenza; esame, con discretizzazioni e la realizzazione di un regolatore digitale fino al codice. Il risultato è indicato subito; la soluzione completa, con il grafico, si apre con un clic. Le tabelle sono nell’approfondimento collegato in cima.

Livello base

Esercizio 1. La moltiplicazione per n

Calcola la trasformata di x[n] = n\,(0{,}5)^n.

Risultato: X(z) = \dfrac{0{,}5\,z}{(z - 0{,}5)^2}.

Soluzione

Si parte da \mathcal Z\{0{,}5^n\} = \frac{z}{z - 0{,}5} e si usa \mathcal Z\{n\,x[n]\} = -zX'(z):

    \[ -z\frac{d}{dz}\frac{z}{z - 0{,}5} = -z\cdot\frac{(z - 0{,}5) - z}{(z - 0{,}5)^2} = \frac{0{,}5\,z}{(z - 0{,}5)^2} \]

Polo doppio in 0,5: la sequenza prima cresce (per il fattore n) e poi decresce (per 0{,}5^n), con il massimo tra n = 1 e n = 2, dove vale 0,5.

La sequenza n per 0,5 alla n
I campioni valgono 0, 0,5, 0,5, 0,375 e poi decrescono rapidamente verso zero.

Esercizio 2. Antitrasformare con i fratti semplici

Antitrasforma X(z) = \dfrac{z^2}{(z - 0{,}5)(z - 0{,}2)} e controlla i primi campioni con la divisione.

Risultato: x[n] = \frac{5}{3}(0{,}5)^n - \frac{2}{3}(0{,}2)^n; x[0] = 1, x[1] = 0{,}7, x[2] = 0{,}39.

Soluzione

\dfrac{X(z)}{z} = \dfrac{z}{(z - 0{,}5)(z - 0{,}2)} = \dfrac{A}{z - 0{,}5} + \dfrac{B}{z - 0{,}2}, con A = \frac{0{,}5}{0{,}3} = \frac{5}{3} e B = \frac{0{,}2}{-0{,}3} = -\frac{2}{3}.

Rimoltiplicando per z: X = \frac{5}{3}\cdot\frac{z}{z - 0{,}5} - \frac{2}{3}\cdot\frac{z}{z - 0{,}2}, quindi x[n] = \frac{5}{3}(0{,}5)^n - \frac{2}{3}(0{,}2)^n.

Controllo. X = \frac{1}{1 - 0{,}7z^{-1} + 0{,}1z^{-2}}: corrisponde a x[n] = 0{,}7x[n - 1] - 0{,}1x[n - 2] + \delta[n]. Quindi x[0] = 1, x[1] = 0{,}7, x[2] = 0{,}49 - 0{,}1 = 0{,}39. Dalla formula: x[2] = \frac{5}{3}\cdot 0{,}25 - \frac{2}{3}\cdot 0{,}04 = 0{,}4167 - 0{,}0267 = 0{,}39.

La sequenza antitrasformata
Due poli reali positivi danno una sequenza che parte da 1 e decresce senza oscillare.

Esercizio 3. Il filtro esponenziale al gradino

Un sensore viene filtrato con y[n] = 0{,}8\,y[n - 1] + 0{,}2\,x[n]. Trova la funzione di trasferimento, la risposta al gradino e il numero di campioni dopo i quali l’uscita supera il 95 % del valore finale.

Risultato: H(z) = \dfrac{0{,}2z}{z - 0{,}8}; y[n] = 1 - 0{,}8^{n+1}; dal campione n = 13.

Soluzione

Trasformando: Y = 0{,}8z^{-1}Y + 0{,}2X, quindi H = \frac{0{,}2}{1 - 0{,}8z^{-1}} = \frac{0{,}2z}{z - 0{,}8}. Guadagno statico H(1) = 1.

Risposta al gradino: Y = \frac{0{,}2z^2}{(z - 1)(z - 0{,}8)}. \frac{Y}{z} = \frac{1}{z - 1} - \frac{0{,}8}{z - 0{,}8} (residui: in 1 vale \frac{0{,}2}{0{,}2} = 1; in 0,8 vale \frac{0{,}16}{-0{,}2} = -0{,}8). Quindi y[n] = 1 - 0{,}8\cdot 0{,}8^n = 1 - 0{,}8^{n+1}.

95 %: 0{,}8^{n+1} \lt  0{,}05, n + 1 \gt  \frac{\ln 0{,}05}{\ln 0{,}8} = 13{,}4, cioè n \ge 13. Con campionamento a 100 Hz il filtro risponde in circa 0,13 s: è il compromesso tra pulizia del segnale e prontezza.

Risposta al gradino del filtro esponenziale
I campioni salgono verso 1 come una carica esponenziale: 0,2, 0,36, 0,49 e così via.

Livello medio

Esercizio 4. I numeri di Fibonacci

Risolvi con la trasformata Zeta y[n + 2] = y[n + 1] + y[n], con y[0] = 0, y[1] = 1.

Risultato: y[n] = \dfrac{\varphi^n - \psi^n}{\sqrt 5}, con \varphi = \frac{1 + \sqrt 5}{2}, \psi = \frac{1 - \sqrt 5}{2}.

Soluzione

Con la regola dell’anticipo: z^2Y - z^2y[0] - zy[1] = zY - zy[0] + Y. Con i valori iniziali: z^2Y - z = zY + Y, quindi Y = \frac{z}{z^2 - z - 1}.

Poli: z^2 - z - 1 = 0, cioè \varphi = 1{,}618 (il rapporto aureo) e \psi = -0{,}618. \frac{Y}{z} = \frac{1}{(z - \varphi)(z - \psi)} = \frac{1}{\sqrt 5}\left(\frac{1}{z - \varphi} - \frac{1}{z - \psi}\right), da cui la formula di Binet.

Il polo \varphi fuori dal cerchio unitario fa crescere la sequenza esponenzialmente; il polo \psi, dentro e negativo, aggiunge una piccola correzione alternata che rende ogni termine intero. Per n grande y[n] \approx \varphi^n/\sqrt 5: y[10] = 55, e 1{,}618^{10}/2{,}236 = 55{,}0.

I numeri di Fibonacci
I campioni 0, 1, 1, 2, 3, 5, 8, 13 e così via seguono la curva tratteggiata phi alla n fratto radice di 5.

Esercizio 5. Stabile o instabile

Stabilisci la stabilità dei sistemi y[n] = 1{,}1\,y[n - 1] + x[n] e y[n] = y[n - 1] - 0{,}5\,y[n - 2] + x[n]. Per il secondo, quanti campioni dura un’oscillazione?

Risultato: il primo è instabile (polo 1,1); il secondo è stabile (poli 0{,}5 \pm 0{,}5i, modulo 0,707) e oscilla con periodo 8 campioni.

Soluzione

Primo. H = \frac{z}{z - 1{,}1}: polo in 1,1, fuori dal cerchio. La risposta impulsiva 1{,}1^n cresce del 10 % a ogni campione.

Secondo. H = \frac{z^2}{z^2 - z + 0{,}5}. Poli: z = \frac{1 \pm\sqrt{1 - 2}}{2} = 0{,}5 \pm 0{,}5i. Modulo \sqrt{0{,}5} = 0{,}707 \lt  1: stabile. Angolo \theta = \frac{\pi}{4}: un giro completo (2\pi) richiede 2\pi/\theta = 8 campioni.

Smorzamento: dopo un periodo l’ampiezza è 0{,}707^8 = 0{,}0625, cioè si riduce a un sedicesimo: l’oscillazione si vede appena.

Risposta impulsiva del sistema del secondo ordine
I campioni oscillano con periodo 8 dentro un inviluppo che si dimezza ogni due campioni, tratteggiato.
Risposta impulsiva del sistema instabile
Con il polo in 1,1 i campioni crescono del 10 per cento a ogni passo.

Esercizio 6. Il valore finale e il guadagno statico

Un sistema discreto ha H(z) = \dfrac{0{,}3z + 0{,}1}{z^2 - 0{,}9z + 0{,}2}. Trova il valore a regime della risposta al gradino unitario.

Risultato: 1,33.

Soluzione

Poli: z^2 - 0{,}9z + 0{,}2 = 0, cioè z = 0{,}5 e z = 0{,}4, dentro il cerchio: il valore finale esiste.

Con il gradino X = \frac{z}{z - 1}: \lim_{z\to 1}(z - 1)\cdot\frac{z}{z - 1}H(z) = H(1) = \frac{0{,}4}{1 - 0{,}9 + 0{,}2} = \frac{0{,}4}{0{,}3} = 1{,}33.

Il guadagno statico di un sistema discreto è H(1), come quello continuo è G(0): z = 1 corrisponde a s = 0 nella mappa z = e^{sT}.

Una risposta al gradino che si assesta
La risposta al gradino di un sistema discreto stabile tende al valore del guadagno statico, H di 1.

Esercizio 7. La media mobile in frequenza

Il filtro y[n] = \frac{1}{2}(x[n] + x[n - 1]) lavora a f_c = 1 kHz. Calcola il guadagno a 0 Hz, a 250 Hz e a 500 Hz, e il ritardo che introduce.

Risultato: 1; 0,707 (−3 dB); 0; ritardo di mezzo campione, 0,5 ms.

Soluzione

H(z) = \frac{1 + z^{-1}}{2}. Con z = e^{i\omega T}: H = \frac{1 + e^{-i\omega T}}{2} = e^{-i\omega T/2}\cos\frac{\omega T}{2}.

Modulo |\cos\frac{\omega T}{2}|, con \omega T = 2\pi f/f_c: a 0 Hz vale 1; a 250 Hz \cos\frac{\pi}{4} = 0{,}707; a 500 Hz (Nyquist) \cos\frac{\pi}{2} = 0.

Fase -\frac{\omega T}{2}, lineare: tutte le frequenze sono ritardate di T/2 = 0{,}5 ms. I filtri FIR simmetrici hanno sempre fase lineare, e quindi non deformano la forma d’onda.

Risposta in frequenza della media mobile
Il modulo, in blu, scende da 1 a zero alla frequenza di Nyquist; in rosso, per confronto, un filtro esponenziale.

Livello esame

Esercizio 8. Discretizzare un processo con lo ZOH

Il processo G(s) = \dfrac{1}{s + 1} è comandato da un D/A con mantenitore, con T = 0{,}5 s. Trova G(z) e verifica che, a un gradino, i campioni coincidono con la risposta continua.

Risultato: G(z) = \dfrac{0{,}3935}{z - 0{,}6065}.

Soluzione

Formula dell’approfondimento con a = 1: G(z) = \frac{1 - e^{-aT}}{z - e^{-aT}} = \frac{1 - e^{-0{,}5}}{z - e^{-0{,}5}} = \frac{0{,}3935}{z - 0{,}6065}.

Risposta al gradino: Y = \frac{0{,}3935\,z}{(z - 1)(z - 0{,}6065)}, che antitrasformata dà y[n] = 1 - 0{,}6065^n = 1 - e^{-0{,}5n}: esattamente la risposta continua 1 - e^{-t} negli istanti t = 0{,}5n. Lo ZOH è esatto per ingressi costanti a tratti, perché è proprio quello che il D/A produce.

Risposta al gradino campionata
I campioni, punti blu, stanno sulla curva continua tratteggiata; la scala blu è l’uscita mantenuta tra un campione e l’altro.

Esercizio 9. Eulero contro Tustin

Un regolatore ha un polo in s = -10. Con T = 0{,}25 s, dove finisce il polo discretizzando con Eulero in avanti e con Tustin? E con lo ZOH?

Risultato: Eulero -1{,}5 (instabile); Tustin -0{,}111 (stabile); ZOH e^{-2{,}5} = 0{,}082.

Soluzione

Eulero in avanti: z = 1 + sT = 1 - 2{,}5 = -1{,}5. Fuori dal cerchio: un polo stabile è diventato instabile, perché T = 0{,}25 \gt  2/10 = 0{,}2.

Tustin: z = \frac{1 + sT/2}{1 - sT/2} = \frac{1 - 1{,}25}{1 + 1{,}25} = -0{,}111. Stabile, ma negativo: introduce un’oscillazione alla frequenza di Nyquist che il continuo non aveva.

ZOH (corrispondenza esatta): z = e^{-10\cdot 0{,}25} = 0{,}082.

Morale: con poli veloci rispetto al campionamento i metodi approssimati danno risultati molto diversi tra loro. La regola pratica è campionare almeno 10-20 volte più in fretta della dinamica più veloce da controllare.

Regioni di stabilità di Eulero
Il polo in meno 10 con T uguale a 0,25 sta fuori dal cerchio verde di Eulero in avanti, di centro meno 4 e raggio 4: discretizzato, diventa instabile.

Esercizio 10. Tustin con prewarping

Si vuole un filtro digitale passa basso con frequenza di taglio 1 kHz, campionato a 4 kHz, ottenuto con Tustin da un prototipo continuo. A che frequenza va progettato il prototipo?

Risultato: a \omega_a = 8000 rad/s (1273 Hz) invece di 6283 rad/s (1000 Hz).

Soluzione

Pulsazione digitale desiderata: \omega_d = 2\pi\cdot 1000, T = 1/4000, quindi \omega_dT = \frac{\pi}{2}.

Con la distorsione di Tustin, a \omega_d corrisponde \omega_a = \frac{2}{T}\tan\frac{\omega_dT}{2} = 8000\tan\frac{\pi}{4} = 8000 rad/s, cioè 1273 Hz.

Se si progettasse il prototipo a 1000 Hz senza correzione, il filtro digitale taglierebbe a \frac{2}{T}\arctan\frac{6283\,T}{2}\cdot\frac{1}{2\pi} = \frac{8000\arctan(0{,}785)}{2\pi} = 848 Hz, il 15 % in meno.

In MATLAB: c2d(H, T, 'tustin') con l’opzione c2dOptions('PrewarpFrequency', 2*pi*1000); in Python, scipy.signal.bilinear dopo aver scalato il prototipo, oppure control.sample_system(H, T, method='tustin', prewarp_frequency=2*pi*1000).

La distorsione delle frequenze
A un quarto della frequenza di campionamento la pulsazione analogica corrispondente è già il 27 per cento più alta di quella digitale.

Esercizio 11. Dal PI continuo al codice del microcontrollore

Un regolatore PI C(s) = K_p + \frac{K_i}{s}, con K_p = 2 e K_i = 10 s^{-1}, va eseguito in un microcontrollore con T = 10 ms. Discretizzalo con Tustin, scrivi l’equazione alle differenze e il codice.

Risultato: u[n] = u[n - 1] + 2{,}05\,e[n] - 1{,}95\,e[n - 1].

Soluzione

Con s = \frac{2}{T}\frac{z - 1}{z + 1}: \frac{K_i}{s} = \frac{K_iT}{2}\cdot\frac{z + 1}{z - 1}. Quindi

    \[ C(z) = K_p + \frac{K_iT}{2}\cdot\frac{z + 1}{z - 1} = \frac{(K_p + \frac{K_iT}{2})z + (-K_p + \frac{K_iT}{2})}{z - 1} = \frac{b_0 + b_1z^{-1}}{1 - z^{-1}} \]

con b_0 = K_p + \frac{K_iT}{2} = 2{,}05 e b_1 = -K_p + \frac{K_iT}{2} = -1{,}95.

Da U(1 - z^{-1}) = E(b_0 + b_1z^{-1}): u[n] = u[n - 1] + b_0e[n] + b_1e[n - 1]. Ogni z^{-1} è una variabile che conserva il valore del passo precedente. In C, eseguito da un’interruzione periodica ogni 10 ms:

static float u_prev = 0.0f, e_prev = 0.0f;
const float b0 = 2.05f, b1 = -1.95f;

float pi_step(float setpoint, float measure)
{
    float e = setpoint - measure;
    float u = u_prev + b0 * e + b1 * e_prev;
    if (u > 10.0f) u = 10.0f;            /* saturazione dell'attuatore */
    if (u < -10.0f) u = -10.0f;
    u_prev = u;                           /* z^-1 sull'uscita */
    e_prev = e;                           /* z^-1 sull'errore */
    return u;
}

La saturazione con u già limitato salvato in u_prev è una semplice protezione anti-windup: l’integratore non continua a crescere quando l’attuatore è al limite. È esattamente lo schema che nelle centraline delle automobili controlla il minimo del motore, la pressione del turbo o la coppia di un motore elettrico.

Schema a blocchi del PI discreto
L’errore e di n passa per il guadagno b0 e, attraverso un ritardo z alla meno 1, per il guadagno b1; le due uscite si sommano all’uscita precedente, riportata indietro da un altro ritardo, e formano il comando u di n.
Iscriviti
Notificami
guest
1 commento
Vecchi
Più recenti Le più votate
1
0
Esprimete la vostra opinione commentando.x