Regolatori boost con PIC16C78X

In questo articolo si introdurrà il concetto di regolatore boost operante in modalità discontinua, implementato tramite microcontrollore PIC16C78X. In particolare, si realizzerà un elevatore di tensione da 9VDC a 170VDC. Tale valore è perfetto per fornire potenza, ad esempio, ad un tubo Nixie a tre cifre. Si tratta di un componente elettronico nato nella metà del ventesimo secolo ed usato per visualizzare informazioni digitali. Ovviamente, tale dispositivo risulta oggi obsoleto, poiché sostituito dai più efficienti display LED ed LCD, ma costituisce un ottimo banco di prova per un regolatore boost. Si esamineranno quindi le formule di progetto e si comprenderà come utilizzare il PICMicro nel percorso di retroazione per controllare e stabilizzare la tensione di uscita.

TOPOLOGIA BASE

Nella topologia base mostrata in Figura 1, la tensione di ingresso (VIN) è sempre minore della tensione di uscita (VOUT).

Figura 1. Topologia base di un convertitore boost operante in modalità discontinua. Il controller serve per controllare e stabilizzare la tensione di uscita

Figura 1. Topologia base di un convertitore boost operante in modalità discontinua. Il controller serve per controllare e stabilizzare la tensione di uscita

Nella fase iniziale l’energia è immagazzinata nell’induttore  L1   quando Q1   è acceso. Dalla caratteristica tensione-corrente di un induttore, si ricava che la corrente cresce linearmente col tempo secondo l’equazione 1 (si assume in prima approssimazione che gli effetti dissipativi  dell’induttore   siano  trascurabili;  si vedrà in seguito come tenerne conto).

La corrente di picco è raggiunta nell’istante in cui Q1  si spegne. A partire dall’equazione 1 si ricava il valore della corrente di picco nel caso di tensione di ingresso modulata PWM (equazione 2). Si indica con D il duty-cycle e con T il periodo del segnale PWM.

La corrente in un induttore non può cambiare istantaneamente (così come la tensione su un condensatore). Perciò, quando Q1 è aperto, la corrente in L1 continua a fluire, attraverso il diodo (D1), nel condensatore (C1) e nel carico (RL). Quindi la corrente nell’induttore tende a decrescere linearmente nel tempo a partire dal suo valore di picco (IPEAK). Quando si parla di regolatore boost in modalità discontinua si intende che il valore della corrente deve decresce fino ad annullarsi. La relazione che descrive questo comportamento è riportata nella equazione 3.

Durante questa diminuzione lineare della corrente, l’energia immagazzinata nell’induttore è trasferita al condensatore C1. Il risultato è riportato nella equazione 4 che può essere assunta come formula di progetto per un regolatore boost. Tale relazione è ottenuta assumendo uguali le potenze di ingresso e di uscita. La relazione indica che valori minori dell’induttanza consentono di ottenere maggiori tensioni di uscita; mentre un valore del duty-cycle più piccolo riduce la VOUT. In realtà, l’equazione 4 è solo una approssimazione poiché è necessario tener conto anche delle perdite imputabili ad effetti dissipativi.

DIMENSIONAMENTO DEI  COMPONENTI

Per il  dimensionamento  dei  componenti  si  farà riferimento alle specifiche di corrente e tensione richieste per pilotare un tubo Nixie. Lo stesso procedimento  potrà  essere riapplicato  ad altri casi senza perdere di generalità. Un tubo Nixie richiede 170VDC  ed una corrente di circa 4mA. Quindi la potenza richiesta è 0.68W (=170V x 0.004A). Nel caso si voglia pilotare un display a tre cifre sarà necessaria quindi una potenza di circa 2W (≈0.68W x 3). Si assuma, inoltre, una tensione di ingresso di 9V. La scelta del micro ricade sui modelli PIC16C781/782 con le seguenti caratteristiche (i motivi saranno chiariti nel seguito): Frequenza di clock 4MHz. Clock del PWM impostato a FOSC/128. Duty-cycle massimo pari al 75%. Questo significa che il tempo in cui l’interruttore Q1 resterà chiuso sarà pari a 24us. Infatti, con un clock di 4MHz si avrà un periodo di 0.25us, mentre quello del PWM sarà 128 volte maggiore (32us). Se si considera un duty-cycle pari al 75% si ottiene, appunto, il valore di 24us. Se si inseriscono questi dati nell’equazione 4 si può ottenere facilmente il valore dell’induttanza da utilizzare (equazione 5).

Nell’equazione 5 non bisogna sostituire il valore 2W (come si sarebbe tentati di fare), bensì incrementare tale potenza per tener conto delle perdite nella conversione della tensione. Si può pensare di scegliere un induttore  di  330mH  che  garantisce una potenza di uscita di 2.945W. Questo dovrebbe permette di ottenere una potenza netta di 2W. La corrente di picco, secondo l’equazione 2, sarà pari a 0.655A. A questo punto si dispone di tutte le informazioni  per  scegliere  il  tipo  di  induttanza: 330mH@0655A. Si tratta, tra l’altro, di un modello abbastanza comune e facilmente reperibile. Per conoscere il tempo in cui il segnale PWM resta a zero si può utilizzare l’equazione 3. Ne risulta un tempo di 1.34us. La Figura 2 riporta l’andamento della corrente nell’induttore  e il segnale PWM di comando del transistor Q1.

Figura 2. Andamento della corrente iL nell’induttore e segnale PWM di comando del transistor Q1. La corrente scende a zero prima dell’inizio del successivo periodo, garantendo il funzionamento in modalità discontinua.

Figura 2. Andamento della corrente iL nell’induttore e segnale PWM di comando del transistor Q1. La corrente scende a zero prima dell’inizio del successivo periodo, garantendo il funzionamento in modalità discontinua.

Il tempo necessario per compiere un intero ciclo di carica e scarica per l’induttore è quindi di 25.32us. Il periodo del segnale PWM è maggiore di tale valore (32us) assicurando il funzionamento in modalità discontinua.

IL LOOP DI CONTROLLO

Ed è a questo punto che entra in gioco il microcontrollore. Il loop di controllo è chiuso con un PIC16C781/782;  è stato  scelto  questo  modello per la disponibilità al suo interno del blocco di controllo PSMC, grazie al quale è possibile pilotare l’interruttore Q1. La Figura 3 ne mostra la configurazione. Fondamentalmente, la tensione di feedback è confrontata con una fissa.

Figura 3 Loop di controllo per un regolatore boost realizzato mediante PIC16C781/782

Figura 3 Loop di controllo per un regolatore boost realizzato mediante PIC16C781/782

Quando la tensione di feedback uguaglia quella del riferimento interno al PIC (si utilizza come valore di tensione quello dell’alimentazione) allora il modulo PSMC (Programmable Switch Mode Controller) resetta l’uscita e spegne il transistor Q1. Quindi cambiando la tensione di riferimento, fornita dal DAC, si cambia anche la tensione di uscita, VOUT. Un avvio graduale è realizzato via firmware. Infatti, bisogna incrementare lentamente la tensione di riferimento, in modo che quella di uscita cresca linearmente nell’arco di alcune centinaia di millisecondi,  come è mostrato Figura 4.

Figura 4. La tensione di uscita viene portata fino a 170VDC, incrementando gradualmente la tensione di riferimento

Figura 4. La tensione di uscita viene portata fino a 170VDC, incrementando gradualmente la tensione di riferimento

Questo serve per prevenire la saturazione dell’induttore e quindi il passaggio di correnti troppo elevate. In questo modo è possibile, tra l’altro, far uso di un FET meno potente e quindi ridurre il costo complessivo.

IL FIRMWARE DI CONTROLLO

Lo schema elettrico a cui fare riferimento è riportato in Figura 5, mentre in Figura 6 è mostrato il modo di pilotare i tubi Nixie.

Figura 5. Schema elettrico di riferimento per la generazione della tensione 170VDC a partire da 9VDC

Figura 5. Schema elettrico di riferimento per la generazione della tensione 170VDC a partire da 9VDC

 

Figura 6. Schema elettrico per il pilotaggio dei tubi Nixie

Figura 6. Schema elettrico per il pilotaggio dei tubi Nixie

In particolare si fa uso di un sensore di temperatura per visualizzare l’informazione sui display. I CD4028 sono, invece, dei semplici decoder BCD/Decimale. Il Listato 1 riporta la procedura di configurazione delle periferiche del PIC. Dopo aver inizializzato le porte A e B, si selezionano (riga 8) i due ingressi analogici, AN0 e AN4, per la conversione rispettivamente della temperatura e della tensione di feedback.

SETUP_V     CODE
Setup
clrf PORTB                ; Setup everything
clrf PORTA
banksel    TRISA
movlfb’00110001’, TRISA
movlfb’00000001’, TRISB
movlf   b’00010001’, ANSEL     ; Selezione canali analogici
movlf   0xFF, OPTION_REG
movlf0x08, REFCON
movlf0x20, ADCON1
banksel PORTB
clrf       T1CON
movlf      0xC1, ADCON0             ; Configurazione ADC
BANKSEL    DACON0
movlf      0x80, DACON0             ; Configurazione DAC
movlf0x7B, DAC
movlf0x98, DAC
movlf   0x8C, CM1CON0      ; Configurazione dl comparatore
movlf   0x00, CM2CON0
movlf   0x00, CM2CON1
movlf   0x80, OPACON            ; Impostazione modalità OPAMP
movlf   0x00, CALCON
movlf   0x39, PSMCCON0      ; Impostazione del modulo PSMC
movlf   0x80, PSMCCON1
banksel     PORTA
movlf0xFF,  DELAY_L         ; Delay
movlf0xFF,  DELAY_H
movlf0x01,  DELAY_U
call LoopDelay
BANKSEL  DACON0
movlf   0x3A, PSMCCON0
movlf   0x80, PSMCCON1
banksel     PORTA
movlf0xFF,  DELAY_L          ; Delay
movlf0xFF,  DELAY_H
movlf0x01,  DELAY_U
call LoopDelay
BANKSEL   DACON0
movlf   0x3D, PSMCCON0       ; Configurazione del modulo PSMC in
movlf   0x82, PSMCCON1       ; modalità PWM
banksel   PORTA
clrf FLAGS
bsf FLAGS, 0
clrf TEMPA
clrf TEMPB
clrf COUNT
bsf PORTB, 2

goto Main
Listato 1

Per realizzare la configurazione di Figura 3  è necessario impostare il modulo comparatore, il DAC ed il PSMC.

Il modulo comparatore

La Figura 7 mostra lo schema a blocchi del modulo comparatore integrato nel PIC, evidenziando tutte le sue possibili sorgenti per gli ingressi.

Figura 7. Schema a blocchi del modulo comparatore integrato nel PIC16C781/782

Figura 7. Schema a blocchi del modulo comparatore integrato nel PIC16C781/782

Nel caso in esame si selezionerà come ingresso invertente dell’opamp AN4, corrispondente alla tensione di feedback, opportunamente partizionata. Per queste impostazioni è necessario assegnare il  valore 8Ch al registro CM1CON0 (linea 19 del Listato 1). La struttura del registro è mostrata in Tabella 1.

Tabella 1. Struttura del registro CM1CON0 per la configurazione del comparatore che pilota il modulo PSMC (R = lettura, W = scrittura, U = non implementato, -n = valore dopo il reset)

Tabella 1. Struttura del registro CM1CON0 per la configurazione del comparatore che pilota il modulo PSMC (R = lettura, W = scrittura, U = non implementato, -n = valore dopo il reset)

Il bit C1ON serve per abilitare il modulo (‘1’) oppure disabilitarlo (‘0’); i bit C1CH1 e C1CH0 servono per selezionare la sorgente all’ingresso invertente, mentre con C1R si seleziona la sorgente di quello non invertente. Il risultato del confronto può essere inviato all’esterno sul pin RB6 (C1OE = 1) oppure, come in questo caso, al modulo PSMC (C1OE = 1).

Il convertitore digitale-analogico

L’impostazione del comparatore consente di confrontare il valore della tensione di riferimento con una tensione fissa proveniente dal DAC. Lo schema a blocchi del DAC è mostrato in Figura 8.

Figura 8. Schema a blocchi del DAC integrato nel PIC16C781/782

Figura 8. Schema a blocchi del DAC integrato nel PIC16C781/782

Il registro di controllo è DACON0. Il valore impostato  è pari a 80h (linea 16 del Listato 1). Questo consente di selezionare la tensione di alimentazione come tensione di confronto (AVDD). La struttura del registro DACON0 è riportata in Tabella 2.

Tabella 2. Struttura del registro DACON0 per la configurazione del DAC (R = lettura, W = scrittura, U = non implementato, -n = valore dopo il reset)

Tabella 2. Struttura del registro DACON0 per la configurazione del DAC (R = lettura, W = scrittura, U = non implementato, -n = valore dopo il reset)

Il bit DAON serve per abilitare (‘1’) oppure disabilitare (‘0’) il DAC. Il bit DAOE permette di portare all’esterno del PIC il risultato della conversione (‘1’) oppure usarlo, internamente, insieme con altri blocchi (‘0’). Infine, la coppia di bit DARS1 e DARS0 serve a selezionare il segnale digitale che bisogna convertire in analogico. Nell’applicazione è utilizzata come sorgente AVDD.

Il modulo PSMC

Il modulo PSMC fornisce tutte le necessarie funzioni per implementare un sistema di controllo del feedback, mediante impulsi. Esso genera un impulso secondo il feedback analogico. Tale retroazione è configurabile secondo le modalità:

  • Feedback a singolo e doppio canale
  • Selezione di una tensione di riferimento programmabile
  • Polarità programmabile

L’impulso di uscita del PSMC è impostabile sia in modalità PWM (Pulse Width Modulation) che PSM (Pulse Skip Modulation). Nel primo caso l’ampiezza del- l’impulso dipende dal feedback, mentre nel secondo è generato oppure no un duty-cycle fisso. I registri di configurazione del modulo PSMC  (Programmable Switch Mode Controller) che è necessario configurare sono due: PSMCCON0 e PSMCCON1. Il registro PSMCCON0 contiene i bit per:

  • Frequenza dell’impulso di uscita
  • Duty-cycle minimo e massimo in modalità PWM
  • Duty-cycle fisso in  modalità PSM

Il registro PSMCCON1 contiene i bit di controllo per:

  • Abilitare il modulo PSMC
  • Impostare la modalità PSMC
  • Configurare  gli  ingressi  e  le uscite

La loro struttura è riportata, rispettivamente, in Tabella 3 ed in Tabella 4.

Tabella 3. Struttura del registro PSMCCON0 per la configurazione del modulo PSMC (R = lettura, W = scrittura, U = non implementato, -n = valore dopo il reset)

Tabella 3. Struttura del registro PSMCCON0 per la configurazione del modulo PSMC (R = lettura, W = scrittura, U = non implementato, -n = valore dopo il reset)

 

Tabella 4. Struttura del registro PSMCCON1 per la configurazione del modulo PSMC (R = lettura, W = scrittura, U = non implementato, -n = valore dopo il reset)

Tabella 4. Struttura del registro PSMCCON1 per la configurazione del modulo PSMC (R = lettura, W = scrittura, U = non implementato, -n = valore dopo il reset)

I bit SMCCL<7:6> impostano la frequenza di clock; invece con MINC<5:4> e MAXC<3:2> si seleziona, rispettivamente, il minimo ed il massimo duty-cycle in modalità PWM; infine i bit DC<1:0> impostano il duty-cycle in modalità PSM. Nell’esempio del Listato 1 sono assegnati i valori 3Dh ed 82h rispettivamente ai registri PSMCCON0 e PSMCCON1 (linea 40 e 41). Con il primo si richiede una frequenza di uscita pari a FOSC/128 (bit 7 e 6); il minimo duty-cycle è pari a 3/8 (bit 5 e 4) di tale frequenza, mentre il massimo è impostato a 15/16 (bit 3 e 2). Con il secondo registro si abilita l’intero modulo (bit 7) e si imposta la modalità PWM (bit 1). Lo schema a blocchi del modulo PSMC in modalità PWM è riportato in Figura 9.

Figura 9. Schema a blocchi del modulo PSMC del PIC16C781/782

Figura 9. Schema a blocchi del modulo PSMC del PIC16C781/782

CONCLUSIONI

L’articolo vuole essere uno spunto per la realizzazione di un regolatore di tensione boost cost-sensitive ed al contempo evidenziare il funzionamento  del  modulo  PSMC, del DAC e del comparatore integrati nel PIC16C781 e PIC16C782. Essi consentono di ottenere un notevole risparmio di componenti; questo significa minori costi ed area occupata sul PCB.

 

 

3 Commenti

  1. Gianluca Angelone GianlucaAngelone 5 ottobre 2016

Scrivi un commento