Università degli Studi di Firenze Facoltà di Ingegneria Corso di Laurea in Ingegneria dell'Automazione Relazione: Progetto di un convertitore buck-boost PWM con controllo digitale per LED di potenza Studenti: Sabrina Martorana, Elia Mazzuoli, Marco Montagni, Salvo Vincenzo. Anno Accademico 2012/2013 Indice Introduzione vi 1 Convertitore buck-boost PWM DC-DC 1 1.1 Analisi in DC di un convertitore buck-boost PWM . . . . . . . . 1 1.1.1 Descrizione del circuito 1 1.1.2 Funzionamento CCM 1.1.3 Funzione di trasferimento DC in modalità CCM 1.1.4 Condizioni limite per la modalità CCM 1.1.5 Limite CCM/DCM . . . . . . . . . . . . . . . . . . . . . . 7 1.1.6 Convertitori di potenza DC-DC PWM . . . . . . . . . . . 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . 5 . . . . . . . . . . 6 2 Dimensionamento dei componenti 10 2.1 Alimentazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Il carico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 11 2.3 Calcolo dei parametri fondamentali . . . . . . . . . . . . . . . . . 11 2.3.1 Dimensionamento dell'induttore . . . . . . . . . . . . . . 13 2.3.2 Scelta dei dispositivi a semiconduttore . . . . . . . . . . . 14 2.3.3 Dimensionamento della capacità 15 . . . . . . . . . . . . . . 2.4 Calcolo del rendimento . . . . . . . . . . . . . . . . . . . . . . . . 16 2.5 Foglio di calcolo Excel 16 . . . . . . . . . . . . . . . . . . . . . . . . 3 Modello ai piccoli segnali del buck-boost e rete di retroazione con controllo digitale 19 3.1 Modello ai piccoli segnali del buck-boost PWM in funzionamento CCM Open loop . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.2 Modello Led di potenza . . . . . . . . . . . . . . . . . . . . . . . 24 3.3 Progetto della rete di retroazione . . . . . . . . . . . . . . . . . . 27 4 Realizzazione del circuito 4.1 4.2 35 Realizzazione dello schema elettrico . . . . . . . . . . . . . . . . . 35 4.1.1 Interfacciamento con il PC . . . . . . . . . . . . . . . . . 35 4.1.2 Alimentazione . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.1.3 Dimensionamento circuiti di prelievo . . . . . . . . . . . . Realizzazione del layout . . . . . . . . . . . . . . . . . . . . . . . 5 Implementazione rmware e software 5.1 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Il dsPIC33FJ128MC802 5.3 Firmware 38 38 42 42 . . . . . . . . . . . . . . . . . . . . . . . 42 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 i INDICE ii 5.3.1 Congurazione delle periferiche . . . . . . . . . . . . . . . 45 5.3.2 Il regolatore PI . . . . . . . . . . . . . . . . . . . . . . . . 46 5.3.3 Il ramo di feedback . . . . . . . . . . . . . . . . . . . . . . 47 5.3.4 Il le Main.c . . . . . . . . . . . . . . . . . . . . . . . . . 49 5.3.5 La comunicazione seriale . . . . . . . . . . . . . . . . . . . 50 Risultati e Conclusioni 53 5.4 Prove sperimentali e risultati . . . . . . . . . . . . . . . . . . . . 53 5.5 Conclusioni e sviluppi futuri . . . . . . . . . . . . . . . . . . . . . 60 Bibliograa 62 Elenco delle gure 1.1 Schema circuitale di un convertitore buck-boost. . . . . . . . . . 2 1.2 Circuito equivalente - Interruttore ON, diodo OFF. . . . . . . . . 2 1.3 Circuito equivalente - Interruttore OFF, diodo ON. . . . . . . . . 3 1.4 Andamento temporale delle grandezze in gioco in un convertitore buck-boost PWM in modalità di funzionamento CCM. . . . . . . 4 1.5 Forma d'onda della corrente sull'induttore al limite CCM/DCM. 7 1.6 Corrente di carico normalizzata in funzione del parametro D al limite CCM/DCM per un convertiore buck-boost. . . . . . . . . . 1.7 8 Resistenza di carico normalizzata in funzione del parametro D al limite CCM/DCM per un convertiore buck-boost. . . . . . . . . . 9 2.1 Immagine del Cree XLamp XR-E LED Cool White. . . . . . . . 11 2.2 Prima parte del DC-DC sul foglio Excel. . . . . . . . . . . . . . . 17 2.3 Seconda parte del DC-DC sul foglio Excel. . . . . . . . . . . . . . 18 3.1 Schema della cella di commutazione. . . . . . . . . . . . . . . . . 20 3.2 Modello della cella di commutazione. . . . . . . . . . . . . . . . . 21 3.3 Modello dc della cella di commutazione. . . . . . . . . . . . . . . 21 3.4 Modello ac della cella di commutazione. . . . . . . . . . . . . . . 22 3.5 Schema a blocchi del modello in frequenza ai piccoli segnali di un generico convertitore dc-dc. 3.6 . . . . . . . . . . . . . . . . . . . . . condensatore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7 22 Circuito del buck-boost con componenti parassite di induttore e 22 Modello per piccoli segnali per il buck-boost PWM in funzionamento CCM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mv (s) 3.8 Modello per il calcolo di 3.9 Caratteristica tensione-corrente del LED Cree XLamp XR-E Cool White per Tj = 25◦ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 24 25 3.10 Caratteristica tensione-corrente del LED Cree XLamp XR-E Cool White con misure (Tj = 25◦ ). . . . . . . . . . . . . . . . . . . . 25 3.11 Caratteristica tensione-corrente del diodo LED ottenuta per interpolazione. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.12 Retta tangente al punto di lavoro (VD , ID ) del LED. . . . . . . . 26 26 3.13 Schema di principio del voltage-mode control per un convertitore dc-dc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.14 Modello a piccoli segnali del convertitore ad anello chiuso utilizzando il voltage-mode control. . . . . . . . . . . . . . . . . . . . . 3.15 Modulazione PWM in un convertitore dc-dc. iii . . . . . . . . . . . 28 28 ELENCO DELLE FIGURE iv Tp (s) in condizione di funzionamento (3.54V, 0.7A) in modalità buck (VI = 4.35V ). . di Bode di Tc (s). . . . . . . . . . . . . . . . . . . . . di Bode di LC (s) in condizione di funzionamento 3.16 Diagramma di Bode di nominale del LED 3.17 Diagramma 3.18 Diagramma nominale del LED in modalità buck. 3.19 Diagramma di Bode di LC (s) . . . . . . . . . . . . . . . . 29 30 30 in condizione di funzionamento nominale del LED in modalità boost. . . . . . . . . . . . . . . . . 31 3.20 PID discreto realizzato in Simulink per il convertitore buck-boost in analisi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.21 Modello Simulink del convertitore buck-boost PWM retroazionato in tensione con controllore PI discreto. 3.22 Andamento nel tempo di anello chiuso. vO (t) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iO (t) 3.23 Andamento nel tempo di anello chiuso. 32 33 in modalità buck, simulazione ad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.24 Andamento nel tempo di anello chiuso. . . . . . . . . . . . . . in modalità buck, simulazione ad 34 vO (t) in modalità boost, simulazione ad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 3.25 Andamento nel tempo di iO (t) in modalità boost, simulazione ad anello chiuso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4.1 Schema elettrico della scheda slave (analogica). . . . . . . . . . . 36 4.2 Schema elettrico della scheda master (digitale). . . . . . . . . . . 36 4.3 Convertitore USB-RS232. 37 4.4 Circuito di ingresso dei pin capionatori. 4.5 Partitore di prelievo 4.6 Layout dei due circuiti. . . . . . . . . . . . . . . . . . . . . . . . 40 4.7 Schede realizzate. . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 5.1 Schema a blocchi della periferica ADC. . . . . . . . . . . . . . . . 44 5.2 Schema a blocchi tempo continuo che viene implementato attra- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 . . . . . . . . . . . . . . . . . . . . . . . . . 39 verso la funzione 5.3.2. . . . . . . . . . . . . . . . . . . . . . . . . 47 5.3 Struttura di un comando interpretabile. . . . . . . . . . . . . . . 51 5.4 Tensione di pilotaggio del gate . . . . . . . . . . . . . . . . 54 5.5 Tensione . . . . . . . . . . . . . . . . . 54 5.6 Tensione ai capi del diodo. . . . . . . . . . . . . . . . . . . . . . . 55 5.7 Schede realizzate. . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 5.8 Circuito per la misura del rendimento. . . . . . . . . . . . . . . . 55 5.9 Rendimento con vL vGS . ai capi dell'induttore. 5.10 Rendimento con vI = 3V . . . vI = 4, 45V . . . . . . . . . . . . . . . . . . . . . 56 . . . . . . . . . . . . . . . . . . . . 56 5.11 Risposta al gradino in modalità buck, un campione ogni 5.12 Andamento dell'errore e = vR − vO gradino in modalità buck. 5ms. . . 57 associato alla risposta al . . . . . . . . . . . . . . . . . . . . . . 57 5.13 Modulazione PWM associata alla risposta al gradino in modalità buck. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.14 Risposta al gradino in modalità boost, un campione ogni 10ms. 58 . 58 gradino in modalità boost. . . . . . . . . . . . . . . . . . . . . . . 58 5.15 Andamento dell'errore e = vR − vO associato alla risposta al 5.16 Modulazione PWM associata alla risposta al gradino in modalità boost. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 ELENCO DELLE FIGURE v vO a fronte di variazioni della tensione vI , con una tensione di riferimento costante; un campione ogni 10ms. . . . . . . . . . . . . . . . . . . . . . . . . . Andamento dell'errore e = vR − vO associato a variazioni della tensione di alimentazione vI , con una tensione di riferimento 59 costante. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 5.17 Tensione ai capi del LED di alimentazione 5.18 5.19 Modulazione PWM associata a variazioni della tensione di alimentazione vI , con una tensione di riferimento costante. . . . . . 59 Introduzione La luce e l'illuminazione sono elementi alla base della nostra vita quotidiana e la strada per un futuro energetico sostenibile e compatibile con l'ambiente passa attraverso l'individuazione e lo sviluppo di nuove tecnologie per ridurre i costi dell'illuminazione aumentando ecienza ed adabilità. È in questo scenario che emerge la tecnologia LED (Light Emitting Diode) in sostituzione delle sorgenti di luce tradizionali, i suoi vantaggi sono numerevoli ed importanti [10]: • Risparmio energetico: a parità di potenza assorbita, il LED produce un usso luminoso di circa cinque volte superiore a quello delle lampade ad incandescenza ed alogene. • Bassa potenza richiesta: al contrario delle lampade tradizionali, i LED hanno bisogno di correnti talmente ridotte che è possibile tranquillamente autoalimentarli con energie rinnovabili (luce solare o vento). Questo concetto è già applicato con successo, ad esempio nella segnaletica e ai lampioni per l'illuminazione urbana. • Funzionamento in sicurezza: rispetto alle lampade normali, che lavorano a tensione di rete, i comuni LED sono più sicuri, perché alimentati a bassa o a bassissima tensione (normalmente fra i 3 e i 24 V in continua). • Elevata durata di vita: i diodi LED hanno una vita media di 25000 ore e superano abbondantemente le 750 ore delle lampade ad incandescenza e le 10000 ore delle lampade uorescenti, per cui risultano particolarmente adatti all'utilizzo in situazioni in cui è oneroso, dicoltoso o pericoloso sostituire la sorgente luminosa, l'elevata durata di vita si traduce, inoltre, in un notevole risparmio sui costi di manutenzione. • Resistenza agli urti e alle sollecitazioni: i diodi sono meccanicamente robusti in quanto dispositivi a stato solido, privi di lamento interno: al contrario delle lampade ad incandescenza non rischiano dunque di rompersi in caso di cadute accidentali, neppure a caldo. Si prestano quindi anche ad applicazioni illuminotecniche in condizioni estreme, come nelle pavimentazioni e nelle piscine. • Dimensioni e peso ridotti: i LED sono molto più piccoli delle lampade tradizionali e per questo rappresentano quindi un'ottima soluzione per dispositivi portatili, come cellulari e torce. • Accensione a freddo: al contrario delle lampade uorescenti, i LED hanno tempo di accensione pari a zero no a temperature di −40◦ C , usso emesso è immediatamente pari al usso di regime. vi per cui il INTRODUZIONE • vii Ecocompatibilità: i LED sono caratterizzati dall'assenza totale di radiazioni IR e UV e dall'assenza di mercurio che rende il prodotto riciclabile. Queste caratteristiche hanno decretato una continua ricerca ed un crescente successo commerciale della tecnologia LED. I LED devono però essere alimentati da una corrente costante per poter ottere valori di luminosità e temperatura di colore uniformi, la corrente di pilotaggio ha infatti una correlazione diretta con diversi parametri tra cui il usso luminoso. Il progetto e l'impiego di un adeguato circuito di pilotaggio risulta quindi essere un elemento essenziale per il corretto utilizzo dei LED ed allo stato attuale tipiche soluzioni risultano essere: • Utilizzo di un generatore di tensione costante con resistenza in serie. • Utilizzo di regolatori lineari con alimentazione a corrente costante. • Utilizzo di convertitori dc-dc a commutazione. Nella prima soluzione si collegano in serie un generatore di tensione costante, una resistenza (che ha funzione di limitare la corrente) ed il LED stesso. Questa soluzione è la più semplice ma risulta assolutamente inadeguata per LED di potenza destinati all'illuminazione ed è tipicamente impiegata per i piccoli LED che svolgono una semplice funzione segnaletica. L'inadeguatezza di questa soluzione è facilmente spiegabile in quanto i LED ad alta potenza hanno correnti nominali che superano i 350mA e quindi la potenza dissipata nella resistenza non sarebbe più trascurabile ed abbasserebbe drasticamente l'ecienza del circuito. Per garantire un controllo più accurato della corrente del LED è possibile ricorrere a regolatori lineari, in particolare per applicazioni con bassa dierenza tra tensione di ingresso e di uscita. Per tensioni di alimentazione molto variabili, nel caso di applicazioni a corrente medio - alta (è questo il caso dei LED di potenza) l'uso di regolatori lineari è sconsigliato a causa dell'elevata dissipazione di potenza e della bassa ecienza. Per far fronte a queste situazioni, nell'impiego dei LED di potenza, si ricorre all'utilizzo dei convertitori dc-dc a commutazione con modulazione PWM, in quanto orono un'elevata ecienza di conversione e la possibilità di elevare (boost), abbassare (buck) o elevare ed abbassare (buck-boost) la tensione o la corrente di uscita rispetto a quella di ingresso. Per applicazioni in cui sono presenti un numero limitato di LED la topologia di convertitore comunemente impiegata è il buck, che rappresenta anche la soluzione più semplice per pilotare LED di potenza. Sebbene la topologia buck sia quella preferita, i regolatori boost stanno riscuotendo successo come soluzione per pilotaggio dei LED in quelle applicazioni di illuminazione che richiedono il pilotaggio di stringhe di LED. In queste applicazioni la caduta di tensione totale della stringa di LED è pari alla somma delle singole cadute di tutti i LED e potrebbe essere superiore alla tensione di ingresso del sistema: in questo contesto è necessario l'impiego di convertitori boost o buck-boost. Rispetto alle tradizionali tecnologie di illuminazione, essendo il LED un dispositivo a stato solido, è inoltre attraente l'impiego di microntrollori per realizzare il controllo che pilota il LED. Utilizzando un microcontrollore, anziché la classica INTRODUZIONE viii rete di retroazione analogica, è dunque possibile avvalersi dei numerosi vantaggi del controllo digitale: • Maggiore essibilità: è possibile migliorare e personalizzare le applicazioni attraverso modiche software e non hardware. • È possibile realizzare interfacce software in grado di gestire innumerevoli applicazioni ad esempio l'illuminazione su vasta scala o l'illuminazione decorativa (lighting design). • I componenti digitali sono meno sensibili all'invecchiamento, a variazioni ambientali ed al rumore. • Possibilità di implementare tecniche di controllo avanzato, ad esempio tecniche di controllo ottimo o adattivo. Tecniche non attuabili attraverso una normale rete di retroazione analogica. • Dimensioni e costi ridotti. L'oggetto di questo elaborato è dunque lo studio e la realizzazione di un convertitore buck-boost PWM con controllo digitale per LED di potenza. Lo studio è pensato per un'applicazione d'illuminazione portatile con alimentazione d'ingresso variabile, che sfruttando l'elevata emissione luminosa per Watt del LED presenterà un'elevata durata della batteria e tempi di tempi accensione e spegnimento trascurabili. A tal ne è stato studiato (Capitolo 1) e dimensionato (Capitolo 2) un buck-boost in grado di pilotare adeguatamente un LED di potenza con corrente nominale di 0.7 A. Si è provveduto a modellare il circuito ed a costruire un opportuno controllo tempo discreto sul modello individuato, così da controllare il convertitore attraverso il cosiddetto voltage-mode control (Capitolo 3). Sono state eettuate opportune simulazioni software mediante LTspice, Matlab e Simulink e nel Capitolo 4 si descrive il progetto e la realizzazione dei circuiti stampati che vogliono dimostrare la bontà degli studi presentati. So- no state quindi realizzate due schede: il convertitore buck-boost ed un circuito di controllo che monta un microcontrollore PIC, che consente il funzionamento sia ad anello aperto che ad anello chiuso, attraverso il controllo progettato nel Capitolo 3. Inne è stata realizzata un'interfaccia software in grado di gestire tramite porta seriale la modalità di funzionamento del buck-boost (anello aperto o chiuso), regolare l'intensità luminosa del LED e di registrare l'andamento della tensione ai capi del LED. Capitolo 1 Convertitore buck-boost PWM DC-DC Il buck-boost è una tipologia di convertitore DC-DC non isolato di tipo step- down/step-up , ovvero che consente di ottenere un'uscita continua di valore maggiore o minore del valore della tensione in ingresso. Il livello dell'uscita è regolato agendo sul duty cycle del transistore. Questo capitolo descrive il convertitore buck-boost, con particolare interesse alla modalità di funzionamento CCM Continuos Conduction Mode ed alle relazioni che lo caratterizzano. 1.1 Analisi in DC di un convertitore buck-boost PWM 1.1.1 Descrizione del circuito Lo schema circuitale di un convertitore buck-boost PWM è mostrato in Figura 1.1. Consiste in un MOSFET di potenza, utilizzato come interruttore con- L, un diodo, un condensatore C ed un carico modellato RL . Nel seguito, la frequenza di commutazione dell'interrut1 tore verrà indicata con fs = 1/T e con D , il rapporto D = ton /T. Come si può vedere dallo schema, il terminale source del transistor non è controllato, un induttore con una resistenza nesso a massa e ciò rappresenta una dicoltà nel pilotare il dispositivo stesso, inoltre la polarità dell'uscita risulta opposta a quella dell'ingresso. Il convertitore può presentare due modalità di funzionamento: CCM - Continuos Conduction Mode - e DCM - Discontinuos Conduction Mode - a seconda che la corrente sull'induttore non si annulli o meno durante il ciclo di commutazione. 1.1.2 Funzionamento CCM Per l'analisi del circuito, mostrato in Figura 1.1, sono necessarie le seguenti ipotesi di lavoro: - il MOSFET di potenza e il diodo sono assunti come interruttori ideali; 1t on è l'intervallo di tempo in cui l'interruttore è posto nello stato di ON. 1 CAPITOLO 1. CONVERTITORE BUCK-BOOST PWM DC-DC Figura 1.1: Figura 1.2: 2 Schema circuitale di un convertitore buck-boost. Circuito equivalente - Interruttore ON, diodo OFF. - i componenti passivi sono lineari, tempo invarianti e indipendenti dalla frequenza; - l'impedenza d'uscita del generatore di tensione VI è pari a zero; - le perdite di commutazione sono pari a zero. L'analisi verrà inoltre suddivisa tenendo conto di due intervalli temporali: - 0 < t 6 DT - DT < t 6 T . Intervallo temporale 0 < t 6 DT Come mostrato Figura 1.2, durante l'intervallo temporale 0 < t 6 DT , l'inter- ruttore è posto nello stato di ON e il diodo in quello di OFF. La tensione ai capi del diodo vale, approssimativamente interdetto. La tensione sono nulle e la tensione Tale tensione (formula guentemente la corrente iL (0)2 : 2 i (0) L Z 0 t iL nel diodo diL dt (1.1) (1.1)) risulta pari alla tensione d'ingresso e consecresce linearmente a partire da un valore iniziale 1 vL dt + iL (0) = L calcolata al tempo vD e fa sì che il diodo sia vS ai capi dell'interruttore e la corrente iD vL ai capi dell'induttanza è pari a: vL = V I = L 1 iL = iS = L −(VI − VO ) t = 0. Z t VI dt + iL (0) = 0 VI t + iL (0); L (1.2) CAPITOLO 1. CONVERTITORE BUCK-BOOST PWM DC-DC Figura 1.3: 3 Circuito equivalente - Interruttore OFF, diodo ON. t = DT : il picco di corrente sull'induttore, si ha invece per iL (DT ) = VI DT VI D + iL (0) = + iL (0). L fs L (1.3) Il valore del ripple di corrente attraverso l'induttore, risulta quindi pari a: ∆iL = iL (DT ) − iL (0) = VI D VI DT = . L fs L (1.4) vD ai capi del diodo, si utilizza per MV DC = VO /VI = IO /II = D/(1 − D) Per quanto riguarda invece la tensione il calcolo la funzione di trasferimento (1.1.3): vD = −(VI + VO ) = − 1 MV DC =− +1 VO . D (1.5) Dall'osservazione della Figura 1.4 è facile evincere quanto detto. Intervallo temporale DT <t6T Durante l'intervallo temporale DT < t 6 T , come mostrato in Figura 1.3, l'in- terruttore risulta spento e il diodo in conduzione. La corrente iS dell'interruttore e la tensione vD del diodo sono pari a zero. La tensione vL ai capi dell'induttore, risulta essere: vL = −VO = L diL dt e provoca una decrescita lineare della corrente (1.6) iL (si veda la Figura 1.4): Z Z 1 t 1 t iL = iD = vL dt + iL (DT ) = (−VO )dt + iL (DT ) = L DT L DT VO VO VI D =− (t − DT ) + iL (DT ) = − (t − DT ) + + iL (0); L L fs L dove iL (DT ) è la corrente sull'induttore al tempo t = DT . (1.7) Il valore del ripple della corrente sull'induttore è: ∆iL = iL (DT ) − iL (T ) = Poichè VO /VI = D/(1 − D), VO T (1 − D) VO (1 − D) = . L fs L (1.8) la tensione ai capi dell'interruttore è data da: CAPITOLO 1. Figura 1.4: CONVERTITORE BUCK-BOOST PWM DC-DC 4 Andamento temporale delle grandezze in gioco in un convertitore buck-boost PWM in modalità di funzionamento CCM. CAPITOLO 1. CONVERTITORE BUCK-BOOST PWM DC-DC vS = VSM = VI + VO = V0 , D 5 (1.9) e il suo massimo valore è pari a: VSM max = VDM max = VImax + VO = VO . Dmin (1.10) I picchi di corrente del diodo e dell'interruttore sono: IDM = IL(peak) = II + IO + ∆iL IO ∆iL = + . 2 1−D 2 (1.11) I massimi valori dei picchi di corrente sono: ∆iLmax = 2 IDM max = ISM max ≈ IImax + IOmax + = IOmax ∆iLmax + . 1 − Dmax 2 (1.12) 1.1.3 Funzione di trasferimento DC in modalità CCM Per la determinazione della funzione di trasferimento MV DC = VO /VI , riferenA+ = A− . Si può dosi alla Figura 1.4, si utilizza il bilanciamento Volt-secondi, quindi scrivere: DT VI = (1 − D)T VO , VO = (1.13) DVI . 1−D (1.14) La funzione di trasferimento di tensione in dc del convertitore risulta quindi essere: MV DC ≡ VO II D = = . VI IO 1−D (1.15) dove: 0 ≤ MV DC < ∞ MV DC 0 aumenta da la tensione di uscita VO a ∞ mentre D va da 0 (1.16) a 1. Dalla (1.14) si vede che RL e dipende VI ; tuttavia MV DC è altamente sensibile alle perdite, di D si avvicina ad 1. Dalla (1.15) si ricava: è indipendente dalla resistenza di carico solamente dalla tensione specie quando il valore D= MV DC MV DC + 1 (1.17) e la sensibilità della tensione d'uscita in funzione del duty cycle è descritta dalla (1.18): S= VI dVO = . dD (1 − D)2 (1.18) CAPITOLO 1. CONVERTITORE BUCK-BOOST PWM DC-DC 6 Inoltre la funzione di trasferimento dc in corrente risulta essere: MIDC = IO 1−D = . II D (1.19) 1.1.4 Condizioni limite per la modalità CCM Considerando che la potenza in ingresso è pari a PO = IO VO II VI = IO VO ). è PI = II VI e quella in uscita e trascurando le perdite di potenza si ha che PO = PI (cioè Quindi: MV DC = IO 1 D VO = = = . VI II MI DC 1−D (1.20) Pertanto: VImax = VO 1 − Dmin . Dmin (1.21) Le tensioni massime sull'interruttore e diodo a regime stazionario in CCM risultano essere: VSM max = VDM max = VImax + VO = VO . Dmin (1.22) Il ripple massimo di corrente sull'induttore è determinato dalla (1.23) VO (1 − Dmin ) . fs L ∆iLmax = (1.23) Dalla (1.20) la componente dc della correnti d'ingresso è pari a: II = MV DC IO = Il valore massimo della a MV DCmax e Dmax . II D IO . 1−D si verica in corrispondeza di La corrente media sull'induttore IS IOmax e VImin , cioè Quindi: IImax = MV DCmax IOmax = sull'interruttore (1.24) IL Dmax IOmax . 1 − Dmax è pari alla somma della corrente media e della corrente media sul diodo rente media sull'interruttore corrente media sul diodo ID IS (1.25) ID ; ma a sua volta la cor- è pari alla corrente media in ingresso é uguale alla corrente media in uscita IL = IS + ID = II + IO = IO . 1−D II e la IO : (1.26) Quindi, la massima variazione e il picco massimo di corrente del diodo in stato stazionario in CCM risultano: ISM max = IDM max = IImax = IOmax + = dove ∆iL = ∆iLmin e IOmax VO (1 − Dmax ) + ; 1 − Dmax 2fs L II = IImax . ∆iLmin = 2 (1.27) CAPITOLO 1. Figura 1.5: CONVERTITORE BUCK-BOOST PWM DC-DC 7 Forma d'onda della corrente sull'induttore al limite CCM/DCM. 1.1.5 Limite CCM/DCM La forma d'onda di corrente sull'induttore al limite CCM/DCM è ragurata in Figura 1.5 e può essere descritta dalla iL = Dalla (1.15) VI t L (1.28): per 0 < t 6 DT. VI = VO (1 − D)/D, (1.28) pertanto: ∆iLmax = iL (DT ) = VI DT VO (1 − Dmin ) = . L fs Lmin (1.29) La corrente continua sull'induttore al limite CCM/DCM è: ILB = dove il pedice B VO (1 − Dmin ) ∆iLmax = ; 2 2fs Lmin (1.30) sta per boundary. 1.1.6 Convertitori di potenza DC-DC PWM Si analizza inne la resistenza di carico e la corrente d'uscita al limite CCM/DCM. Da (1.26) si ricava: IL = IO , 1−D (1.31) che determina la corrente d'uscita al limite: IOB = ILB (1 − Dmin ) = VO (1 − Dmin )2 . 2fs L (1.32) Al limite, la resistenza di carico vale: RLB = VO 2fs L = . IOB (1 − Dmin )2 (1.33) Quindi il minimo valore dell'induttanza L può essere determinato come segue: Lmin = VO (1 − Dmin )2 RLmax (1 − Dmin )2 = . 2fs IOB 2fs (1.34) CAPITOLO 1. Figura 1.6: CONVERTITORE BUCK-BOOST PWM DC-DC 8 Corrente di carico normalizzata in funzione del parametro D al limite CCM/DCM per un convertiore buck-boost. In ultimo, risulta essere interessante ragurare l'andamento della resistenza e della corrente di carico normalizzati in funzione del parametro D. Al limite CCM/DCM risulteranno: 2 D) IOB /(VO /2fs L) = (1 − D)2 e RLB /(2fs L) = 1/(1 − . Gli andamenti sono invece riportarti in Figura 1.6 e Figura 1.7. CAPITOLO 1. Figura 1.7: CONVERTITORE BUCK-BOOST PWM DC-DC 9 Resistenza di carico normalizzata in funzione del parametro D al limite CCM/DCM per un convertiore buck-boost. Capitolo 2 Dimensionamento dei componenti In questo capitolo vengono dimensionati gli elementi circuitali che compongono il convertitore buck-boost progettato per la modalità CCM, si noti che il dimensionamento analitico dovrà essere adattato ai componenti presenti in commercio e che pertanto sarà necessario eettuare scelte appropriate. Per tale scopo è stata quindi costruita un'opportuna tabella excel in grado di calcolare automaticamente i valori di soglia minima di ogni componente e che potrà anche essere utilizzata in futuro per dimensionare nuovi convertitori buck-boost. 2.1 Alimentazione Il DC-DC progettato può essere alimentato con la tensione di una o più pile che formano una batteria di celle, che genera una dierenza di potenziale nominale dipendente dalla tipologia di ossidoriduzione utilizzata dalla cella per accumulare energia. Inoltre la tensione che manifesta una qualsiasi cella è dipendente anche dalla quantità di energia accumulata: se la cella è scarica manifesta una tensione minore, altrimenti sarà maggiore. Nel particolare è stata scelta una tecnologia di batterie alcaline Manganese Dioxide con una tensione a vuoto di 1,53V quando cariche, che decade rapidamente a 1,45V (assunto come valore nominale) no ad arrivare ad 1V quando è quasi totalmente scarica. Per motivi didattici e per vericare il corretto funzionamento del dispositivo sia da buck che da boost è stato deciso di utilizzare 2 o 3 batterie in serie, al ne di evitare di aspettare una scarica equivalente. In tal modo è stato ottenuto rispettivamente 2,9V e 4,35V come condizioni analitiche nominali VImin e VImax per l'alimenta- zione. Inoltre prevedendo un funzionamento da rete domestica e considerando la garanzia del fornitore di un ± 10% sui 230V nominali forniti e pensando di alimentare il dispositivo con trasformatore dalla rete da 3,2V o, e no a 3,9V si ricade negli intervalli di funzionamento equivalenti. 10 CAPITOLO 2. 2.2 DIMENSIONAMENTO DEI COMPONENTI 11 Il carico Come anticipato, il carico del buck-boost è un LED di potenza [7] ed in condizioni nominali deve essere alimentato da una corrente di 700mA. Al ne di individuare i limiti di funzionamento è stata eettuata la seguente suddivisione in accordo con [7]: • Condizione limite massima: • Condizione nominale: • Condizione limite minima: IOmax =1A; VOmax =3,7V . IOnom =0,7A; VOnom =3,54V . IOmin =0,1A; VOmin =3,1V . Questo LED ottiene un usso luminoso di 100lm che è paragonabile ad una lampadina ad incandescenza da 15W, infatti i Led corrispondono ad una classe energetica A e riscuotono un meritato successo nel campo dell'illuminazione. La temperatura di colore, derivata dal tipo di drogaggio del LED, risulta ininuente ai ni del funzionamento del dispositivo e potrà essere scelta in base alle esigenze. E' probabile che a bassa luminosità prevalgano i fosfori utilizzati per ridurre le frequenze emesse dalla giunzione in una gamma visibile che si traduce in una variazione del colore a seconda del livello di funzionamento: riducendo la corrente che lo attraversa, il LED emetterà una luce andante al giallo. In quest'ultimo caso si otterrebbe un dispositivo non lmabile o non fotografabile in modo professionale dato che la frequenza di campionamento del sensore ottico sicuramente comparabile, lmerebbe istanti in cui il LED è spento o non del tutto acceso. Figura 2.1: 2.3 Immagine del Cree XLamp XR-E LED Cool White. Calcolo dei parametri fondamentali Al ne di dimensionare le componenti del convertitore dc-dc è necessario calcolare le potenze in gioco e lo scostamento dal valore di tensione di ingresso che dovrà essere adempito dai componenti stessi e dall'induttore nel particolare. Per prima cosa si procede con il calcolo della potenza in uscita massima e minima in riferimento ai parametri deniti in 2.2. POmax = VOmax IOmax = 3, 7 ∗ 1 = 3, 7W (2.1) POmin = VOmin IOmin = 3, 1 ∗ 0, 1 ' 0, 31W (2.2) Per ottenere un convertitore che lavori in CCM è necessario valutare la resistenza equivalente del carico sia minima che massima, ipotizzando un funzionamento lineare per il LED si ottiene: RLmin = VOmax 3, 7 = = 3, 7Ω IOmax 1 (2.3) CAPITOLO 2. DIMENSIONAMENTO DEI COMPONENTI RLmax = VOmin 3, 1 = = 31Ω IOmin 0, 1 12 (2.4) Per ottenere il guadagno del sistema e successivamente calcolare il valore di induttanza minima richiesta, per il funzionamento in CCM, è necessario calcolare il valore della funzione di trasferimento di tensione MV DC nel caso minimo, massimo e nominale. Nel caso specico, avendo deciso di usare 2 o 3 batterie alcaline in serie, questi parametri faranno riferimento a 2 livelli di tensione di ingresso distinti; inoltre prevedendo diverse condizioni di luminosità del LED sono stati previsti 3 casi limite di funzionamento: luminosità minima, nominale e massima. Per questo motivo è stato deciso di calcolare tutte le possibili casistiche. Nel caso di tensione di ingresso minima: MV DCmin = 3, 1 VOmin = = 1, 03 VImin 3 (2.5) MV DCnom = VOnom 3, 6 = = 1, 2 VImin 3 (2.6) MV DCmax = VOmax 3, 7 = 1, 23 = VImin 3 (2.7) Nel caso di tensione di ingresso massima: MV DCmin = VOmin 3, 1 = 0.68 = VImax 4, 5 (2.8) MV DCnom = VOnom 3, 6 = 0, 8 = VImax 4, 5 (2.9) MV DCmin = VOmax 3, 7 = 0.82 = VImax 4, 5 (2.10) Se tutto funzionasse idealmente questi valori di guadagno andrebbero bene, ma è necessario inserire una approssimazione di idealità dato che il convertitore non avrà un rendimento ideale unitario. Ipotizzando quindi un rendimento globale di 0,85 sono stati calcolati i valori del duty cycle sui quali verrà calcolata l'induttanza del convertitore. Nel caso di tensione di ingresso minima: Dmin = MV DCmin 1, 03 = = 0, 548 MV DCmin + η 1, 03 + 0, 85 (2.11) Dmom = MV DCmon 1, 2 = = 0, 585 MV DCnom + η 1, 2 + 0, 85 (2.12) Dmax = MV DCmax 1, 23 = = 0, 591 MV DCmax + η 2, 23 + 0, 85 (2.13) Nel caso di tensione di ingresso massima: Dmin = MV DCmin 0, 68 = = 0, 44 MV DCmin + η 0, 68 + 0, 85 (2.14) CAPITOLO 2. DIMENSIONAMENTO DEI COMPONENTI 13 Dmom = MV DCmon 0, 8 = = 0, 484 MV DCnom + η 0, 8 + 0, 85 (2.15) Dmax = MV DCmax 0, 82 = = 0, 491 MV DCmax + η 0, 82 + 0, 85 (2.16) Dai risultati ottenuti è possibile vericare che se il duty è superiore a 0,5 la tensione di uscita del convertitore sarà maggiore della tensione di alimentazione mentre in caso contrario sarà minore. 2.3.1 Dimensionamento dell'induttore L'induttore che compone il circuito dovrà essere di un valore tale da garantire la continuità di corrente ed il funzionamento in CCM con i valori di resistenza equivalente di carico trovati. Per uno scopo di pilotaggio di un Led la frequenza del PWM è stata scelta in modo tale che le variazioni del ripple che di conseguenza variano la luminosità del LED siano abbastanza rapide dal poter vericare una luminosità costante all'occhio ma anche stando lontani dai parametri parassiti dei componenti. Inoltre una alta frequenza di commutazione del PWM ha come eetto anche una scelta nale dell'induttore di valore più piccolo. Cercando informazioni su dispositivi simili è stata vericata una frequenza del PWM che va dai 200 ai 400kHz. Avendo una retroazione digitale, e ottenendo comunque dei valori accettabili commerciali di induttanza, è stata scelta la fs del PWM di 250kHz. Per il calcolo del valore minimo, che sarà dipendente dal periodo del duty ON minimo, dalla frequenza globale del PWM e dalla resistenza di carico massima si ottiene: Lmin = 31(1 − 0, 44)2 RLmax (1 − Dmin )2 = 19µH = 2fS 2 × 250E 3 (2.17) Scelto da 100µH. Dato che la corrente che scorre nell'induttore non sarà costante alimentando sia il carico sia la capacità quando il mosfet sarà interdetto e si caricherà quando il mosfet sarà in conduzione è necessario anche calcolare la variazione picco-picco per poi vericare che tale corrente sia sostenibile dall'induttore: 4iLmin = VOmax (1 − Dmax ) 3, 7(1 − 0, 591) = = 0, 06A fS L 100E −6 × 250E 3 (2.18) La corrente continua nell'induttore sarà data dalla formula: Ilmax = MV DCmax IOmax = 1, 23 × 1 = 1, 23A (2.19) La corrente in termini equivalenti e quindi media sull'induttore è: ILrms = 1 IOmax = = 2, 44A 1 − Dmax 1 − 0, 591 (2.20) Avendo questi dati e confermati dalle simulazioni è stato possibile scegliere in modo opportuno l'induttore che avendo una resistenza serie di 25mΩ risulta dissipare una potenza: 2 PrL = rL ILrms = 0, 025 × 2, 442 = 0, 149W (2.21) CAPITOLO 2. DIMENSIONAMENTO DEI COMPONENTI 14 Inoltre dalle simulazioni è stato possibile valutare diversi tipi di induttore, ma è stato possibile vericare un incremento notevole delle prestazioni in termini di tensione con un valore di resistenza parassita serie più piccolo possibile. Inoltre è stato necessario utilizzare un induttore di tipo toroidale per evitare che il usso disperso si concateni con altre piste e sporchi i segnali. 2.3.2 Scelta dei dispositivi a semiconduttore Il mosfet di potenza sarà scelto per sopportare le caratteristiche di tensione, VDSS che sarà al massimo VImax +VOmax e potrà essere scelta di La corrente sopportata ISM che attraver- corrente, e potenza. Nel particolare la tensione di 10V equivalente alla somma di tensioni un valore ragionevolmente superiore. sa il Mosfet, nei periodi in cui è in conduzione, dovrà essere ragionevolmente superiore alla corrente ILrms . Per quanto riguarda la tensione di pilotaggio do- vrà essere scelta relativa al dispositivo che modula il PWM, nel caso del DSP Microcip di 3,3V . La corrente di pilotaggio del transistor è anch'esso un parametro critico nella progettazione, poiché deve essere abbastanza alta da permettere tempi brevi di commutazione, ma al contempo più bassa della massima corrente erogabile del DSP . Nel caso specico tale corrente è limitata da una resistenza in serie posta tra il Gate e l'uscita del PWM con un Pull-down verso massa. Tale valore poteva essere calcolato analiticamente considerando l'energia necessaria alla capacità parassita del mosfet [8], ma dalle simulazioni è stato possibile adattare al meglio la resistenza. Nel caso in cui si limiti troppo la corrente l'on- VDS Ton o da quadra risultante sulla tensione non descriverebbe più un gradino non comparabile con la grandezza del del Tof f facendo scorrere nell'indutto- re una corrente estremamente alta. Poiché in questa maglia ci sono repentine variazioni di corrente può comportarsi come un induttore ad una spira, generando un campo magnetico variabile, e quindi potrebbe andare ad inuire sulla qualità dei segnali più delicati e per queste ragioni sarà opportuno fare questa maglia più piccola possibile. La potenza persa e sulla quale è stata considerata la dissipazione termica massima verrà calcolata con la RDS da [8] dopo aver calcolato la corrente rms sul mosfet. ISrms √ √ 1 0.591 IOmax Dmax = 1.87A = = 1 − Dmax 1 − 0, 591 2 PrDS = RDS ISrms = 0, 08 × 1.872 = 0.279W (2.22) (2.23) È anche possibile calcolare la potenza persa nello switching: Psw = fS CO (VImax + VOmax )2 = 250E 3 × 4, 1E −12 (4, 5 + 3, 7)2 = 6, 89pW (2.24) Per quanto concerne la scelta del diodo esso dovrà essere di tipo veloce e quindi schottky. Per la scelta è necessario valutare la corrente di stress massima che risulta essere la somma tra la metà della corrente di picco picco sull'induttore, la corrente che deve alimentare il carico quando il mosfet è interdetto e la corrente per alimentare il carico: ISM max = IDM max = IImax + IOmax + 0, 06 4iLmin = 1, 23 + 1 + = 2, 26A 2 2 (2.25) CAPITOLO 2. DIMENSIONAMENTO DEI COMPONENTI 15 e calcolare la tensione di stress massima: VSM max = VDM max = VOmax + VImax = 3, 7 + 4, 5 = 8, 2 ' 10V (2.26) è stato dunque scelto il diodo [9]. Calcolando la corrente rms sul diodo: IDrms = √ 1 IOmax =√ = 1.56A 1 − 0, 591 1 − Dmax e considerando dal modello LTSpice di questo diodo la resistenza (2.27) RF sarà possibile calcolare la potenza dissipata sulla resistenza parassita: 2 PRF = RF IDrms = 0, 0299 × 1, 562 = 72, 76mW (2.28) Che sommata alla potenza dissipata sul diodo: PV F = VF IOmax = 0, 3 × 1 = 0, 3mW (2.29) Avrà come risultato la potenza persa complessiva sul diodo: PD = PV F + PRF = 0, 3 + 0, 073 = 0, 373 = 373mW (2.30) 2.3.3 Dimensionamento della capacità La scelta di una adeguata capacità avrà come eetto una variazione minima della tensione VOut . In generale più sarà grande la capacità e più sarà piccolo il ripple che manifesta ai suoi capi, ma dovendo anche fornire una corrente di circa 1A quando l'induttore si carica e il mosfet è in conduzione risulta di particolare rilievo anche la resistenza parassita serie interna. circa il 5%: Considerando un ripple di VOmax 3, 7 = = 185mV 20 20 Vr = (2.31) E Assumendo un valore di caduta di potenziale picco-picco massima sulla resistenza interna VRcpp =100mV interna: RCmax = si ottiene il valore massimo della resistenza VRcpp IDM max = 0, 1 = 44mΩ 2, 27 (2.32) Per ottenere il ripple desiderato attraverso il ltro con la tensione: VCpp = Vr − Vrcpp = 185 − 100 = 85mV (2.33) Si calcola la capacità minima: Cmin = Dmax VO 0, 591 × 3, 7 = = 28µF fs RLmin VCpp 250E 3 × 3, 7 × 0, 085 (2.34) Scelto da 47µF. Per calcolare le perdite di potenza è prima necessario calcolare la corrente rms sul ltro: r ICrms = IOmax Dmax =1× 1 − Dmax r 0, 591 = 1, 2A 1 − 0, 591 (2.35) Scegliendo la capacità con la resistenza equivalente serie più piccola ovvero Rc =0,035Ω data dalla tecnologia al Tantalio, la potenza persa sarà data da: 2 PRc = RC ICrms = 0, 035 × 1, 2 = 42mW (2.36) CAPITOLO 2. 2.4 DIMENSIONAMENTO DEI COMPONENTI 16 Calcolo del rendimento Il calcolo del rendimendo di un convertitore DC-DC prevede la conoscenza di tutti parametri parassiti e del punto di lavoro, legato ad duty e al carico, per il calcolo della potenza persa. Il punto di lavoro e la potenza persa è stata calcolata nelle condizioni peggiori di utilizzo, ovvero considerando il Dmax con le relative correnti e tensioni e potenze calcolate precedentemente su ogni singolo componente, ottenendo il rendimento η minimo del dispositivo. La potenza persa totale sarà: PLS = PrDS + Psw + PD + PrL + PRc = = 0, 279 + 6, 89E −12 + 0, 373 + 0, 149 + 0, 042 = 0, 843W (2.37) (2.38) Il rendimento risulta: η= 3, 7 × 1 PO = = 0, 814 → 81% PO + PLS (3, 7 × 1) + 0, 843 (2.39) Questo valore dierisce da quello ipotizzato del 85% iniziale, e dovrebbe essere iniziato un processo iterativo considerando il nuovo rendimento trovato e ricalcolandolo tutte le potenze riferite al nuovo duty riferito a questo valore, ma considerando i valori dei componenti reali, che si discostano sempre dai valori forniti del costruttore di almeno un 2-3%, è possibile accettare questo dato analitico e valutarne il valore eettivo una volta messo in opera il sistema. 2.5 Foglio di calcolo Excel Volendo eettuare una variazione rapida dei parametri, sia per altri progetti di DC-DC e sia per sviluppare al meglio il convertitore, è stato costruito un foglio di calcolo Excel che vericasse velocemente i calcoli analitici in modo da ottimizzare i parametri con i dati voluti. Per questo è stato pensato sia di poter intervenire sul numero di batterie in serie, ed ottenere in tal modo i valori nominali di tensione, sia sulla tecnologia di realizzazione delle celle, e vericare con le tensioni minime e massime il funzionamento desiderato. I colori della tabella rappresentano i valori da inserire in blu scuro e quelli che ricava automaticamente in azzurro. Dovendo vericare il funzionamento sia da buck che da boost, dato dall'uso di 2 o 3 pile in serie, è stato deciso di sdoppiare la tabella in due righe ottenendo i funzionamenti limite nelle due congurazioni. Dalla tabella è possibile notare che la tensione di ingresso con 3 pile scariche equivale alla tensione di ingresso con 2 pile cariche, per questa ragione è stato pensato utilizzare le due congurazioni a ni didattici per evitare di attendere l'equivalente scarica di 3 pile. Inoltre per il funzionamento sono stati considerati i casi limite sia con 2 pile scariche sia con 3 pile cariche. Volendo simulare il circuito su LTSpice è stato vericato il duty per tutte le congurazioni possibili ottenendo il valore di induttanza minima richiesta per le varie congurazioni come è possibile vedere dalla tabella sottostante. Chiaramente avendo considerato anche il caso peggiore, ovvero anche con due pile scariche, il duty-cycle rispettivo riferito al Led max acceso sarà più alto di quello considerato nei calcoli precedentemente. Le approssimazioni usate dal programma risultano leggermente dierenti considerando le cifre decimali e per questo i risultati si discostano di poco da quelli calcolati in precedenza. CAPITOLO 2. DIMENSIONAMENTO DEI COMPONENTI Figura 2.2: Prima parte del DC-DC sul foglio Excel. 17 CAPITOLO 2. DIMENSIONAMENTO DEI COMPONENTI Figura 2.3: Seconda parte del DC-DC sul foglio Excel. 18 Capitolo 3 Modello ai piccoli segnali del buck-boost e rete di retroazione con controllo digitale In questo capitolo sono modellati il buck-boost PWM in funzionamento CCM (3.1) ed il LED di potenza a disposizione (3.2). A partire da questi mo- delli si progetta un controllore digitale opportuno e si procede alla verica del suo funzionamento in anello chiuso con opportune simulazioni Matlab e Simulink(3.3). 3.1 Modello ai piccoli segnali del buck-boost PWM in funzionamento CCM Open loop L'obiettivo di questa sezione è la costruzione di un modello ai piccoli segnali per il buck-boost PWM in funzionamento CCM. A tal ne è necessario per prima cosa modellare la cosidetta cella di commutazione, che risulta esser presente in tutti i convertitori DC-DC, il cui schema è riportato in gura 3.1. Le correnti totali istantanee e le tensioni possono essere presentate come somma delle rispettive componenti DC ed AC, il ciclo di lavoro invece può essere espresso come somma del valore nominale D e della sua perturbazione quindi le seguenti relazioni: 19 d; si ottengono CAPITOLO 3. MODELLO PICCOLI SEGNALI E CONTROLLO DIGITALE20 Figura 3.1: Schema della cella di commutazione. iS = IS + is (3.1) iL = IL + il (3.2) iD = ID + id (3.3) vS = V S + vs (3.4) vLD = VLD + vld (3.5) vSD = VSD + vsd (3.6) vI = V I + vi (3.7) vO = V O + vo d¯ = D + d (3.8) (3.9) dove l'ampiezza delle componenti AC è assunta molto più piccola delle rispettive componenti DC. Inoltre per l'analisi stazionaria dei convertitori deve risultare: iS = d¯ · iL vLD = d¯ · vSD (3.10) (3.11) Sostituendo quindi 3.1, 3.2 e 3.9 in 3.10 si ottiene: iS = (D + d)(IL + il ) = D · IL + D · il + d · IL + d · il (3.12) Analogamente sostituendo 3.5, 3.6 e 3.9 in 3.10: vLD = (D + d)(VSD + vsd ) = D · VSD + D · vsd + d · VSD + d · vsd Si ipotizza che i termini d · vsd e d · il (3.13) sono trascurabili nelle rispettive equazioni, in questo modo si ottiene il seguente modello lineare della cella di commutazione valido per un generico convertitore: iS = D · IL + D · il + d · IL vLD = D · VSD + D · vsd + d · VSD (3.14) (3.15) CAPITOLO 3. MODELLO PICCOLI SEGNALI E CONTROLLO DIGITALE21 S vSD + D − VSDd + il D IL d IL D vsd D + VSD D + L Figura 3.2: S Modello della cella di commutazione. VSD + I LD D − + VSD D L Figura 3.3: Modello dc della cella di commutazione. Le equazioni 3.14 e 3.15 possono essere rappresentate da generatori di corrente e tensione controllati, come è possibile vedere in gura 3.2, e sfruttando il principio della sovrapposizione degli eetti, è facile ricavare il modello DC (gura 3.3) ed AC (gura 3.4) della cella di commutazione. Si introducono ora le seguenti funzioni di trasferimento: vo (s) d(s) vi =0 vo (s) Mv (s) = vi (s) Tp (s) = (3.16) (3.17) d=0 Per poter caratterizzare un generico convertitore dc-dc nel dominio della frequenza è quindi possibile far riferimento allo schema a blocchi visibile in gura 3.5. È ora possibile analizzare il buck-boost in gura 3.6 al ne di individuare Tp (s) e MV (s), si noti che sono rc del condensatore resistenze serie stati introdotti come elementi parassiti le e rl dell'induttore, mentre l'interruttore è considerato ideale. Utilizzando il modello ai piccoli segnali trovato per la cella di commutazione (gura 3.4) si ottiene il modello circuitale in gura 3.7. • Calcolo Tp(s): CAPITOLO 3. MODELLO PICCOLI SEGNALI E CONTROLLO DIGITALE22 S D − vsd + VSDd + il D IL d vsd D + L Figura 3.4: Modello ac della cella di commutazione. vo vo’’ + Mv + vo’ vi Tp d Figura 3.5: Schema a blocchi del modello in frequenza ai piccoli segnali di un generico convertitore dc-dc. S D iS vI iD + L C iL Figura 3.6: RLoad rc rl Circuito del buck-boost con componenti parassite di induttore e condensatore. id vsd + − + IL d VSDd Di l + + vi − C vsd D + RLoad vo − L rC il Z1 rl Z2 Figura 3.7: Modello per piccoli segnali per il buck-boost PWM in funzionamento CCM. vi = 0 vsd = vi − vo = −vo (3.18) (3.19) CAPITOLO 3. MODELLO PICCOLI SEGNALI E CONTROLLO DIGITALE23 IL · d + D · il = il + id KCL: il (1 − D) + id − IL · d = 0 (3.20) il · z1 − vo + D · vo − VSD · d = 0 KVL: il · z1 = vo − D · vo + VSD · d il = vo (1 − D) + VSD · d z1 (3.21) Sostituendo (3.21) in (3.20) si ottiene: VSD · d(1 − D) vo vo (1 − D)2 + + − IL · d = 0 z1 z1 z2 (1 − D)2 1 VSD (1 − D) vo + +d − IL = 0 z1 z2 z1 Inne da (3.23) è facile ottenere z1 (s) = rl + s · L e z2 (s) = È inoltre opportuno esprimere (3.23) Tp (s) : VSD (1 − D) IL − vo (s) z1 = = Tp (s) = d(s) vi =0 (1 − D)2 1 + z1 z2 VSD (1 − D) VSD (1 − D) IL 1 − IL z1 − z2 IL z1 IL = = (1 − D)2 z2 + z1 (1 − D)2 1 + z1 z2 dove (3.22) (3.24) 1 ) Rload (rc + s·C . 1 Rload + s·C + rc IL e VSD di TP (s) −IO = (1 − D)IL D VO = − VI 1−D in funzione di VI : (3.25) (3.26) IO D = VI (3.27) (1 − D)Rload (1 − D)2 Rload D (1 − D)VI + D · VI = VI − VO = VI − − VI = = 1−D 1−D 1 VI (3.28) = 1−D IL = − VSD • Calcolo Mv(s): Ponendo modello di gura 3.8. d=0 il modello in gura 3.7 si semplica nel CAPITOLO 3. MODELLO PICCOLI SEGNALI E CONTROLLO DIGITALE24 id − vsd + Di l + vsd D C + + vi − RLoad vo − L rC il Z1 rl Z2 Figura 3.8: KCL: Modello per il calcolo di il + id − D · il = 0 il = − KVL: Mv (s) dove id = vo z2 vo id =− 1−D (1 − D)z2 (3.29) vo − il · z1 + D · vsd = 0 il · z1 = vo + D(vi − vo ) il · z1 = D · vi + (1 − D)vo (3.30) Sostituendo (3.29) in (3.30) si ottiene: vo z1 = D · vi + (1 − D)vo z2 (1 − D) z1 −vo (1 − D) + = D · vi z2 (1 − D) − A partire da (3.23) è facile ottenere vo (s) Mv (s) = =− vi (s) d=0 3.2 (3.31) (3.32) Mv (s): D z1 (1 − D) 1 + z2 (1 − D)2 (3.33) Modello Led di potenza R Come visto in 2.2, il LED di potenza scelto in questo elaborato è il Cree R XR-E LED Cool White. XLamp Il datasheet di questo dispositivo [9] non fornisce alcun modello matematico, limitandosi a riportare il graco della caratteristica tensione-corrente del LED riportata in gura 3.9. Al ne di costruire un modello matematico di questo dispositivo, si è provveduto a misurare alcune coppie corrente-tensione riportate in gura 3.10. Eettuata quest'operazione è stato impostato un problema d'interpolazione polinomiale per individuare i coecienti dell'equazione caratteristica del diodo: iD = IS eK·vD − 1 dove: (3.34) CAPITOLO 3. MODELLO PICCOLI SEGNALI E CONTROLLO DIGITALE25 Figura 3.9: White per Caratteristica tensione-corrente del LED Cree XLamp XR-E Cool Tj = 25◦ . Figura 3.10: Caratteristica tensione-corrente del LED Cree XLamp XR-E Cool White con misure (Tj = 25◦ ). CAPITOLO 3. MODELLO PICCOLI SEGNALI E CONTROLLO DIGITALE26 1.1 Punti misurati sulla caratteristica del datasheet Caratteristica del diodo per interpolazione 1 0.9 0.8 iD 0.7 0.6 0.5 0.4 0.3 0.2 0.1 2.8 2.9 3 3.1 3.2 3.3 3.4 3.5 3.6 3.7 vD Figura 3.11: Caratteristica tensione-corrente del diodo LED ottenuta per interpolazione. • IS è l'intensità della corrente di saturazione. • K è una costante che dipende dalla carica elementare dell'elettrone k , dalla l'emissività . costante di Boltzmann giunzione e temperatura assoluta T q , dalla della supercie di Il risultato di quest'operazione è dato dai seguenti parametri: IS = 4.919 · 10−5 K = 2.697 [A] (3.35) −1 [V ] (3.36) Tali parametri deniscono il modello cercato del diodo LED e forniscono a caratteristica in gura 3.11 . Si vuole adesso denire il modello a piccoli segnali del diodo LED e dalla gura 3.12 si vede che la caratteristica eponenziale del diodo può essere approssimata correttamente dalla retta tangente al punto di lavoro (VD , ID ) = (3.54V, 0.7A). Figura 3.12: Retta tangente al punto di lavoro La conduttanza di piccolo segnale gd del diodo è: (VD , ID ) del LED. CAPITOLO 3. MODELLO PICCOLI SEGNALI E CONTROLLO DIGITALE27 ∂iD = 1.893S gd = ∂vD vD =VD Quindi la resistenza ai piccoli segnali del diodo rd = rd (3.37) è data da: 1 = 0.528Ω gd (3.38) Modellando il diodo come una resistenza risulta valido il modello a piccoli segnali del convertitore con carico resistivo trovato in 3.1. 3.3 Progetto della rete di retroazione Obbiettivo di questa sezione è controllare il buck-boost attraverso il cosiddetto voltage-mode control, si realizza dunque una retroazione sulla tensione di uscita vO del buck-boost tramite un opportuno controllore che verrà discretiz- zato per l'implementazione su DSP (digital signal processor). In gura 3.13 è possibile vedere lo schema per il controllo in tensione di un convertitore dc-dc. Voltage reference Error Amplifier Error signal Controller Control voltage Comparator PWM signal dc-dc Converter Sawtooth waveform Output voltage Figura 3.13: Schema di principio del voltage-mode control per un convertitore dc-dc. In un convertitore dc-dc è molto importante il progetto di un circuito/algoritmo di controllo per: • Mantenere • Aumentare la stabilità del processo in catena chiusa; a tal ne è desiderato vO il più vicino possibile alla tensione di riferimento desiderata. un margine di fase mϕ > 45◦ e margine di guadagno • Reiettare disturbi sulla tensione d'ingresso. • Diminuire la risposta transitoria del convertitore. mg elevato. Con riferimento a 3.1, è presentato il modello a piccoli segnali del convertitore ad anello chiuso utilizzando il voltage-mode control in gura 3.14, dove TPWM(s) è la funzione di trasferimento che modella la modulazione PWM che comanda il gate del mosfet del convertitore. In particolare, con riferimento alla gura 3.15 si ha: ve dT = VM T d 1 = ve VM (3.39) (3.40) CAPITOLO 3. MODELLO PICCOLI SEGNALI E CONTROLLO DIGITALE28 Mv vi vo’’ ve + vc Tc TPWM d vo’ Tp vo vf vr Figura 3.14: Modello a piccoli segnali del convertitore ad anello chiuso utilizzando il voltage-mode control. v rampa (t) VM ve t d(t) dT t T Figura 3.15: Modulazione PWM in un convertitore dc-dc. ovvero: TPWM = dove VM 1 VM (3.41) è l'ampiezza massima raggiunta dalla rampa e che in questo lavoro risulta essere VM = 1, dunque TPWM(s) = 1. Per progettare un opportuno controllore Tc (s) è necessario studiare la fun- zione ad anello aperto del sistema in gura 3.14 che coincide con dunque stati studiati i diagrammi di Bode di Tp (s) Tp (s); sono nelle varie condizioni di funzionamento del circuito: LED spento, LED nominale e LED a luce massima (IO = 3V ). Utilizzando i datasheet delle componenti scelte, in condizioni nominali del LED = 1A) in modalità buck (VI (3.54V, 0.7A), il caso peggiore in termini di mϕ = 4.35V ) e boost (VI è dato dal buck-boost in funzionamento buck, il cui diagramma di Bode è riportato in gura 3.16. Da tale diagramma di Bode è possibile individuare margine di fase e di guadagno: mg = 5.91dB; mϕ = −53.2◦ ; (3.42) CAPITOLO 3. MODELLO PICCOLI SEGNALI E CONTROLLO DIGITALE29 Diagramma di Bode: mg = 5.91 dB, mφ = −53.2° Modulo (dB) 30 20 10 0 Fase (deg) −10 360 270 180 90 1 10 2 3 10 Figura 3.16: 4 10 Diagramma di Bode di nominale del LED (3.54V, 0.7A) 5 10 Frequenza (rad/s) Tp (s) 6 10 7 10 10 in condizione di funzionamento in modalità buck (VI = 4.35V ). I valori riportati in (3.42) sono indice che la funzione ad anello chiuso W (s) = Tp (s) 1 + Tp (s) è instabile, infatti in assenza di controllore W (s) presenta poli a parte reale positiva. È dunque necessario individuare un opportuno controllore stabilizzante di opportune prestazioni, operazione non banale in quanto Tp (s) Tc (s) è un sistema a fase non minima, con uno zero a parte reale positiva che in questo caso specico risulta essere: z1 ' 2.569 · 103 . É dunque possibile impostare una sintesi per tentativi con il controllore che è stato scelto in forma PI (proporzionale integrativo) con lo scopo di alzare il margine di fase. L'obbiettivo imposto per questa sintesi è mϕ ≥ 60◦ , si impongono quindi le seguenti condizioni: |Tp (jωϕ )|db = 0 Tp (jωϕ ) = −180◦ + mϕ (3.43) Imponendo le condizioni in (3.43) è possibile trovare il seguente controllore PI: Tc (s) = 0.0146 + 58.5 · 1 s (3.44) il cui diagramma di Bode è riportato in gura 3.17. Utilizzando il controllore PI in (3.44) si ottiene una nuova funzione d'anello LC (s) = Tc (s) · Tp (s) • mg = 15.5dB che presenta: e mϕ = 60◦ per il funzionamento nominale del LED in modalità buck (diagramma di Bode in gura 3.18). • mg = 8.95dB e mϕ = 43.6◦ per il funzionamento nominale del LED in modalità boost (diagramma di Bode in gura 3.19). Trovato il controllore teorico tempo continuo è necessario trovare il corrispondente controllore tempo discreto per l'implementazione su DSP. A tal ne occorre discretizzare il termine integrale in (3.44) ad esempio attraverso il CAPITOLO 3. MODELLO PICCOLI SEGNALI E CONTROLLO DIGITALE30 Diagramma di Bode di TC(s) Modulo (dB) 0 −10 −20 −30 Fase (deg) −40 0 −45 −90 2 10 3 4 10 5 10 10 Frequenza (rad/s) Figura 3.17: Diagramma di Bode di Tc (s). Diagramma di Bode L (s) (modalità buck): m = 15.5 dB, m = 60° C g φ Modulo (dB) 50 0 Fase (deg) −50 270 225 180 135 90 1 10 Figura 3.18: 2 10 3 4 10 5 10 Frequenza (rad/s) Diagramma di Bode di LC (s) 6 10 10 7 10 in condizione di funzionamento nominale del LED in modalità buck. metodo metodo di Eulero in avanti: Zt yP I (t) = yP (t) + yI (t) = KP · e(t) + KI e(τ )dτ (3.45) 0 kTS Z yP I (kTS ) = KP · e(kTS ) + KI e(τ )dτ (3.46) 0 (k−1)T Z S yP I (kTS ) = KP · e(kTS ) + KI kTS Z e(τ )dτ + KI 0 e(τ )dτ (3.47) (k−1)TS kTS Z yP I (kTS ) = KP · e(kTS ) + yI (k − 1)TS + KI e(τ )dτ (3.48) (k−1)TS yP I (kTS ) ' KP · e(kTS ) + yI (k − 1)TS + KI TS e (k − 1)TS (3.49) CAPITOLO 3. MODELLO PICCOLI SEGNALI E CONTROLLO DIGITALE31 Diagramma di Bode LC(s) (modalità boost): mg= 8.95 dB, mφ = 43.6° Modulo (dB) 50 0 Fase (deg) −50 270 225 180 135 90 1 10 Figura 3.19: 2 3 10 10 4 5 10 Frequenza (rad/s) Diagramma di Bode di LC (s) 6 10 7 10 10 in condizione di funzionamento nominale del LED in modalità boost. v_E 1 -KTs 1 -K- z Unit Delay K_I v_C 1 -KK_P Figura 3.20: PID discreto realizzato in Simulink per il convertitore buck-boost in analisi. dove kTS , k ∈ N. L'equazione alle dierenze (3.49) è facilmente implementabile in Simulink (gura 3.20) ed in qualsiasi linguaggio di programmazione per microcontrollori, si nota inoltre che l'errore fatto dall'approssimazione del metodo di Eulero diminuisce col diminuire di TS che in questo elaborato è stato ssato a 10−5 s. Per simulare il buck-boost in anello chiuso con controllore PI discreto è stato realizzato un opportuno modello Simulink (gura 3.21) attraverso la combinazione di blocchi Simscape e Simulink, in particolare è stato necessario creare anche un modello Simscape ad hoc per il LED di potenza. Il ramo di retroazione del processo modella l'algoritmo di controllo del dsp ed è stato impostato a tempo di discreto con TS = 10−5 s, dove la conversione tra segnale analogico e digitale avviene nel blocco somma che fa la dierenza tra la tensione di riferimento e la tensione vO . È stato inoltre realizzato un modello Simulink del buck-boost in catena aperta, in tal modo è stato possibile vericare la correttezza delle simulazioni Simulink con un equivalente modello realizzato con Ltspice: entrambi i simulatori forniscono risultati in perfetto accordo. Modello Simulink del f(x)=0 v_I Scope Duty Cycle Solver Configuration powergui Duty Cycle 4.5 V (buck) v_C PWM PWM Massa s d L + PS S D - i_L retroazionato in tensione con controllore PI discreto. convertitore v_C v_E u Controllore PI discreto C Controllo PI2 e i_O S PS v_C xlamp pi vecchio Led v_E Simscape I + - Scope i_O + - + - Figura 3.21: + Continuous Manual Switch Ritardo DSP PS S Vref 3.54 Led On v_O Vref1 3.1 Led Off scope v_O CAPITOLO 3. MODELLO PICCOLI SEGNALI E CONTROLLO DIGITALE32 buck-boost PWM + V - I + CAPITOLO 3. MODELLO PICCOLI SEGNALI E CONTROLLO DIGITALE33 Si riportano nella seguente tabella 3.1 i risultati ottenuti dalle simulazioni in catena chiusa del buck-boost: Parametro Modalità buck (VI ∆VO ∆IO Tabella 3.1: = 4.5 V ) Modalità boost (VI 0.118 V (3.33%) 0.157 A (22.42%) =3 V) 0.120 V (3.39%) 0.191 A (27.8%) Risultati ottenuti dalle simulazioni in anello chiuso del buck-boost PWM. In entrambe le modalità di funzionamento si ottengono risultati comparabili ed il funzionamento leggermente migliore della modalità buck è facilmente spiegabile in quanto il controllore PI è stato costruito sul modello a piccoli segnali in modalità buck. È possibile vedere che il controllo voltage-mode con PI adoperato ssa in modo accurato la tensione ai capi del LED, ma anche piccole variazioni di quest'ultima producono per la caratteristica esponenziale del LED variazioni non trascurabili sulla corrente iO . Ad ogni modo queste variazioni di corrente non sono tali da produrre variazioni di luminosità apprezzabili all'occhio umano. In conclusione le simulazioni eettuate dimostrano che il buck-boost è stato dimensionato correttamente e che il controllo presentato e realizzato in questo elaborato è una valida soluzione per pilotare LED di potenza. 4 3.5 3 vO [V] 2.5 2 1.5 1 0.5 0 0 0.005 Figura 3.22: anello chiuso. 0.01 0.015 0.02 0.025 Tempo [s] Andamento nel tempo di 0.03 0.035 0.04 vO (t) in modalità buck, 0.045 0.05 simulazione ad CAPITOLO 3. MODELLO PICCOLI SEGNALI E CONTROLLO DIGITALE34 0.8 0.7 0.6 iO [A] 0.5 0.4 0.3 0.2 0.1 0 −0.1 0 0.005 Figura 3.23: 0.01 0.015 0.02 0.025 Tempo [s] 0.03 0.035 0.04 0.045 0.05 Andamento nel tempo di iO (t) in modalità buck, simulazione ad anello chiuso. 4 3.5 3 vO [V] 2.5 2 1.5 1 0.5 0 −0.5 0 0.005 Figura 3.24: 0.01 0.015 0.02 0.025 Tempo [s] Andamento nel tempo di vO (t) 0.03 0.035 0.04 0.045 0.05 in modalità boost, simulazione ad anello chiuso. 1.2 1 iO [A] 0.8 0.6 0.4 0.2 0 −0.2 0 0.005 Figura 3.25: 0.01 0.015 0.02 0.025 Tempo [s] Andamento nel tempo di ad anello chiuso. iO (t) 0.03 0.035 0.04 0.045 0.05 in modalità boost, simulazione Capitolo 4 Realizzazione del circuito In questo capitolo verranno discusse le modalità e gli strumenti utilizzati per la realizzazione pratica del circuito nale e tutti gli accorgimenti presi al ne di ottenere un prodotto funzionante. 4.1 Realizzazione dello schema elettrico La realizzazione dello schema elettrico, in alcuni casi, può dierire molto da quello ottenuto a seguito dello studio teorico di un problema. All'atto pratico infatti non si può fare a meno di arontare questioni quali l'inserimento di test point, resistenze di sensing, problemi dovuti alla raggiungibilità di alcune parti del circuito (necessarie per debug) etc. Tenendo conto di queste necessità è stato elaborato lo schema elettrico della parte prettamente analogica (gura 4.1) e digitale(gura 4.2). La scelta di dividere il circuito in due parti è fatta per avere la possibilità di cambiare con facilità la parte analogica, la quale può essere nel tempo migliorata o completamente sostituita, mentre la parte digitale necessita solo di un aggiornamento software. Nello schema della scheda master possiamo notare sulla sinistra i componenti necessari al corretto funzionamento del DSP, mentre sulla destra i collegamenti che andranno ad interfacciarsi con la scheda analogica, la seriale che andrà ad interfacciarsi con il PC ed inne il connettore per la sonda esterna di calore che può essere collegata in un punto strategico del dissipatore per preservare il led da surriscaldamenti che potrebbero danneggiarlo. La gran quantità di pin che rimane scollegata concede agli sviluppatori la possibilità di aggiungere altre utilità come led indicativi o altri tipi di componenti o sensori. 4.1.1 Interfacciamento con il PC Una delle caratteristiche principali che contraddistingue il progetto è la grande libertà di interfacciamento che il DSP mette a disposizione. Tra le periferiche interne del dispositivo ci sono infatti le seguenti interfacce hardware: I2C Si tratta di un protocollo di comunicazione molto famoso, che richiede l'ausilio di solo due cavi e, che permette a molti dispositivi di aacciarsi contemporaneamente al bus. 35 Questo standard di comunicazione CAPITOLO 4. REALIZZAZIONE PRATICA DEL CIRCUITO Figura 4.1: Schema elettrico della scheda slave (analogica). Figura 4.2: Schema elettrico della scheda master (digitale). 36 CAPITOLO 4. REALIZZAZIONE PRATICA DEL CIRCUITO Figura 4.3: 37 Convertitore USB-RS232. permette di coprire distanze di solo qualche metro e non è pratico per l'interfacciamento con il PC. SPI Si tratta anche questo di un protocollo molto diuso, che richiede l'ausilio di 3 linee di comunicazione più una per ogni dispositivo che si aaccia al bus. Questo standard permette di coprire distanze di pochi centimetri ed anche se risulta molto più rapido dell' I2C rimane poco pratico per le comunicazioni con il PC. CAN Il protocollo CAN è stato progettato per lavorare in ambienti con elevati disturbi elettromagnetici e, può coprire distanze anche di quante centinaio di metri. Nonostante sia il più lento tra tutti i protocolli disponibili rimane quello più ecace per il progetto in esame. UART Questa periferica permette la gestione del protocollo seriale RS-232. Data l'ampia diusione di tale standard nei PC da molti anni risulta il modo migliore per comunicare con esso. Questa periferica permette inoltre buone velocità di comunicazione e può coprire distanze di qualche metro. Come accennato nei punti precedenti la comunicazione per mezzo del protocollo CAN è la migliore opzione, sebbene non sia stato adottato nella progettazione del prototipo in esame. Si è optato invece per una comunicazione RS-232 poiché richiede minori complicazioni hardware e software. In tutti i PC si trovano infatti già disponili i driver per la comunicazione seriale e, sono presenti in commercio dei convertitori hardware di immediato impiego. Per l'utilizzo di un protocollo CAN invece si sarebbe dovuto sviluppare entrambe queste parti che non rappresentano un punto cruciale della trattazione. Sarà possibile in futuro con leggere modiche hardware e software passare dall'uno all'altro. Come è vero che praticamente tutti i sistemi operativi hanno a disposizione driver per la comunicazione seriale è anche vero che la grande maggioranza dei moderni PC non possiede più un connettore COM (di tipico utilizzo per la comunicazione RS232). Quello che si fa allora è utilizzare un convertitore USB-RS232. I dispositivi che si collegano all'USB possono infatti mostrarsi al PC come qualsiasi altra periferica, nel nostro caso una seriale. Il convertitore utilizzato è il MM232R mostrato in gura 4.3. CAPITOLO 4. REALIZZAZIONE PRATICA DEL CIRCUITO 38 4.1.2 Alimentazione Le due parti del circuito, digitale ed analogica, possiedono due alimentazioni distinte. Questo perché la parte digitale necessita di lavorare con tensioni stabilizzare a 3.3 Volt, mentre la parte analogica ha una escursione molto più ampia. Tenere separate le due alimentazioni evita che i disturbi introdotti sulla linea di alimentazione dalle rapide commutazioni del mosfet si ripercuotano sulla parte digitale. Un'ulteriore vantaggio pratico è dato dal fatto che è possibile prevedere una alimentazione di potenza ed una di segnale, quest'ultima proveniente direttamente dal bus di comunicazione. 4.1.3 Dimensionamento circuiti di prelievo Un fattore molto importate nella realizzazione pratica del progetto sono i livelli di tensione di funzionamento della parte analogica, che possono essere (come accade in questo caso) incompatibili con la parte digitale, che ha l'esigenza di campionare alcuni di questi valori. Poiché tutti i livelli di tensione da campionare possono essere più alti della massima tensione sopportabile dal DSP si è scelto di adattare i livelli con dei partitori di tensione. Si potrebbe essere tentati dal realizzare questi partitori di tensione con dei valori alti di resistenza, in modo da diminuire al massimo il loro eetto sulle linee controllate. Questo purtroppo non è possibile poiché come specicato dal costruttore [3] la parte analogica del DSP che si occupa del campionamento introduce alcune limitazioni. Nella gura 4.4 si può vedere il circuito equivalente di ingresso del campionatore riportato dal costruttore. La capacità Cpin risulta trascurabile se la resistenza attraverso la quale si collega la sorgente risulta minore uguale a 500Ohm. Si è imposto quindi nel partitore di prelievo di gura 4.5 i seguenti valori: V LineM ax = 9V olt V inM ax = 3, 3V olt (4.1) R1 = 390Ω da cui R2 = 225, 78Ω (4.2) Il valore commerciale più vicino risulta 220Ω che reinserito nei valori del partitore fa si che il valore massimo per Vin diventi 3,24 Volt. Questo fa si che nel caso peggiore su ognuno dei due partitori resistivi scorra una corrente di 17mA che andrà ad abbassare il rendimento del circuito. 4.2 Realizzazione del layout Una volta arrivati alla versione denitiva dello schema elettrico si è passati alla realizzazione del layout. Per fare questo ci siamo serviti del software freeware Eagle CAD 6.3. La versione denitiva delle due schede (per comodità realizzate entrambe a singola faccia) può essere apprezzata nella gura 4.6. I due master sono quindi stati stampati su pellicola trasparente ad alto contrasto permettendo lo sviluppo delle piastre ramate presensibilizzate tramite esposizione a raggi ultravioletti. Successivamente si è provveduto all'incisione per mezzo di soluzioni apposite e al taglio. Inne foratura e montaggio di tutti i componenti. Le fasi della realizzazione sono riportate in gura 4.7. CAPITOLO 4. REALIZZAZIONE PRATICA DEL CIRCUITO Figura 4.4: Circuito di ingresso dei pin capionatori. Figura 4.5: Partitore di prelievo 39 CAPITOLO 4. REALIZZAZIONE PRATICA DEL CIRCUITO (a) Master . Figura 4.6: (b) Slave Layout dei due circuiti. . 40 CAPITOLO 4. (a) (c) REALIZZAZIONE PRATICA DEL CIRCUITO Esposizione . (b) Taglio foratura . Figura 4.7: (d) Incisione Saldatura Schede realizzate. . . 41 Capitolo 5 Implementazione rmware e software In questo capitolo verranno illustrate le parti fondamentali del software lato PC e del rmware residente invece direttamente sul DSP che assieme costituiscono la parte digitale del progetto. Verrà fornita inoltre una panoramica sulle periferiche interne utilizzate del DSP. 5.1 Software Per lo sviluppo del software sul lato pc è stato scelto il noto linguaggio di programmazione C++, abbinato alle librerie Qt sviluppate dalla nokia (ora appartenenti a Digia), che forniscono un'ampia gamma di utilità già sviluppate ed ottimizzate. Un altro componente essenziale che è stato utilizzato è dato dalle librerie OpenSource QExtSerial che forniscono un comodo approccio alla comunicazione seriale appoggiandosi anch'esse alle Qt. Poiché sviluppato in C++ non esiste un sistema operativo di riferimento da preferirsi per fare girare il software, ma è suciente ricompilare il codice direttamente per l'OS desiderato. Il software residente sul PC ha una duplice funzione; la prima di fornire una base di debug durante il test del sistema permettendo di aprire o chiudere a piacimento la catena di retroazione e permettendo di monitorare e salvare i dati del controllore per vericarne il corretto funzionamento. invece di fornire una vREF La seconda è quella al PI tramite seriale e la possibilità di controllare simultaneamente una grande quantità di dispositivi simili che condividono lo stesso bus di comunicazione. 5.2 Il dsPIC33FJ128MC802 Per questo progetto è stato scelto un DSP a 16 bit della nota casa Microchip Technology Inc. nello specico il modello dsPIC33FJ128MC802. Questo dispositivo risulta molto comodo per l'applicazione in esame poiché dotato di ottime caratteristiche in termini di velocità, memoria ed in quanto consente di campionare vari ingressi in simultanea agevolando lo sviluppo del sistema in real time. 42 CAPITOLO 5. IMPLEMENTAZIONE FIRMWARE E SOFTWARE 43 Il dispositivo, come riportato sul datasheet, possiede molte periferiche interne; tuttavia verranno esposte solo quelle utilizzate: UART Questa periferica si occupa di fornire lo strato hardware necessario ad una comunicazione seriale, gestisce inoltre in autonomia una grande varietà di casistiche come l'errore di accavallamento dei caratteri ricevuti, la generazione di interrupt etc. Una precisazione da fare riguarda il fatto che questa periferica è compatibile con la RS-232 per quanto riguarda il protocollo di comunicazione, ma non per quanto riguarda i livelli logici. Timers Questa periferica contiene al suo interno vari contatori binari hardware, che una volta avviati risultano completamente indipendenti dal resto delle periferiche e del rmware. Per mezzo di questi contatori estremamen- te precisi è possibile generare eventi ad intervalli di tempo prestabiliti o scandire le esecuzione di istruzioni in sistemi real time. ADC Questa periferica è di gran lunga la più importante per la realizzazione del controllore, dispone infatti di 4 S&H congurabili per eseguire un campionamento in simultanea per non perdere informazioni di fase dei valori campionati. Lo schema interno di questa periferica è riportato in gura 5.1. La velocità di questo convertitore è molto elevata considerando che la sua ubicazione è interna al dispositivo e non esterna come invece molte volte accade quanto c'è la necessità di alta velocità di campionamento. Questo tra le altre cose riduce drasticamente la quantità di componenti elettronici necessari al funzionamento della scheda. Inoltre, poichè la periferica è disponibile internamente, si risparmia l'onere di un'interfaccia con un dispositivo esterno che richiede sempre una certa attenzione. Congurando la periferica per un campionamento di 10 bit si ha a disposizione una velocità massima di campionamento di 1.1MS/sec per 1, 2 o 4 canali in simultanea. E' possibile inoltre aumentare la precisione no a 12 bit riducendo la velocità a 512kS/sec ed un singolo canale. Per la nostra applicazione questa possibilità è stata accantonata, tenendo presente che un punto fondamentale del progetto è che le due tensioni ai capi del diodo siano campionate nel medesimo istante. PWM 6ch Questa periferica mette a disposizione tutto l'hardware necessario alla generazione di un segnale rettangolare con periodo e duty cycle regolabile a piacere entro alcuni limiti (320 step per passare dallo 0% al 100%). Un'utilità che si è rivelata fondamentale durante lo sviluppo dell'applicazione, è la possibilità di scegliere lo stato della linea del PWM all'avvio ed al reset (che può avvenire anche a causa di un errore software). Come si è accennato precedentemente infatti se per errore la linea PWM dovesse rimanere allo stato logico alto per troppo tempo il canale del mosfet (e forse anche il circuito di alimentazione a monte) potrebbero venire distrutti dall'eccessivo passaggio di corrente incontrollato. DMA L'azione di questa periferica non è immediatamente visibile e scontata come potrebbe esserlo per le periferiche no a qui descritte. Il DMA svolge semplicemente ed in autonomia (dopo un corretto settaggio) una serie di operazioni sistematiche tra la memoria RAM e le periferiche sollevando dall'incarico la CPU che può continuare quindi ad eseguire istruzioni no a che non arriva un segnale di ne operazione. A prima vista questa CAPITOLO 5. IMPLEMENTAZIONE FIRMWARE E SOFTWARE Figura 5.1: Schema a blocchi della periferica ADC. 44 CAPITOLO 5. IMPLEMENTAZIONE FIRMWARE E SOFTWARE 45 funzionalità potrebbe sembrare superua ma analizzando bene il codice e le tempistiche (come faremo in questo capitolo) si noterà come essa sia essenziale al corretto funzionamento di sistemi in real time. 5.3 Firmware L'ambiente di sviluppo fornito dal produttore è MPLAB che permette di impostare comodamente molte congurazioni del dsPIC e di sviluppare il sorgente con il noto linguaggio di programmazione C. 5.3.1 Congurazione delle periferiche Vengono adesso analizzate le esigenze di ogni periferica e la loro congurazione dal punto di vista del rmware. In molte applicazioni questa parte può essere sorvolata rimandando il lettore a manuali o tutorial. Nell'applicazione trattata è invece necessario spiegare nel dettaglio alcune delle congurazioni poiché esse fanno parte integrante del sistema di controllo. Per questioni di leggibilità si riporteranno solo i valori assegnati ad ogni registro essenziale su una tabella; per il codice completo si rimanda alle appendici. La prima parte analizzata è quella della periferica ADC: Registro Bits Valore Descrizione AD1CON1 ADDMABM 1 Stand-alone DMA buer mode AD1CON1 AD12B 0 Conversione a 10 bit AD1CON1 FORM 0b00 Unsigned integer format AD1CON1 SSRC 0b010 Campionamento dettato dal Timer 3. AD1CON1 ASAM 1 Il campionamento incomincia in automatico AD1CON2 CHPS 0b10 Campiona CH0, CH1, CH2 e CH3 AD1CON2 SMPI 0 Incrementa contatore ad ogni campione AD1CON2 BUFM 0 Sposta tutto il campione di 16 bit insieme AD1CON3 ADRC 0 Clock derived from system clock AD1CON3 ADCS 4 Tad = 125ns DMA0CON SIZE 0 Chiedi una word alla periferica DMA0CON HALF 0 Interrupt quando tutto il blocco dati è nito. Tabella 5.1: Congurazione della periferica ADC. In particolar modo occorre prestare attenzione alla specica scelta per il campionamento che deve avvenire alla frequenza ssa di 100KHz quindi con un periodo di TS = 10µs. Per garantire questa condizione è necessario che dopo la chiusura del S&H (che avviene esattamente all'inizio di ogni campione) i 4 valori prelevati siano convertiti e l'uscita del controllore PI sia calcolata prima che avvenga il successivo istante di campionamento. Se questa condizione non dovesse essere vericata i risultati non sarebbero attendibili. In particolare il bit AD12B posto a 0 specica che desideriamo una conversione a 10 bit. Settando a 0 i bit ADRC del registro AD1CON3 si specica che il clock di lavoro per la periferica è lo stesso utilizzato per il sistema; questo sappiamo essere un CAPITOLO 5. IMPLEMENTAZIONE FIRMWARE E SOFTWARE 46 oscillatore al quarzo dotato di enorme precisione. Settando invece i bit ADCS al valore 14 (0000 1110) si specica quanto segue: TAD = TCY · (ADCS + 1) = con TCY 1 · 5 = 125ns 40 · 106 (5.1) periodo del clock di sistema alla frequenza di lavoro di 40 MIPS. Da questa appena trovata si ricava il tempo totale di conversione per tutti e 4 i campioni: TSIM = TSM P + (M · TCON V ) = 6µs con (5.2) M = 4 numero di canali campionati, TCON V = 12 · TAD tempo di conversioTSM P = 0 tempo di campionamento del segnale che ne per ogni canale ed inne è uguale a zero perché il S&H rimane sempre chiuso (caricandosi alla tensione di linea) no a che non arriva l'interrupt di campionamento, in quell'istante si chiude e comincia subito la conversione, annullando di fatto tale parametro. Le congurazione per l'unico timer in uso sono invece riportate in tabella 5.2: Registro Bits Valore Descrizione TMR3 0 Valore di partenza del timer. PR3 400 Colpi di clock dopo i quali viene generato interrupt Tabella 5.2: Congurazione del timer per il real time. Il timer molto semplicemente si limita a contare a partire dal valore impostato nel registro TMR3 no ad arrivare al valore impostato in PR3, ogni conteggio se non diversamente specicato corrisponde ad un colpo di clock del sistema TCY = 25ns, quindi si avrà: TS = 400 ∗ TCY = 10µs (5.3) Arrivato alla ne del conteggio il timer sveglia la periferica ADC che apre il S&H no a quel momento chiuso sulla linea e fa si che inizi la sequenza di conversione discussa precedentemente. 5.3.2 Il regolatore PI In questa sezione viene spiegato il regolatore PI che risulta composto da due parti di codice. Nella prima parte si dichiara la struttura per il regolatore Codice 5.1: Struttura dati del PI. typedef struct { float Gain ; float IGain ; float Up_Limit ; float Low_Limit ; float Integrator ; bool sat ; } reg_PI ; nella seconda invece si crea la funzione che calcola l'uscita del regolatore. CAPITOLO 5. IMPLEMENTAZIONE FIRMWARE E SOFTWARE 47 float calc_PI ( reg_PI * Pi , float input , float ts ) { } float out ; // Pi . Integrator = Pi . Integrator + input * Pi . IGain ; out = ( Pi - > Gain * input ) + Pi - > Integrator ; if (( out >= Pi - > Low_Limit ) && ( out <= Pi - > Up_Limit )){ Pi - > Integrator += input * Pi - > IGain * ts ; Pi - > sat = false ; } else { if ( out < Pi - > Low_Limit ) out = Pi - > Low_Limit ; else out = Pi - > Up_Limit ; if ( Pi - > Integrator < Pi - > Low_Limit ) Pi - > Integrator = Pi - > Low_Limit ; else Pi - > Integrator = Pi - > Up_Limit ; Pi - > sat = true ; } return out ; In questo modo è stato discretizzato lo schema a blocchi tempo continuo di gura 5.2 come visto in 3.3. Gli argomenti della funzione sono input (l'errore), una variabile che rappresenta il nostro regolatore ed inne il tempo di campionamento in secondi. Occorre precisare inne che tale codice funziona correttamente solo se chiamato ad intervalli regolari di tempo uguale a è TS che nel nostro caso 10µs. Figura 5.2: Schema a blocchi tempo continuo che viene implementato attraverso la funzione 5.3.2. 5.3.3 Il ramo di feedback Sono adesso analizzate quelle parti di codice che permettono al regolatore di svolgere correttamente le sue funzioni, mantenendo però disponibili altre importanti funzionalità. Una delle caratteristiche del progetto è la possibilità di vedere i risultati dei calcoli e lo stato in cui si trova il controllore, per far si che CAPITOLO 5. IMPLEMENTAZIONE FIRMWARE E SOFTWARE 48 l'invio di questi dati non occupasse troppe risorse si sono denite delle apposite variabili create ad hoc: typedef union { float value ; char valueChar [4]; } sFloat ; La variabile sFloat (serial oat) può essere trattata a piacimento sia come oat vero e proprio nel caso in cui si eettuano calcoli, che come serie di char utili invece quando si vuole inviare il dato attraverso la seriale senza essere costretti a fare nessuna conversione. L'utilità di questa scelta dal punto di vista del risparmio di risorse è palese. Si riporta adesso nel listato sottostante la funzione che si occupa invece dell'intera retroazione digitale. void __attribute__ (( __interrupt__ , auto_psv )) _DMA0Interrupt ( void ) { if ( adcCounterBuffer == 0){ // I dati sono nel buffer A vLed . value = VSTEP * CONST *(( float ) BufferADCA [1] -( float ) BufferADCA [2]); vBat . value = VSTEP * CONST *( float )( BufferADCA [2]); } else { // I dati sono nel buffer B vLed . value = VSTEP * CONST *(( float ) BufferADCB [1] -( float ) BufferADCB [2]); vBat . value = VSTEP * CONST *( float )( BufferADCB [2]); } adcCounterBuffer ^= 1; // Switch buffer } if ( pidON ){ // Qui viene calcolato il Pi e fatta la correzione del PWM errore . value = vRef . value - vLed . value ; out2 = calc_PI (& pid , errore . value , 0.00001); P1DC1 = ( int )(320 * out2 ); } IFS0bits . DMA0IF = 0; La prima cosa da notare è che questa funzione non può essere richiamata normalmente, ma viene eseguita a seguito di una catena di eventi qui elencati: I Il timer nisce il suo conteggio e sveglia la periferica ADC. II La periferica ADC apre simultaneamente tutti i S&H e da inizio alla fase di conversione dei segnali. III Il primo segnale viene convertito e scritto sul registro ADC1BUF0, come si vede nella gura 5.1. Alla ne della conversione viene generato un interrupt che viene intercettato dal DMA. Il DMA si occupa di trasferire il campione dal registro ADC1BUF0 alla porzione di RAM appositamente riservata ai campioni, i vettori BuerADCX[Y]. IV Il punto III viene eseguito per tutti e 4 i canali, il trasferimento dei dati alla RAM per mezzo del DMA avviene in contemporanea alla conversione del dato successivo (in questo modo tutte le tempistiche calcolate precedentemente sono preservate). CAPITOLO 5. IMPLEMENTAZIONE FIRMWARE E SOFTWARE 49 V Alla ne della scrittura del quarto campione il DMA genera un interrupt che esegue la funzione riportata nel listato 5.3.3 La prima istruzione eseguita è il controllo della variabile adcCounterBuer, questa variabile può essere 0 o 1 in funzione di quale buer di RAM debba essere letto. Sono presenti in memoria RAM due buer identici (BuerADCA[4] e BuerADCB[4]) contenenti alternativamente i segnali campionati. Questi due buer si scambiano secondo la tecnica ping-pong riportata nel manuale del DMA [5]. Una volta stabilito il buer in utilizzo si prelevano i campioni e si eseguono alcune conversioni. Nella posizione 1 del buer risiede il campione del canale AN0 che corrisponde al segnale D+ del LED, mentre nella posizione 2 risiede il campione del canale AN1 che corrisponde al segnale D-. L'informazione necessaria al ramo di feedback è VLED = VD+ −VD− che viene ricavata dalla seguente istruzione: vLed . value = VSTEP * CONST *(( float ) BufferADCA [1] -( float ) BufferADCA [2]); Il risultato della conversione proveniente dal convertitore analogico digitale è un numero intero compreso tra 0 e 1024, ogni passo ha un valore in tensione pari 3.3 1024 = 0.0033222656V olt che viene quindi moltiplicato al risultato della dierenza dei due campioni per avere la tensione eettivamente applicata a VST EP = al pin del DSP. Un'ulteriore costante correttiva è applicata per compensare il fatto che la tensione è prelevata per mezzo di un partitore di tensione, quindi conoscendo i valori di tale partitore (discusso nei capitoli precedenti) si ha 390+220 = 2.7727272727. Questi dati nel caso in cui la variabile 220 pidON sia false non vengono utilizzati, ma solo memorizzati temporaneamente CON ST = nella RAM ed eventualmente (se perviene una richiesta dalla seriale)inviati al PC; in questo caso il circuito è controllato in catena aperta ed il PI non ha la possibilità di variare il PWM. Al contrario nel caso in cui la variabile pidON sia true allora l'errore dato dalla dierenza tra la vRef (ricevuta tramite seriale) e, vLed (misurata come precedentemente descritto) vanno a fornire l'input per il calcolo della retroazione. In questo caso il PI può aggiornare il valore di PWM da un minimo del 0 ad un massimo di 320, questo range è quello disponibile per il dispositivo con la frequenza di lavoro scelta (si veda la congurazione della periferica PWM). Il valore calcolato viene quindi messo nel registro P1DC1 che provvede ad aggiornare il duty-cycle al successivo periodo disponibile. 5.3.4 Il le Main.c Nel main (che per questioni di leggibilità non viene riportato per intero) si trovano inizialmente le seguenti istruzioni DMA0STA DMA0STB DMA1STA DMA1STB DMA2STA = = = = = __builtin_dmaoffset ( BufferADCA ); __builtin_dmaoffset ( BufferADCB ); __builtin_dmaoffset ( BufferRxA ); __builtin_dmaoffset ( BufferRxB ); __builtin_dmaoffset ( BufferTx1 ); con queste si impostano gli indirizzi di riferimento con il quali i vari canali del DMA andranno ad interagire. Vengono successivamente richiamate tutte le funzioni di settaggio delle periferiche descritte precedentemente, viene inoltre settata la giusta direzione per gli I/O utilizzati. Per congurare i parametri del PI all'avvio invece si utilizza il seguente codice CAPITOLO 5. IMPLEMENTAZIONE FIRMWARE E SOFTWARE 50 pid . Gain = 0.014602019758039; pid . IGain = 58.548510882553350; pid . Integrator = 0; pid . Low_Limit = 0; pid . Up_Limit = 0.8; pid . sat = false ; nel quale si impostano i guadagni calcolati attraverso le simulazioni ed i valori di saturazione massimi per l'integratore e l'uscita: 0% e '80% rispettivamente per il valore di duty cicle inferiore e superiore. Il main vero e proprio è riportato di seguito while (1){ if ( monitorFlag ){ PWM . value = ( float ) P1DC1 ; test1 . value = pid . Gain ; test2 . value = pid . IGain ; test3 . value = pid . Integrator ; UART1monitorSend (& vLed , & errore , & temperatura , & PWM , & test1 , & test2 , & test3 ) monitorFlag = 0; } } è molto semplice e non svolge nessuna funzione se non quella di entrare in un ciclo innito. Nessuna istruzione viene eseguita dentro al main poiché tutto ciò che riguarda il controllo è gestito automaticamente dalle funzioni preimpostate. All'interno dell'unica if presente si entra solo quando c'è una richiesta da parte dell'utente di un pacchetto monitor, quest'ultimo è formato da una serie di dati di controllo che fornisce un resoconto sullo stato del controllore ad un certo istante di tempo (qui è fondamentale l'utilizzo del nuovo di tipo dichiarato sFloat). 5.3.5 La comunicazione seriale Come è già stato accennato l'utilizzo della seriale è legato ad una sola questione di comodità, qualsiasi altro tipo di comunicazione può essere utilizzato lasciando inalterate le caratteristiche del controllore n qui descritte. La funzione di ricezione viene riportato nel listato sottostante. void __attribute__ (( __interrupt__ , auto_psv )) _DMA1Interrupt ( void ) { if ( rxCountBuffer == 0){ // I dati stanno nel buffer A if (( BufferRxA [0] & 0 x00FF ) == '@ ' ){ monitorFlag = 1; } else if (( BufferRxA [0] & 0 x00FF ) == 'k ' ){ // K copyVariable ( BufferRxA , & k ); pid . Gain = k . value ; } else if (( BufferRxA [0] & 0 x00FF ) == 'i ' ){ // Ki copyVariable ( BufferRxA , & ki ); pid . IGain = ki . value ; } else if (( BufferRxA [0] & 0 x00FF ) == 'v ' ){ // Vref copyVariable ( BufferRxA , & vRef ); CAPITOLO 5. IMPLEMENTAZIONE FIRMWARE E SOFTWARE } else if (( BufferRxA [0] & 0 x00FF ) == 'y ' ){ copyVariable ( BufferRxA , & dty ); P1DC1 = ( int ) dty . value ; } else if (( BufferRxA [0] & 0 x00FF ) == 's ' ){ copyVariable ( BufferRxA , & timeSoft ); softStartFlag = 1; } else if (( BufferRxA [0] & 0 x00FF ) == 'o ' ){ pidON = 1; } else if (( BufferRxA [0] & 0 x00FF ) == 't ' ){ pidON = 0; P1DC1 = 0; } } else { ... } rxCountBuffer ^= 1; // Switch buffer 51 // Duty // Softstart // On PID // Stop pid IFS0bits . DMA1IF = 0; } Anche qui per la ricezione si utilizza la tecnica ping pong, quindi in RAM saranno presenti due buer di identiche dimensioni che si alternano la memorizzazione dei caratteri in arrivo. L'esecuzione di questa funzione è del tutto simile a quella che regolamenta il feedback, infatti il codice viene eseguito a seguito della ricezione consecutiva di 5 caratteri da parte della seriale. Il messaggio ricevuto deve avere la seguente sintassi per essere interpretato correttamente: La parte Figura 5.3: Struttura di un comando interpretabile. cerchiata di celeste è un carattere ascii, seguito dalla parte cerchiata in arancione che invece è una serie di 4 caratteri che viene interpretata in maniera diversa in funzione del tipo di comando ricevuto. Come si vede dalla funzione il primo carattere viene confrontato con una lista di possibilità in base alle quali poi viene compiuta una azione diversa. I comandi disponibili ad ora sono: @ Richiesta di un campione da parte del PC, con la ricezione di questo ca- rattere i 4 caratteri successivi vengono ignorati e viene alzato il ag monitorFlag che, come è stato visto in precedenza, viene elaborato all'interno del ciclo innito del main. k Richiesta di variazione in real time del guadagno proporzionale. I successivi 4 byte vanno a comporre un singolo valore oat che poi viene assegnato al guadagno proporzionale del PI. i Richiesta di variazione in real time del guadagno integrativo. Del tutto simile al punto precedente. v Richiesta di variazione in real time del valore di tensione di riferimento. I 4 byte successivi vanno a comporre un oat che poi sarà il nuovo riferimento di tensione da inseguire per il controllo. Questa possibilità di variazione è una delle caratteristiche fondamentali del progetto. CAPITOLO 5. y IMPLEMENTAZIONE FIRMWARE E SOFTWARE Richiesta di variazione in real time del valore di duty cycle. 52 I 4 byte successivi al carattere di comando vanno a costituire un oat che poi viene successivamente trasformato in intero ed inserito nell'apposito registro che attua la variazione. s Richiesta di soft start. I primi due byte successivi al comando andranno a comporre il numero intero di millisecondi in cui si desidera che il duty cycle arrivi al valore impostato dal numero intero composto dai successivi due byte che seguono. Una volta che si è arrivati al duty cycle desiderato nel tempo desiderato la funzione chiude la catena di controllo settando ad 1 il ag o pidON. Richiesta di accensione del controllore. Questa funzione molto semplicemente setta il ag pidON ad 1, conseguentemente si attiva la retroazione di controllo. Il 4 byte successivi al carattere di comando vengono ignorati. t Richiesta di disattivazione del PI. Il ag pidON viene impostato a zero ed il duty cycle viene settato a zero per questioni di sicurezza. I 4 byte successivi al carattere di comando vengono ignorati. Risultati e Conclusioni 5.4 Prove sperimentali e risultati Come primo passo sono state valutate le forme d'onda su alcuni punti fondamentali del convertitore al ne di vericarne il corretto funzionamento. Nella gura 5.4 è possibile vedere la tensione di pilotaggio sul gate del MOSFET proveniente dal DSP. In particolare si può notare la presenza di uno smussamento dell'onda rettangolare, dovuto al fatto che la corrente che carica la capacità di gate è limitata, per questioni di sicurezza, da una resistenza di 10Ω. La gura 5.5 mostra invece la tensione ai capi dell'induttore ed in accordo con la teoria (in caso stazionario) l'area negativa risulta uguale all'area positiva rispettando la condizione di bilanciamento dei Volt-Secondi. La gura 5.6 mostra invece la tensione ai capi del diodo che risulta essere sempre negativa ed inferiore alla tensione di break-down. Inne nella gura 5.7 è possibile apprezzare il ripple di tensione ai capi del diodo LED in caso di funzionamento in modalità buck e boost. Per la modalità Boost è presente un ripple di 300mV , mentre nella modalità Buck si può notare come invece questo ripple venga ridotto di circa la metà: questi risultati sono in accordo con le simulazioni teoriche eettuate nel Capitolo 3. Nonostante siano state previste all'interno del circuito delle opportune resistenze di sensing per valutare le forme d'onda delle correnti; non è stato possibile eettuare delle misure attendibili delle stesse in quanto lo strumento di misura a disposizione si è dimostrato inadeguato. Al ne di valutare la del dispositivo si è provveduto a valutarne il rendimento calcolando la potenza assorbita dal diodo LED. Sono state tracciate due curve per due diversi valori di tensione di alimentazione in ingresso: to boost) e 4, 45V 3V (funzionamen- (funzionamento buck). Per eettuare la misura il circuito è stato montato come in gura 5.8. Una volta ssata la tensione di ingresso vI si è provveduto a variare il riferimento di tensione sull'interfaccia software, in modo tale da ottenere tutta la gamma di correnti supportate dal LED. Monitorando poi le tensioni e le correnti entranti ed uscenti dal convertitore si sono potuti costruire i graci di gura 5.9 e 5.10. E' possibile notare che ogni graco ripor- ta non una ma due curve di rendimento. La curva denominata semplicemente Rendimento riporta esattamente il rapporto tra la potenza in uscita e quella in ingresso, mentre quella denominata Rendimento corretto toglie dal conteggio la potenza dissipata sui partitori di tensione necessari al prelievo della tensione di uscita per la retroazione. La potenza dissipata dai partitori di prelievo degrada sensibilmente il rendimento del convertitore, ma è bene precisare che questi 53 RISULTATI E CONCLUSIONI Figura 5.4: Figura 5.5: 54 Tensione di pilotaggio del gate Tensione vL vGS . ai capi dell'induttore. RISULTATI E CONCLUSIONI Figura 5.6: (a) 55 Tensione ai capi del diodo. Ripple in Buck mode . Figura 5.7: Figura 5.8: (b) Ripple in Boost mode Schede realizzate. Circuito per la misura del rendimento. . RISULTATI E CONCLUSIONI Figura 5.9: Figura 5.10: 56 Rendimento con Rendimento con vI = 3V . vI = 4, 45V . RISULTATI E CONCLUSIONI 57 4 3.5 3 2.5 2 1.5 1 0.5 vref 0 vLED −0.5 0.8 0.9 1 1.1 1.2 1.3 1.4 4 x 10 Figura 5.11: Risposta al gradino in modalità buck, un campione ogni 5ms. 3.5 3 2.5 2 1.5 1 0.5 0 −0.5 0.8 0.9 1 1.1 1.2 1.3 1.4 4 x 10 Figura 5.12: Andamento dell'errore e = v R − vO associato alla risposta al gradino in modalità buck. possono essere sostituiti con un apposito buer opportunamente dimensionato, in grado di perturbare meno il rendimento totale. Un buer infatti permetterebbe di aacciarsi alle linee da monitorare con un'alta impedenza di ingresso e al contempo con una bassa impedenza in uscita, come richiesto per il corretto funzionamento della periferica ADC del DSP. Grazie all'interfaccia software costruita è possibile salvare l'andamento di alcune grandezze d'interesse: v O , vI , vR e duty-cycle; è stato dunque possibile utilizzare la comunicazione seriale per eettuare diverse prove al ne di vericare il funzionamento ad anello chiuso del dispositivo. In particolare nelle gure 5.11 e 5.14 è stata valutata la risposta al gradino in funzionamento buck e boost del dispositivo, evidenziando un tempo di salita trascurabile. Inoltre è stata valutata la tensione ai capi del LED della tensione di alimentazione a 3.42V , vI vO a fronte di variazioni con una tensione di riferimento costante, pari in modo tale da avere sul LED una corrente di circa 0.7A. Come è possibile vedere dalla gura 5.17 il controllore è in grado di reiettare le variazioni della tensione di alimentazione modicando opportunamente il PWM (gura 5.19). RISULTATI E CONCLUSIONI 58 0.5 0.4 0.3 0.2 0.1 0 2000 Figura 5.13: 4000 6000 8000 10000 12000 14000 Modulazione PWM associata alla risposta al gradino in modalità buck. 3.5 3 2.5 2 1.5 1 0.5 0 vREF v LED −0.5 400 Figura 5.14: 600 800 1000 1200 1400 1600 1800 2000 Risposta al gradino in modalità boost, un campione ogni 10ms. 3.5 3 2.5 2 1.5 1 0.5 0 −0.5 400 Figura 5.15: 600 800 1000 1200 Andamento dell'errore 1400 1600 e = v R − vO 1800 2000 associato alla risposta al gradino in modalità boost. 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 400 Figura 5.16: boost. 600 800 1000 1200 1400 1600 1800 2000 Modulazione PWM associata alla risposta al gradino in modalità RISULTATI E CONCLUSIONI 59 8 vREF v LED vI 7 6 5 4 3 2 0 500 Figura 5.17: 1000 1500 2000 2500 Tensione ai capi del LED di alimentazione vI , 3000 vO 3500 4000 4500 5000 a fronte di variazioni della tensione con una tensione di riferimento costante; un campione ogni 10ms. 0.15 0.1 0.05 0 −0.05 −0.1 −0.15 −0.2 0 Figura 5.18: 1000 2000 Andamento dell'errore tensione di alimentazione vI , 3000 4000 e = vR − vO 5000 associato a variazioni della con una tensione di riferimento costante. 0.7 0.65 0.6 0.55 0.5 0.45 0.4 0.35 0 Figura 5.19: alimentazione 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 Modulazione PWM associata a variazioni della tensione di vI , con una tensione di riferimento costante. RISULTATI E CONCLUSIONI 5.5 60 Conclusioni e sviluppi futuri In questo elaborato è stato studiato e realizzato un convertitore buck-boost PWM con controllo digitale per LED di potenza. Lo studio è stato pensato per un'applicazione d'illuminazione portatile con alimentazione d'ingresso variabile, che sfruttando l'elevata emissione luminosa per Watt del LED risulta in grado di fornire un'elevata durata della batteria e tempi di accensione e spegnimento trascurabili. A tal ne è stato studiato (Capitolo 1) e dimensionato (Capitolo 2) un buck-boost in grado di pilotare adeguatamente un LED di potenza con corrente nominale di 0.7 A. Si è provveduto a modellare il circuito ed a costruire un opportuno controllore PI tempo discreto sul modello individuato, così da controllare il convertitore attraverso il cosiddetto voltage-mode control (Capitolo 3). Sono state dunque eettuate opportune simulazioni software mediante LTspice, Matlab e Simulink e concluso lo studio teorico si è provveduto alla realizzazione del progetto, al ne di validare gli studi teorici svolti. Sono state quindi progettate e realizzate due schede: il convertitore buck-boost ed un circuito di controllo che monta un dsp PIC, che consente il funzionamento sia ad anello aperto che ad anello chiuso. In particolare il controllore teorico progettato nel Capitolo 3 è risultato funzionare correttamente sul convertitore ed è in grado di fornire ripple limitati in tensione in accordo con l'analisi teorica eettuata. Non è stato possibile valutare il comportamento della corrente sul LED poichè lo strumento di misura a disposizione è risultato inadeguato a questo scopo. In particolare la scelta di controllare il convertitore mediante un controllo digitale consente una maggiore essibilità anche in funzione di futuri nuovi sviluppi, consentendo di migliorare e personalizzare l'applicazione attraverso modiche software e non hardware. In particolare è stata realizzata un'interfaccia con la quale è possibile tarare da remoto i parametri del PI e regolare la tensione di riferimento per uno o più dispositivi aacciati sul bus di comunicazione. Inoltre l'interfaccia software realizzata consente di salvare l'andamento di alcune grandezze d'interesse del dispositivo: v O , vI , vR e duty-cycle. Il presente elaborato ha portato alla costruzione di un dispositivo molto essibile e con notevoli margini di miglioramento. Avendo infatti introdotto in un circuito prettamente analogico una retroazione digitale sarà possibile sviluppare in modo indipendente vari aspetti del progetto, in tal senso si propongono: • Miglioramenti circuitali : è possibile migliorare il rendimento del circuito diminuendo la perturbazione introdotta dai canali di prelievo delle tensioni monitorate. Sostituendo infatti i partitori resistivi con un buer di tensione opportunamente dimensionato è possibile eliminare la corrente che scorre costantemente sulle resistenze di prelievo, ottenendo di conseguenza un miglioramento delle prestazioni in termini di consumi. Un'ulteriore abbassamento dei consumi può essere ottenuto diminuendo la velocità di calcolo del DSP; infatti nell'applicazione realizzata si è utilizzata la velocità massima, questa può però essere regolata dallo sviluppatore a valori più bassi al ne di raggiungere il miglior compromesso in termini di consumo/prestazioni. Un'ulteriore miglioramento circuitale potrebbe essere l'introduzione di un RISULTATI E CONCLUSIONI 61 apposito driver per il pilotaggio del MOSFET. Infatti nonostante si sia appurato che le correnti erogabili dal DSP sono sucienti a pilotare il transistor esse sono molto vicine ai valori massimi consentiti; questo può tradursi in un abbassamento della vita del circuito ovviabile introducendo un driver per ridurre tale stress. • Miglioramenti di controllo : Il fatto di avere un controllo implementato a livello rmware permette grandi vantaggi per quanto riguarda l'implementazione di controlli avanzati (es. tecniche di controllo ottimo o adattativo). È possibile infatti senza modiche circuitali cambiare completamente metodo di controllo. Può essere addirittura previsto per mezzo di un bootloader caricato sul DSP un aggiornamento del controllo a distanza o un cambio di controllo in real-time. • Miglioramenti software : E' possibile realizzare un sistema complesso di illuminazione in grado di gestire una grande quantità di dispositivi del tutto simili a quello presentato in questo elaborato, al ne di realizzare opere d'illuminazione su vasta scala o illuminazione decorativa (lighting design). Concentrando l'attenzione sul software ed il bus di comunicazione sarà possibile delegare per intero la gestione di tali sistemi complessi d'illuminazione ad un singolo calcolatore opportunamente programmato. Bibliograa [1] Marian K. Kazimierczuk, Pulse-width Modulated DC-DC Power Conver- ters, Wiley, 2008. [2] Microchip Technology Inc., dsPIC33FJ128MCX02/X04 Datasheet, DS70291B, 2008. [3] Microchip Technology Inc., Section 16. Analog-to-Digital Converter (ADC), DS70183D, 2011. [4] Microchip Technology Inc., Section 17. UART, DS70188E, 2011. [5] Microchip Technology Inc., Section 38. Direct Memory Access (DMA), DS70215C, 2011. [6] Microchip Technology Inc., Section 14. Motor Control PWM, DS70187E, 2011. [7] Cree, XLamp XR-E LED Datasheet, CLD-DS05.011, 2009. [8] International Rectier, IRLML6346TRPbF Datasheet, PD-97584, 2010. [9] STMicroelectronics, STPS1L30A/U Datasheet, 2003. [10] F. Bisegna, F. Gugliermetti, M. Barbalace, L. Monti Stato dell'arte dei LED (Light Emitting Diodes), 2010. 62