Esercizio 25modulatore PWM con timer a 16 bit, registri di periodo e di confronto, risoluzione (temi d'esame gennaio 2025, febbraio 2025, gennaio 2026 e 2006)
In questa pagina 5
Testo (temi d'esame gennaio 2025, febbraio 2025 problema P6, gennaio 2026 problema P7, 18 luglio 2006 problema 4).
(i) Un modulatore PWM è realizzato con un timer a 16 bit a clock di 200 MHz, conteggio up-counting. Determinare: (a) la massima frequenza della portante che consente almeno 12 bit di risoluzione per il duty-cycle; (b) il valore del registro di fine conteggio (PERIOD) per una portante prossima a 15 kHz; (c) quali eventi devono corrispondere a SET e RESET del pin per una modulazione di tipo leading edge (opzioni: reset del timer, match sul duty-cycle, match sul periodo); (d) il valore del registro di confronto 1 (CMP1) per un duty-cycle del 50%; (e) il valore del registro di confronto 2 (CMP2) per un segnale di sincronismo che, inviato all'ADC come trigger, comporti il filtraggio automatico del ripple (triangolare) sul segnale demodulato.
(ii) Timer a 16 bit con clock 170 MHz, onda quadra a 100 kHz, risoluzione bit (gennaio 2025): (a) il valore del registro di prescaler; (b) il registro di match; (c) il numero effettivo di bit; (d) il registro del duty-cycle per il 50%; (e) con demodulatore passa-basso del 1° ordine con polo a krad/s, l'attenuazione della prima armonica in dB.
(iii) Timer a 16 bit, portante 20 kHz con risoluzione almeno 10 bit, clock del contatore a 170 MHz (febbraio 2025): (a) di quante volte può essere aumentata la frequenza di clock per avere la massima risoluzione temporale nel conteggio (, , , ); (b) il valore del registro di match (MR) con la scelta precedente; (c) il numero di bit effettivi; (d) il registro di compare per un duty-cycle del 75%.
(iv) Un µC a 8 bit, clock 12 MHz, ha un modulatore PWM a 8 bit; la tensione sul motore è con V (luglio 2006): (a) la massima frequenza di modulazione con 256 valori di duty-cycle; (b) il prescaler per una frequenza il più prossima a 15 kHz; (c) il registro di compare per e l'errore sulla tensione media.
Teoria usata: Modulazione PWM - duty-cycle, risoluzione e demodulazioneLa PWM trasferisce un segnale modulante $V^$ nella larghezza degli impulsi di un'onda quadra a frequenza fissa: con duty-cycle $d=t_1/T$ e livelli $\pm\frac E2$ la media è $V_{med}=(d-\frac12)E=E,\frac{V^}{V_p}$. L'informazione sta nel valor medio; il resto dello spettro (armoniche della portante) si elimina con un passa-basso (demodulazione). Il modulatore digitale è un timer: contatore + comparatore, $N=f_{clk}/f_{PWM}$ conteggi per periodo, risoluzione $n=\log_2N$ bit (massima frequenza per $n$ bit: $f_{clk}/2^n$), registro di compare = duty-cycle. Servono almeno 8 bit per evitare cicli limite.Modulazione PWM - duty-cycle, risoluzione e demodulazione →, PWM e ADC - ritardo di risposta e sincronizzazioneUn modulatore PWM digitale ritarda la risposta: il duty-cycle si aggiorna una volta per periodo (al massimo si attende $T_{PWM}$; $T_{PWM}/2$ se si aggiorna a ogni semiperiodo). Perciò il controllo digitale deve avere banda ben sotto $f_{PWM}$ (cross-over $\lesssim f_{PWM}/10$, margine di fase $\ge60^\circ$). Si campiona di solito a $f_c=f_{PWM}$: viola Shannon, ma se l'ADC è sincronizzato con la portante (trigger dal timer PWM) l'aliasing estrae il valor medio, senza ripple. Il campionamento va fatto a metà del tempo di ON (leading edge: $\frac{DT}2$, in generale a metà dell'impulso) o al picco/valle del contatore (PWM simmetrica).PWM e ADC - ritardo di risposta e sincronizzazione →, 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 →.
(i) 200 MHz
(a) Per bit servono conteggi per periodo: . (b) ( bit; frequenza ottenuta kHz). (c) In modulazione leading edge l'impulso comincia all'inizio del periodo e finisce al match con il duty-cycle: SET_PIN sul reset del timer (inizio periodo), RESET_PIN sul match sul duty-cycle. Il "match sul periodo" è l'evento che provoca il reset del timer: non è un evento di SET né di RESET separato. (d) (oppure 6666). (e) Il ripple della tensione demodulata è triangolare: sale durante l'impulso (da 0 a ) e scende dopo. Il valor medio si trova a metà della salita, cioè a : (in alternativa a metà della discesa: ): con il campionamento sincronizzato a quell'istante l'ADC legge il valore medio, con il ripple filtrato automaticamente.
(ii) 170 MHz, 100 kHz
(a) Con prescaler 1 (nessuna divisione) i conteggi per periodo sono ✓: registro di prescaler = 0x0001 (fattore 1; in HAL il registro contiene fattore ). (b) Registro di match (periodo) . (c) Bit effettivi ( ✓). (d) Duty 50%: . (e) La prima armonica è alla frequenza della portante: krad/s; : , cioè .
(iii) 20 kHz, 170 MHz
(a) Con 170 MHz: conteggi ( bit, più dei 10 richiesti). Aumentando il clock di volte, (16 bit): . Fra il massimo è 4× (clock 680 MHz): massima risoluzione temporale compatibile con il contatore a 16 bit. (b) . (c) Bit effettivi ( bit). (d) .
(iv) Motore con PWM a 8 bit, 12 MHz
(a) 256 valori di duty-cycle : . (b) Per kHz con si ha (): kHz. (c) : . Tensione media: ideale V, reale V: errore V ( V in modulo).
Errori comuni
- Usare il clock del processore (non quello del contatore) per le formule.
- Confondere il registro di periodo (frequenza) con quello di compare (duty-cycle): CMP1 e CMP2 sono due compare diversi (duty e trigger ADC).
- Dimenticare che il clock può essere aumentato solo finché .
- Scegliere il SET al match sul duty (è per il trailing edge, o per l'impulso invertito).
- Dimenticare il termine sotto radice nell'attenuazione : a la differenza è solo dB, ma vicino al polo l'errore sarebbe grande.
Versione ripasso
Testo. PWM con timer a 16 bit: 200 MHz (12 bit, 15 kHz, leading edge, CMP1, CMP2); 170 MHz a 100 kHz; 20 kHz con clock ×4; motore a 8 bit a 12 MHz (gennaio e febbraio 2025, gennaio 2026, 2006).
- (i) kHz; PERIOD ; SET al reset del timer, RESET al match sul duty; CMP1 ; CMP2 .
- (ii) prescaler 1; match ; bit; duty ; attenuazione dB.
- (iii) : ( bit); 75%: .
- (iv) kHz; (15,625 kHz); , errore V (Modulazione PWM - duty-cycle, risoluzione e demodulazioneLa PWM trasferisce un segnale modulante $V^$ nella larghezza degli impulsi di un'onda quadra a frequenza fissa: con duty-cycle $d=t_1/T$ e livelli $\pm\frac E2$ la media è $V_{med}=(d-\frac12)E=E,\frac{V^}{V_p}$. L'informazione sta nel valor medio; il resto dello spettro (armoniche della portante) si elimina con un passa-basso (demodulazione). Il modulatore digitale è un timer: contatore + comparatore, $N=f_{clk}/f_{PWM}$ conteggi per periodo, risoluzione $n=\log_2N$ bit (massima frequenza per $n$ bit: $f_{clk}/2^n$), registro di compare = duty-cycle. Servono almeno 8 bit per evitare cicli limite.Modulazione PWM - duty-cycle, risoluzione e demodulazione →).
- Errori: clock del processore; periodo/compare confusi; ; SET/RESET scambiati (PWM e ADC - ritardo di risposta e sincronizzazioneUn modulatore PWM digitale ritarda la risposta: il duty-cycle si aggiorna una volta per periodo (al massimo si attende $T_{PWM}$; $T_{PWM}/2$ se si aggiorna a ogni semiperiodo). Perciò il controllo digitale deve avere banda ben sotto $f_{PWM}$ (cross-over $\lesssim f_{PWM}/10$, margine di fase $\ge60^\circ$). Si campiona di solito a $f_c=f_{PWM}$: viola Shannon, ma se l'ADC è sincronizzato con la portante (trigger dal timer PWM) l'aliasing estrae il valor medio, senza ripple. Il campionamento va fatto a metà del tempo di ON (leading edge: $\frac{DT}2$, in generale a metà dell'impulso) o al picco/valle del contatore (PWM simmetrica).PWM e ADC - ritardo di risposta e sincronizzazione →).