Salta al contenuto
Note per Studenti Modulazione PWM - duty-cycle, risoluzione e demodulazione

Modulazione PWM - duty-cycle, risoluzione e demodulazione

In questa pagina 6

La modulazione a larghezza di impulso (PWM) trasmette l'informazione di un segnale, detto modulante, usando come supporto un'onda quadra di frequenza e ampiezza fissate in cui la durata degli impulsi è proporzionale al livello della modulanteil segnale che si vuole trasmettere con la modulazione. Spesso la modulazione comporta una forte amplificazione di potenza: gli impulsi possono essere a centinaia di volt mentre il comparatore lavora a livelli logici. È una tecnica fondamentale nei convertitori a commutazionealimentatori e convertitori di potenza in cui gli interruttori sono accesi e spenti a frequenza elevata (SMPSSwitch Mode Power Supply: alimentatore a commutazione), negli azionamenti, negli amplificatori audio di classe Damplificatore audio con uscita a commutazione, comandata in PWM e nei convertitori D/A.

Principio

Un modulatore PWM analogico confronta con un comparatore il segnale modulante V∗V^* con un segnale portante triangolare (ampiezza VpV_p, periodo TT). L'uscita comanda gli interruttori di un semi-ponte, e la tensione V(t)V(t) vale +E2+\frac E2 per t1=d Tt_1=d\,T e −E2-\frac E2 per t2=(1−d) Tt_2=(1-d)\,T. La frazione d=t1/Td=t_1/T si chiama duty-cycle. Il valor medio nel periodo è Vmed=(d−12)E=E V∗Vp(−12Vp<V∗<12Vp).V_{med}=\Big(d-\frac12\Big)E=E\,\frac{V^*}{V_p}\qquad(-\tfrac12V_p<V^*<\tfrac12V_p). Al variare di dd tra 0 e 1, VmedV_{med} varia in modo proporzionale tra −E2-\frac E2 e +E2+\frac E2: l'informazione di V∗V^* si è trasferita nel valor mediomedia del segnale su un periodo di modulazione, e la potenza associata a VV può essere molto maggiore di quella di V∗V^*. Con segnale a livelli 00 e VDDV_{DD} (invece di ±E2\pm\frac E2) Vmed=d VDDV_{med}=d\,V_{DD}. Se V∗(t)V^*(t) varia lentamente rispetto a TT vale ancora Vmed(t)=E V∗(t)/VpV_{med}(t)=E\,V^*(t)/V_p.

Altre modulazioni (PFM, random, densità di impulsi, delta) variano anche la distanza tra gli impulsi: sono meno usate.

Spettro e demodulazione

La PWM è una trasformazione non lineare e distorce molto il segnale; ma lo spettro ha una forma caratteristica: il valor medio (o la modulante) più righe attorno ai multipli interi della frequenza portanteil segnale periodico (triangolare o a dente di sega) con cui si confronta la modulante. Quindi basta un filtro passa-basso che elimini le componenti alla frequenza della portante e multiple per recuperare la modulante (demodulazionerecupero del segnale modulante, nella PWM con un filtro passa-basso). Funziona tanto meglio, con minore distorsione residua, quanto più il rapporto tra la frequenza portante e la massima frequenza della modulante è grande: per questo le frequenze PWM sono relativamente alte e bastano filtri semplici. Il segnale demodulato conserva un ripple residuo alla frequenza PWM e uno sfasamento dovuto al filtro. In molti sistemi (SMPS, audio) la demodulazione la fa il sistema stesso, che è passa-basso.

Attenuazione di un filtro del primo ordine. Con polo in ωp\omega_p e componente alla frequenza ff il modulo vale 11+(ω/ωp)2\frac1{\sqrt{1+(\omega/\omega_p)^2}}. Esempio: PWM a 100 kHz (ω=628\omega=628 krad/s) con filtro di polo ωp=50\omega_p=50 krad/s: 62850=12,6\frac{628}{50}=12{,}6, attenuazione 20log⁡1+12,62=22,020\log\sqrt{1+12{,}6^2}=22{,}0 dB.

Ripple su un filtro RC. Per un'onda tra −VR-V_R e +VR+V_R (picco-picco 2VR2V_R) con duty DD, periodo TT e costante di tempo τ=RC≫T\tau=RC\gg T, il rippleondulazione residua del segnale demodulato alla frequenza della portante picco-picco è Δv≈2VR D(1−D) Tτ\Delta v\approx2V_R\,D(1-D)\,\dfrac T\tau (la tensione ai capi di CC sale per DTDT con pendenza VR−vmedτ\frac{V_R-v_{med}}\tau e il valor medio è (2D−1)VR(2D-1)V_R). Per VR=3,3V_R=3{,}3 V, D=0,5D=0{,}5, T=50T=50 µs, τ=100\tau=100 µs: Δv≈2⋅3,3⋅0,25⋅0,5=0,825\Delta v\approx2\cdot3{,}3\cdot0{,}25\cdot0{,}5=0{,}825 V (il calcolo esatto con gli esponenziali dà 0,8210{,}821 V). Con τ≫T\tau\gg T sul valor medio ⟨y⟩=(2D−1)VR\langle y\rangle=(2D-1)V_R (nullo per D=0,5D=0{,}5).

Modulatore PWM digitale

Si realizza con circuiti digitali: la portante è un contatore binario e il comparatore analogico è un comparatore binariocircuito che confronta due numeri binari e segnala quando sono uguali o uno supera l'altro. Il contatore conta fino a N−1N-1 (periodo di modulazione) e l'uscita è alta finché il conteggio è sotto il valore del registro di compare. Il registro di compare vale C=d⋅NC=d\cdot N: ha il significato di duty-cyclefrazione del periodo in cui l'onda quadra è a livello alto.

  • Conteggi per periodo: N=fclkfPWMN=\dfrac{f_{clk}}{f_{PWM}} (con prescaler: fclk/(PSC⋅fPWM)f_{clk}/(PSC\cdot f_{PWM})).
  • Risoluzione del duty-cycle: il passo di dd è 1/N1/N; i bit effettivi sono neff=log⁡2Nn_{eff}=\log_2N. La massima frequenza di modulazione per nn bit è fPWM,max=fclk2nf_{PWM,max}=\dfrac{f_{clk}}{2^n}. È difficile avere alta risoluzione e alta frequenza di modulazione insieme.
  • Modulazione asimmetrica (contatore che sale e riparte da 0: impulsi allineati a un bordo, "leading/trailing edge") e simmetrica (up-down: l'impulso è centrato nel periodo; necessaria per molti convertitori; in alcuni modulatori il duty-cycle si aggiorna ogni semiperiodo). Con conteggio up-down i conteggi per periodo sono 2⋅ARR2\cdot ARR (si dimezza la risoluzione a parità di frequenza).
  • Tempo morto (dead time): ritardo tra lo spegnimento di un interruttore e l'accensione dell'altro, per evitare cortocircuiti tra le alimentazioni.

Esempi numerici

  1. Frequenza massima per 10 bit. Clock 10 MHz, duty su 10 bit: fPWM,max=10 MHz/1024=9,77f_{PWM,max}=10\text{ MHz}/1024=9{,}77 kHz. A fPWM=200f_{PWM}=200 kHz i conteggi sono N=50N=50: servono almeno 6 bit per rappresentare il duty-cycle (26=64≥502^6=64\ge50) e la risoluzione effettiva è log⁡250=5,64\log_250=5{,}64 bit. Con duty teorico 0,3750{,}375 (modulazione tra −5-5 e +5+5 V) il registro vale 0,375⋅50=18,75→180{,}375\cdot50=18{,}75\to18 con troncamento: d=0,36d=0{,}36. Valor medio ideale (2⋅0,375−1)⋅5=−1,25(2\cdot0{,}375-1)\cdot5=-1{,}25 V, reale (2⋅0,36−1)⋅5=−1,40(2\cdot0{,}36-1)\cdot5=-1{,}40 V: errore −0,15-0{,}15 V.
  2. Clock 170 MHz, onda quadra a 100 kHz, risoluzione >10>10 bit. N=170 MHz/100 kHz=1700N=170\text{ MHz}/100\text{ kHz}=1700 conteggi con prescaler 1: log⁡21700=10,73>10\log_21700=10{,}73>10 ✓. Registro di periodo 1700=0x06A41700=\texttt{0x06A4}; per d=50%d=50\% il registro di duty vale 850=0x0352850=\texttt{0x0352}.
  3. Timer a 16 bit, 170 MHz, portante 20 kHz, almeno 10 bit. Con clock 170 MHz: N=8500N=8500 (13,0513{,}05 bit). Aumentando la frequenza di clock del contatore si migliora la risoluzione temporale, ma N≤216N\le2^{16}: N=8500⋅k≤65535⇒k≤7,7N=8500\cdot k\le65535\Rightarrow k\le7{,}7. Fra 1×,2×,3×,4×1\times,2\times,3\times,4\times il massimo è 4× (680680 MHz): N=34000=0x84D0N=34000=\texttt{0x84D0} (registro di match/periodo), log⁡234000=15,05\log_234000=15{,}05 bit effettivinumero di bit equivalente alla risoluzione del duty-cycle: il logaritmo in base 2 dei conteggi per periodo; per un duty del 75%75\%: 0,75⋅34000=25500=0x639C0{,}75\cdot34000=25500=\texttt{0x639C}.
  4. Clock 200 MHz, 16 bit, ≥12\ge12 bit di risoluzione: fPWM,max=200 MHz/4096=48,8f_{PWM,max}=200\text{ MHz}/4096=48{,}8 kHz; per una portante vicina a 15 kHz: N=13333=0x3415N=13333=\texttt{0x3415} (13,713{,}7 bit); d=50%d=50\%: 6667=0x1A0B6667=\texttt{0x1A0B} (o 6666). Modulazione leading edgemodulazione in cui il fronte di salita coincide con l'inizio del periodo: il pin si setta al reset del timer (inizio periodo) e si resetta al match sul duty-cycle; il match sul periodo coincide con il reset del conteggio.
  5. PWM come DAC (tema d'esame dicembre 2020): dati a 16 bit (0.16 U) generati a 1 kHz, PWM tra 0 e 5 V a 20 kHz con clock del contatore 16 MHz: N=800N=800, bit equivalenti log⁡2800=9,64\log_2800=9{,}64; per il dato 0x6A00\texttt{0x6A00}: d=2713665536=0,414d=\frac{27136}{65536}=0{,}414 (41,4%), tensione media 5⋅0,414=2,075\cdot0{,}414=2{,}07 V; per una risoluzione di 10 bit: fPWM=16 MHz/1024=15,6f_{PWM}=16\text{ MHz}/1024=15{,}6 kHz.

Risoluzione e cicli limite

Con fPWMf_{PWM} troppo alta la risoluzione scende sotto gli 8 bit e possono emergere cicli limite in un controllo a catena chiusa (Quantizzazione, fattori di scala e cicli limiteUn algoritmo di filtro o regolatore pensato per un processore ideale va adattato alla realtà: temporizzazionedistribuzione nel tempo delle operazioni di un algoritmo (l'algoritmo nella ISR dell'ADC, durata minore di $T_c$), acquisizione (condizionamento del segnale per sfruttare tutto il fondo scala dell'ADC), fattori di scala (normalizzazione intera o 1.15; evitare overflow), quantizzazione di ingresso, uscita, coefficienti e prodotti (sposta i poli, genera errori a regime e cicli limite). Una frequenza di campionamento troppo alta rende più critica la quantizzazione dei coefficienti: va scelta coerente con la lunghezza di parola.Quantizzazione, fattori di scala e cicli limite →). Per risoluzioni tipiche di 12 bit la frequenza di modulazione non supera di solito 500 kHz. Se la frequenza non è fissata dalle specifiche conviene sceglierla la più alta possibile (demodulazione più semplice) compatibilmente con la risoluzione.

Applicazioni

Controllo di convertitori di potenza (SMPS, inverter): il convertitore agisce da buffer di tensione con grande guadagno di potenza e la parte passiva (induttore e condensatore) è il demodulatore (passa-basso del secondo ordine), mentre il µC calcola con un PID i valori del duty-cycle (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 →). Amplificatori audio in classe D. Convertitori D/A. Un esempio: un LED comandato in PWM a più di 100 Hz non è percepito come sfarfallio dall'occhio umano; con PWM a 16 bit, clock 10 MHz, frequenza 200 Hz e almeno 10 bit: N=10 MHz/200=50000N=10\text{ MHz}/200=50000 conteggi (15,6 bit): PSC=1PSC=1 e match 5000050000.

Errori comuni

  • Calcolare i bit effettivi con la frequenza di clock del processore invece che con quella del contatore (dopo il prescaler).
  • Applicare Vmed=d VDDV_{med}=d\,V_{DD} a un segnale bipolare: per livelli ±E2\pm\frac E2 la media è (d−12)E(d-\frac12)E.
  • Scambiare il significato del registro di periodo e di quello di compare/duty-cycle.
  • Pretendere sia alta frequenza sia alta risoluzione con un clock basso.

Versione ripasso

  • Principio: duty-cycle d=t1/Td=t_1/T; con livelli ±E2\pm\frac E2 il valor medio è Vmed=(d−12)E=E V∗VpV_{med}=(d-\frac12)E=E\,\frac{V^*}{V_p} (con −12Vp<V∗<12Vp-\frac12V_p<V^*<\frac12V_p); con livelli 00 e VDDV_{DD} è Vmed=d VDDV_{med}=d\,V_{DD}.
  • Demodulazione: un passa-basso elimina la portante; attenuazione di un primo ordine 11+(ω/ωp)2\frac{1}{\sqrt{1+(\omega/\omega_p)^2}}. Esempio: PWM a 100 kHz (ω=628\omega=628 krad/s) con ωp=50\omega_p=50 krad/s: 62850=12,6\frac{628}{50}=12{,}6, attenuazione 22,022{,}0 dB.
  • Ripple su RC: con τ=RC≫T\tau=RC\gg T, Δv≈2VR D(1−D) Tτ\Delta v\approx2V_R\,D(1-D)\,\frac{T}{\tau}. Esempio: VR=3,3V_R=3{,}3 V, D=0,5D=0{,}5, T=50 μT=50\ \mus, τ=100 μ\tau=100\ \mus: Δv≈0,825\Delta v\approx0{,}825 V (calcolo esatto 0,8210{,}821 V).
  • Modulatore digitale: contatore (portante) + comparatore con il registro di compare C=d NC=d\,N; N=fclkfPWMN=\frac{f_{clk}}{f_{PWM}} conteggi per periodo; risoluzione neff=log⁡2Nn_{eff}=\log_2N; fPWM,max=fclk2nf_{PWM,max}=\frac{f_{clk}}{2^n}. Alta frequenza e alta risoluzione insieme sono difficili da ottenere.
  • Modulazione simmetrica (up-down: conteggi per periodo 2⋅ARR2\cdot ARR) o asimmetrica (leading o trailing edge); tempo morto tra l'accensione dei due interruttori del semi-ponte.
  • Esempio 1: clock 10 MHz, 10 bit: fPWM,max=9,77f_{PWM,max}=9{,}77 kHz. A 200 kHz, N=50N=50; d=0,375d=0{,}375 si tronca a 18/50=0,3618/50=0{,}36; valor medio ideale −1,25-1{,}25 V, reale −1,40-1{,}40 V, errore −0,15-0{,}15 V.
  • Esempio 2: clock 170 MHz, 100 kHz: N=1700=0x06A4N=1700=\texttt{0x06A4}, log⁡21700=10,73\log_2 1700=10{,}73 bit; per d=50%d=50\% il registro vale 850=0x0352850=\texttt{0x0352}.
  • Esempio 3: 170 MHz, portante 20 kHz: N=8500N=8500; con moltiplicatore 4× (680 MHz) N=34000=0x84D0N=34000=\texttt{0x84D0} (15,05 bit); per 75%75\%: 25500=0x639C25500=\texttt{0x639C}.
  • Esempio 5 (PWM come DAC): clock 16 MHz, portante 20 kHz: N=800N=800; dato 0x6A00=27136\texttt{0x6A00}=27136, d=0,414d=0{,}414, media 5⋅0,414=2,075\cdot0{,}414=2{,}07 V.
  • Cicli limite: con risoluzione sotto gli 8 bit possono comparire; a 12 bit la frequenza tipica non supera 500 kHz (Quantizzazione, fattori di scala e cicli limiteUn algoritmo di filtro o regolatore pensato per un processore ideale va adattato alla realtà: temporizzazionedistribuzione nel tempo delle operazioni di un algoritmo (l'algoritmo nella ISR dell'ADC, durata minore di $T_c$), acquisizione (condizionamento del segnale per sfruttare tutto il fondo scala dell'ADC), fattori di scala (normalizzazione intera o 1.15; evitare overflow), quantizzazione di ingresso, uscita, coefficienti e prodotti (sposta i poli, genera errori a regime e cicli limite). Una frequenza di campionamento troppo alta rende più critica la quantizzazione dei coefficienti: va scelta coerente con la lunghezza di parola.Quantizzazione, fattori di scala e cicli limite →).
  • Leading edge: il pin si imposta al reset del timer e si resetta al match sul duty-cycle.
  • Errori tipici: usare il clock del processore invece di quello del contatore dopo il prescaler; Vmed=dVDDV_{med}=dV_{DD} per un segnale bipolare; scambiare registro di periodo e di compare; volere alta frequenza e alta risoluzione con un clock basso (PWM e ADC - ritardo di risposta e sincronizzazione).
  • Modulatore digitale: la portante è un contatore binario e il comparatore confronta il contatore con il registro di compare C=dNC=dN; l'uscita è alta finché il conteggio è sotto CC.
  • Tempo morto: ritardo tra lo spegnimento di un interruttore e l'accensione dell'altro, per evitare cortocircuiti tra le alimentazioni.
  • Applicazioni: SMPS e inverter (il filtro LC è il demodulatore, il PID calcola il duty), amplificatori audio in classe D, convertitori D/A.

Esercizi su questo argomento

Teoria collegata