Indice |
Introduzione
Studiando nel dettaglio un convertitore a commutazione switching di tipo BUCK, sono nati in me una serie di dubbi sull’aspetto di FILTRO del blocco LC che caratterizza appunto un BUCK converter. Il tutto nasce da questa discussione sul forum.
Ringrazio Enchamade e IsidoroKZ per l'aiuto, la pazienza e gli stimoli avuti sul forum, che mi hanno poi spinto a stilare questo documento.
In questa trattazione cercherò di trattare questi concetti.
- Analisi del buck nel modo “classico”, in stato di regime stazionario
- Analisi del buck considerando l’effetto del filtro LC
- Modello medio del BUCK converter (cella LC + carico alimentata da una sorgene continua di valore Vin*Duty)
A questo punto nasce il vero scopo di questo documento: la risposta in frequenza di una cella LC + R. Questo perché poi, nello studio della stabilità di un sistema reazionato per un buck converter, è importante capire come “reagisce” un sistema del secondo ordine, a fronte di variazioni della grandezza di ingresso (in questo caso Vin o duty).
- Quindi la cella LCR verrà studiata prima considerando la sua funzione di trasferimento del secondo ordine, nella variabile “s”. E verrà analizzata anche la risposta allo scalino.
- Poi verrà studiata come filtro del secondo ordine, descrivendo il suo diagramma di Bode asintotico e reale, al variare di alcuni parametri fondamentali.
Verranno anche effettuati esercizi pratici con simulazioni Spice.
- Caso di funzionamento CCM, calcolato in modo classico e confronto con analisi filtro LC
- Caso di funzionamento limite DCM
L’obiettivo del documento è anche di avere chiaro come si comporta un sistema del secondo ordine, a seconda di come e dove sono i suoi poli.
Analisi BUCK secondo trattazione “classica”
Consideriamo uno schema fatto cosi:
Impongo (vado velocemente):
- funzionamento di regime stazionario
- funzionamento CCM (la corrente nell’induttore non si azzera mai)
- C “grande abbastanza” per considerare Vout fissa
Scrivo per i due stati ton e toff:
Scrivendo toff = (T − ton), e , ottengo:
(Vin − Vout)δT = Vout(T − δT)
Da cui si ottiene la legge del BUCK:
A questo punto, il valore di frequenza del PWM, insieme con il valore di L e C determineranno le forme d’onda di corrente e tensione nel circuito.
Partiamo dal fatto che abbiamo una certa fsw, imposta. Considero anche che vorrò lavorare in modalità continua. E considero anche di non volere un ripple di corrente “troppo grande” nella induttanza. Ricordo che la corrente media nell’induttanza sarà uguale a quella che voglio nel carico perché il condensatore avrà una corrente media NULLA (ic = CdVc / dt e Vc è costante).
Io, si solito, imposto cosi il lavoro:
Conosco VineVout. Di conseguenza so a che valore di duty andrà a lavorare il Buck
.
Conoscendo Fsw, trovo T e quindi anche ton e toff.
Considero il delta IL che voglio e quindi trovo L che mi serve.
Facciamo esempio pratico:
Il duty di lavoro sarà 50%, quindi
Decido DELTA di corrente posso permettermi nell’induttanza. Diciamo 200 mA. Quindi avrò una situazione simile a questa:
Ora, dalla legge della induttanza
scrivo:
da cui ricavo
A questo punto, se non avessi il Cout in parallelo a Rout, avrei sul carico una tensione con valor medio 6V ma con un ripple triangolare di ampiezza Delta-IL * Rout. Allora il condensatore serve apposta per “smussare” questo ripple.
Vediamo come dimensionarlo.
Per dimensionarlo devo decidere quale ripple voglio in uscita. Facciamo finta di volere 100 mV di ripple (cioè +50 mV e -50 mV sul 6 V). Ora, per il calcolo faccio cosi: suppongo che la corrente in Rout NON abbia ripple (cioè considero che questo 300 mV totale sia trascurabile). Allora il condensatore si “becca” tutto il ripple dell’induttanza.
La carica che fa alzare la tensione ai capi del condensatore è quella colorata in questa immagine:
Anche se non lavorassimo al 50% di duty cicle cioè ad esempio in un caso come questo:
è semplice verificare che l’area colorata (che è pari alla caricha elettrica che inietto nel condesatore e che ne provova il ΔVc positivo) vale sempre
Ora, sapendo che
trovo
che è la classica relazione che si trova nel calcolo del Cout di un BUCK.
Nel nostro esempio, volendo 100 mV di ripple trovo .
Di questo ho fatto la simulazione con spice (Microcap), considerando (6 V / 350 mA).
NOTA IMPORTANTE: nella simulazione e poi nel continuo della stesura del documento, la parte Vin, MOS e diodo saranno sostituiti da un generatore di onda quadra ad ampiezza Vin. Questo perché il buck “vede” la Vin quando il MOS è acceso e la Vf del diodo (praticamente 0 volt) quando il diodo è acceso.
La frequenza dell’onda quadra e il duty sono, ovviamente, gli stessi della frequenza che pilota il MOS.
Simulazione SPICE:
Questo il risultato della simulazione:
A parte il transitorio iniziale che sarà sempre oggetto di questo documento, si vede che una volta raggiunto il regime stazionario abbiamo la corrente nell’induttanza (curva rossa) triangolare e la tensione in uscita (curva blu) che è la tensione sul condensatore, centrata intorno ai 6 V. Faccio notare che la tensione sul condensatore dovrebbe essere formata da archi di parabola in quanto l’intergale della corrente che è triangolare.
Guardandole meglio si vede che il ripple di tensione è proprio di 100mV e il ripple di corrente è di 200mA.
Questa è la corrente nell'induttanza:
Questo il ripple di tensione sul condensatore (e sul carico):
Bene, concludo qui la trattazione del BUCK converter in modo tradizionale. Faccio solo notare la “sovraelongazione” che si ha delle grandezze prima di andare in regime stazionario. Ma sarà argomento di un prossimo capitolo.
Ora vediamo l’analisi del buck secondo un altro punto di vista.
Il filtro LC
In questo paragrafo andrò a considerare il buck come essere un filtro LC + resistenza di carico in parallelo al condensatore.
Prima di fare la trattazione “rigorosa”, vorrei fare un ragionamento “da bar”, un po’ sempliciotto ma, spero, efficace.
Semplicemente io posso dire che sto applicando una onda quadra di ampiezza Vin, frequenza Fs e duty D ad un filtro PASSA BASSO del secondo ordine (sanno tutti che un LC è un passa basso… poi nel dettaglio ci entro).
Quindi fino ad una certa frequenza (chiamiamola “frequenza di taglio” tra virgolette, poi sarò più preciso) guadango 1 (0dB), dopo inizio ad attenuare.
Ora, la mia onda quadra di ampiezza 0-Vin la posso vedere come una continua di valore Vin*duty a cui sommo una componente ALTERNATA di ampiezza +Vin/2 –Vin/2.
ATTENZIONE: QUI HO COMMESSO *VOLUTAMENTE* UNA IMPRECISIONE. Dato che parto da una situazione di tutto spento e scarico, non è vero che applico alla cella LC una continua, ma UNO SCALINO, sempre poi sovrapposto ad una alternata.
Comunque posso dire che la componente continua (che è pari a Vin*duty) passa inalterata invece la componente oscillante viene filtrata più o meno a seconda di dove si trova la "frequenza di taglio" del filtro.
Quindi in uscita mi trovo Vin*duty con sovrapposta una ondulazione che è il residuo della alternata filtrata.
Semplice, no?
Solo una nota importante: un filtro LC del secondo ordine diciamo che “cambia un po” come risposta in frequenza nella zona della “frequenza di taglio” al variare del carico:
Invece "molto prima" e "molto dopo" la “frequenza di taglio” tutte le curve si assomigliano.
Quindi, una volta che so che la mia frequenza del PWM (da filtrare) è ben lontana dalla “frequenza di taglio” non mi preoccupo molto del valore di R out.
A questo punto però NON procedo a trovare un modo per dimensionare L e C, anche perché in verità sto filtrando una ONDA QUADRA, quindi con la fondamentale e tutte le sue armoniche.
Sicuramente dovrò fare in modo che la “frequenza di taglio” sia MOLTO prima di fs in modo da attenuare lacomponente alternata il più possibile.
Qui finisce il mio discorso “sempliciotto”…
Vediamo a questo punto di dare un primo numero a questa “frequenza di taglio”: come prima risposta viene da dire che vale (almeno, io avrei detto cosi… da ricordi di studi
passati).
Nel caso dell’esercizio di prima, questa sarebbe:
Io sto dando una frequenza del PWM di 50 kHz, sono ad una decade prima. Ci può stare.
Per sapere che attenuazione avrebbe una sinusoide alla freq di 50 kHz devo guardare il diagramma di Bode.
Lo ottengo sempre con spice:
Faccio notare che vicino a quella che ho chiamato “frequenza di taglio” succede qualcosa, che spiegherò in seguito. Già vedo che NON è vero che inizio ad attenuare a !!!
Questo conferma che tra la "curva ideale" (che chiameremo tra poco diagramma asintotico) e quella reale, potrebbero esserci delle differenze, proprio in zona della "frequenza di risonanza".
Concludendo questa parte posso dire:
Il modo giusto per dimensionare un BUCK è quello spiegato nella prima parte, quello classico che analizza le correnti. E’ ovvio che anche vedendolo come filtro LC + R le cose “tornano” ma non risulta appropriato dimensionarlo partendo da qui.
Ora andiamo a studiare il
Modello MEDIO del BUCK
Osservazione MOLTO importante.
Ho detto prima che la mia Vin (PWM di ampiezza Vin, frequenza fs e duty) lo posso scomporre nelle due componenti: la continua e la parte oscillante. Abbiamo anche visto che la parte oscillante, una volta dimensionato il buck, viene opportunamente filtrata (lasciando un ripple più o meno grande). La parte continua invece “passa” in quanto il filtro LC a basse frequenze ha guadagno unitario. MA IN REALTA’ io non do una continua ma uno scalino.
E poi, cosa ancora più importante: facciamo finta che il valore di Vin (che poi grazie a MOS e diodo diventa PWM) di COLPO passa da un valore ad un altro !!!
Cioè facciamo finta che partendo da questo schema:
Vin abbia un andamento cosi:
E’ ovvio che il PWM a frequenza Fs avrà ampiezza 12V e poi 10V.
In questo caso la frequenza del PWM (stessa di prima) continuerà ad essere filtrata, ma quella che dicevo essere la componente continua, ora inizia ad essere un “segnale” e a questo punto devo vedere come il mio filtro LC si comporta su questo segnale.
E’ un po il ragionamento che stavo facendo prima quando ho detto che in verità al BUCK non applico una continua, ma uno scalino.
Quindi la nuova domanda è: se ho un segnale fatto cosi che arriva al mio BUCK:
Cosa succede in uscita?
Beh, la parte a frequenza fs sappiamo che viene “filtrata”.
Poi so che quando la Vin vale 12V, un uscita avrò, se duty= 50%, 6V (UNA VOLTA IN STATO
STAZIONARIO) mentre quando passa a 10V, avrò (PRIMA O POI) 5V.
Ma lo stesso ragionamento potrei farlo supponendo che io abbia delle variazioni del DUTY CICLE nel tempo, al posto dell’ampiezza della Vin.
Mettendo insieme tutto posso dire questo: una volta che ho dimensionato il BUCK per lavorare ad una certa frequenza del PWM e per avere determinati ripple di uscita, considero che il nuovo schema su cui lavorare è questo
Dove a questo punto il generatore di ingresso è un valore continuo, pari a Vin * duty.
Questo è chiamato MODELLO MEDIO del BUCK, cioè dove considero solo le grandezze MEDIE in quanto quelle di alta frequenza sono “filtrate”.
Ho praticamente eliminato tutte le informazioni in alta frequenza cioè tutto ciò che accade all’interno di un ciclo dove si accende mos e poi diodo.
Quindi lavorare sul modello medio del buck, mi permette di valutare cosa succede alla grandezza di uscita (Vout) al variare di altri parametri, che nel mio caso, vedremo, saranno variazioni di Vin e di DUTY.
Sempre osservando il modello medio del buck, capisco che se tutto resta “fermo” (Vin e duty), la Vout è pari a Vin*D... come deve essere.
Se la Vin passa da 12V a 10V, l’uscita passera da 6V a 5V… forse… se non si mette ad oscillare… e comunque ci passerà con un certo tempo e con un certo andamento (magari oscillando un po e
poi stabilizzandosi).
Proprio per dare risposte a quello che ho scritto sopra è importante a questo punto fare una analisi un po’ più dettagliata del filtro LC.
Ripeto ancora una volta, cosi che mi resta bene in mente, che sto andando a capire un po’ meglio come si comporta un filtro LC non tanto per come lui debba filtrare, in un buck, la componente in altra frequenza, ma come lui possa reagire alle variazioni della Vin e del duty, nel tempo.
Cioè come si comporta a piccoli segnali (perturbazioni) di Vin e Duty che discostano il valore dal suo valore medio.
Perché mi interessa tutto cio?
Perché poi, se io dovessi chiudere l’anello leggendo la grandezza di uscita che voglio controllare e andando ad agire sul duty cicle, scoprirò che capire come si comporta il buck (quindi LCR) a fronte delle variazioni dei segnali, è molto importante per la corretta stabilità del
sistema.
Analisi di un filtro LCR
(PS: metto apposta la R come ultima in quanto è il carico di uscita)
Considero ancora uno schema come questo:
L’analisi di questo circuito può essere fatta sia vedendolo come un filtro, quindi con i suoi diagrammi di bode (guadagno e fase) che come sua funzione di trasferimento nel dominio della variabile “s”.
Ovviamente le due cose sono “in relazione” tra loro.
Si potrebbe fare una trattazione dettagliata mettendo in risalto i parametri importanti relativi.
Intendo dire:
- Pulsazione naturale
- Smorzamento
- Fattore di qualità o di merito (Q)
- Poli
- Frequenza risonanza
- Oscillazione sovraelongazione
- ...
MA questo documento esula dal trattare in modo approfondito tutto questo.
La trattazione completa la si può avere studiando i filtri del secondo ordine oppure risposte in frequenza per sistemi del secondo ordine.
Nel mio caso mi basta avere dei concetti chiave, e quindi mi muovo in questo modo:
- Scrivo la funzione di trasferimento del mio filtro LCR nel dominio di s.
- Ricavo i due poli
- A seconda se se sono complessi cognugati (parte reale nulla o non nulla), reali e coincidenti o reali e distinti, cerco di avere una idea “grossolana” di come potrebbe essere una risposta allo scalino per Vin
- Sempre a seconda della posizione dei poli cerco di avere una idea di come è l’andamento della risposta in frequenza del filtro in corrispondenza della “frequenza di taglio”, sapendo che molto prima di questafrequenza il guadagno è unitario e molto dopo, abbiamo una attenuazione che scende con -40dB/decade
Iniziamo...
Analisi (qualitativa) del sistema del secondo ordine
Partendo dallo schema sopra, possiamo calcolare la FdT.
Ottengo:
Di questa funzione calcolo i due poli (i poli sono i valori di s che annullano il denominatore).
NOTA BENE: In letteratura si trova spesso una funzione di trasferimento del secondo ordine scritta in questo modo
con
e i poli sono:
ωn : pulsazione naturale
ξ: coefficente di smorzamento
Q: Fattore di qualità
Nel caso di LCR abbiamo:
A questo punto, a seconda del valore di R, L e C (oppure a seconda dei valori di ωn,ξ,Q) i poli possono essere:
Caso 1: Complessi cognugati
Caso 2: Reali e coincidenti
Caso 3: Reali e distinti
CASO 1: Poli complessi cognugati
Questo caso si ottinene per valore di 0<ξ<1 oppure 0.5<Q<.
In questo caso i poli valgono:
(**)
O nel nostro caso:
Scritti in un altro modo:
E i poli si troveranno a variare su una circonferenza di raggio ωn
La parte reale del polo vale
Re(Polo)=
da cui:
e quindi
A questo punto vediamo cosa succede se applico uno scalino ad un blocco che ha come FdT due poli complessi cognugati. Antitrasformando la funzione di trasferimento moltiplicata per lo scalino si ottiene questo risultato (di cui bisogna “fidarsi”):
La risposta allo scalino presenterà delle oscillazioni sinusoidali che si smorzano per arrivare al valore “a regime”.
La frequenza delle oscillazioni è pari al valore della parte immaginaria del polo.
L’andamento dello smorzamento è di tipo esponenziale proporzionale alla parte reale del polo.
Vediamo i casi limite sempre considerano che i poli rimangono colmplessi cognugati.
ξ = 1
In questo caso, osservando (**), i due poli sono SENZA parte immaginaria e sono coincidenti nel punto – ωn.
Dato che abbiamo detto che la frequenza della sinusoide di oscillazione è proporzionale alla parte immaginaria, capisco che in questo caso NON ho sovraelongazioni.
ξ = 0
In questo caso, guardano la (**) noto che i due poli sono PURAMENTE immaginari di valore ωn.
In questo caso, ricordandoci sempre che la parte reale è proporzionale all’andamento dello smorzamento della sinusoide, capisco che in questo caso la sinusoide NON SI SMORZA. Ho una oscillazione permanente. La frequenza di questa oscillazione è ωn
Solo un’ultima cosa: i poli potrebbero essere anche complessi cognugati ma con parte reale MAGGIORE di 0 (che vorrebbe dire con − 1 < ξ < 0)
In questo caso vale la sovraelongazione oscillante, al posto di smorzarsi, si amplifica… sistema che diverge.
CASO 2: Poli reali e distinti
Questo caso si ottiene con ξ > 1 o ξ < − 1.
Nel primo caso ho che i poli sarebbero reali e a parte reale negativa, nel secondo caso sarebbero reali e a parte reale positiva.
In questo caso, senza entrare troppo nel dettaglio, è importante sapere che l’andamento della risposta allo scalino è un espenenziale crescente (più o meno) che raggiunge la situazione di regime.
A questo punto rimane solo da capire cosa succede al diagramma di bode del filtro LCR al variare dei parametri che abbiamo finora citato.
Analisi (qualitativa) diagramma bode filtro secondo ordine LCR
Ricodo che partiamo da questa situazione:
Cioè la risposta in frequenza di un filtro LC ha guadagno unitario per frequenze ben al di sotto della “frequenza di taglio” (ricordo che l’ho sempre nominata tra virgolette perché va definita meglio) einvece attenuazione di -40dB/decade per frequenze superiori.
Vediamo di analizzarlo un po' meglio.
Una prima cosa importante da dire è che il diagramma di bode, che non è altro che la funzione di trasferimento, MA NEL DOMINIO della FREQUENZA; lo otteniamo dalla funzione di trasferimento ponendos=jω.
Innanzitutto definisco ANDAMENTO ASINTOTICO del filtro questo grafico:
Quindi capiamo che la famosa “frequenza di taglio” (che ho sempre scritto tra virgolette) è in verità ωn
Ma questo, nella realtà, è un po' diverso...
Il diagramma asintotico approssima più o meno bene quello reale a seconda del valore di ξ. A questo punto NON entro nel dettaglio ma dico solo che la curva reale presenta un picco di guadagno. Ovvero un andamento simile a questo:
Faccio notare che, come avevo detto prima, lontani dalla ωn tutte le curve si sovrappongono.
Tornano alla zona intorno a ωn è solo importante capire a che valore di frequenza si ha il picco (cioè il massimo della funzione, cioè derivando la funzione il punto a derivata nulla).
Dalla teoria si ha che il massimo è a
Questo valore ha senso solo per perché la radice sia positiva. Quindi solo per questi valori ho un massimo nella funzione.
Invece per
allora possiamo dire che la funzione di trasferimento reale “assomiglia” a quella asintotica.
In conclusione, non si sbaglia di molto (sempre tenendo presente lo scopo di questo documento) a dire che questo filtro LC+R presenta un guadagno unitario fino a “circa” la sua ωn definita come sopra. Dopo ωn attenua di 40db/decade.
Nell'intorno di ωn se il coefficiente di smorzamento allora ho anche la presenza di un picco di guadagno. Altrimenti ho un andamento simile a quello asintotico.
E' importante anche avere una idea di come si comporta l'andamento della FASE di un segnale in uscita ad un sistema del secondo ordine. Anche qui si potrebbe partire dall'andamento asintotico della fase e poi passare a quello reale. Comunque, il risultato importante è questo:
Quindi risulta che per valori di ξ tendenti a 0 la fase ha un salto brusco, in corrispondenza di ωn.
Bene, abbiamo concluso l’analisi della cella LC vista come sua funzione di trasferimento e come risposta in frequenza.
XXXXXXXXXXXXXXXXXXXXX R I A S S U N T O XXXXXXXXXXXXXXXXXXXXX
Riassumo solo i parametri importanti relativi al caso di cella LCR:
Poli:
Parametri:
Poli complessi cognugati se:
e quindi i poli valgono:
Poli puramente immaginari se R fosse infinito (no carico)-> oscillazione permanente a freq ωn
Poli reali e distinti se
Esercizi pratici e simulazioni
Esercizio 1
A questo punto dovrebbe essere chiaro il perché nella simulazione fatta precedentemente in questo documento (Buck con L=300uH, C=5uF e R=17 ohm) si ottiene che prima di andare in regime stazionario, è presente una oscillazione a fronte dello scalino.
Possiamo verificare che i poli del caso sopra sono:
Come detto la parte immaginaria è legata alla frequenza della sinusoide di oscillazione afronte di uno scalino. Ricordo che 24.8x103 è l’omega della pulsazione. In frequenza otteniamo: 3.9KHz
In effetti se osserviamo la risposta allo scalino:
facendo l’inverso di quello segnato (248 usec) otteniamo 3.9KHz !! Conferamto tutto! Si nota che è presente la componente in alta frequenza filtrata…
Esercizio 2
Proviamo a rifare i conti sul BUCK converter di partenza, ma facendolo lavorare al limite tra funzionamento continuo e discontinuo.
Il conto è veloce: sapendo che ho un periodo di 20usec, e avendo come forma d’onda un triangolo di cui voglio il valor medio = 350mA, ho che il picco sarà 700mA.
Partendo da posso scrivere
Da cui
.
Qui lo schema:
Questa la simulazione allo scalino:
Come si vede dalla simulazione stiamo lavorando al limite tra funzionameno continuo e discontinuo sulla corrente nell’induttanza (vedi simulazione dopo che è andato a regime ... o quando sono in stato stazionario).
In verità, mi ricordavo che lavorare in funzionamento discontinuo, aiutasse un po' “la stabilità”. Effettivamente mi sono accorto che nella simulazione sopra la corrente “può diventare negavita”, ma questo è dovuto al fatto che il filtro LC del buck l’ho alimentato con un generatore di tensione.
Allora ho realizzato il buck in questo modo:
Ed ho ottenuto:
Esercizio 3
Provo a lavorare ancora più in discontinuo...
Metto L=40uH. MA in questo caso non sarei più con tensione di uscita medio = 6V in quanto tutta la trattazione fatta vale per un funzionamento continuo. Dovrei ritarare il duty per avere una uscita di 6V. Allora metto duty = 70% per avere ancora in uscita 6V medi (prova empirica con simulatore):
Come si vede… la sovraelongazione diminuisce:
Cosa voglio dire con questo?
Mah… da ricordi passati sapevo che lavorare in modo discontinuo è “meglio” per la stabilità. Ma questo argomento sarà da trattare in modo più approfondito.
Conclusioni
Concludo qui questo documento ricordando lo scopo per cui è nato: capire il comportamento su piccolo segnale di un buck converter considerando il suo modello medio.
Questo per poter poi trattare, senza lacune, l'analisi di stabilità di un alimentatore a commutazione chiuso in un anello di retroazione.
Nello studiare tutto ciò mi sono accorto che avevo molti altri concetti che erano, purtroppo, molto fumosi per me.
Quindi ho cercato di trattare anche loro senza entrare troppo nei dettagli ma analizzando solo i concetti base ed importanti.
So che per molti questi argomenti sembreranno essere stati trattati in modo "banale" e poco rigoroso, ma spero altresi che per chi si trova in una situazione simile alla mia, questa lettura possa aiutare!
A me sicuramente è servito!
PS: sicuramente avrò commesso qualche errore... nelle formule o in qualche concetto... Sono pronto a ricevere aiuti per migliorare il documento!