Esercizio 29PLL digitale con timer, regolatore dead-beat e margini di tempo di calcolo (esempio del corso)
In questa pagina 5
Testo (esempio svolto a lezione, anello ad aggancio di fase con i timer del microcontrollore STM32G474RE). Si deve generare un'onda quadra a frequenza volte quella di un segnale di sincronismo (onda quadra), con frequenza del sincronismo tra 4 kHz e 6 kHz (nominale 5 kHz). L'errore di fase , valutato alla fine di ogni treno di 11 impulsi, è la differenza tra l'istante dell'evento A (fronte del sincronismo) e quello dell'evento B (fronte di discesa dell'undicesimo impulso). L'algoritmo è con periodo degli impulsi generati.
(a) Con (dead-beat) e sincronismo a 5 kHz già agganciato, simulare per tre treni il comportamento quando il sincronismo passa a 6 kHz: scrivere e a ogni treno. (b) Ripetere con e : confrontare il transitorio. (c) Calcolare il tempo a disposizione per eseguire l'algoritmo (i) a regime con il sincronismo a 6 kHz, (ii) nel caso peggiore con un salto del sincronismo da 4 a 6 kHz. (d) Perché non si può compensare l'errore con un'azione puramente proporzionale?
Teoria usata: PLL digitale con i timerUn PLL (anello ad aggancio di fase) tiene un segnale generato a frequenza e fase in relazione costante con un riferimento. In un µC si realizza con un timer in capture (misura il periodo del riferimento) e uno in compare (genera gli impulsi). L'errore di fase $\Delta\phi$ (intervallo tra due eventi) va portato a 0 con un regolatore sul periodo $P$ degli impulsi: compensare solo l'errore istantaneo non basta, serve un PI: $P_{int}(k)=P_{int}(k-1)+\frac{\Delta\phi(k)}N$, $P(k+1)=P_{int}(k)+\frac{\Delta\phi(k)}N$ (con $N$ = rapporto delle frequenze), che è dead-beat (errore nullo in un passo, polo in $z=0$). In pratica si riducono i guadagni per robustezza.PLL digitale con i timer →, Regolatori PI e PID digitaliIl PI digitale è $y(k)=k_p,e(k)+y_I(k)$ con $y_I(k)=k_I',e(k)+y_I(k-1)$ e $k_I'=k_iT_c$ (con una MAC bastano 3 cicli). Nel PID la derivata si calcola come $\frac{k_d}{T_c}[e(k)-e(k-1)]$ ed è sensibile al rumore: si usa la versione filtrata $y_d(k)=\frac{k_d}{T_c+\tau_L}[e(k)-e(k-1)]+\frac{\tau_L}{T_c+\tau_L}y_d(k-1)$ o una media su più campioni. Con la saturazione dell'attuatore serve l'anti-wind-up: $|y_I|\le L(k)=Y_{max}-|k_pe(k)|$. Il controllo dead-beatcontrollo che porta l'errore a zero in un numero finito di passi (predittivo) azzera l'errore in un numero finito di passi ma è poco usato in industria.Regolatori PI e PID digitali →, Timer - prescaler, compare, capture e watchdogUn timer è un contatore binario di periodi di clock: $f_{cont}=f_{clk}/PSC$ ($PSC$ = fattore del prescaler). In modalità compare/match genera un evento (interruzione, reset del conteggio, azione su un pin) quando il conteggio raggiunge il registro di match: per un evento ogni $T$ servono $N=T,f_{clk}/PSC\le2^{16}$ conteggi, e si prende il minimo $PSC$ (massima risoluzione). Con uscita in modo toggle la frequenza dell'onda quadra è metà di quella degli eventi, il duty-cycle 50%. In modalità capture il valore del contatore, salvato a due fronti, dà il periodo: $T=C_2-C_1$ (corretto anche con un overflow), risoluzione $1/f_{clk}$. Il watchdog reinizializza il sistema se non viene azzerato in tempo.Timer - prescaler, compare, capture e watchdog →.
(a) Dead-beat
A regime con il sincronismo a 5 kHz (s): s (frequenza degli impulsi 55 kHz), s, . Al treno il sincronismo passa a 6 kHz (s): il treno già in corso dura ancora s, ma il fronte A arriva dopo s: l'evento A anticipa l'evento B di s.
| treno | [µs] | [µs] | [µs] | [µs] |
|---|---|---|---|---|
| 4 | 200 | 18,18 | 0 | 18,18 |
| 5 | 166,67 | 18,18 | 12,12 | |
| 6 | 166,67 | 12,12 | 0 | 15,15 |
| 7 | 166,67 | 15,15 | 0 | 15,15 |
Calcolo del treno 5: s; s. Il treno 6 dura s: recupera il ritardo (rispetto al fronte A atteso ogni s) e ; da allora s, cioè kHz kHz ✓. L'aggancio avviene in un solo passo di regolazione dopo il rilevamento dell'errore (due treni dal salto).
(b) Guadagni ridotti
Con lo stesso salto, gli errori (in µs) per sono:
- : (dead-beat);
- : (convergenza oscillante con inviluppo che decade);
- : (molto più lenta, con sovraelongazione). Il dead-beat è il caso più veloce, ma ha il difetto di essere poco robusto: assume che la misura del periodo del riferimento e l'errore siano immediatamente corretti. In un sistema reale la variazione del periodo si vede con un ritardo di un periodo e si riducono i guadagni per avere stabilità (PLL digitale con i timerUn PLL (anello ad aggancio di fase) tiene un segnale generato a frequenza e fase in relazione costante con un riferimento. In un µC si realizza con un timer in capture (misura il periodo del riferimento) e uno in compare (genera gli impulsi). L'errore di fase $\Delta\phi$ (intervallo tra due eventi) va portato a 0 con un regolatore sul periodo $P$ degli impulsi: compensare solo l'errore istantaneo non basta, serve un PI: $P_{int}(k)=P_{int}(k-1)+\frac{\Delta\phi(k)}N$, $P(k+1)=P_{int}(k)+\frac{\Delta\phi(k)}N$ (con $N$ = rapporto delle frequenze), che è dead-beat (errore nullo in un passo, polo in $z=0$). In pratica si riducono i guadagni per robustezza.PLL digitale con i timer →); conviene partire dal valore dead-beat () e ridurre soprattutto il guadagno integrale.
(c) Tempo di calcolo
L'algoritmo deve aggiornare il periodo prima della fine del primo semiperiodo del primo impulso di ogni treno.
- A regime a 6 kHz: s, semiperiodo s. (Per il sincronismo al massimo, 6 kHz: s.)
- Caso peggiore (salto 4 → 6 kHz): s; il nuovo periodo s (circa 132 kHz) e il calcolo deve concludersi in : compatibile con la velocità di un µC a 170 MHz ( cicli).
(d) Perché non basta il proporzionale
Con la correzione "in un passo" porta il periodo al valore giusto ma lascia l'errore di fase invariato al treno successivo: l'errore di fase è l'integrale dell'errore di frequenza (Comunicazione wireless - ASK, OOK, FSK, PLL e antenneMolti µC integrano un trasmettitore RF semplice: PLL che genera la portante a $N$ volte la frequenza di un quarzo, amplificatore (LNA) e antenna con rete di adattamento. Modulazioni digitali: ASK (due livelli di ampiezza), OOK (un livello è zero), FSK (due frequenze). In analogico si usa l'FM con VCO e PLL (CD4046). Il PLL è un anello di retroazione: comparatore di fase, filtro passa-basso, VCO ($k_{VCO}=\frac{f_{max}-f_{min}}{V_{max}-V_{min}}$), divisore per $N$; a regime errore nullo di frequenza e di fase. Antenne a microstriscia: loop (lunghezza $\lesssim\lambda/10$), patch ($f_r\simeq\frac c{2L\sqrt{\varepsilon_r}}$). Standard: Wi-Fi 802.11, Bluetooth 802.15.1, ZigBee 802.15.4 (2,4 GHz, 250 kbit/s, rete mesh, basso consumo).Comunicazione wireless - ASK, OOK, FSK, PLL e antenne →), quindi per annullarlo serve un termine che accumuli le correzioni. Esempio: sincronismo con periodo 11 (unità arbitrarie), , : (valore corretto), ma dopo 11 impulsi l'errore è ancora : il sistema non annulla mai l'errore. Con (): , : il treno successivo recupera esattamente il ritardo () e da lì con errore nullo.
Errori comuni
- Valutare l'errore all'evento A anziché all'evento B (si cambierebbe il periodo in mezzo a un treno).
- Dimenticare di ricostruire l'errore di fase negativo sommando il periodo del sincronismo quando l'evento B precede A.
- Usare un solo termine (proporzionale) e aspettarsi l'azzeramento dell'errore di fase.
- Mantenere i guadagni dead-beat con un riferimento che cambia rapidamente.
Versione ripasso
Testo. PLL digitale con , ; sincronismo da 5 a 6 kHz; guadagni 1, 0,5, 0,3; tempo di calcolo (esempio del corso).
- (a) : µs, µs ( kHz ); errore nullo dal treno 6.
- (b) oscilla (); lento e con sovraelongazione.
- (c) a regime µs; caso 4→6 kHz: µs (132 kHz), calcolo in µs.
- (d) solo proporzionale: errore invariato; serve l'integratore (PLL digitale con i timerUn PLL (anello ad aggancio di fase) tiene un segnale generato a frequenza e fase in relazione costante con un riferimento. In un µC si realizza con un timer in capture (misura il periodo del riferimento) e uno in compare (genera gli impulsi). L'errore di fase $\Delta\phi$ (intervallo tra due eventi) va portato a 0 con un regolatore sul periodo $P$ degli impulsi: compensare solo l'errore istantaneo non basta, serve un PI: $P_{int}(k)=P_{int}(k-1)+\frac{\Delta\phi(k)}N$, $P(k+1)=P_{int}(k)+\frac{\Delta\phi(k)}N$ (con $N$ = rapporto delle frequenze), che è dead-beat (errore nullo in un passo, polo in $z=0$). In pratica si riducono i guadagni per robustezza.PLL digitale con i timer →).
- Errori: evento A; errore negativo non ricostruito; solo proporzionale; dead-beat con riferimento variabile (Regolatori PI e PID digitaliIl PI digitale è $y(k)=k_p,e(k)+y_I(k)$ con $y_I(k)=k_I',e(k)+y_I(k-1)$ e $k_I'=k_iT_c$ (con una MAC bastano 3 cicli). Nel PID la derivata si calcola come $\frac{k_d}{T_c}[e(k)-e(k-1)]$ ed è sensibile al rumore: si usa la versione filtrata $y_d(k)=\frac{k_d}{T_c+\tau_L}[e(k)-e(k-1)]+\frac{\tau_L}{T_c+\tau_L}y_d(k-1)$ o una media su più campioni. Con la saturazione dell'attuatore serve l'anti-wind-up: $|y_I|\le L(k)=Y_{max}-|k_pe(k)|$. Il controllo dead-beatcontrollo che porta l'errore a zero in un numero finito di passi (predittivo) azzera l'errore in un numero finito di passi ma è poco usato in industria.Regolatori PI e PID digitali →).