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

Esercizi su questo argomento

Teoria collegata