PROGETTARE UN BUCK CONVERTER 12V - 5V, 5A



In questo converter molti dei componenti che lo compongono si trovano in commercio racchiusi in un unico chip (controller) che è facilmente reperibile a basso costo. Se si fosse usato un controller al loro posto si sarebbe semplificato lo schema ed il circuito avrebbe avuto una dimensione più ridotta. Il fatto è che lo scopo principe dell'hobbista non è quello di costruire apparecchiature per venderle  ma è quello di capirne il funzionamento, in effetti  sarebbe impossibile indagare su tutti i punti dei componenti se essi fossero racchiusi in un integrato, in questo progetto, invece, ogni reoforo è libero di essere agganciato da  una sonda dell'oscilloscopio o sondato con i puntali di un tester; tensioni, correnti e forme d'onda sono facilmente misurabili e visualizzabili in ogni punto del circuito attestando che questo progetto, con la sua apparentemente ingiustificata complessità,  è nato per il solo uso didattico.
Lo schema del convertitore è rappresentato nella figura seguente.

Ho incorniciato i componenti  creando dei blocchi ben definiti e distinti l'uno dall'altro per la funzione che svolgono.
Inizierò la descrizione del funzionamento in maniera oggettiva  senza entrare in modo particolareggiato  in ogni blocco che compone il convertitore. Seguirà poi un approfondimento di ogni parte del circuito e fornirò le equazioni  necessarie per il suo dimensionamento. Per la spiegazione userò le forme d'onda fornite dal simulatore LTspice, sarebbe impossibile con un oscilloscopio a due canali poter osservare in un sol colpo  tante forme d'onda tra loro correlate temporalmente, inoltre i segnali visualizzati dall'oscilloscopio sono sempre inficiati da disturbi e spike tipici dei circuiti prototipi, comunque ogni tanto fornirò alcune immagini di forme donde reali prelevate nei punti salienti del circuito.
Si analizzi la figura sottostante.

Premetto che lo studio, come in genere si fa, verrà eseguito sul sistema entrato a regime, tutti i transienti iniziali (che porteranno il sistema a regime) instauratesi subito dopo avere alimentato il circuito per ora  non vengono considerati. Più avanti però, per pura curiosità, riporterò il loro andamento nel tempo.
Dato che il segnali in FIG 2 si ripetono periodicamente si può prendere  qualsiasi punto temporale per iniziare l'analisi, scelgo, ad esempio, il punto A. Fintanto che il livello del segnale a dente di sega V(saw) è inferiore a quello di errore V(ve), ovvero tra i punti A e B l'uscita del comparatore rimane bassa.  Questo ultimo segnale lo ritroviamo a circa lo stesso livello (dopo il  buffer) sul gate del mosfet U3 che rimane in conduzione per il periodo di tempo tra A e B caricando l'induttore L1 con una corrente I(SOURCE) che cresce linearmente. Il diodo D1 è invece interdetto (I(SOURCE) = I(L1)).
La situazione è raffigurata nella seguente figura.

L'induttore si comporta come elemento passivo che assorbe energia, infatti il segno "+" è dalla parte dove entra la corrente.
Quando il livello del segnale V(saw) nel punto B supera quello del segnale V(ve) l'uscita del comparatore va alta e rimane in tale stato fino al tempo C, quindi il mosfet si interdice nel tempo che va da B a C (I(SOURCE) = 0). Dato che la corrente non può interrompersi istantaneamente la induttanza cerca di opporsi a questa nuova situazione invertendo la sua polarità come nella seguente figura.

Ora l'induttanza si comporta come un generatore rilasciando energia per tutto il tempo nel quale il mosfet è in interdizione, la corrente che circola in essa è quella che circola nel diodo D1 (I(L1) = I(D1)) ed ha andamento lineare decrescente.
L'onda della corrente I(L1) assume una forma triangolare e la corrente I(LOAD), circolante nel carico (costante grazie alla presenza del condensatore), si trova al centro di questo triangolo (vedi Fig. 2).
Suppongo ora che il carico subisca un incremento, allora la tensione ai suoi capi aumenta e di conseguenza aumenta la tensione presente al pin 6 di U2, essendo questo pin invertente la tensione errore V(ve) diminuisce, vediamo cosa succede tramite la seguente figura.

Essendosi abbassata la tensione V(ve) il periodo di tempo durante il quale il mosfet è in saturazione (da A a B) è diminuito rispetto alla precedente situazione. Questo significa che viene fornita meno energia alla induttanza e di conseguenza la tensione al carico diminuisce per tornare al valore nominale (o meglio, come vedremo, ad un valore molto vicino ad esso). Ovviamente quando il carico diminuisce  la tensione V(ve) aumenta ed il periodo tra A e B aumenta fornendo più energia all'induttore con la conseguenza che la tensione al carico aumenta tornando ancora al suo valore nominale.
La spiegazione del convertitore fin qui data è solo illustrativa ed è stata esente da ogni relazione matematica, ora adrò più in profondità descrivendo ogni blocco in maniera approfondita e fornendo le relazioni matematiche per il dimensionamento dei componenti.

BLOCCO GENERATORE SEGNALE A DENTE DI SEGA


Si consideri la figura seguente.


Il gruppo dei componenti D2, R9, Q1, R10 compone un limitatore di corrente che alimenta il condensatore C2, si analizzi la seguente figura.


Per partire con la spiegazione prendo un tempo nel quale il condensatore è scarico, ad esempio il punto A. Da qui il condensatore inizia a caricarsi, siccome esso è alimentato a corrente costante la tensione ai suoi capi cresce linearmente, quando  raggiunge il valore di 5.4V ( la tensione del zener più 0.7V ai capi della giunzione B-E di Q2) Q2 entra in conduzione fornendo corrente al gruppo B-E di Q6, diodo D4, B-E di Q5 (ill diodo D4 serve per linearizzare la punta bassa del segnale a dente di sega).
Sia Q6 che Q5 entreranno in conduzione, Q6 scarica il condensatore (notare il picco di corrente I(Q6)) mentre Q5 tiene cortocircuitato il zener per permettere a Q2 di rimanere in conduzione per tutto il tempo della scarica (notare che il tempo nel quale Q6 e Q5 rimangono in conduzione è maggiore a quello necessario per la scarica del condensatore, questo è dovuto al ritardo dei transistor che ho usato io). Comunque il condensatore oltre a scaricarsi attraverso il collettore di Q6 si scarica anche attraverso Q2 e D4,  questi tre componenti devono sopportare correnti impulsive dell'ordine dei 500mA ripetitivi. Si noti che la tensione del condensatore non va a zero ma si ferma a circa 0.2V, questo è dovuto alla tensione di saturazione di Q6.
Qui sotto la formula per dimensionare i componenti:

F = I(R9) / (C2 * delta_V)

dove:
F = frequenza dell'onda a dente di sega.
I(R9) = corrente costante.
C2 = condensatore.
delta_V = differenza tensione fine carica con tensione inizio carica.

Inizio a scegliere la frequenza, più è alta e più alte sono le perdite nell'induttore, nel mosfet e nel diodo D1 però più piccole sono le dimensioni dell'induttore e del condensatore di filtro C1, viceversa più è bassa e minori sono le perdite suddette ma risultano più grandi le dimensioni dell'induttore e della capacità. In genere le frequenza  viene selezionata tra 25KHz  e 50 KHz, nella scelta sono sceso ancora  più in basso (20KHz) perché ho ritenuto che per questo convertitore non risultassero poi così grandi la capacità e l'induttore a quella frequenza.
Scelgo arbitrariamente un  valore per il condensatore C2, 100nF.
La delta_V è la differenza tra il valore minimo e massimo del segnale:

delta_V = V(saw)_max -V(saw)_min = 5.4 - 0.2 = 5.2V

NOTA:
Come partenza introducete una tensione di saturazione generica di 0.2V, poi correggerete il valore di R9 (magari usando un trimmer al posto di una resistenza fissa) per regolare la frequenza al valore da voi prescelto.

Ricavo la corrente del limitatore.

I(R9) = F * C2 * delta_V = 20KHz * 100nF * 5.2 = 10mA

La formula per ricavare R9 è la seguente:

R9 = (V(D2) - 0.7) / I(R9) = (1.8 - 0.7) / 0.01 = 110 ohm

dove:

V(D2) è la caduta sul diodo led verde.
0.7 è la caduta sulla giunzione B - E di Q1.

Con questo valore di componenti e con la loro  tolleranza la frequenza misurata sul prototipo è di circa 21.7KHz. Si è visto che il livello più basso del segnale è di 0.2V, se si inviasse questo segnale al comparatore il convertitore non funzionerebbe perché appena fornitagli l'alimentazione il segnale errore V(ve) è a zero volt e per poter funzionare questo segnale deve salire al valore di regime e per farlo è necessario che il suo livello sia compreso in quello del segnale a dente di sega. Per ovviare a questo problema basta fissare quest'ultimo tramite il condensatore C3, il diodo D3  e la resistenza R15, il clamper per poter funzionare deve rispettare la seguente relazione:

R15 * C3 > 100*T

dove T è il periodo del segnale.

100K * 100nF > 100 * 50uS
0.01 > 0.005

La condizione è soddisfatta.
Nella figura sottostante si nota il segnale fissato (a circa -0.7V) nel circuito reale.



BLOCCO AMPLIFICATORE ERRORE



Premetto che l'amplificatore errore in questo progetto non è dotato di rete di compensazione per non provare troppo la mia  pazienza e quella del lettore hobbista, comunque anche senza compensazione il sistema lavora bene basta fare attenzione alla scelta del grado di amplificazione, esso non può essere ne troppo basso ne troppo alto per i motivi che vedremo a breve.
Qui sotto la parte del circuito riguardante l'amplificatore errore:


La tensione al carico si determina con la seguente formula approssimata:

V0 = V(source)  * TON / T

dove:
V0 tensione al carico.
V(source) tensione sul catodo di D1 (con un carico di 1 ohm è pari a 10.43V, con un carico di 10 ohm  è pari a 11.8V) quando il mosfet è chiuso (TON).
TON tempo nel quale il mosfet è chiuso.
T periodo del segnale.

Ipotizzo che il carico sia pari ad 1 ohm e regolo il trimmer R5 per avere 5V sul carico stesso (in realtà, data la criticità del trimmer, sono riuscito a regolare la tensione a 5.05V).

Ricavo il tempo TON

TON = T * V0 / VDC = 50uS * 5.05V / 10.43 V = 24.2uS

La tensione errore V(ve), l'ho misurata con il tester sul circuito, il suo valore è 1.575V, comunque essa  può anche essere determinata graficamente (in maniera più approssimativa) in  tal caso dovrete disegnare su carta millimetrata un triangolo con lato verticale alto 5.4 e quello orizzontale largo 50, scegliete una scala in grado di facilitarvi il compito della lettura, tracciate poi una verticale dal valore 24.2, il punto dove essa interseca la diagonale corrisponderà alla tensione errore V(ve).
Vedere figura successiva.


Tra i punti 1 e 2 c'è una differenza errore pari a (per il momento ipotizzo che l'amplificazione sia  pari a 10 e non 100 come sul circuito):

VD = V(ve) / 10 = 1.575 / 10 = 0.1575V

Aumento il carico a 10 ohm, qui sotto i risultati ottenuti sempre con la stessa procedura.

V(ve) = 1.4022V
VD = 0.14022V
TON = 22.16uS

Aumentando il carico la corrente diminuisce e con essa le cadute nel mosfet e nell'induttore, la conseguenza è che la tensione al carico tende a salire ed il circuito di retroazione cerca di riportarla a al valore iniziale. Ma dato ora che la differenza di tensione VD è diminuita rispetto a quella che esisteva con il carico di 1 ohm la tensione al carico non è la stessa ma è leggermente diversa, vediamo perché.

Sul punto 1 (di conseguenza anche sul punto 3) c'è la seguente tensione:

V3 = VZ - VD = 4.58- 0,14022 = 4.56V

NOTA:
VZ misurata è 4.58V.
Quindi la tensione sul carico è:

V(load) = 4.56 * (R4 + R5) / R5 = 4.56 * 8100 / 7100 = 5.065V

Si nota che passando da un carico di 1 ohm ad un carico di 10 ohm la tensione aumenta di 15mV. Per sapere che effetto ha l'amplificazione su questa variazione di tensione ricalcolo il tutto con una amplificazione pari a 20.

Carico da 1 ohm:
V(load) = 5.07V
V(ve) = 1.57V
VD = 0.0785V
TON = 24.19uS

Carico da 10 ohm:
V(load) = 5.08V
V(ve) = 1.39V
VD = 0.0695V
TON = 22.15uS

Ora la differenza tra la tensione V(load) per un carico da 1 ohm ed un carico di 10 ohm è di 10 mV, ovvero è diminuita rispetto a quella con amplificazione pari a 10. Questo ci fa supporre che se l'amplificazione fosse infinita la tensione rimarrebbe costante per tutti i valori di carico, ovvero la tensione differenza sarebbe pari a zero, ma questo non è possibile prima perché non esistono amplificatori ad amplificazione infinita e poi perché il sistema può funzionare solo se esiste una, seppur piccola, tensione errore. Inoltre se si aumenta troppo l'amplificazione il sistema diviene instabile, nel mio prototipo sono arrivato ad una amplificazione di 100 e la variazione di tensione tra carico massimo e minimo è di solo qualche millivolt.

BLOCCO POTENZA


L'induttore è il componente più critico di tutto il convertitore, con esso si sceglie la corrente minima con la quale il convertitore ancora regola efficacemente, inoltre l'induttore va scelto in modo che non entri mai in saturazione al picco della corrente a carico più basso  e che possa sopportare il passaggio della corrente  senza superare la sua temperatura massima consentita.
Come già ho anticipato prima quando il mosfet è in saturazione l'induttore assorbe energia, dato che la tensione al carico si può ritenere costante grazie alla presenza del condensatore C1come pure quella sul drain del mosfet V(source), allora la corrente in L1 segue un andamento lineare crescente. Quando il mosfet si interdice l'energia dell'induttore si scarica sul carico e su C1, la corrente ora passa attraverso il diodo e segue un andamento lineare decrescente. Si tenga conto che  quando il carico cambia varia l'ampiezza totale della corrente come nelle due figure sotto, la prima per un carico di 1 ohm la seconda per un carico di 5 ohm.


Si tenga conto che quando il carico si abbassa ulteriormente il punto "a" tocca l'asse dei tempi e l'induttore entra  in "modo discontinuo". Il convertitore in questo stato ancora regola ma con meno efficienza. In genere si sceglie un valore minimo di corrente pari ad 1 / 10 del valore massimo.

I dati di partenza in un progetto di un buck converter sono i seguenti:

Tensione al carico V(load) = 5V
Tensione in ingresso VDC = 12V
Massima corrente assorbita dal  carico I(load)_max = 5A (1 ohm)
Minima corrente assorbita dal carico I(load)_min  = 0.5A pari ad 1 / 10 I(load)_max (10 ohm)

Formula per determinare l'induttanza (questa formula è  valida solo per una corrente minima pari ad 1 / 10 della corrente massima che poi è uno standard del DC / DC buck converter)

L1 = 5 * (VDC - V(load) ) * V(load) * T / (VDC * I(load)_max ) = 5 * (12 - 5) * 5 * 50uS / (12 * 5) = 145.8uH (portato a 150uH)



Qui di seguito alcune formule che serviranno per scegliere l'induttore (fare riferimento alla precedente figura):

delta_I = (V(source) - V(load)) * TON / L1 = (11 - 5) * 24.2uS / 150uS = 0.968A (massima escursione del ripple)
I_max = I(load)_max + delta_I / 2 = 5 + 0.484 = 5.484A (picco superiore del ripple)
I_min = I(load) - delta_I / 2 = 5 - 0.484 = 4.51A (picco inferiore del ripple).
I(L1)_rms = sqrt(I(load)_max^2 + delta_I^2) = sqrt(25 + 0.93) = 5.01A (valore efficace della corrente, in questo caso molto vicina alla continua dato il piccolo valore di delta_I)

Bisogna scegliere un induttore da 150uH che possa sopportare  una corrente efficace uguale o maggiore di 5A (sezione del filo) e  presenti  una corrente continua di saturazione maggiore di 5.484A (saturazione del nucleo magnetico).
La scelta potrebbe ricadere sull'induttore della Eaton, vedi figura sotto:


Se invece volete usare un induttore che avete in laboratorio del quale conoscete solo il valore della induttanza le seguente misura serve per determinare la  corrente di saturazione.
Montate lo schema seguente:

Con questo circuito si può determinare la corrente di saturazione dell'induttore. Il generatore di onda quadra deve avere la possibilità di variare il duty-cycle del segnale generato. Tenete conto che quando il livello del segnale è basso il mosfet conduce e quando è alto il mosfet è interdetto. Quindi più è alto il duty cycle e per meno tempo il mosfet è in saturazione.
Collegate la sonda del CH1 dell'oscilloscopio sul punto "a" (sonda X1 o X10 è indifferente), collegate la sonda del CH2 dell'oscilloscopio sul punto "b", questa deve essere X1 e il CH2 deve essere settato a X100 in modo che la lettura sulla resistenza sia diretta (quello che si legge è il vero valore di corrente che circola nella resistenza).
La tensione dell'alimentazione deve essere dello stesso valore di quella del segnale generato (io ho alimentato il circuito a 10V dato che il mio generatore può arrivare a quel livello).
Settate il duty-cycle più alto possibile (il mio generatore arriva 99.9%). Date alimentazione e osservate il CH2 dell'oscilloscopio. Vedrete la rampa di carica dell'induttore, scegliete una frequenza del segnale generato affinché quando il mosfet è in interdizione tutta l'energia dell'induttore venga trasferita alla resistenza (corrente pari a zero). A grandi valori del duty-cycle (tempi piccoli di saturazione del mosfet) la corrente circolante nell'induttore sale  linermente come nella seguente figura.

 

Diminuite il duty-cycle come nella seguente figura.



Leggete tramite cursori dell'oscilloscopio  il valore in cui inizia la saturazione, nel mio caso 5A.

Per quanto riguarda la capacità del filo  di sopportare una certa corrente rms basta imporre un valore piuttosto conservativo di 500 circular mil per rms ampere e misurare il diametro del filo, quello del mio induttore  è 0.12 mm.

area filo = d / 2 * Pi^2 = 0.06 * Pi^2 = 0.59 mm^2
0.59 = 1164 circular mil (calcolatrice on line)
Irms = 1164 / 500 * 1 = 2.3A

Questo induttore non va bene per questo progetto a causa della basso valore di saturazione  (in realtà lo provato per vedere l'effetto che poteva fare  un induttore non idoneo, il risultato è stata bassa regolazione con il  carico più basso).
Qui sotto il circuito prova.



Ho deciso allora di costruirne  uno su toroide in polvere di ferro T80-26, con filo da 0.5 mmm di diametro, per avere 150uH occorrono 60 spire. I risultati sono i seguenti:



In questo induttore la saturazione inizia a 6A.

area filo = d / 2 * Pi^2 = 0.06 * Pi^2 = 2.46 mm^2
2.46 = 4855 circular mil (calcolatrice on line)
Irms = 4855 / 500 * 1 = 9A

Questo induttore potrebbe andare  bene.



In realtà la misura con NanoVna mi ha dato un valore di induttanza inferiore  di 150uH ma dal punto di vista del funzionamento non cambia molto. Vedi figura seguente:



A regime l'induttore si scalda fino a  83 °C (da TA = 14 °C), Questo è dovuto prevalentemente al passaggio della corrente (5A) nel  filo elettrico dato che la corrente alternata dovuta al ripple è piccola (circa 300mVRMS) e di conseguenza lo è la perdita nel nucleo del toroide.



Per poter verificare questa asserzione ho alimentato l'induttore con un alimentatore con corrente limitata  a 5A ed il risultato è  stato che la massima temperatura raggiunta è stata di 83°C (da TA = 14°C) la stessa di quando era montato nel circuito. Vedi la  seguente figura.


Quindi la potenza dissipata è:

PL1 = 4.99 * 1.2 = 5.98 W

Tenendo conto che i nuclei a polvere di ferro dopo 80 °C iniziano a perdere le loro caratteristiche  e per il fatto che questa potenza persa in calore abbassa il rendimento del convertitore (che è importantissimo per i DC-DC) questo induttore ancora non va bene per questo progetto. Ho provato quindi un altro induttore che mi permettesse di usare un filo più spesso.
Ho trovato nel cassetto una barretta di ferrite di quelle che si usano per ricevere le stazioni AM, siccome era molto lunga l'ho tagliata. Per tagliarla bisogna stare molto attenti dato che la ferrite è un materiale che si rompe molto facilmente. L'ho tenuta bloccata nella morsa (senza stringerla troppo) e ho tagliato la barretta con un taglia tubi. Bisogna avere molta pazienza e stringere il taglia tubi molto poco ad ogni giro. Vedi figura sotto.



 Ho avvolto 75 spire sulla barretta per ottenere 150 uH,  ho usato un filo di diametro pari a 1mm e poi ho eseguito le stesse precedenti misure  ottenendo una potenza dissipata di:

PL1 = 5 * 1= 5 W

minore di quella di prima, vedi figura sotto:



La temperatura ora sale solo a 30°C (da TA = 15 °C), uno perché il diametro del filo è più grande e poi perché l'avvolgimento è più esposto all'aria rispetto a quando era avvolto sul toroide e si raffredda meglio.

Per pura curiosità ho voluto abbassare ulteriormente la potenza dissipata nel filo usando  un toroide in povere di ferro T184-26 che permette agevolmente di usare un filo di 1.5 mm di diametro, 30 spire danno un un valore di induttanza pari a 150 uH.
Vedi figura sotto.



Per determinare la corrente di saturazione ho usato lo stesso circuito di fig. 14 ed il risultato è visualizzato sotto.



La  rampa di corrente è lineare  fino a 12A (non ho potuto provare valori superiori a 12 A perché il mio alimentatore non può erogarli, inoltre nella prova il mosfet si scalda e la sua corrente di drain è dichiarata essere 12 A a 25 °C e decresce con l'aumentare della temperatura. Per questo la prova deve durare pochissimo, fatta la lettura, a quei livelli di corrente, occorre rialzare immediatamente il duty-cycle o togliere l'alimentazione).

Nella figura sotto si vede la dissipazione su questo induttore.

La potenza dissipata nell'induttore è ora:

PL1 = 5 * 0.5 = 2.5 W

Ovvero si è dimezzata.
Vedi figura sotto.



Per determinare la capcità C1 si applichi la seguente formula:

C1 = 65 * 10^(-6) * 0.2 * I(load)_max / Vrr = 65 * 10 ^(-6) * 0.2 * 5 / 0.07 = 958 uF (uso 1000 uF)

dove:

65 * 10 ^(-6) è l'ESR del condensatore (valore che mediamente si riscontra negli  elettrolitici)
I(load)_max è la corrente con il carico più basso (1 ohm)
Vrr è il ripple desiderato (ho scelto 0.07V).

In parallelo al condensatore elettrolitico occorre metterne uno di 10nF (che ha un ESR più basso alle alte frequenze) per attenuare il ripple ulteriormente (dell'ordine del 50% al  60%).
Nella seguente figura la tensione sul carico di 1 ohm.



Il mosfet deve sopportare una corrente maggiore di I_max = 5.484A e almeno una tensione doppia di VCC, deve inoltre presentare una bassa resistenza di chiusura per  minimizzare le perdite quando è in saturazione.
Il gate del mosfet assorbe corrente ogni qual volta c'è un brusco cambiamento di livello da alto a basso e viceversa, in genere, per la maggior parte dei mosfet utilizzati per queste potenze, questa corrente si aggira intorno ai 200mA, dato che il comparatore LM339 non è in grado di fornirla occorre mettere un buffer a BJT tra il comparatore ed il gate del mosfet.

RENDIMENTO

Con l'utilizzo del primo induttore il rendimento a pieno carico è:

rend = (P_load / P_alim) * 100 = (4.99 * 5.13) / (3.15 * 12) * 100 = 67.7 %

Vedi figura sotto.



Con il secondo induttore:

rend = (P_load / P_alim) * 100 = (5.09 * 5) / (2.80* 12.1) * 100 = 75.1 %

Aumentato notevolmente.
Vedi figura sotto:
.

Con il terzo induttore:

rend = (P_load / P_alim) * 100 = (5.18 * 4.99) / (2.73 * 12) * 100 = 79 %

Aumentato ancora.
Vedi figura sotto:



Fabio
HOME