Salta al contenuto
Note per Studenti Esercizio 26 · demodulazione di un segnale PWM con filtro RC, ripple, PWM come convertitore D-A (temi d'esame luglio 2026, dicembre 2020 e luglio 2020)

Esercizio 26demodulazione di un segnale PWM con filtro RC, ripple, PWM come convertitore D-A (temi d'esame luglio 2026, dicembre 2020 e luglio 2020)

Esame
In questa pagina 4

Testo (temi d'esame luglio 2026 problema P3; esercizi del 4 dicembre 2020 problema 4; luglio 2020 problema 5).

(i) Un microcontrollore genera un segnale PWM xPWM(t)x_{PWM}(t) che commuta tra +VR+V_R e −VR-V_R (VR=3,3V_R=3{,}3 V), con periodo TPWM=50 μT_{PWM}=50\ \mus; è demodulato da un filtro RC (R=10 kΩR=10\ \text{k}\Omega, C=10C=10 nF) seguito da un inseguitore di tensione (VCC≫VRV_{CC}\gg V_R). Determinare: (a) la massima corrente erogata o assorbita dal microcontrollore; (b) la relazione statica tra il duty-cycle DD e il valore medio ⟨y(t)⟩\langle y(t)\rangle del segnale all'uscita; (c) il ripple residuo Δvc\Delta v_c all'uscita del demodulatore con D=0,5D=0{,}5. Se il modulatore (leading edge) ha una risoluzione di 11 bit: (d) il valore in volt dell'LSB, cioè la minima variazione della tensione media apprezzabile; (e) la frequenza di clock del modulatore digitale; (f) la rappresentazione interna di D=50%D=50\%.

(ii) Si vuole usare il modulatore PWM di un µC come D/A rudimentale. I dati (16 bit, frazionario senza segno) sono generati a 1 kHz. Il segnale PWM va da 0 V (basso) a 5 V (alto), frequenza 20 kHz, clock del contatore 16 MHz. Determinare: (a) i bit equivalenti del segnale analogico prodotto; (b) il duty-cycle per il dato 0x6A00\texttt{0x6A00}; (c) la tensione media all'uscita del filtro per quel dato; (d) la frequenza di modulazione per una risoluzione di 10 bit.

(iii) Un LED è comandato in PWM (clock 10 MHz, modulatore a 16 bit): prescaler e valore di reset per una frequenza di modulazione il più possibile vicina a 200 Hz con risoluzione di almeno 10 bit.


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 →.

(i) Demodulatore RC

La costante di tempo del filtro è τ=RC=10 kΩ⋅10 nF=100 μ\tau=RC=10\ \text{k}\Omega\cdot10\ \text{nF}=100\ \mus =2 TPWM=2\,T_{PWM} (la frequenza di taglio del filtro 12πτ=1,6\frac1{2\pi\tau}=1{,}6 kHz è 12,6 volte più bassa della portante 1TPWM=20\frac1{T_{PWM}}=20 kHz). L'inseguitore (VCC≫VRV_{CC}\gg V_R, nessun carico) ripete la tensione sul condensatore.

(a) Corrente. Il microcontrollore pilota RR in serie a CC: i=xPWM−vCRi=\frac{x_{PWM}-v_C}R. A regime con D=0,5D=0{,}5 il valor medio di vCv_C è 0 con un ripple di circa ±0,41\pm0{,}41 V: subito dopo un fronte la tensione ai capi di RR è al più VR+0,41=3,71V_R+0{,}41=3{,}71 V, imax≈3,7110 kΩ=0,37 mAi_{max}\approx\frac{3{,}71}{10\ \text{k}\Omega}=\mathbf{0{,}37\ mA} (con vC≃0v_C\simeq0: VRR=0,33\frac{V_R}R=0{,}33 mA). In ogni caso la corrente è sotto 0,66 mA (=2VRR=\frac{2V_R}R, valore che si avrebbe solo con CC carico al valore opposto).

(b) Relazione statica. Il valor medio dell'uscita è il valor medio della PWM: ⟨y⟩=(D⋅VR)+((1−D)(−VR))=(2D−1) VR\langle y\rangle=(D\cdot V_R)+((1-D)(-V_R))=\mathbf{(2D-1)\,V_R}: va da −3,3-3{,}3 V (D=0D=0) a +3,3+3{,}3 V (D=1D=1), 00 V per D=0,5D=0{,}5.

(c) Ripple. Δvc≈2VR D(1−D) TPWMτ=2⋅3,3⋅0,25⋅50100=0,825 V\Delta v_c\approx2V_R\,D(1-D)\,\dfrac{T_{PWM}}\tau=2\cdot3{,}3\cdot0{,}25\cdot\frac{50}{100}=\mathbf{0{,}825\ V} picco-picco (il calcolo esatto con gli esponenziali dà 2VR(1−e−0,25)21−e−0,5=0,8212V_R\frac{(1-e^{-0{,}25})^2}{1-e^{-0{,}5}}=0{,}821 V). La tensione sul condensatore sale e scende in modo triangolare di ±0,41\pm0{,}41 V attorno a 0.

(d) LSB. Il valor medio varia tra −VR-V_R e +VR+V_R (6,66{,}6 V) con 211=20482^{11}=2048 valori: LSB=6,6 V2048=3,22 mVLSB=\frac{6{,}6\ \text{V}}{2048}=\mathbf{3{,}22\ mV}.

(e) Clock. Con 11 bit di risoluzione il periodo contiene N=2048N=2048 conteggi: fclk=NTPWM=204850 μs=40,96 MHzf_{clk}=\frac{N}{T_{PWM}}=\frac{2048}{50\ \mu\text{s}}=\mathbf{40{,}96\ MHz}.

(f) Duty 50%. 0,5⋅2048=1024=0x4000{,}5\cdot2048=1024=\mathbf{0x400} (registro di compare), con registro di periodo 2048 (o 2047).

(ii) PWM come DAC

(a) Conteggi per periodo: N=16 MHz20 kHz=800N=\frac{16\ \text{MHz}}{20\ \text{kHz}}=800; bit equivalenti log⁡2800=9,64\log_2800=\mathbf{9{,}64}. (b) Dato 0x6A00=27136\texttt{0x6A00}=27136 su 16 bit (0.16 U): D=2713665536=0,414D=\frac{27136}{65536}=\mathbf{0{,}414} (41,4%): il registro di compare vale 0,414⋅800=3310{,}414\cdot800=331. (c) Tensione media =D⋅5 V=0,414⋅5=2,07 V=D\cdot5\ \text{V}=0{,}414\cdot5=\mathbf{2{,}07\ V}. (d) Per 10 bit servono N=1024N=1024 conteggi: fPWM=16 MHz1024=15,6 kHzf_{PWM}=\frac{16\ \text{MHz}}{1024}=\mathbf{15{,}6\ kHz}. (Con 9,64 bit un dato a 16 bit viene troncato: i 6,4 bit bassi sono persi.)

(iii) LED

Per f≃200f\simeq200 Hz con clock 10 MHz: Ntot=10 MHz200 Hz=50 000≤65536N_{tot}=\frac{10\text{ MHz}}{200\text{ Hz}}=50\,000\le65536: prescaler minimo 1 e valore di reset (periodo) 50000=0xC350\mathbf{50000}=\texttt{0xC350}, con risoluzione log⁡250000=15,6\log_250000=15{,}6 bit (≥10\ge10 ✓). (A 200 Hz il LED non sfarfalla per l'occhio umano, che non percepisce modulazioni sopra circa 100 Hz.)

Errori comuni

  • Dimenticare che la PWM bipolare ha valor medio (2D−1)VR(2D-1)V_R, non D VRD\,V_R.
  • Applicare la formula del ripple quando τ≫̸T\tau\not\gg T (qui τ=2T\tau=2T: è un'approssimazione, errore 0,5%).
  • Calcolare i bit effettivi con il clock del processore invece del clock del contatore e del periodo.
  • Dire che un dato a 16 bit su un PWM a log⁡2N=9,64\log_2N=9{,}64 bit venga riprodotto senza perdita.

Versione ripasso

Testo. PWM ±3,3\pm3{,}3 V a 20 kHz su RC (1010 kΩ, 10 nF): corrente, valor medio, ripple, LSB, clock; PWM come DAC a 16 MHz; PWM per un LED (luglio 2026, dicembre 2020, luglio 2020).

Teoria collegata