Schema con Microcontrollore per Realizzare un Convertitore DC-DC Step-up per Elevare una Tensione all’interno del Circuito…
INTRO
In molte applicazioni e in molti circuiti vi è la necessità di avere più tensioni di alimentazione, ad esempio in un circuito con un microcontrollore a 5V e una ventola a 12V vi è la necessità di avere queste due tensioni. Le soluzioni sono molteplici; si può alimentare il circuito con una sola tensione a 12V e poi ricavare da quest’ultima la tensione a 5V con un convertitore (lineare o switching), si può usare un alimentatore con doppia uscita a 5V e 12V oppure si può alimentare il circuito con 5V e realizzare un convertitore step-up che innalza la tensione a 12V.
L’ultima soluzione viene usata se gli elementi alimentati a 12V e dallo step-up non assorbono correnti elevate >1A, questo perché se non ben progettati gli step-up hanno un’efficienza minore rispetto la soluzione di partire da 12V e ridurre la tensione.
Per innalzare la tensione si può usare un apposito chip che realizza un dc-dc converter step-up, un duplicatore di tensione con ne555 oppure si può realizzare lo step-up con un microcontrollore che regola la tensione di uscita andando a leggere con l’ADC il valore di uscita e regolando di conseguenza il segnale PWM di controllo.
La soluzione di usare un microcontrollore è ottima se nello schema esso è già presente. Inoltre nel microcontrollore possono essere realizzate le funzioni di controllo della tensione di uscita e anche altre funzioni. Ovviamente devono essere funzioni veloci in modo tale che la tensione non rimanga non regolata.
Torniamo all’esempio della ventola e del microcontrollore e supponiamo che lo schema serve per un controllo di temperatura. Nel microcontrollore realizzo il codice di controllo dello step-up e inoltre leggo la temperatura e ad esempio adatto la tensione di uscita alla temperatura per controllare la ventola.
Questo è solo un esempio delle applicazioni del circuito.
CODICE
Il codice è il seguente:
char value = 0b00010100;
unsigned int conversion;
void main() {
PR2 = 20;
T2CON = 0b00000100; //settaggi tmr2: postascaler 1:1, tmr2 on, prescaler 1:1
CCP1CON = 0b00111100; //utilizza pwm e setta il valore di comparazione con i due lsb = 11
TRISC.F2 = 0; //uscita pwm
CCPR1L = value; //valore affinchè DC=1 ccpr1l=0001100 ccp1con=0011...
ADC_Init();
while(1){
conversion = ADC_Get_Sample(0);
if(value>0b00000000 && conversion<0b0011001000) value--;
if(value<0b00010100 && conversion>0b0011001000) value++;
CCPR1L = value; //valore affinchè DC=1 ccpr1l=0001100 ccp1con=0011...
}
}
Nel “main” si va ad inizializzare il modulo che genera il segnale PWM di uscita e in particolare si setta il timer counter 2 con un prescaler e postscaler di 1:1 in modo tale che esso conti alla frequenza di oscillazione interna. Poi si setta il modulo CCP1 come generatore del PWM e si inizializza il PWM a livello alto.
Nel ciclo infinito si va a convertire la tensione presente sul pin AN0 che sarà una parte della tensione di uscita, così da avere informazioni sulla tensione di uscita. Se il valore convertito è minore della soglia (0.8V) allora si va a ridurre il Duty Cycle del PWM in modo tale che l’induttore dello step-up si carichi ad una tensione maggiore. Se il valore convertito è maggiore della soglia allora il Duty Cycle si va ad incrementare.
Il nuovo valore di Duty Cycle viene scritto nel modulo PWM. Sotto la stringa “CCPR1L = value;” possono essere eseguite altre funzioni, si consiglia però di non inserire delay lunghi (>100ms).
SCHEMA
Lo schema è il seguente:
Il microcontrollore è alimentato da una tensione a 5V che giunge con il positivo al pin 20 e con il negativo o massa ai pin 19 e 8. R1 mantiene in uno stato di funzionamento il microcontrollore mentre C1, C2 e X1, il quarzo da 20MHz) formano la rete di oscillazione.
Gli elementi del convertitore Step-up sono L1, D1, Q1 e C3-C4 mentre R2 ed R3 formano la rete di retroazione.
Il Mosfet Q1 deve essere un N-Chanel con tensione VDS supportata di almeno 30V, corrente di almeno 3A e una capacità di gate inferiore ai 70nC. L’induttore L1 può essere aumentato a 220uH per aumentare la corrente dai 300mA attuali a circa 500mA mentre il diodo D1 deve essere un diodo Schottky con tensione superiore a 30V e corrente di 1A come ad esempio un 1N5818.
Le due capacità in parallelo C3 e C4 sono così connesse per dimezzare la ESR del condensatore e ridurre il ripple.
Il circuito può essere alimentato anche a 12V e ad esempio elevarli a 24V solo che serve un diodo Zener tra VDD e il pin 20 del microcontrollore con valore di 7.5V in modo tale che il microcontrollore sia alimentato da 12-7.5=4.5V e non si brucia.
Lo schema realizzato su breadboard per il test ha il seguente aspetto:
DOWNLOAD
Potete scaricare la simulazione del circuito con PROTEUS e il codice compilato con MIKROC al seguente LINK!!!