Indice Tabella Acronimi .......................................................................................................................5 Introduzione................................................................................................................................7 Capitolo1 .......................................................................................................................................9 Premesse e requisiti del progetto.................................................................................................9 1.1 Premessa..........................................................................................................................9 1.2 Specifiche tecniche del progetto....................................................................................10 1.3 Requisiti del software ...................................................................................................10 1.4 Requisiti particolari dell'hardware.................................................................................11 1.5 Scelte effettuate.............................................................................................................11 1.5.1 Il micro controllore................................................................................................12 1.5.2 Come ottenere il segnale di uscita........................................................................13 1.5.3 Conversione da digitale ad analogico del segnale pwm........................................14 1.5.4 La retroazione........................................................................................................19 1.5.5 Normalizzazione dei segnali in ingresso al micro controllore...............................20 1.5.6 Struttura del software.............................................................................................23 Capitolo2 .....................................................................................................................................27 Struttura e funzionamento del sistema......................................................................................27 2.1 Introduzione...................................................................................................................27 2.2 Suddivisione dei circuiti................................................................................................27 2.3 Diagrammi a blocchi.....................................................................................................28 2.4 Diagramma a blocchi della scheda di segnale...............................................................28 2.4.1 Ingressi di comando...............................................................................................30 2.4.2 Normalizzazione....................................................................................................32 2.4.3 Normalizzazione tensione di uscita.......................................................................32 2.4.4 Normalizzazione della corrente misurata..............................................................34 2.4.5 Normalizzazione del sensore di temperatura.........................................................35 2.4.6 Protezione degli adc ..............................................................................................36 2.4.7 Filtro attivo e bypass:.............................................................................................38 2.4.8 OSC:......................................................................................................................40 2.4.9 Comandi AUX:......................................................................................................40 2.4.10 ICP:......................................................................................................................41 2.5Diagramma a blocchi della scheda di potenza...............................................................42 2.5.1 Transistor di bypass...............................................................................................43 2.5.2 Filtro e Shunt.........................................................................................................44 2.5.3 Parti accessorie......................................................................................................45 Capitolo3 .....................................................................................................................................47 Il software di gestione...............................................................................................................47 3.1 Introduzione...................................................................................................................47 3.2 Gestione del pwm..........................................................................................................51 3.3 Variabili di sistema .......................................................................................................55 3.4 Lettura dagli adc............................................................................................................56 3.5 Scandire il tempo con l' interrupt..................................................................................57 3.6 Inizializzazione delle variabili di sistema.....................................................................58 3.7 Configurazione porte ingresso uscita............................................................................59 3.8 Anello di corrente..........................................................................................................61 3.9 Anello di tensione..........................................................................................................63 3.9.1 Commutazione secondari.......................................................................................63 1 3.9.2 Regolazione di tensione.........................................................................................64 3.9.3 Controllo Temperatura...........................................................................................66 3.10 Scrittura a display........................................................................................................67 Capitolo4 Dimensionamento dei componenti..............................................................................69 4.1 Dimensionamento componenti signal board.................................................................69 4.1.1 Dimensionamento delle resistenze accessorie degli operazionali usati nei processi di feedback ......................................................................................................................69 4.1.2 Dimensionamento del filtro attivo.........................................................................71 4.1.3 Linee di alimentazione...........................................................................................73 4.1.4 Filtri livellamento..................................................................................................77 4.1.5 Resistenza di scarica dei condensatori...................................................................80 4.1.6 Condensatori di Bypass o disaccoppiamento........................................................81 4.1.7 Protezione adc........................................................................................................82 4.1.8 Transistor di bypass della scheda di segnale.........................................................84 4.2 Dimensionamento componenti power board.................................................................85 4.2.1 Transistor di potenza..............................................................................................86 Capitolo5 .....................................................................................................................................89 Realizzazione e collaudo...........................................................................................................89 5.1 Realizzazione del pcb....................................................................................................89 5.1.1 Realizzazione del master.......................................................................................89 5.1.2 Fotoincisione.........................................................................................................91 5.1.3 Foratura e stagnatura.............................................................................................93 5.2 Completamento del prototipo........................................................................................94 5.2.1 Verifiche e tarature...............................................................................................94 5.3 Test di funzionamento...................................................................................................96 5.3.1 Qualità della Forma d'onda in uscita ....................................................................97 5.3.2 Prove termiche.....................................................................................................101 5.3.3 Test di protezione da sovracorrenti......................................................................102 5.4 Analisi dei costi...........................................................................................................104 Conclusioni.............................................................................................................................108 Bibliografia.............................................................................................................................109 2 Indice figure Figura 1: Struttura del sistema senza retroazione...............................................................................13 Figura 2: Segnale pwm generato dal micro........................................................................................15 Figura 3: Spettro del segnale pwm generato dal micro......................................................................15 Figura 4: Scomposizione di un onda quadra tramite l'analisi di Fourier............................................16 Figura 5: Condizionamento del segnale generato dal micro..............................................................18 Figura 6:Schema di principio dei collegamenti tra ingressi e uscite .................................................20 Figura 7: Guadagni statici dei blocchi di condizionamento..............................................................22 Figura 8: Priorità degli anelli di regolazione......................................................................................24 Figura 9: Schema di principio dell'elaborazione dei segnali in ingresso............................................25 Figura 10: Schema di principio della struttura del software di comando...........................................25 Figura 11: Diagramma a blocchi della scheda di segnale..................................................................29 Figura 12: Schema elettrico dei collegamenti tra potenziometri e relativi adc..................................31 Figura 13: Diagramma a blocchi della scheda di potenza..................................................................42 Figura 14: Schema a blocchi delle linee di alimentazione.................................................................46 Figura 15: Piedinatura del PIC 16F877A...........................................................................................47 Figura 16: Diagramma dell'isteresi della misura della corrente........................................................62 Figura 17: Diagramma dell'isteresi del controllo di commutazione tra i secondari del trafo.............64 Figura 18: Diagramma dell'isteresi del controllo di tensione.............................................................65 Figura 19: Diagramma dell'isteresi dell'azionamento della ventola...................................................67 Figura 20: Cadute di tensione tra ingresso e uscita............................................................................73 Figura 21: Schema del regolatore di tensione lm7805.......................................................................74 Figura 22: Ripple sul filtro di livellamento........................................................................................78 Figura 23: Relè di scarica dei condensatori........................................................................................81 Figura 24: Diodo zener per la protezione degli adc...........................................................................83 Figura 25: Layout e disposizione componenti dei PCB.....................................................................90 Figura 26: Lato piste dei PCB............................................................................................................91 Figura 27:Principio di funzionamento della foto incisione ...............................................................92 Figura 28: PCB della signal board al termine del bagno nell'acido...................................................92 Figura 29: Stagnatura delle piste del PCB..........................................................................................93 Figura 30: Montaggio al banco dell'alimentatore...............................................................................96 Figura 31: Forma d'onda di uscita e del segnale pwm (20us/div – 200mV/div) dc=0%...................97 Figura 32: Forma d'onda di uscita e del segnale pwm (20us/div – 200mV/div) dc=20%..................98 Figura 33: Forma d'onda di uscita e del segnale pwm (20us/div – 200mV/div) dc=40%..................98 Figura 34: Forma d'onda di uscita e del segnale pwm (20us/div – 200mV/div) dc=60%..................99 Figura 35: Forma d'onda di uscita e del segnale pwm (20us/div – 200mV/div) dc=80%..................99 Figura 36:Forma d'onda di uscita e del segnale pwm (20us/div – 200mV/div) dc=100%...............100 Figura 37: Grafico riscaldamento transistor finali............................................................................102 Figura 38: Grafico del test di velocità della risposta al cto. cto.......................................................103 Figura 39: Esempio di demoboard commerciale..............................................................................105 3 Indice tabelle Tabella 1: Ingressi e uscite del sistema..............................................................................................19 Tabella 2: Acronimi delle linee di alimentazione del sistema............................................................28 Tabella 3: Descrizione dei blocchi costituenti la scheda di segnale...................................................30 Tabella 4: Corrispondenza tra ingressi e convertitori adc..................................................................31 Tabella 5: Corrispondenza tra tensione impostata e dc generato dal micro.......................................32 Tabella 6: Corrispondenza tra corrente impostata e limitazione di corrente......................................32 Tabella 7: Corrispondenza tra temperatura della sonda di temperatura e valore letto dall'adc..........35 Tabella 8: Risoluzione del pwm del pic 16F877A.............................................................................52 Tabella 9: Registro T2CON del PIC 16F877A..................................................................................54 Tabella 10: Registro CCP1CON del pic 16F877A.............................................................................55 Tabella 11: Registro adcO1 del pic 16F877A....................................................................................61 Tabella 12: Parametri del regolatore di tensione lm7805...................................................................74 Tabella 13: Prova riscaldamento transistor finali.............................................................................101 Tabella 14: Test della velocità di risposta al cto cto.........................................................................103 Tabella 15: Costo attrezzature necessarie.........................................................................................106 Tabella 16: Quantità e costo del materiale necessario per realizzare il prototipo............................107 Indice schemi Schema 1: Schema elettrico del blocco di condizionamento della tensione misurata........................33 Schema 2: Schema elettrico del blocco di condizionamento della corrente misurata........................34 Schema 3:Schema elettrico del blocco di condizionamento della temperatura misurata ..................36 Schema 4: Schema elettrico della protezione dei convertitori analogico digitali...............................37 Schema 5: Schema elettrico del filtro attivo.......................................................................................39 Schema 6: Bypass del filtro attivo......................................................................................................39 Schema 7: collegamento delle porte del pic usate come interruttore digitale ..................................41 Schema 8: Schema elettrico del collegamento dei transistor di potenza............................................44 Schema 9: Filtro finale in uscita.........................................................................................................44 Schema 10: Schema elettrico della signal board................................................................................70 Schema 11: Schema elettrico della power board................................................................................85 4 Tabella Acronimi Vimp : tensione impostata dutyreg: variabile che regola il duty-cycle all'interno del programma Iimp: corrente impostata temp: variabile temporanea usata all'interno del programma Vmis: corrente misurata itoll: valore che definisce l'isteresi nella lettura della tensione da parte del micro Imis: corrente misurata sullo shunt vtoll: valore che definisce l'isteresi nella lettura della tensione da parte del micro Vout: tensione tra positivo in uscita e massa fpwm: frequenza del segnale pwm Iout: corrente in uscita dai transistor di potenza fc: frequenza di cut off Vshunt: tensione ai capi dello shunt ao: amplificatore operazionale Vshunt': tensione normalizzata letta sullo shunt fpwm frequenza del segnale pwm generato dal pic Kv: guadagno del circuito di condizionamento adc: convertitore Analogico Digitale della tensione misurata Ki: guadagno statico del circuito di dc: duty-cycle condizionamento della tensione misurata Kst: guadagno del circuito di condizionamento Vpwm: valore medio della tensione del segnale della sonda di temperatura pwm Kpwm: guadagno statico del filtro attivo Vsk: tensione in uscita dal primo stadio del filtro attivo p-gnd: massa di potenza Vsk*: tensione in uscita dallo stadio di amplificazione del filtro attivo s-gnd: massa di segnale micro : micro controllore Tfosch: periodo dell'oscillatore al quarzo Fosc: frequenza dell'oscillatore al quarzo 5 6 Introduzione Alla fine di un percorso formativo molto importante, quale gli studi in ingegneria, ogni studente deve cimentarsi nella realizzazione di un progetto o di una ricerca, da tutti universalmente conosciuto come “tesi di laurea”. Come molti altri prima di me, dopo attenta valutazione ho deciso di sviluppare una tesi che potesse raggruppare il maggior numero possibile di conoscenze acquisite durante tutto l'arco degli studi, questo per dare un senso e uno sbocco pratico a quanto imparato in anni di studio. Come in ogni esperienza, sono stati incontrati innumerevoli problemi durante tutto la durata del progetto, proprio a dimostrare che i concetti e le esperienze acquisite in anni, spesso e volentieri, non sono sufficienti ad affrontare i problemi che la realtà ci pone. Il progetto che segue, copre un vasto insieme di campi, molti propri dell'ingegneria elettrica, altri meno. I campi che sono stati trattati, sono riassunti nei seguenti elenchi : ● Elettronica generale (analogica e digitale) ● Elettronica di potenza (convertitori) ● Controlli automatici (sistemi retro azionati) ● Elettrotecnica generale ● Misure elettriche ● Micro controllori e relativa programmazione L'argomento scelto per la trattazione riguarda il progetto di un alimentatore stabilizzato gestito da un micro controllore. Il lettore può immaginare questo dispositivo come una sorgente continua di alimentazione, caratterizzata dal fatto di essere programmabile e gestita da un dispositivo digitale. Una volta scelto, e impostato un valore di tensione, di corrente o entrambi, il dispositivo si occuperà di raggiungere e mantenere il punto di funzionamento prestabilito, indipendentemente dalle condizioni del carico che va ad alimentare. L'alimentatore è stato sviluppato da zero, sviluppando il progetto a partire dalle idee preliminari, fino ad arrivare alla progettazione e alla realizzazione pratica del dispositivo. Durante le fasi di sviluppo si è posta particolare attenzione ai seguenti fattori, che sono poi stati quelli seguiti durante tutta la progettazione : ● Costi contenuti ● Modularità ed espandibilità ● Robustezza del sistema di controllo ● Semplicità di insieme, sia dal punto di vista hardware che software 7 L'alimentatore, come anticipato, permette sia la regolazione della tensione in uscita, che la limitazione della corrente nel circuito esterno. Può inoltre funzionare indipendentemente sia come sorgente di tensione che di corrente. E' auto protetto da sovra correnti e sovra temperature, può essere inoltre collegato tramite interfaccia seriale a un PC. La connettività al computer è utile sia per modificare il software a fini di sviluppo o semplicemente per migliorarne l'usabilità con programmi scritti ad hoc. Il sistema dispone anche di un interfaccia dotata di un display LCD per visualizzare i valori impostati e istantanei delle grandezze in uscita e di controllo. Per la realizzazione del progetto ci siamo innanzi tutto trovati di fronte a due scelte progettuali sostanzialmente diverse, una di tipo più conservativo, e una più innovativa ma ricca di incognite. Nel primo caso si parlava di una soluzione tradizionale, costituita fondamentalmente da componenti di tipo discreto e da integrati monolitici di uso comune. Tale strada pur garantendo ottimi risultati, richiede l'uso di parecchia componentistica, necessaria per realizzare la retroazione che governa il sistema, nonché le protezioni per garantirne il corretto funzionamento. Inoltre non utilizzando elementi programmabili le eventuali modifiche o migliorie si devono tendenzialmente tradurre in modifiche all'hardware del sistema, cosa che non giova all'espandibilità. Nel secondo caso era possibile utilizzare una soluzione più attuale, costituita si da alcuni componenti discreti, ma governata da un micro controllore. Il pregio di questa soluzione è che molte funzioni sono già disponibili all'interno del micro, sia sotto forma di hardware che di software, riducendo il numero di componenti necessario alla realizzazione di tutto il circuito. Utilizzando la seconda soluzione il progetto deve prevedere un ulteriore parte, costituita dal software di gestione del dispositivo. Un punto a sfavore di questa soluzione è che il micro non dispone di un uscita analogica, in quanto può fondamentalmente lavorare solo su grandezze di tipo digitale. Per interfacciarsi quindi con l'esterno è necessario un particolare sistema di condizionamento dei segnali digitali del micro. Ognuna delle soluzioni sopracitate presenta pro e contro, è quindi stato deciso di adottare una soluzione ibrida che raggruppi i pregi di ambedue le filosofie progettuali. Il progetto è organizzato in cinque capitoli. Nel primo capitolo verrà trattata la scelta del micro controllore e il principio di funzionamento sul quale si basa tutto il sistema. Verranno anche definite le specifiche che il sistema dovrà poter garantire. Il capitolo due verrà dedicato al diagramma a blocchi dell'intero sistema e al funzionamento dettagliato delle singole parti. Il capitolo 3 verrà dedicato alla scrittura del software di governo, mentre il capitolo 4 tratterà il dimensionamento di tutti i componenti del sistema. Infine nel capitolo 5 verrà trattata la realizzazione pratica seguita dai test di funzionamento. Verrà inoltre effettuata una breve analisi sui costi e sul tempo di realizzazione dell'intero dispositivo, in quanto l'aspetto economico in ogni realizzazione è un fattore di fondamentale importanza. 8 Capitolo1 Premesse e requisiti del progetto 1.1 Premessa Prima di addentrarci nella realizzazione del progetto, è necessaria una breve premessa introduttiva. Innanzi tutto, perché utilizzare un micro controllore in una struttura solitamente governata da regolatori monolitici privi di logica di controllo ? La risposta è, come anticipato nell'introduzione, che utilizzando un micro controllore nella gestione del dispositivo, è possibile migliorare la struttura del sistema di controllo e dell'hardware complessivo del dispositivo. Volendo citare alcuni tra i punti più significativi, potremmo dire che : ● Internamente il micro dispone di vari dispositivi integrati necessari alla realizzazione dell'alimentatore, (comparatori, moduli pwm, convertitori ADC...) che altrimenti andrebbero realizzati utilizzando componenti discreti, o integrati, aggiuntivi, complicando ad esempio sia la progettazione che il layout del PCB. Ciò riduce anche i tempi di sviluppo dell'applicazione, in quanto non essendo necessario progettare, e testare, fisicamente alcune parti, la realizzazione procede più velocemente. ● Avere a disposizione un software di governo del sistema, fa in modo che sia possibile intervenire su alcune grandezze del sistema via software, e non direttamente con scomode e costose modifiche hardware. Un esempio banale è la modifica di una temporizzazione. In un circuito di tipo convenzionale, senza logica, la modifica avviene modificando il valore di alcuni componenti, al contrario, utilizzando un micro è sufficiente modificare un parametro nel software. ● Velocità. Le frequenze elevate alle quali tali dispositivi lavorano, permettono la realizzazione di sistemi con elevate velocità di feedback ottenendo prestazioni non raggiungibili con altri sistemi non “intelligenti” o di tipo convenzionale. Esistono anche altri fattori che giustificano, e consigliano, l'uso di un micro, fattori che incontreremo più avanti nel corso di questa trattazione. Indubbiamente l'uso di queste logiche programmabili introduce un ulteriore variabile al sistema, costituita proprio dalla programmazione. Uno scorretto o improprio uso degli ambienti di sviluppo del software può portare a soluzioni completamente instabili, mal funzionanti e afflitte dai più svariati problemi. Sarà compito del progettista analizzare quale soluzione rappresenta il miglior compromesso. Prima di iniziare la 9 progettazione vera e propria, è necessario definire quali saranno i requisiti preliminari e le specifiche che l'alimentatore dovrà poter garantire. Identifichiamo quindi i seguenti punti : ● Specifiche del progetto ● Requisiti dell'hardware e del software che dovranno garantire le specifiche di progetto Durante la trattazione di questi punti, si andrà mano a mano a definire le scelte seguite durante tutto l'arco della progettazione. In pratica i sopracitati punti, ossia specifiche e requisiti hardware e software, possono essere tradotti nella seguente affermazione : Cosa vogliamo ottenere, e in che maniera lo otterremo 1.2 Specifiche tecniche del progetto Definiamo a questo punto le caratteristiche salienti che il dispositivo deve poter fornire: ● Range di tensione in uscita variabile da 0 a 30V DC con elevata risoluzione ● Possibilità di limitare e regolare la corrente in uscita da 0 a 10A ● Regolazione di tensione, e della soglia di corrente, tramite comandi rotativi. ● Alimentazione a 230V AC ● Protezione da sovracorrenti in ingresso (tramite fusibile) e uscita (via software) ● Protezione da sovra temperature per la parte di elettronica di potenza ● Bassa tensione di ripple ai morsetti di uscita (entro l'1% della tensione di uscita) ● Possibilità di interfaccia con l'esterno ● Funzionamento sia come sorgente di tensione che di corrente Essendo un progetto del tutto nuovo, alcune caratteristiche non sono state definite numericamente o tecnicamente, di conseguenza verranno analizzate, migliorate o inserite durante tutta la fase di sviluppo. 1.3 Requisiti del software Il software di gestione del micro controllore deve essere scritto in modo chiaro e conciso. E' necessario che sia ben commentato e possibilmente scritto in un linguaggio di alto livello, in modo che chiunque possa comprenderlo e apportare eventuali modifiche. Bisogna assolutamente evitare l'utilizzo di variabili inutili, cercare ove possibile di normalizzare le operazioni matematiche agendo solamente su numeri interi. Questo punto è molto importante, in quanto i micro controllori in genere sono pensati per lavorare al massimo delle loro capacità solo su numeri interni, l'introduzione 10 arbitraria e non giustificata di variabili in virgola mobile, l'eccessiva complessità del codice sono i primi problemi da affrontare durante la scrittura del software. Inoltre bisogna limitare al minimo le chiamate di interrupt e minimizzare il codice eseguito al loro interno. Per quanto riguarda le variabili utilizzate, devono avere nomi che ne identifichino subito lo scopo, e per quanto possibile bisogna utilizzare una o più variabili temporanee da utilizzare per salvare stati intermedi delle operazioni, senza definire una variabile nuova per ogni operazione. L'utilizzo di variabili temporanee minimizza il consumo di memoria ram, che nei micro controllori attuali è di esigue dimensioni (si parla di capacità dell'ordine dei kbyte). 1.4 Requisiti particolari dell'hardware L'hardware deve essere quanto più semplice possibile. Il numero di componenti utilizzati deve essere il minimo possibile e di facile reperibilità. Un numero basso di componenti non è un indice di cattiva progettazione, al contrario in un ottica attuale che volge alla massima ricerca del profitto, la riduzione dei costi di produzione di un oggetto è un fattore di primaria importanza. Deve essere prevista una minima espandibilità del sistema senza dover riprogettare da zero tutto il circuito (in dettaglio si intende che i massimali di tensione e corrente erogata disponibili ai morsetti di uscita possano essere aumentati entro certi limiti). Le parti di potenza devono essere separate da quelle di segnale, le interfacce esterne devono essere di tipo standard e possibilmente non devono utilizzare protocolli di comunicazione proprietari. I comandi, per semplificare al massimo la struttura, andranno realizzati con potenziometri analogici multi giro, rispettivamente uno per la regolazione di tensione e uno per la regolazione di corrente. Tale soluzione pur non essendo raffinata, risulta robusta ed economica, anche alla luce del fatto che il PIC dispone di un buon numero di convertitori analogico digitali utili per il collegamento di questi componenti. Deve essere prevista la possibilità di resettare il micro in caso di malfunzionamento. Oltre le protezioni software vanno previste opportune protezioni di massima corrente mediante l'uso di dispositivi quali fusibili o relè termici di protezione. Il sinottico deve essere dotato di un display LCD che mostri le grandezze impostate e quelle regolate, inoltre devono essere presenti delle spie che indichino gli allarmi e la modalità di funzionamento (generatore di corrente o di tensione). 1.5 Scelte effettuate Andremo ora ad analizzare le varie scelte che sono state seguite prima di iniziare la progettazione vera e propria. Per completezza andremo anche a motivare alcune delle scelte scartate. 11 1.5.1 Il micro controllore Iniziamo questa parte analizzando il cuore del progetto. Analizzeremo quindi le motivazioni che ci hanno portato alla scelta del micro utilizzato in questo progetto. Attualmente ne esistono svariati tipi altrettanto validi, nel nostro caso però la scelta è ricaduta sulla serie PIC (Peripheral Interface Controller) della Microchip. Questa serie di micro controllori sta prendendo sempre più piede in tutti i campi, dall'automazione industriale fino all'uso nei più disparati dispositivi di uso comune. La ragione di questo successo può essere riassunta in quanto segue : ● I PIC possono essere programmati usando linguaggi di alto livello, dal basic, al pascal fino al C. Questo giova alla leggibilità del programma e ai tempi di sviluppo. La possibilità di essere programmati anche da persone inesperte nell'uso dell'assembler è un ulteriore motivo per il quale sono sempre più diffusi. ● I PIC, in base alla serie, sono dotati di svariate funzioni, si va dai moduli pwm, ai convertitori ADC, fino ai Watch dog. timer Possono funzionare usando oscillatori semplici (reti RC) oppure, per garantire ottime precisioni, con quarzi di varie frequenze. ● Supportano la modalità ICP, ossia la programmazione “in circuit”. Questo vuol dire che i micro possono venire programmati direttamente nel dispositivo che governano, senza bisogno di smontarli e inserirli nel programmatore. Questo è un altro fattore che velocizza di molto lo sviluppo e la fase di testing. ● Esiste una vastissima documentazione ufficiale e non che li riguarda. ● Sono interfacciabili per effettuare comunicazioni utilizzando svariati protocolli quali I²C, USART, SPI, CAN, USB. ● Basso costo unitario, che unito alle svariate features interne, fa si che si possano realizzare circuiti di dimensioni molto ridotte e sopratutto economici. Oltre i costi contenuti del dispositivo in se stesso, va fatto notare che un kit di sviluppo microchip, per iniziare da subito a progettare e sviluppare, ha un costo di qualche centinaio di euro al massimo. ● Sono realizzati in tecnologia CMOS, la CPU è di tipo RISC a 8bit. Le velocità di clock arrivano fino a 20Mhz e sono presenti in package che vanno da 8 a 40 pin. L'ambiente di sviluppo utilizzato sarà il mikrobasic, prodotto dalla Mikroelettronica. L'utilizzo del basic rende immediata la stesura del programma velocizzando al massimo la scrittura del software di gestione. Il mikrobasic dispone anche della possibilità di inserire all'interno del programma parti in assembler, ciò risulta particolarmente utile quando si devono effettuare particolari operazioni che 12 non sono contemplate dai linguaggi ad alto livello. Questo linguaggio, rende anche possibile l'accesso diretto ai registri del pic, cosa utilissima per impostare particolari modi di funzionamento. 1.5.2 Come ottenere il segnale di uscita A questo punto bisogna analizzare come condizionare i segnali provenienti dagli ingressi di comando (ossia dai potenziometri per la regolazione di corrente e tensione), per ottenere un uscita che sia effettivamente una funzione degli ingressi. Tale uscita deve essere adatta a pilotare il carico, in base alle specifiche del paragrafo 1.2. Se, per semplicità, immaginassimo la struttura senza retroazione, come una procedura sequenziale (batch), potremmo semplificare lo schema dell'alimentatore nella seguente maniera : Figura 1: Struttura del sistema senza retroazione I segnali di comando, di tipo analogico, vengono inviati al PIC che li acquisisce tramite i suoi 13 convertitori analogico digitali. Si nota quindi che il primo tratto della procedura è costituito da un flusso analogico. Il pic elabora i segnali analogici e stabilisce la giusta strategia per calcolare la relativa uscita del sistema, da inviare al carico tramite i morsetti di uscita. Il segnale generato dal pic, di tipo digitale, deve venire convertito in un segnale analogico di opportune caratteristiche, in maniera da poter alimentare il carico. Questo adattamento viene effettuato dal blocco contrassegnato come “condizionamento segnale”, che in pratica opera una conversione di tipo digitale / analogico. Le scelte possibili per generare il segnale di uscita, sono due, utilizzare una delle porte a 8 bit del PIC e un convertitore D/A, oppure usare l'uscita pwm del pic (10bit). Di seguito analizzeremo i pro e i contro delle due soluzioni. ● Utilizzando un convertitore D/A introduciamo un componente relativamente complesso, inoltre con soli 8 bit a disposizione possiamo generare 256 passi in uscita. Con un semplice calcolo, la risoluzione in uscita sarà di 30 volt diviso 256 passi, circa 117 milli volt per passo. La soluzione quindi, non risulta buona ne dal punto di vista hardware, nel da quello qualitativo, visto che la risoluzione ottenibile è particolarmente bassa. ● Utilizzando una delle uscite pwm del pic, al contrario della soluzione precedente, ci permette di ottenere ben 1024 passi (la massima risoluzione del pic sul pwm è appunto di 10 bit, quindi 2^10 passi). Il grosso problema da risolvere è quello di convertire i vari passi del pwm in uscita in un segnale continuo. Questo perché vogliamo realizzare un alimentatore lineare e non switching Alla luce dei due punti visti prima si è deciso di percorrere la seconda strada, ossia utilizzare l'uscita pwm, in quanto è l'unica soluzione a garantire una buona risoluzione (nella pratica, otterremo 30V fratto 1024, circa 30mV, risoluzione più che sufficiente per un alimentatore). Questa soluzione pur essendo migliore, introduce la problematica di come convertire l'onda pwm in un segnale continuo. Tale argomento verrà trattato nel paragrafo successivo. 1.5.3 Conversione da digitale ad analogico del segnale pwm In questo paragrafo verrà analizzato il metodo usato per convertire il segnale digitale generato dal pic. Apriamo innanzi tutto una breve parentesi sulle caratteristiche del segnale pwm (schematizzato in figura 2) ottenuto dal micro. Le caratteristiche sono : ● Livello Alto +5V ; Livello basso 0V (Livelli logica CMOS) ● Frequenza alla risoluzione di 10 bit circa 20 kHz 14 ● duty-cycle variabile da 0 a 100% (al massimo in 1024 passi, ossia 10 bit) Figura 2: Segnale pwm generato dal micro In termini di equazioni, le caratteristiche dell'onda sono definibili come segue : periodo :T =TonToff duty cycle: DC= Ton T frequenza : fpwm= 1 T Figura 3: Spettro del segnale pwm generato dal micro 15 Analizzando tramite lo sviluppo in serie di Fourier lo spettro del segnale pwm (figura 3), possiamo notare che esso è costituito da una componente fondamentale, che ha la stessa frequenza del segnale da scomporre, e da una serie di armoniche multiple della frequenza del fondamentale. Una rappresentazione di questo studio è rappresentata nella figura 4. Si nota appunto la scomposizione di un onda quadra, della quale vengono mostrate a titolo di esempio solo la quinta e la quindicesima armonica. Figura 4: Scomposizione di un onda quadra tramite l'analisi di Fourier E' importante fare presente che se il segnale ha valore medio diverso da zero, nella scomposizione apparirà anche un termine costante da sommare alle varie armoniche. Appare chiaro che una buona idea per effettuare la conversione del segnale da digitale ad analogico è quella di filtrare tutto il contenuto armonico, in maniera che rimanga solo ed esclusivamente la componente continua del segnale pwm. Infatti il segnale pwm varia tra 0 e 5 volt, quindi anche il suo valore medio varia da 0 a 5 volt, rispettivamente per duty-cycle che valgono 0 e 100%. Una volta che la componente continua sarà filtrata, sarà necessario amplificarne il valore di tensione, dal range 0-5 volt fino a quello di uscita, ossia 0-30 volt. Analizziamo più in dettaglio, tramite la figura 4, lo spettro dell'onda pwm tramite l'analisi di Fourier. Notiamo immediatamente che le armoniche di ordine superiore. sono multipli dispari, ad ampiezza decrescente dell'armonica fondamentale (che ha lo stesso periodo del segnale pwm, ossia T). La 16 frequenza fc è la frequenza di taglio (cut off) dell'elemento filtrante, ossia la frequenza in prossimità della quale, il modulo del segnale perde 3db. Tale frequenza deve essere molto inferiore alla frequenza del pwm, in maniera che sia la fondamentale, che le armoniche di ordine superiore vengano completamente filtrate, venendosi a trovare a sinistra di fc. In questa situazione, solo la componente continua passerà attraverso il filtro. Il riquadro verde rappresenta la banda passante, ossia l'intervallo di frequenza nel quale il modulo del segnale non viene a trovarsi sotto l'azione del filtro. La componente continua, visibile in blu in figura 3, è sovrapposta all'asse delle ordinate che rappresenta la frequenza di 0 hertz. Come criterio di massima per il dimensionamento del filtro, da verificare in via sperimentale, possiamo affermare che sarà opportuno che : fc≪ fpwm Indicativamente valuteremo valori di fc a partire da 1/10, fino ad arrivare a 1/100 e oltre, di fpwm. Utilizzare il valore limite, vicino a zero, per fc, potrebbe apparire una buona idea, purtroppo al diminuire di fc aumentano i valori di capacità e resistenza richiesti dal filtro. Capacità troppo grandi implicano riduzioni della dinamica del sistema, introducendo costanti di tempo troppo elevate, mentre resistori di valore troppo elevato introducono rumori di tipo elettrico. Inoltre, essendo la corrente in uscita dai pin del micro assolutamente insufficiente per alimentare carichi che richiedono correnti elevate, oltre a un amplificazione della tensione, risulta necessario anche amplificare la corrente del segnale di uscita. Senza soffermarci per ora sulla struttura fisica che realizzerà tali operazioni, possiamo disegnare il diagramma a blocchi del modulo di condizionamento del segnale. Anche in questo caso, per semplicità analizziamo il flusso dei segnali senza considerare la retroazione. Il diagramma di riferimento è quello mostrato in figura 5. 17 Figura 5: Condizionamento del segnale generato dal micro Riassumendo il segnale viene elaborato nel seguente ordine : 1. Il segnale pwm viene generato dal pic, in base ai valori letti sugli ingressi di comando 2. Il pwm viene trattato in un filtro passa basso che permette alla sola componente continua di arrivare in uscita 3. Viene amplificata l'ampiezza della tensione del segnale in uscita dal filtro per portarla al range utile ad alimentare i carichi in uscita. A questo punto la corrente non è ancora sufficiente ad alimentare efficacemente nessun carico, in quanto la massima corrente erogabile dai pin del pic è di soli 25mA 4. Viene quindi effettuata un ulteriore amplificazione del segnale, questa volta per quanto riguarda la corrente. A questo punto il segnale è pronto per alimentare il carico collegato ai morsetti di uscita. 18 1.5.4 La retroazione Dopo aver delineato la struttura del sistema senza retroazione, è giunto il momento di trattare questa delicata parte del progetto. Per effettuare la regolazione e il mantenimento delle grandezze in uscita, è necessario che la logica abbia la possibilità di leggere tali valori, e nel caso essi fossero diversi da quelli dettati dai rifermenti, essa si deve occupare di apportare la correzione per avvicinarsi il più possibile (o al limite uguagliare) quanto imposto dagli ingressi di comando. E' utile a questo punto definire una tabella che identifichi ingressi e uscite del sistema : Acronimo Ingressi di comando Ingressi di controllo (normalizzati nel range 0-5V) Descrizione Vimp Tensione impostata Iimp Corrente impostata Vmis' Tensione misurata Imis' o Vshunt' Corrente misurata Vout Tensione tra morsetto positivo e massa di potenza Iout Corrente erogata ai morsetti in uscita Vmis Tensione misurata tra i morsetti positivo e Uscite negativo in uscita (ai capi del carico) Ingressi di controllo ausiliari Vshunt o Imis Tensione ai capi dello shunt Vst Temperatura fornita dalla sonda temometrica collegata sul dissipatore dei transistor finali Tabella 1: Ingressi e uscite del sistema ● Ingressi di comando : sono i potenziometri utilizzati per impostare la tensione in uscita e la limitazione di corrente ● Ingressi di controllo: sono le linee di segnale che indicano al micro i valori di tensione e corrente presenti in uscita (sono formalmente diverse dalle uscite, in quanto normalizzate per poter essere lette dal pic. Possono anche essere affette da errori causati da derive dei componenti usati nei blocchi di conversione) ● Uscite : sono le grandezze realmente presenti ai morsetti in uscita ● Ingressi di controllo ausiliari : sono ingressi (nel nostro caso uno) che non intervengono 19 direttamente nel processo di retroazione. Disponiamo di un solo ingresso di questa tipologia, ossia il valore prodotto dalla sonda di temperatura. Tale valore, viene usato come allarme, per indicare che i finali di potenza hanno raggiunto la loro massima temperatura di esercizio. In ogni caso il valore di Tst non interviene nel calcolo della tensione in uscita, ma come detto è solo un allarme usato per mandare in blocco termico il sistema. Figura 6:Schema di principio dei collegamenti tra ingressi e uscite Come si può vedere in tabella 1, esistono due alias, ossia Vshunt = Imis e Vshunt'=Imis. Il pedice ' indica che le grandezze sono normalizzate, mentre l'alias tra Vshunt (tensione ai capi dello shunt) e Imis (corrente misurata) e tra Vshunt' e Imis' viene utilizzato nella trattazione per rendere più immediato il significato dei segnali in base al contesto. In figura 6 viene rappresentato uno schema a blocchi all'interno del quale è possibile visualizzare graficamente quanto rappresentato in tabella 1 1.5.5 Normalizzazione dei segnali in ingresso al micro controllore Tutte le uscite del sistema, che devono in qualche maniera essere lette dal micro, vanno normalizzate al range di funzionamento degli ADC, ossia devono essere obbligatoriamente 20 comprese tra 0 e 5 V. Nel caso della tensione, sarà quindi necessario dividere il valore massimo dell'uscita per una costante, in maniera tale da far coincidere tale valore, con il valore massimo che l' adc può leggere (che vale 5V). In pratica si realizza una struttura che divide il segnale di uscita per un coefficiente Kv, che si può determinare facilmente con la seguente formula : Vout max Vout max 30 =5 V quindi Kv= = =6 Kv 5 5 Relazione 1: Relazione 2: La relazione 2 vale nel caso della Vout, mentre per la Iout la relazione andrà modificata in base a quanto segue. La Iout è letta da un sensore di corrente che ci restituisce un segnale in tensione, proporzionale alla corrente che lo attraversa. Utilizzando ad esempio uno shunt resistivo, avremo in corrispondenza dei vari valori di corrente erogata , una tensione ai capi dello shunt stesso (che chiameremo Vshunt). Tale tensione andrà poi normalizzata nel range adatto a essere letto dall'adc. Visto che lo shunt, fornisce una tensione di pochi milli volt per ogni ampere letto, in questo caso il blocco invece di dividere (come per la misura di tensione) dovrà moltiplicare. Risulterà quindi : Vshunt max∗Ki=5V dalla quale ricaveremo che Relazione 3: Ki= 5 Vshunt max Relazione 4: La normalizzazione è molto importante, e oltre al suo scopo principale, che è quello di adattare il segnale alle caratteristiche fisiche dell'adc, deve permettere di sfruttare a pieno la risoluzione di quest'ultimo. Infatti l' ADC del pic ci permette una risoluzione di 10bit (ossia 2^10, quindi 1024 valori)nel range 0-5 volt, se noi utilizzassimo un sensore di corrente che fornisca ad esempio un uscita in tensione che va da 0 a 2,5V per correnti che vanno da 0 a 10A (è stato preso in esame il range di corrente che noi vogliamo poter utilizzare in questo progetto), utilizzeremo solo metà dei valori che l' ADC può convertire, il tutto a scapito della precisione ottenibile. Nello schema di figura 7 sono messi in evidenza i guadagni dei vari blocchi di condizionamento. 21 Figura 7: Guadagni statici dei blocchi di condizionamento Per concludere questo paragrafo osserviamo che esiste un ultimo blocco, ossia il condizionamento della sonda di temperatura. Anche in questo caso la sonda fornisce un uscita in tensione, proporzionale al valore di temperatura letto. Analogamente al caso dello shunt, la tensione in uscita dalla sonda è di pochi milli volt al °C, andremo quindi ad amplificare tale valore usando un blocco con guadagno maggiore di uno, ottenibile dalla relazione cinque : Vst max∗Kst=5 V quindi Kst = 5 Vst max Relazione 5: Il valore numerico, come nel caso di Ki, lo calcoleremo nel capitolo dedicato ai calcoli. La sezione relativa ai comandi non è normalizzata perché i valori che fornisce sono già nel range 0-5V adatto a essere letto dagli ADC alla massima risoluzione e nei margini di sicurezza di funzionamento. 22 1.5.6 Struttura del software Il software di gestione del micro, è scritto per realizzare una parte ,tramite programmazione, della funzione di trasferimento dell'intero sistema, più in particolare esso si occupa della regolazione del duty-cycle del segnale pwm. Esso prevede due controlli ad anello, uno per la regolazione della tensione e l'altro per la regolazione della corrente. L'anello di regolazione della corrente ha la priorità su quello di tensione, per ovvi motivi derivanti dagli effetti termici della corrente elettrica. Esiste inoltre un terzo anello, che si preoccupa di arrestare il sistema nel caso la temperatura dei transistor finali superi limiti imposti dalla loro SOA (Safe Operating Area). L'esecuzione del programma, come per la maggior parte dei micro attuali è di tipo sequenziale. Utilizzando la frequenza massima di clock del micro, ossia 20Mhz, tale velocità di esecuzione è sufficientemente alta da poter garantire una buona dinamica nella regolazione delle grandezze in uscita. Per evitare di utilizzare un programma eccessivamente lungo e complesso, l'esecuzione è divisa in tre parti : ● Sezione di regolazione : è costituito dai due anelli, uno di tensione e uno di corrente. Questa parte di programma si occupa esclusivamente di regolare e mantenere l'uscita del sistema in base ai riferimenti impostati tramite i comandi. E' compito di questa sezione anche la commutazione dei secondari del trasformatore, (in funzione della tensione richiesta in uscita) per minimizzare le perdite sui finali ● Sezione Visualizzazione : è la parte di codice dedicata al display LCD. Essendo inutile effettuare un aggiornamento in tempo reale (ossia una volta ogni ciclo completo del programma) dell'andamento dei valori dell'uscita, tale parte di codice viene richiamata ciclicamente ma non continuamente durante il flusso di programma. La motivazione del richiamo ciclico è quella di diminuire la lunghezza media totale del programma per privilegiare la velocità (infatti le routine per scrivere sull'LCD sono molto lente, anche se utilizzate ad 8bit). L'aggiornamento viene comunque effettuato più volte nell'arco di un secondo, cosa che unita alla persistenza delle immagini sulla retina, fa si che dall'esterno sia impossibile capire che l'aggiornamento dell'LCD usa solo una frazione dei cicli rispetto alla sezione di regolazione. ● Sezione di allarme : è il ciclo più esterno, e più lento, che si occupa di segnalare che i transistor della sezione di potenza si stanno surriscaldando. Questa parte, regola anche l'accensione e lo spegnimento della ventilazione sul dissipatore dei finali. Essendo i transitori termici molto più lenti di quelli elettrici, tale parte di codice, per le stesse motivazioni della sezione di visualizzazione, è eseguita solamente ogni tot numero di cicli 23 eseguiti dalla sezione di regolazione. Questa sezione fornisce prima un allarme di avvicinamento alla soglia critica, tramite l'accensione di un led sul sinottico. Una volta superata la soglia critica, inibisce l'uscita pwm del pic finché la temperatura non è tornata al di sotto della soglia di sicurezza. Per ritardare la sezione di visualizzazione e quella di allarme, viene utilizzata come base dei tempi una chiamata di interrupt interna al pic per poter scandire gli intervalli temporali che verranno definiti successivamente. Il codice, come anticipato, è scritto in una versione modificate del linguaggio basic, utilizzando un compilatore apposito per generare il codice da caricare all'interno della memoria programma del pic. Le 3 sezioni del software si possono schematizzare nel seguente diagramma (più la sezione è interna, più la priorità è alta). Figura 8: Priorità degli anelli di regolazione 24 Figura 9: Schema di principio dell'elaborazione dei segnali in ingresso Figura 10: Schema di principio della struttura del software di comando Lo schema di figura 7, rappresenta il risultato finale di tutti i ragionamenti fatti in precedenza, anche se andrà completato con la parte di retroazione. In ogni caso rappresenta pur sempre la base di tutto il progetto, identificando anche le due grandi macro aree del progetto, ossia quella della progettazione inerente l' hardware e quella dedicata alla programmazione del software. Dedichiamo un ultimo diagramma, visibile in figura 10, prima di chiudere il paragrafo relativo alla struttura del software. Pur non rappresentando una soluzione definitiva, è utile per definire le linee guida alla realizzazione del software di governo del sistema. La sezione colorata di rosso rappresenta l'anello di corrente, mentre quella in verde è l'anello di tensione. Per ora, non sono volutamente rappresentate le parti riguardanti la sezione di visualizzazione e la sezione di allarme. 25 Il flusso seguito dal programma si può commentare nella seguente maniera : ● Come prima cosa vengono letti gli ingressi di comando. Il passo successivo è rappresentato dal ciclo di controllo, più precisamente dall'anello di corrente, che è prioritario rispetto a quello di tensione. ● L'anello di corrente viene percorso finché la corrente misurata non è minore di quella impostata. Una volta raggiunto il riferimento è permessa l'uscita dal ciclo per poter eseguire le parti rimanenti. ● Una volta che la corrente si trova sotto la soglia impostata si passa all'anello di tensione. Se la Vmis è uguale alla Vimp si riparte dall'inizio del programma, in quanto la tensione è in uscita corretta, e la corrente è sotto la soglia limite. ● In caso contrario si controlla se la tensione misurata è minore o maggiore di quella impostata. In base al caso, si verifica un incremento o un decremento del dc e si ritorna all'inizio del programma. Si fa notare che ogni modifica del valore di dc porta a percorrere l'anello di corrente. 26 Capitolo2 Struttura e funzionamento del sistema 2.1 Introduzione In questo capitolo andremo a definire la struttura effettiva dell'alimentatore. Una volta compiuto questo passo analizzeremo in dettaglio come sono realizzati i singoli blocchi a livello hardware ( i calcoli dei componenti, e i dettagli, verranno trattati nel capitolo 4, dedicato al dimensionamento e al perfezionamento degli schemi. La parte di calcolo è stata volutamente spostata in un capitolo a parte per non appesantire troppo la trattazione. 2.2 Suddivisione dei circuiti L'alimentatore concettualmente e fisicamente è suddiviso in due parti principali : ● Scheda di segnale (signal board): è la parte che include il micro controllore, i circuiti di condizionamento, quelli ausiliari, l'ICP e il filtro attivo. ● Scheda di potenza (power board): è la parte di circuito che fornisce l'uscita di potenza al carico. Formalmente esistono ancora due parti costituenti il sistema. ● Parti accessorie: è il sotto insieme costituito da tutti i dispositivi / componenti che non possono essere collegati o ospitati per dimensioni,o altri motivi, sulle sopracitate schede (segnale e potenza). Nel particolare si tratta del trasformatore, del ponte di Graetz e di altre parti che sono collegate tramite cablaggi alle due schede. ● Sinottico: è la parte che raggruppa il display LCD, i comandi, le spie e gli strumenti di misura. Anche questa parte è connessa alle schede di potenza e segnale tramite cablaggi. La suddivisione si rende necessaria perché è sconsigliabile che i circuiti di segnale possano essere percorsi dalla stessa corrente che viene inviata al carico. Il motivo è che sarebbe necessario sovradimensionare le piste del pcb (per sopportare le intense correnti che l'alimentatore può erogare), inoltre le piste più piccole, se venissero percorse da correnti troppo elevate, potrebbero interrompersi oppure, vista la loro esigua sezione, dare cadute di tensione troppo elevate che pregiudicherebbero il funzionamento dell'intero sistema. Inoltre per motivazioni analoghe è auspicabile che la massa della parte di segnale sia distinta dalla massa di potenza. Questa separazione funzionale tra le due parti fa anche si che il sistema sia parzialmente modulare. Infatti 27 se supponiamo di voler raddoppiare la corrente che l'alimentatore può erogare, sarà sufficiente riprogettare solamente la parte di potenza. Se i circuiti fossero fisicamente realizzati su un unico pcb sarebbe necessario riprogettarlo da zero pur non dovendo modificare la parte di segnale. Per contro ci saranno più fili di collegamento tra le due schede, ma i pregi derivanti dalla modularità compensano in larga maniera la presenza di questi cablaggi. 2.3 Diagrammi a blocchi La struttura a blocchi del sistema è utilizzata per visualizzare le varie parti che costituiscono il sistema e le interconnessioni tra esse. Analizzeremo nell'ordine la scheda di segnale e quella di potenza. Per ultimi ci occuperemo del sinottico e delle parti accessorie. All'interno dei diagrammi a blocchi sono solo visualizzati i segnali che rappresentano dati e misure, per quanto riguarda le varie linee di alimentazione inerenti la parte di potenza, la logica e tutto il resto, verranno analizzate alla fine del capitolo. In ogni caso i valori di tensione necessari all'alimentazione di ogni blocco sono indicati dalla figura a forma di rombo. All'interno della figura viene indicato S per le parti che alimentano dispositivi di segnale (che assorbono quindi poca potenza) e P utilizzate nella sezione di potenza. Anche per quanto riguarda la massa, vengono indicati i collegamenti a massa riferiti alla parte di potenza e di segnale, rispettivamente p-gnd e s-gnd. Riassumiamo quanto detto nella tabella 2 : s12v Alimentazione a 12 V per parti di segnale s5v Alimentazione a 5V per parti di segnale s30v Alimentazione a 30V per parti di segnale P30v Alimentazione a 30V per parti di potenza s-gnd Massa parte di segnale p-gnd Massa parte di potenza Tabella 2: Acronimi delle linee di alimentazione del sistema 2.4 Diagramma a blocchi della scheda di segnale Il diagramma a blocchi della scheda di segnale è rappresentato nella figura 11. 28 Figura 11: Diagramma a blocchi della scheda di segnale Nella tabella tre vengono riassunte le funzioni dei singoli blocchi. Come risulta dalla legenda dello schema, le frecce a tratto più spesso rappresentano linee multi filari, mentre quelle sottili rappresentano un unico segnale. A questo punto iniziamo l'analisi dei singoli blocchi. 29 Normalizzazione Il suo compito è di adattare le escursioni dei segnali sui suoi ingressi al range 0-5V, in maniera da pilotare l'ADC in sicurezza e alla massima risoluzione Protezione adc E' una protezione per evitare che eventuali sovratensioni che eccedano i 5V, non smorzate dal blocco di normalizzazione, giungano agli ADC danneggiandoli. PIC16F877A OSC Rappresenta il micro che gestisce il sistema E' il quarzo, corredato da accessori, che fornisce la base dei tempi al micro Filtro Attivo Costituisce il dispositivo che filtra e amplifica la componente continua del segnale pwm Bypass Segnale Questa parte si occupa di fornire la corrente di pilotaggio alla power board, amplificando la corrente fornita dai pin del pic. ICP In Circuit Prgramming, rappresenta il blocco per programmare da remoto il microcontrollore. LCD Il display LCD a 8bit. Pur non facendo parte fisicamente della signal board, è necessario analizzarlo per capire come interfacciarlo al micro, sia dal punto di vista hardware che software. Tabella 3: Descrizione dei blocchi costituenti la scheda di segnale 2.4.1 Ingressi di comando Sono rappresentati dai due potenziometri multi giro da 10k, in modo da rimanere nel range di impedenza consigliato sul datasheet del pic. Per fare in maniera che L'escursione 0-10k sia già normalizzata nel range 0-5 volt da inviare agli adc del pic, abbiamo alimentato i potenziometri con la linea di alimentazione a 5V dedicata all'alimentazione del micro. E' poi stato sufficiente inviare direttamente il terminale centrale del potenziometro all'adc corrispondente. Le uscite dei potenziometri sono collegate direttamente ai convertitori senza nessun tipo di protezione, che peraltro è già garantita dall'integrato monolitico che gestisce la linea di alimentazione a +5V. I collegamenti dei potenziometri e gli adc sono realizzati seguendo la numerazione rappresentata in tabella 4 (per completezza viene anche indicato l'ordine di collegamento dei rimanenti adc): 30 Vimp adc0 Vmis' adc1 Iimp adc2 Vshunt' adc3 Vst' adc4 Tabella 4: Corrispondenza tra ingressi e convertitori adc Lo schema elettrico del collegamento è il seguente : Figura 12: Schema elettrico dei collegamenti tra potenziometri e relativi adc I potenziometri sono di tipo lineare, e hanno un escursione di 20 giri. Essendo l'uscita pwm del pic a 10bit (1024 valori), ossia la stessa risoluzione dei canali dell'adc, avremmo un rapporto di conversione 1 a 1 tra l'adc che rappresenta la Vimp e l'uscita pwm. In pratica ognuno dei 1024 passi dell'adc della Vimp viene convertito nel relativo valore di dc sull'uscita pwm. Questa situazione è valida se non è raggiunta la soglia di corrente impostata da Iimp, nel qual caso il software di controllo modulerà l'uscita pwm solamente fino al limite di corrente imposto. Per fare chiarezza su come viene modulata l'uscita pwm per alcuni valori notevoli di Vimp fare riferimento alla tabella 5. 31 Vimp adc0 duty-cycle pwm duty-cycle [V] [valore corrispondente] [%] [passo] 0 0 0 0 2,5 512 50% 512 5 1024 100% 1024 Tabella 5: Corrispondenza tra tensione impostata e dc generato dal micro Per quanto riguarda la corrente impostata, possiamo correlare la soglia di corrente impostata con la tensione presenti ai capi del potenziometro analizzando i valori della tabella 6. Iimp adc2 Limitazione della [V] [valore corrispondente] corrente erogata [A] 0 0 0 2,5 512 5 5 1024 10 Tabella 6: Corrispondenza tra corrente impostata e limitazione di corrente 2.4.2 Normalizzazione In questo paragrafo tratteremo il blocco che si occupa della normalizzazione. Come si può vedere in figura 11 gli ingressi di questo blocco sono tre, più precisamente Vout, Vshunt e Vst. Queste tre grandezze devono opportunamente trattate per poter essere inviate al micro, che dopo averle lette le utilizzerà nel processo di regolazione. 2.4.3 Normalizzazione tensione di uscita Questa tensione è variabile nel range 0-30 volt ed è quella direttamente applicata al carico. Deve essere quindi de amplificata e ridotta al range 0-5 volt per i motivi esposti nel paragrafo 1.10. La tensione viene prelevata direttamente ai capi del carico (sui morsetti di uscita), verrà quindi utilizzato un amplificatore operazione differenziale, in modalità non invertente con guadagno minore di uno. Si usa la modalità non invertente poiché non è disponibile alimentazione duale. Riprendendo quanto detto al punto 1.10, il coefficiente Kv vale sei, ciò vuol dire che uscita e ingresso sono legati appunto da tale coefficiente di proporzionalità Lo schema che dovrà realizzare tale operazione, ossia dividere il segnale di uscita per Kv è il seguente : 32 Vmis Vout Vmis' Vshunt Schema 1: Schema elettrico del blocco di condizionamento della tensione misurata Essendo un divisore, lo stadio raffigurato nello schema 1 uno dovrà moltiplicare per un Kv minore di uno. La relazione che lega il guadagno ai parametri resistivi della rete di reazione è la seguente : Kv= R4 1 = R2 6 Relazione 6: La tensione in uscita si può quindi esprimere come : Vmis '= R4 ∗Vmis R2 Relazione 7: Per il corretto funzionamento, è opportuno che sia verificata la seguente uguaglianza tra i valori delle resistenze : R1=R2 e R3=R4 Relazione 8: Nello schema 1, le resistenze di reazione sono costituite da dei trimmer, per poter garantire la corretta taratura dello stadio nel realizzare il guadagno di 1/6. Dallo schema 1 si può anche scrivere l'equazione della maglia di uscita, che è esprimibile con la seguente relazione : 33 Vout−Vmis−Vshunt=0 Relazione 9: 2.4.4 Normalizzazione della corrente misurata Come detto in precedenza, per la misura della corrente che percorre il carico, è stato utilizzato uno shunt. Nel dettaglio lo shunt è una resistenza in manganina del valore di 0,05 ohm, adatta per correnti fino, e oltre, i 10A. Lo shunt è collegato a valle del carico, quindi uno dei suoi capi è collegato al morsetto negativo, mentre l'altro capo è collegato direttamente alla massa di potenza. In questo caso non è necessario un amplificatore di tipo differenziale, ma semplicemente un amplificatore collegato in modalità non invertente. Al contrario del caso precedente, la tensione presente ai capi dello shunt è di pochi millivolt, quindi andrà amplificata e non divisa. Lo schema elettrico che rappresenta questa sezione è il seguente : Iout Iout Vmis Vout Vshunt' Vshunt Schema 2: Schema elettrico del blocco di condizionamento della corrente misurata La tensione massima ai capi dello shunt si può calcolare con la relazione dieci : Vshunt max= Rshunt∗Iout max =0,05∗10=0,5 V Relazione 10: 34 In base alla relazione 4 del paragrafo 1.10 possiamo calcolare il coefficiente Ki : Ki= 5 5 = =10 Vshunt max 0,5 Relazione 11: Essendo l'amplificatore in modalità non invertente, possiamo esprimere Ki in funzione delle resistenze presenti nello schema 2 (partendo dalla formula del guadagno statico di tale configurazione): Ki=1 R1 R1 quindi il rapporto varrà dovrà valere 11 R2 R2 Relazione 12: Anche in questo caso il trimmer R1 viene utilizzato per la regolazione del guadagno, in maniera da far corrispondere il valore dell'uscita dell'amplificatore a 5V in corrispondenza della corrente massima erogata, che vale 10A. 2.4.5 Normalizzazione del sensore di temperatura La temperatura del dissipatore sui quali sono montati i transistor finali, viene letta tramite una sonda di temperatura tipo LM35. La sonda fornisce un uscita in tensione con un coefficiente di proporzionalità di 10mV per grado °C di temperatura. Fissiamo come limite superiore di misura 100°C. Avremo quindi la seguente corrispondenza di valori notevoli : Tf Vst adc4 [°C] [V] [valore corrispondente] 100°C 1 1024 25°C 0,25 256 Tabella 7: Corrispondenza tra temperatura della sonda di temperatura e valore letto dall'adc In questo caso, analogamente a quanto fatto prima, calcoliamo il coefficiente di amplificazione Kt dello stadio operazionale. La normalizzazione deve far corrispondere il valore di 1V a 100°C alla massima tensione leggibile dall'adc, che come sappiamo è di 5V. Come si può vedere in tabella 6, nella prima riga è sufficiente moltiplicare per 5 per normalizzare il valore, tutti i valori inferiori 35 seguiranno di conseguenza. Utilizzeremo quindi uno stadio non invertente, come nel caso della Imis di guadagno Kt : Kt = 5 5 = =5 Vst max 1 Relazione 13: Volendo modificare gli intervalli di temperatura è sufficiente modificare il valore del trimmer R1. Lo schema usato è il seguente : Vst Vst' Schema 3:Schema elettrico del blocco di condizionamento della temperatura misurata Il coefficiente Kt si mette in relazione con le resistenze dello schema secondo la formula : Kt =1 R1 R1 =5 quindi R1 e R2 stanno tra loro nel rapporto =4 R2 R2 Relazione 14: Nell'eventualità che Vshunt' oltrepassi i 5 volt, a causa di una non perfetta taratura del guadagno dello stadio, l' adc relativo rimane pur sempre protetto dal blocco di protezione che analizzeremo nel paragrafo seguente. 2.4.6 Protezione degli adc Questo blocco si rende necessario per evitare che le tensioni in arrivo sulle varie linee degli adc 36 superino i 5V, danneggiandoli. Le linee in arrivo dai potenziometri sono già protette, essendo l'alimentazione a 5 V già protetta. Rimangono da proteggere quindi le linee in arrivo dal sensore di temperatura, dallo shunt e dalla misura differenziale della tensione. In tutti questi casi infatti., c'è la possibilità di avere dei superamenti di tale soglia. Infatti gli operazionali, per poter leggere la tensione in uscita di 30V, e per poterla generare (tramite il filtro attivo) necessitano di una tensione di alimentazione leggermente superiore alla trentina di volt (causa cadute interne degli AO). A causa di questo fattore, se un adc si portasse, anche solo momentaneamente, in saturazione, provocherebbe immediatamente il danneggiamento degli adc. L' alimentazione degli operazionali e del pic verrà in ogni caso trattata successivamente. Per semplificare il PCB, tutte le linee di alimentazione degli operazionali sono servite da questa tensione (anche se l'operazionale che serve l'LM35 potrebbe essere alimentato a soli 5V, che è la massima tensione in uscita dalla sonda). A causa di questo fattore, come anticipato, le uscite degli stadi possono eccedere i 5V (ad esempio a causa di un breve corto circuito sulla misurazione di corrente, e di una sovra temperatura letta dalla sonda di temperatura). Ci vuole quindi una protezione aggiuntiva, che si può realizzare mettendo in parallelo agli adc in esame (adc1, adc3 e adc4) un diodo zener adeguato, con la relativa resistenza di limitazione. Schema 4: Schema elettrico della protezione dei convertitori analogico digitali 37 I diodi zener devono avere una tensione di zener minima maggiore di 5V, per non “rubare” risoluzione al relativo adc. Infatti se erroneamente usassimo uno zener da 5V, la sua tensione minima è di 4,8V, caso per il quale perderemmo 0,2V di scala utile sull'adc. 2.4.7 Filtro attivo e bypass: Il filtro attivo utilizzato è una cella di tipo sallen-key, che forma un filtro passa basso di secondo ordine. L'uso di un filtro attivo, oltre a permetterci di gestire l'amplificazione del segnale, ha il grande pregio di permetterci di non usare induttori nella realizzazione del filtro. Questo filtro dispone di due poli e fornisce un attenuazione di 12db/ottava. L'ingresso del filtro, come detto in precedenza è costituito dal segnale pwm, con duty-cycle variabile da 0 a 100%. La massima tensione in uscita dal filtro sarà quindi corrispondente a 5V con il dc impostato a 100%. In pratica, in uscita da questo filtro avremo costantemente il valore medio dell'onda pwm. Per essere nel range di uscita deciso in fase di specifica, questa tensione va quindi amplificata per essere scalata dal range 0-5 volt a quello 0-30 volt . Il fattore di amplificazione del filtro attivo dovrà quindi essere di : Vsk max=Kpwm∗Vpwm max quindi Kpwm= Vsk max 30 = =6 Vpwm max 5 Relazione 15: Una problematica della cella sallen-key, è che per guadagni superiori a qualche unità, con alti valori di capacità, si generano auto oscillazioni del filtro. Per evitare questo problema (visto che utilizziamo capacità molto grandi per ottenere una fc molto bassa) abbiamo suddiviso il filtro in due parti. La prima parte è il filtro passa basso, collegato in maniera da ottenere un guadagno unitario (inseguitore). Il secondo stadio è invece costituito da un amplificatore non invertente di guadagno kpwm. Lo schema completo è rappresentato nello schema 5 (IC1A è la cella sallen-key, mentre IC1B è lo stadio di amplificazione). La relazione che rappresenta la frequenza di taglio del filtro è la seguente : fc= 1 2∗∗R1∗R2∗C1∗C2 Relazione 16: 38 Vpwm Onda pwm Vsk Schema 5: Schema elettrico del filtro attivo Il bypass di segnale è realizzato con un transistor NPN collegato all'uscita dello stadio di amplificazione (operazionale IC1B dello schema 5) del filtro, nella seguente maniera : Vbe Vsk* Vpwm Vsk Schema 6: Bypass del filtro attivo 39 Con questo collegamento passante, si realizza che la corrente richiesta dalla power board per pilotare gli amplificatori di corrente non debba venire fornita direttamente dall'operazionale. ma bensì dal transistor T1. Questo fa si che in caso di modifica della power board (ad esempio per ottenere più corrente), per il corretto pilotaggio dei transistor finali è sufficiente sostituire T1. 2.4.8 OSC: Rappresenta il blocco dell'oscillatore, realizzato con un quarzo a 20MHz. Pur non essendo critica la gestione del sistema senza una base di tempi affidabile, si è preferito usare il dispositivo al quarzo, in ragione della rete RC. In un ottica futura di riduzione dei costi, previ accurati test, sarà possibile passare all'oscillatore RC con delle minime modifiche. L'introduzione del quarzo non è indolore, in quanto provoca l'irradiazione di disturbi, soprattutto lungo la linea di alimentazione del pic. In sede di calcolo e di stesura dello schema finale sono stati quindi previsti condensatori di filtraggio per prevenire queste problematiche 2.4.9 Comandi AUX: Il blocco relativo ai comandi ausiliari, nasce dall'esigenza di non sovraccaricare le porte del pic utilizzate come interruttori digitali per l'azionamento di dispositivi esterni. Nel nostro caso, gli unici usi delle porte del pic, come interruttori, sono limitati ai seguenti dispositivi : ● Comando Relè di commutazione dei secondari del trasformatore ● Comando Ventola del dissipatore ● Accensione Spie di segnalazione Nei primi due casi risulta utile utilizzare un comune transistor NPN a mo di switch, la cui base è comandata dalle porte del pic, mentre la corrente da inviare al carico viene prelevata dalla linea a 12 V tramite il collettore del BJT. Nel terzo caso, ossia le spie di segnalazione, possiamo collegare direttamente le porte ai led, tramite una resistenza di limitazione. I transistor di comando andranno anche protetti da sovratensioni, tramite diodi di ricircolo, questo a causa della natura induttiva dei carichi collegati. Tutte le porte che necessitano dei collegamenti sopra citati, andranno collegate seguendo lo schema numero 7. In questo caso il pilotaggio dei livelli cmos della porta del pic viene utilizzato per comandare il transistor T1 come switch elettronico, riducendo drasticamente la corrente erogata dal micro. D1 è il diodo di protezione usato specificatamente nel caso dell'azionamento della bobina del relè e della ventola del dissipatore. In ogni caso la resistenza R3 deve essere accuratamente dimensionata, anche in base all'impedenza del carico da collegare, 40 questo per essere sicuri che in fase di accensione T1 lavori nella zona di saturazione. Nello schema 6 è mostrato il collegamento per l'azionamento della ventola / relè (azionato dalla generica porta X), e quello per l'accensione dei led di segnalazione del sinottico (generica porta Y). Nel caso dell'accensione dei led, non abbiamo usato un BJT per amplificare la corrente, ma abbiamo inserito una semplice resistenza di limitazione, da tarare per non fare oltrepassare al pic la massima corrente erogabile dalla porta interessata. Schema 7: collegamento delle porte del pic usate come interruttore digitale 2.4.10 ICP: L' icp o In Circuit Programming, rappresenta un interfaccia attraverso la quale poter programmare il pic senza estrarlo dal suo zoccolo, banalmente a “bordo macchina”. La linea ICP è costituita dai seguenti segnali : ● Alimentazione a 12 V DC e relativa massa, provenienti dall'esterno ● Linea seriale a 2 fili (Tx e Rx, rispettivamente terminale trasmissione e ricezione) Durante la programmazione, in ogni caso l'alimentatore deve essere spento, per non interferire con i segnali provenienti dal programmatore. Vanno inoltre predisposti dei diodi di blocco, per evitare che la tensione a 12 V applicata su MCLR e sull'alimentazione del pic, provochi una circolazione di corrente verso la signal board. Il dettaglio dei collegamenti verrà analizzato nello schema definitivo, durante il prossimo capitolo. Il collegamento con l'esterno è realizzato con un connettore seriale. 41 Figura 13: Diagramma a blocchi della scheda di potenza 2.5 Diagramma a blocchi della scheda di potenza La scheda di potenza, è realizzata tramite l'uso di transistor in tecnologia bipolare. Sono utilizzati 4 transistor NPN (con connessione interna di tipo darlington) ,in maniera tale che la corrente diretta al carico venga divisa in 4 rami, facendo in modo che nessuno dei transistor lavori al di fuori della sua SOA. La scheda di potenza accoglie anche il dissipatore di calore e la ventola. L'uso della ventilazione forzata, si rende necessario per ridurre le dimensioni e quindi l'ingombro del dissipatore. All'interno della power board, è anche collegato lo shunt, e un ulteriore filtro per 42 eliminare eventuali fluttuazioni residue della tensione in uscita. La power board è collegata tramite cablaggi alla signal board. Sul dissipatore viene montato anche il sensore di temperatura Lm35. Lo schema di principio della scheda rappresentato in figura 13. Procediamo ora con l'analisi di massima dei singoli blocchi . 2.5.1 Transistor di bypass I transistor di bypass sono collegati come mostrato nello schema numero 8. Le resistenze in serie ai transistor (R1, R2, R3, R4), vengono utilizzate per compensare gli squilibri della corrente che fluisce nei vari transistor a causa delle differenze delle caratteristiche interne esistenti tra i transistor. Infatti con l'aumentare della temperatura, la Vbe di ogni BJT tende a diminuire (ma non in modo uguale su tutti). Diminuendo tale tensione, la corrente nel relativo ramo tende ad aumentare, visto che la Vbe ha un verso tale da opporsi allo scorrere della corrente. Se non prendessimo provvedimenti, lo stesso aumento di corrente farebbe riscaldare ancora di più il transistor, con ulteriore diminuzione della stessa Vbe, questo processo si reiterebbe fino alla completa distruzione del componente. La resistenza posizionata sull'emettitore, fa si che vengano compensati gli aumenti di corrente con una maggiore caduta sulla resistenza stessa. Il contro di questo sistema è che le resistenze sono poste in serie al carico, quindi devono essere opportunamente piccole per minimizzare la caduta e opportunamente dimensionate per sopportare correnti elevate. Nel nostro caso, considerando la corrente massima erogabile dall'alimentatore di 10A, ogni resistenza dovrà poter dissipare almeno la potenza : P 1,2 ,3 ,4=R1,2 ,3 ,4∗ Iout 2 dove n è il numero di BJT usati nel bypass n Relazione 17: Tale potenza, moltiplicata per 4, rappresenta a tutti gli effetti una perdita di potenza da valutare ai fini del rendimento. 43 Vbe Iout Vshunt Vsk* Schema 8: Schema elettrico del collegamento dei transistor di potenza 2.5.2 Filtro e Shunt Il filtro finale di uscita, viene utilizzato per livellare eventuali picchi residui presenti sull'uscita del filtro attivo. Per ottenere questo risultato si è utilizzata una combinazione di due condensatori, uno ceramico molto piccolo, per smorzare picchi a frequenze elevate, e uno elettrolitico di considerevole capacita per rifornire velocemente eventuali picchi di corrente richiesti dal carico. I condensatori sono montati sulla power board in parallelo tra i morsetti positivo e negativo. Lo shunt in dettaglio è una spirale in manganina, materiale che ha una resistività molto stabile anche con considerevoli aumenti di temperatura. Lo shunt, è stato montato a valle del carico, tra il morsetto negativo e la massa di potenza, in questa maniera Vshunt è di facile misurazione e non richiede un operazionale in configurazione differenziale per essere amplificata. Lo schema del filtro di uscita è il seguente, con riferimento allo schema 8 si nota la posizione dello shunt. Vout Vmis p-gnd Schema 9: Filtro finale in uscita 44 2.5.3 Parti accessorie In questo paragrafo, andremo a trattare le parti accessorie del sistema, ossia le linee di alimentazione dell'elettronica di potenza, e di quella di segnale. A livello generale, possiamo identificare le seguenti linee di alimentazione : 1. +5V DC (s5v) la linea che viene usata per alimentare il micro controllore , comandi, l'LCD e la sonda di temperatura. 2. +30V DC (s30v), la linea utilizzata per alimentare gli operazionali 3. +12V DC (s12v), è la linea usata per l'alimentazione del relè di commutazione e della ventola del dissipatore 4. +50V DC / 17V DC (p30v), è la linea in uscita dal ponte di potenza, che in base al relè commuta tra questi due valori (che sono semplicemente i valori 36 e 12 moltiplicati per radice 2) Le linee 1,2,3 sono linee di segnale, sulle quali viene drenata poca corrente, dell'ordine delle centinaia di milli ampere, mentre la linea numero 3 è quella che fornisce l'uscita di potenza, sulla qualche scorrono correnti, che nel caso più gravoso arrivano a 10 ampere. Il trafo è un trasformatore a mantello, con due uscite secondarie, una a 12V AC e l'altra a 36V AC. Le tensioni +5V DC e +30V DC sono ottenute tramite due integrati monolitici, rispettivamente un LM7805 e un LM317. La 12V DC è ottenuta semplicemente raddrizzando con un ponte a diodi e i relativi condensatori di livellamento, il secondario a 12V AC. Nel dettaglio, sono presenti tre ponti di graetz, uno per la parte di potenza e due per la parte di segnale. Il ponte per la sezione di potenza è di tipo monolitico, ed è interposto tra il relè di commutazione e il banco di condensatori elettrolitici. In base alla posizione del relè raddrizza la tensione sul secondario (12 o 36 V AC). Il secondo ponte raddrizza esclusivamente il secondario a 12V AC, tale tensione viene poi sdoppiata e inviata sia all'LM7805, sia all'alimentazione della ventola del dissipatore. Il terzo e ultimo ponte, raddrizza la 36V AC, tale tensione viene poi inviata all'LM317 che la stabilizza a 30V DC e la invia agli operazionali. Non è stato possibile usare un ponte unico sulla linea a 30V per le linee di segnale poiché nel caso della linea a tensione minore (la 5V DC), ci sarebbe stata una caduta troppo grande ai capi dell'LM7805, che insieme alla corrente da erogare, lo avrebbe portato a lavorare fuori dalla sua SOA. In figura 13 è riportato lo schema a blocchi di questa parte. Dallo schema si possono vedere tutte le provenienze delle varie linee di alimentazione e i punti dove vengono derivate le masse. Nel dettagli la massa di potenza è costituita dal pin negativo del ponte a diodi di potenza, mentre 45 Figura 14: Schema a blocchi delle linee di alimentazione quella di segnale è l'unione dei pin negativi de due ponti di segnale. Il sinottico infine ospita le seguenti strumentazioni : ● display LCD con visualizzazione di grandezze impostate e misurate ● voltmetro e amperometro analogici ● comandi per impostare la tensione in uscita e la limitazione in corrente ● Pulsante di accensione dell'alimentatore ● Spia di funzionamento come generatore di tensione / corrente e ventilazione ● Pulsante di reset del micro controllore e spia di blocco per sovrtemperatura 46 Capitolo3 Il software di gestione 3.1 Introduzione n questo capitolo, analizzeremo il software di gestione che governa il micro controllore. Come già detto in precedenza, viene utilizzato il mikrobasic, mentre per la programmazione vera e propria si utilizza un programmatore parallelo di tipo PROPIC2. Il software per caricare i file generati. e compilati. dal mikrobasic è l'IC-PROG. Nel dettaglio, la versione di mikrobasic utilizzata è la 6.0. Per rendere il programma particolarmente semplice, sono stati usati esclusivamente cicli if then else, cosa che rende semplice la lettura del listato anche ai non esperti. Prima di esporre la trattazione del programma, inseriamo un diagramma contenente la piedinatura del pic, nel quale si possono notare le varie linee a 8bit che lo costituiscono : Figura 15: Piedinatura del PIC 16F877A Pur potendo funzionare tutte come linee digitali (di tipo ON/OFF), alcune linee ha una particolare modalità che la distingue dalle altre. Ad esempio la linea RA, contiene gli adc, mentre la RC i moduli pwm. 47 Segue il listato completo del programma : 1: program debug4 2: 'variazioni' 3: 4: 'aggiunta tmr0' 5: 'controllo 0<DC<1024 per evitare reset OK funziona sia su tensione che corrente' 6: 'aggiunta controllo temp + controllo ventola a isteresi' 7: 'aggiunta isteresi relè commutazione' 8: 'aggiunte isteresi su misure tensione / corrente' 9: 10: 'quarzo a 20mhZ' 11: 12: 'Routines per Gestione pwm a 10 bit Rc1 e Rc2 13: sub procedure PWM_10bit(dim dutyreg as word) 14: CCP1CON = 0 'reset del pwm' 15: T2CON=%00000100 16: PR2=255 'imposto freq pwm (19.53khz -> 10 bit)' 17: CCP1CON.5 = %00000001 and dutyreg 'CCP1CON 2 LSB of pwm' 18: CCP1CON.4 = %00000001 and (dutyreg >>1) 'CCP1CON 2 LSB of pwm' 19: CCPR1L=%11111111 and (dutyreg >>2) '8 msb pwm' 20: 'avvia il pwm' 21: CCP1CON.2=1 22: CCP1CON.3=1 23: end sub 24: 25: dim vmis as word 26: dim vimp as word 27: dim iimp as word 28: dim imis as word 29: dim T as word 30: 31: dim Vtoll as byte 32: dim Itoll as byte 33: 34: dim dutyreg as word 35: dim counter as byte 36: 37: 'lettura adc tensioni 0=vimp ; 1=vmis' 38: sub procedure VoltagesRead(dim a,b as byte) 39: vimp=adc_read(a) 40: delay_ms(2) 41: vmis=adc_read(b) 42: delay_ms(2) 43: end sub 44: 45: 'lettura adc correnti 2=iimp ; 3 =imis' 46: sub procedure CurrentsRead(dim c,d as byte) 47: iimp=adc_read(c) 48: delay_ms(2) 49: imis=adc_read(d) 50: delay_ms(2) 51: end sub 52: 53: 'lettura temperatura' 54: sub procedure TempRead(dim e as byte) 55: T=adc_read(e) 56: end sub 57: 48 58: 'chiamata dell'interrupt' 59: sub procedure interrupt 60: inc (counter) ' Increment value of counter on every interrupt 61: TMR0 = 0 'azzera il contatore' 62: INTCON=$20 'riavvia il timer' 63: 64: end sub 65: 66: main: 67: 68: 'inizializzazione display' 69: Lcd8_config(portB, portD, 4,5,6, 7,6,5,4,3,2,1,0) 70: Lcd8_Cmd(Lcd_Clear) 71: Lcd8_Out(1,1, "Vimp=") 72: Lcd8_Out(2,1, "Iimp=") 73: 74: 75: 76: 'definisco le tolleranze' 77: Vtoll=10 78: Itoll=10 79: 80: 'inizializzo dutyreg' 81: 82: dutyreg=0 83: 84: 'impostazioni tmr0 85: 86: OPTION_REG = $87 ' setto il prescaler a 255 87: counter = 0 ' fisso a zero counter 88: INTCON = $A0 'abilita tmr0 89: 90: 91: 92: 93: 'setta le portA che uso come adc senza Vref' 94: 'ad0=vim ad1=vmis ad2=iimp ad3=imis ad4=libero 95: ADCON1=$82 96: 'imposto le porte' 97: 98: '***** portA *****' 99: trisa.0=1 'potenziometro vimp' 100: trisa.1=1 'potenziometro vmis' 101: trisa.2=1 'potenziometro iimp' 102: trisa.3=1 'potenziometro imis' 103: trisa.4=1 'sensore temp' 104: '***** portB *****' 105: 106: 107: 108: '***** portC *****' 109: trisc.2=0 'pin del pwm usato' 110: trisc.1=0 'pin del pwm libero' 111: trisc.3=0 'porta commutazione relè 12-24' 112: trisc.4=0 'porta che comanda il mosfet della ventola' 113: 114: '***** portD *****' 116: currentring: 117: 49 118: CurrentsRead(1,3) 119: 120: if imis < (iimp-Itoll) then 121: 122: goto voltagering 123: 124: else 125: if imis > (iimp+Itoll) then 126: if dutyreg >=1 then 127: dec (dutyreg) 128: PWM_10bit(dutyreg) 129: end if 130: end if 131: 132: goto currentring 133: 134: end if 135: 136: voltagering: 137: 138: 'commutazione secondari trafo, per ora intorno a 10V' 139: '1024 : 30 = X : 10 -> X=340 140: 'nb porta low = +5V ; porta high = 0V 141: 142: 'commutazione secondari con piccola finestra isteresi di 2 step' 143: if dutyreg>=355 then 144: 'eccita il relè (a 340*30mv=10V circa) e commuta sulla presa a 24 145: portc.3=1 146: 147: else 148: 149: if dutyreg<330 then 150: 'diseccità il relè e passa alla presa a 12 151: portc.3=0 152: end if 153: 154: end if 155: 156: 157: 'legge tramite la procedura gli adc 0 e 1' 158: VoltagesRead(0,2) 159: 160: incremento: 161: 'incrementa SOLO se non siamo già a dutyreg max (1023) altrimenti va in overflow il pwm 162: if vmis < (vimp-Vtoll) then 163: if dutyreg <= 1022 then 164: inc (dutyreg) 165: PWM_10bit(dutyreg) 166: end if 167: else goto decremento 168: end if 169: goto voltageringend 170: 171: decremento: 172: 'decrementa solo se non siamo già a dutyreg min (0) altrimenti va in overflow il pwm 173: if vmis > (vimp+Vtoll) then 174: if dutyreg >=1 then 50 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: dec (dutyreg) PWM_10bit(dutyreg) end if end if voltageringend: if counter=40 then TempRead(4) 'controllo ventilazione (10mv/°C X A) con A=2.2 'accensione 50°C -> 1,1V -> 225 passi 'spegnimento 40°C -> 0,88V -> 180 passi if T>230 then portc.4=1 else if T<180 then portc.4=0 end if end if 'azzera il contatore' counter=0 end if goto currentring end. Il software verrà quindi trattato in vari paragrafi seguendo l'ordine sequenziale con il quale è stato presentato sopra. 3.2 Gestione del pwm La gestione del pwm a 10bit viene gestita dalla seguente porzione di codice : 'Routines per Gestione pwm a 10 bit Rc1 e Rc2 sub procedure PWM_10bit(dim dutyreg as word) CCP1CON = 0 'reset del pwm' T2CON=%00000100 PR2=255 'imposto freq pwm (19.53khz -> 10 bit)' CCP1CON.5 = %00000001 and dutyreg 'CCP1CON 2 LSB of pwm' CCP1CON.4 = %00000001 and (dutyreg >>1) 'CCP1CON 2 LSB of pwm' CCPR1L=%11111111 and (dutyreg >>2) '8 msb pwm' 'avvia il pwm' CCP1CON.2=1 CCP1CON.3=1 end sub 51 Il primo problema affrontato nella stesura di questa parte del software, è che il mikrobasic non permette la gestione del pwm a 10bit nelle sue funzioni di alto livello (ma solo a 8 bit, quindi una risoluzione insufficiente per i nostri scopi). Si è quindi reso necessario scrivere tramite degli include le istruzioni necessarie, sotto forma di codice binario, direttamente all'interno dei registri del pic. Utilizzando il data sheet del pic16F877A abbiamo notato che la risoluzione a 10bit del pwm è disponibile solo a determinate frequenze. Utilizzando un quarzo a 20MHz (fosc), la formula che ci fornisce la risoluzione del pwm in funzione della fosc e della frequenza del pwm è la seguente : fosch fpwm log2 log pwm res= Relazione 18: Che per un quarzo a 20Mhz si riassume nella seguente tabella : Tabella 8: Risoluzione del pwm del pic 16F877A Per questioni di dinamica del sistema abbiamo quindi deciso di operare alla massima frequenza disponibile per poter lavorare a 10bit, ossia 19,53kHz. All'interno della tabella è anche indicato il relativo valore di prescaler da impostare per configurare la frequenza di pwm, che nel nostro caso è 1. In base al prescaler, è necessario il calcolo di un coefficiente, che andrà inserito nel registro PR2 e che configurerà appunto il prescaler al valore determinato. La formula è la seguente : pwm period =[ PR21]∗4∗Tosch∗TMR2 prescaler value Relazione 19: Nota la frequenza di pwm e il valore di fosch, i tempi richiesti nella formula saranno i reciproci di tali numeri, quindi possiamo scrivere : 52 1 1 =[ PR21]∗4∗ ∗1 3 6 19,53∗10 20∗10 Relazione 20: Il risultato della relazione 19 è che PR2 varrà 255, numero che andremo a caricare manualmente nel registro stesso. Ora che il pwm è configurato, è necessario capire come impostarne il duty-cycle. La procedura usata, analizzando la prima riga, usa come valore di duty-cycle del pwm il valore della variabile dutyreg (in verde). Essendo tale variabile una word, ossia 16bit, potremmo rappresentare 1024 passi, ossia duty-cycle spaziati circa dello 0,09%, infatti : 100 ≃0,09 1024 Relazione 21: Una volta configurato il modulo pwm, dobbiamo passare l'argomento alla routine, ossia il valore del duty-cycle da impostare, cosa che si ottiene tramite l'impostazione della variabile dutyreg. Il valore binario di tale variabile, va inserito in due registri separati, i msb (most significant bit) vanno inseriti in CCP1RL, mentre i lsb (less significant bit) vanno inseriti nel registro CCP1CON nelle posizioni 4 e 5 del registro. Le operazioni di inserimento vengono effettuate tramite una operazione di and e di shift (rispettivamente operatore and e >>) del valore binario di dutyreg (righe viola). Il passo successivo è la scelta della porta pwm, il pic infatti dispone di 2 porte. Per selezionare la porta si usa il registro T2CON, secondo la seguente tabella : 53 Tabella 9: Registro T2CON del PIC 16F877A E' quindi sufficiente impostare tutto il registro a zero, tranne il bit della porta pwm che vogliamo usare, che nel nostro caso è la numero 2, quindi il bit 2 di T2CON va posto a 1. Dopo aver inserito i valori nel registro si procede con l'avviamento del pwm tramite la scrittura nel registro CCP1CON. La struttura di tale registro è la seguente : 54 Tabella 10: Registro CCP1CON del pic 16F877A Nel nostro caso per l'avviamento, inseriamo semplicemente due uno, rispettivamente nelle posizioni numero 2 e 3 del registro 3.3 Variabili di sistema Dopo aver scritto la subroutine del pwm, dichiariamo le variabili di sistema utilizzate nell'esecuzione del programma 'Dichiarazione Variabili dim vmis as word dim vimp as word dim iimp as word dim imis as word dim T as word dim Vtoll as byte dim Itoll as byte 55 dim dutyreg as word dim counter as byte dim temp as word Iniziamo con il notare che sono state utilizzate solo variabili di tipo word (16bit) e di tipo byte (8bit). Il significato delle variabili è il seguente: ● Vmis e Vimp, sono le variabili che memorizzano la tensione misurata e quella impostata. Essendo gli adc funzionanti a 10bit, la dimensione word combacia perfettamente con il massimo numero di intervalli campionabili dall'adc. ● Stesso discorso vale per Imis e Iimp, ossia la corrente misurata e quella impostata. ● La variabile T rappresenta la temperatura del dissipatore ● La variabile temp è usata per immagazzinare i dati temporanei di varie procedure ● Vtoll e Itoll sono degli intervalli di tolleranza per definire delle isteresi all'interno dei cicli di regolazione di tensione e corrente, non sono dichiarate come costanti, perché possono essere variate per ampliare o diminuire gli intervalli di isteresi. ● ● Il dutyreg è il parametro usato per impostare il duty-cycle dell'onda pwm. counter è una variabile usata per scandire lo scorrere del tempo. Le variabili verranno tutte trattate in dettaglio nei paragrafi successivi. 3.4 Lettura dagli adc Vengono utilizzate due subroutine per la lettura degli adc, questo per evitare di ripetere all'interno del codice gli stessi comandi più volte. Sono divise in 3 gruppi, la prima legge la tensione misurata e impostata, la seconda la corrente misurata e imposta, mentre l'ultima legge il valore di temperatura proveniente dal circuito di condizionamento della sonda LM35. E' stata inserita una pausa di 2 milli secondi tra una lettura e l'altra per non stressare eccessivamente gli adc. Il comando mikrobasik che si occupa della lettura è ADC_READ(n), dove n è il numero del relativo adc. Il risultato del comando ADC_READ viene memorizzato nella variabile passata come argomento 'lettura adc tensioni 0=vimp ; 1=vmis' sub procedure VoltagesRead(dim a,b as byte) vimp=adc_read(a) delay_ms(2) 56 vmis=adc_read(b) delay_ms(2) end sub 'lettura adc correnti 2=iimp ; 3 =imis' sub procedure CurrentsRead(dim c,d as byte) iimp=adc_read(c) delay_ms(2) imis=adc_read(d) delay_ms(2) end sub 'lettura temperatura' sub procedure TempRead(dim e as byte) T=adc_read(e) end sub 3.5 Per Scandire il tempo con l' interrupt evitare che certi cicli vengano ripetuti ad ogni esecuzione del programma, è necessario impostare una base dei tempi da utilizzare come condizione discriminante per l'esecuzione di queste parti di programma. Volendo evitare di utilizzare una base dei tempi esterna (che complicherebbe solo il circuito e la realizzazione del pcb), si è deciso di utilizzare un timer interno del pic, che unito a una procedura di interrupt ci permette di scandire il tempo in maniera relativamente precisa. La routine di interrupt sottostante, viene richiamata ciclicamente in base a un periodo che determineremo successivamente. Il suo compito è quella di incrementare di uno la variabile counter, azzerare il timer0 e riavviarlo. La variabile counter, funzione del tempo, viene usata all'interno del programma per eseguire particolari cicli. Nel paragrafo successivo, vedremo la restante parte della subroutine. 'chiamata dell'interrupt' sub procedure interrupt inc (counter) TMR0 = 0 INTCON=$20 ' Increment value of counter on every interrupt 'azzera il contatore' 'riavvia il timer' end sub 57 3.6 Inizializzazione delle variabili di sistema Questo paragrafo si occupa dell'inizializzazione del display LCD e della definizione dei valori di certe costanti. In questa parte del listato passiamo dalla parte che descrive le subroutine e gli interrupt, al main del programma, ossia al cuore funzionante del sistema. Nelle prime righe si nota come vengano scritte le parti statiche che appariranno sul display LCD, notiamo anche che viene utilizzata la connessione a 8 bit (in ragione di quella molto più lenta a 4bit)) per velocizzare la comunicazione e l'esecuzione del programma (comando LCD8). Va precisato che l'LCD si pilota con due linee, come già detto esiste una linea dati a 8bit, in parallelo ad essa ci sono 3 segnali di comando, RS (register select), RW (Read and Write) e E (Enable). Il comando LCD8 si occupa di comunicare con l'LCD agendo in maniera trasparente a livello di queste linee, cosa che non sarebbe vera se usassimo l' assembler come linguaggio di programmazione, nel qual caso dovremmo essere noi a gestire i singoli segnali, introducendo una fase di studio su come utilizzare il display. Dopo l'inizializzazione del display, si definiscono le tolleranze, e successivamente si imposta il dutyreg a 0, per evitare che l'alimentatore per qualsiasi motivo parta con una tensione diversa da quella impostata dai comandi, ma sia obbligato a partire con l'uscita a zero volt. Per quanto riguarda le righe successive, sono il completamento dei parametri della procedura di interrupt usata per scandire il tempo. Utilizzando TMR0, dal datasheet si rileva che il suo registro di configurazione è l'OPTION_REG. Il timer0 può funzionare utilizzando una frazione della frequenza dell'oscillatore del PIC (fosc/4 più precisamente) oppure un ingresso esterno. Nel nostro specifico caso utilizzeremo fosc, per non utilizzare componenti esterne. Timer0 ha la dimesione di 8 bit, quindi può contare a 0 a 254, dopo di chè va in overflow. Utilizzeremo per l'appunto il suo overflow per richiamare la procedura di interrupt e incrementare la variabile counter. Siamo obbligati a seguire questa via perché il tempo base che usa timer0 vale fosch/4 ossia fosc 20.000 1 = =5 Mhz quindi Tmr0 Base= =0,2 s 4 4 5∗10 6 Relazione 22: In pratica ogni 0,2usec tmr0 si incrementa di 1, arrivando a 254 in circa 51 micro secondi .Abbiamo però la possibilità di usare un prescaler, utile per dividere fosc/4. Utilizzandolo al suo massimo valore, ossia 255, dividiamo fosc quarti per 255, ottenendo una frequenza base di fosc 4 1 =19531,25 Hz quindi un periodo di Tmr0 di ossia 51,2 s 256 19531,25 Relazione 23: 58 In questa configurazione per completare il ciclo di 255 passi, timer0 impiegherà circa 13 milli secondi. Questo periodo sarà il nuovo tempo base, quindi ogni 13 milli secondi secondi, verrà richiamata la procedura di interrupt del paragrafo precedente, verrà incrementato counter, e infine verrà azzerato e riavviato il timer. A questo punto in base al valore di counter avremmo una stima del tempo trascorso. Ad esempio se counter vale 40, vuol dire che sono stati percorsi 40 cicli da 13 milli secondi, ossia circa mezzo secondo. Pur non essendo un sistema preciso, è più che sufficiente per scandire gli intervalli temporali che ci interessano. Le ultime due righe del codice che segue non fanno altro che impostare il prescaler a 255, azzerano il timer e lo riavviano. 'inizializzazione display' Lcd8_config(portB, portD, 4,5,6, 7,6,5,4,3,2,1,0) Lcd8_Cmd(Lcd_Clear) Lcd8_Out(1,1, "Vimp=") Lcd8_Out(2,1, "Iimp=") 'definisco le tolleranze' Vtoll=3 Itoll=3 'inizializzo dutyreg' dutyreg=0 'impostazioni tmr0 OPTION_REG = $87 counter = 0 INTCON = $A0 3.7 ' setto il prescaler a 255 ' fisso a zero counter 'abilita tmr0 Configurazione porte ingresso uscita In questa parte andremo a definire quali sono le porte di ingresso e uscita del PIC. Per prima cosa impostiamo le porte della linea A che andremo a usare come adc. Ciò in base al datasheet si ottiene scrivendo nel registro ADCON1 il valore 82 (esadecimale), come si deriva dalla tabella 11. Per trovare la corrispondenza dei bit è sufficiente convertire 82 da esadecimale a binario, ossia 10000010.In questa maniera imposteremo i pin da 0 a 4 come adc. Successivamente dopo averli configurati come adc vanno impostati come ingressi, e questo si ottiene con le linee trisa.X=1 dove X identifica i pin degli adc (il comando tris ha la seguente sintassi tris(linea).(pin)=azione). Se avessimo voluto impostare come ingressi sarebbe stato sufficiente porle uguale a 0. Nelle rimanenti righe, impostiamo come uscite il pin del modulo pwm, e delle due porte usate rispettivamente per 59 avviare la ventola del dissipatore e per fare eccitare il relè commutazione secondari. 'setta le portA che uso come ADC senza Vref' 'ad0=vim ad1=vmis ad2=iimp ad3=imis ad4=libero ADCON1=$82 'imposto le porte' '***** portA *****' trisa.0=1 'potenziometro vimp' trisa.1=1 'potenziometro vmis' trisa.2=1 'potenziometro iimp' trisa.3=1 'potenziometro imis' trisa.4=1 'sensore temp' '***** portB *****' '***** portC *****' trisc.2=0 'pin del pwm usato' trisc.1=0 'pin del pwm libero' trisc.3=0 'porta commutazione relè 12-24' trisc.4=0 'porta che comanda il mosfet della ventola' '***** portD *****' 60 Tabella 11: Registro adcO1 del pic 16F877A Come tensione di riferimento per gli adc utilizziamo la tensione di alimentazione del pic e non un riferimento esterno. 3.8 Anello di corrente L'anello di corrente viene eseguito sempre prima del controllo di tensione. Ogni modifica del pwm fatta nella sezione dell'anello di tensione viene sistematicamente controllata dall'anello in corrente, per evitare che venga superata la soglia della corrente impostata. La parte che apre questa sezione è semplicemente un “label” e serve durante i salti che si fanno all'interno delle varie parti. L'anello è costituito da due cicli if / then /else. Il primo verifica che la corrente misurata sia minore della corrente impostata, se è verificato si passa a regolare la tensione. Il secondo ciclo viene eseguito quando la corrente misurata è maggiore di quella impostata, in questo caso diminuisce il dc di 1 61 step, applica il cambiamento e torna all'inizio dell'anello di corrente. La condizione di uscita dal ciclo rimane esclusivamente quella per la quale la corrente misurata è al di sotto della soglia della corrente impostata, in caso contrario viene reiterato più volte il ciclo che diminuisce il dc fino ad arrivare alla condizione di uscita. currentring: CurrentsRead(2,3) if imis < (iimp-Itoll) then goto voltagering else if imis > (iimp+Itoll) then if dutyreg >=1 then dec (dutyreg) PWM_10bit(dutyreg) end if end if goto currentring end if Figura 16: Diagramma dell'isteresi della misura della corrente In riferimento a figura 16, mostriamo un diagramma che indica l'interfaccia di isteresi presente all'interno del listato. La larghezza della banda di isteresi si può ricavare dalla seguente relazione, e come si nota in figura vale 2 volte la tolleranza impostata : CH =IimpItoll− Iimp−Itoll =2Itoll Relazione 24: 62 Dal diagramma notiamo subito che affinché venga eseguita una qualsiasi operazione, è necessario essere al di fuori della banda di isteresi della corrente (CH). Regolando opportunamente Itoll si può aumentare o diminuire la precisione con la quale il sistema segue il riferimento. Una CH troppo elevata porta il sistema a non essere preciso nell'inseguimento dei riferimenti, al contrario una CH troppo piccola costringe il sistema ad andare continuamente in regolazione, sia per piccoli sbalzi di corrente richiesta dal carico, sia per le inevitabili tolleranze che possono falsare la parte di misura delle grandezze in uscita. 3.9 Anello di tensione E' diviso in due parti, una effettua la commutazione dei secondari del trasformatore, per diminuire le perdite di potenza su finali, diminuendo la tensione sul collettore dei transistore, l'altra parte si occupa della regolazione vera e propria. 3.9.1 Commutazione secondari voltagering: 'commutazione secondari trafo, per ora intorno a 10V' '1024 : 30 = X : 10 -> X=340 'nb porta low = +5V ; porta high = 0V 'commutazione secondari con piccola finestra isteresi di 2 step' if dutyreg>=355 then 'eccita il relè (a 340*30mv=10V circa) e commuta sulla presa a 24 portc.3=1 else if dutyreg<330 then 'diseccità il relè e passa alla presa a 12 portc.3=0 end if end if Essendo il trasformatore provvisto di due secondari, uno a 12V e l'altro a 36V, si è deciso di commutare tra l'uno e l'altro quando la tensione richiesta in uscita è di circa 15V. Per calcolare il 63 valore esatto di Vmis corrispondente a 15V usiamo la seguente uguaglianza. 1024 : 30V= X : 10V quindi X = 1024∗10 ≈340 30 Relazione 25: Quindi, al passo 340 dell'adc che legge il valore di Vmis dovrà essere effettuata la commutazione, azionando sulla serie di porte C l'uscita numero 3. La commutazione a scendere non verrà effettuata al passo 340 per evitare di creare oscillazioni, viene quindi commutato al passo 330, creando una finestra di isteresi di circa 10 passi. Anche in questo caso, facciamo una trasposizione di quanto detto in un grafico, visibile in figura 17, dove andiamo a vedere la finestra di isteresi nella quale si nota la banda all'interno della quale non si effettuano regolazioni. Figura 17: Diagramma dell'isteresi del controllo di commutazione tra i secondari del trafo 3.9.2 Regolazione di tensione 'legge tramite la procedura gli adc 0 e 1' VoltagesRead(0,1) incremento: 'incrementa SOLO se non siamo già a dutyreg max (1023) altrimenti va in overflow il pwm if vmis < (vimp-Vtoll) then if dutyreg <= 1022 then inc (dutyreg) PWM_10bit(dutyreg) end if else goto decremento end if goto voltageringend 64 decremento: 'decrementa solo se non siamo già a dutyreg min (0) altrimenti va in overflow il pwm if vmis > (vimp+Vtoll) then if dutyreg >=1 then dec (dutyreg) PWM_10bit(dutyreg) end if end if voltageringend: L'anello di tensione vero e proprio, è costituito anche esso da due cicli if then else, il primo si occupa di inseguire la tensione impostata quando quella misurata è troppo bassa, il secondo al contrario si occupa di raggiungere Vimp nel caso in cui Vmis sia troppo alta, quindi si occupa esclusivamente del decremento. E' stato necessario inserire dei limiti sia all'incremento che al decremento (parti blu), infatti nel caso non si riesca a raggiungere Vimp, il software continua a incrementare dc, ma arrivato al limite superiore, ossia 1023, la variabile dc va in overflow e riparte da 0. Lo stesso avviene nei decrementi, infatti nel caso in cui non si riesca a raggiungere il limite inferiore di Vimp, il software decrementerebbe la variabile dc fino a zero, che andrebbe in overflow positivo e ripartendo da 1023 a scendere (il tutto verrebbe riportato in uscita con una oscillazione enorme tra 0 e 30 volt). Per questo sono stati aggiunti due cicli If che non eseguono decrementi se dc è già al massimo e viceversa, non decrementano se dc è già al suo valore minimo. Come nel caso dell'anello di corrente, riportiamo un grafico che rappresenta visivamente la finestra di isteresi. Figura 18: Diagramma dell'isteresi del controllo di tensione Come si vede in figura 18 le regolazioni si effettuano solo al di fuori della banda VH, che vale : VH =VimpVtoll −Vimp−Vtoll =2∗Vtoll Relazione 26: 65 3.9.3 Controllo Temperatura Il ciclo di controllo della temperatura è il ciclo che sfrutta la temporizzazione del timer0. Questo perché, essendo i transitori termici più lenti di quelli elettrici, è inutile eseguire questa porzione di codice con la stessa frequenza degli anelli di tensione e corrente. Per questo la condizione per entrare nel ciclo è che la variabile counter sia 40, ossia siano trascorsi 0,5 secondi (ricordiamo che ogni incremento di counter avviene in 13msec come visto nel paragrafo 3.5). Una volta entrati nel ciclo, si verifica la temperatura del dissipatore, e si avvia la ventola solo se la temperatura eccede 50°C. Lo spegnimento al contrario avviene solo se la temperatura è scesa sotto i 40°C, andando così a creare una finestra di isteresi di circa 10°C, per evitare un continuo accendersi e spegnersi della ventola intorno alla soglia di 50°C. Completata l'accensione o lo spegnimento della ventola, si reinizializza la variabile counter a zero e si ritorna al label dove inizia il controllo di corrente. if counter=40 then TempRead(4) 'controllo ventilazione (10mv/°C X A) con A=2.2 'accensione 50°C -> 1,1V -> 225 passi 'spegnimento 40°C -> 0,88V -> 180 passi if T>230 then portc.4=1 else if T<180 then portc.4=0 end if end if 'azzera il contatore' counter=0 end if goto currentring end. Lo schema che chiarisce questa parte è il seguente. 66 Figura 19: Diagramma dell'isteresi dell'azionamento della ventola I valori Tmax e Tmin sono arbitrariamente impostabili all'interno del programma. In questo caso la banda di isteresi sarà semplicemente determinata dalla seguente relazione TH =Tmax−Tmin Relazione 27: 3.10 Scrittura a display L'ultima parte del listato è quella che si occupa della scrittura a display delle grandezze impostate e misurate. La conversione tra passi dell' adc e grandezze reali viene effettuata con una semplice moltiplicazione e relativa normalizzazione per inserire il punto decimale. Nel dettaglio, sappiamo che : ● Ogni step della Vmis è di circa 30 mV (ottenuto dividendo il valore disponibile ai morsetti di uscita fratto 1024) ● Ogni step della Imis è di circa 97 mA (come nel caso precedente, è il valore ottenuto dividendo la massima corrente in uscita per 1024) Nel dettaglio, per inserire il punto decimale, non usiamo variabili float (che occupano memoria e appesantiscono l'esecuzione del software), ma usiamo la normalizzazione, ossia convertiamo il risultato della moltiplicazione in una stringa di caratteri, dopo di chè aggiungiamo la virgola nel punto esatto. Prendiamo in esame la seguente porzione di codice ad esempio : temp=vimp*29 Print_Dec(temp, "##.###", RJZ, stringa) Lcd_Out(1, 4, stringa) 67 La prima stringa converte il valore adc in valore reale, successivamente la funzione Print_Dec è incaricata di convertire il numero decimale in stringa e di applicare la virgola. In pratica, non appena il risultato eccede le 3 cifre (che rappresentano i millivolt o i milli ampere) , Print_Dec, inserisce il punto decimale. In questa maniera il comando LCD_Out ha già pronta una variabile stringa da inviare in output sul bus dati dell' LCD. Similarmente a quanto fatto per la misura della temperatura, il ciclo di visualizzazione a display viene effettuato ogni 15 conteggi della variabile counter, infatti nel listato, tale parte di codice per essere eseguita è subordinata alla condizione if counter=15 then [codice] end if 68 Capitolo4 4.1 Dimensionamento dei componenti Dimensionamento componenti signal board In questo capitolo ci occuperemo del dimensionamento dei componenti costituenti l'intero circuito. Tutti i ragionamenti saranno riferiti allo schema numero dieci. Tutti i componenti aggiunti rispetto ai capitoli precedenti, verranno trattati mano a mano durante i vari punti. 4.1.1 Dimensionamento delle resistenze accessorie degli operazionali usati nei processi di feedback Dimensioniamo a questo punto le varie resistenze utilizzate per ottenere i guadagni dei vari stadi. Iniziamo a calcolare i valori usati negli operazionali che realizzano il feedback di corrente e di temperatura. In riferimento allo schema 10 calcoliamo il guadagno statico Ki. Dal paragrafo 2.4.4 relazione 11 sappiamo che Ki deve valere undici. Per garantirci un minimo di regolazione, al posto della resistenza di retroazione (R5) utilizziamo un trimmer multi giro. Avremo quindi che : Ki=1 R5 R5 quindi =10 R4 R4 Relazione 28: Per garantire il rapporto R5/R4 utilizziamo un trimmer multi giro da 50k per R5 e una resistenza da 3300 ohm per R4. In questa configurazione il guadagno massimo dello stadio,a trimmer tutto inserito, è dato dal rapporto 50000/3300 e vale circa 15. Nel caso del feedback di temperatura, Kt vale 5, come visto al paragrafo 2.4. Avremo quindi che il rapporto tra le resistenze dovrà valere : Kt =1 R2 R2 quindi =4 R3 R3 Relazione 29: E' buona norma che le resistenze utilizzate nelle reti degli operazionali, siano comprese tra 1 e 100k. Il limite inferiore non va superato per non drenare correnti eccessive, mentre quello superiore non va oltrepassato per l'insorgere di eccessivo rumore bianco ai capi dei resistori. Per non utilizzare un numero eccessivo di valori delle resistenze, utilizziamo lo stesso valore per R5 e R2, ad esempio 10k. Risulterà quindi che : R3= R2 10k R5 10k = =2,5 k e R4= = =1k 4 4 10 10 Relazione 30: 69 Schema 10: Schema elettrico della signal board 70 Nel caso di R4 prendiamo una resistenza di valore commerciale di 1200 ohm, in quanto possiamo compensare la discrepanza con il trimmer R5. Come valore di R3 prendiamo una resistenza commerciale da 2400 ohm, che realizza un guadagno dello stadio vicino a quello desiderato. Va inoltre ricordato che le resistenze hanno tolleranza del 5% e potenza ¼ Watt, ed è il motivo per il quale ogni stadio (eccetto la temperatura) dispone di trimmer per regolare in maniera corretta il guadagno. Per quanto riguarda il feedback in tensione, dal paragrafo 2.4 abbiamo che Kv vale un sesto. Utilizziamo quindi, per avere margini di taratura, un trimmer da 10k in serie a una resistenza da 5k sulla retroazione, mentre sui morsetti di ingresso usiamo una resistenza da 56k. In conclusione, useremo R12=R13=5k e R10=R11=56k. Sappiamo anche che deve valere l'uguaglianza vista nella relazione 8. Risulta quindi R28=R29=10k, R12=R13=5k, infine R10=R11=56k. In questo caso potremmo variare il guadagno da 0,26 a 0,09, che sono rispettivamente i valori limite con potenziometro tutti inserito e completamente escluso. Il valore di 1/6 (ossia 0,16) desiderato si trova in ogni caso nel range ottenuto, garantendo buoni margini di regolazione. 4.1.2 Dimensionamento del filtro attivo Durante vari test su bredboard siamo costantemente scesi con la frequenza di cutoff della cella sallen-key, da 1/10 della fpwm a scendere. Dopo vari test abbiamo scelto di utilizzare la configurazione con la fc più bassa, in corrispondenza della quale potevamo ancora usare condensatori non polarizzati. Tale frequenza è di circa 0,5Hz, circa 1/10000 della frequenza di pwm. Questa configurazione, pur garantendo una buona dinamica, permette di filtrare anche i disturbi in bassa frequenza provenienti dalla rete di alimentazione o irradiati da altre sorgenti in prossimità dell'alimentatore. In questa configurazione i valori delle resistenze sono i seguenti : R27=R7=220k, C7=1uF mentre l'ultimo condensatore, il cui valore è 2uF è costituito da un parallelo di 2 condensatori da 1uF (C28 e C29). Tutte le capacità sono di tipo ceramico, e le resistenze hanno tolleranza 5% e potenza massima di ¼ Watt. In questa configurazione, la frequenza di cut off vale, in riferimento alla relazione 15 : 71 fc= 1 2∗∗ R27∗R7∗C28C29∗C7 sostituendo i valori numerici 1 =1,28 Hz 2∗∗220∗10 ∗220∗103∗1∗10−6∗11∗10−6 3 Relazione 31: A questo punto è necessario dimensionare l'ultimo stadio di amplificazione (si ricorda che la cella sallen-key è a guadagno unitario). Il guadagno di questo stadio vale kpwm e deve portare l'uscita a 30V quando il dc è al 100%, ossia quando il valore medio in uscita dalla cella è di 5V. Dalla relazione 14 sappiamo che kpwm vale 6. Per realizzare questo guadagno, le resistenze del relativo stadio devono valere : R8 =6 R17 R9 Relazione 32: Utilizzeremo quindi una resistenza da 100k sul ramo di retroazione, accompagnata da un trimmer da 10k con in serie un ulteriore resistenza da 10k. In questo caso i guadagni realizzabili variano da 4 a 10 relativamente al fatto che il potenziometro sia completamente inserito o completamente escluso. Viene utilizzata una configurazione a guadagno variabile, questo perché prima di giungere ai morsetti di uscita, questa tensione va ancora decurtata di una serie di cadute, sintetizzabili nello schema di figura 20. Partendo dal segnale pwm, il segnale viene filtrato e poi amplificato, quindi ragionevolmente possiamo pensare di mantenerlo nel range 0-5V. Una volta uscito dal filtro, più precisamente dall'amplificatore del filtro, attraversa il bypass di segnale (transistor Q2), dove dal suo valore va sottratta la caduta Vbe. Arrivato al bypass di potenza, bisogna sottrarre un ulteriore caduta. Usciti dal generico ramo scelto sul bypass di potenza, dobbiamo ancora sottrarre la caduta sulla resistenza di emettitore, che può raggiungere anche valori elevati. Se supponiamo di stare erogando 10A, nel generico ramo avremo ¼ della corrente, che moltiplicata per il valore della resistenza collegata sull'emettitore del darlington (0,22 ohm) ci da una caduta massima di 0,55V. Va ulteriormente conteggiato lo shunt, che va collegato tra il morsetto negativo e massa, la caduta massima ai suoi capi sarà di 0,05 ohm moltiplicata per 10 ampere, ossia 0,5V. Stimando le cadute Vbe di 0,6V (che non è l'ipotesi peggiorativa) abbiamo che prima di arrivare in uscita perderemo ben 2,75V. Questo 72 giustifica il fatto di utilizzare il guadagno variabile per l'amplificatore del filtro attivo. Infatti basterà semplicemente tararlo per ottenere 30V nelle condizioni di massimo carico, andando a compensare le cadute sopracitate. Figura 20: Cadute di tensione tra ingresso e uscita 4.1.3 Linee di alimentazione Dimensioniamo ora la componentistica a corredo degli integrati usati per regolare la tensione sulla linea a +5V DC, e +30V DC. Sono stati utilizzati due integrati, un regolatore fisso per la linea a 5V, ossia un comune LM7805 e un LM317 con voltaggio regolabile per la linea a 30V. 73 Figura 21: Schema del regolatore di tensione lm7805 I calcoli che seguono sono riferiti alla figura 16. Segue una tabella con il significato dei vari parametri. Vingresso Tensione in ingresso al regolatore V Vuscita Tensione in uscita dal regolatore V Ia Corrente totale assorbita dal regolatore (somma di Ie+Iadj) A Ie Corrente erogata dal regolatore A Iadj Corrente assorbita dal regolatore per effettuare la regolazione A Rgc Resistenza termica giunzione/contenitore °C/W Rcd Resistenza termica contenitore dissipatore °C/W Rda Resistenza termica dissipatore ambiente °C/W Caduta ai capi del regolatore V Vingresso-Vuscita Tabella 12: Parametri del regolatore di tensione lm7805 Il 7805 è alimentato da un ponte a diodi monolitico (siglatoB1 nello schema) di capacità 1A, una corrente più che sufficiente per alimentare sia il pic che il display LCD. L'integrato è dotato di un 74 piccolo dissipatore passivo che ha resistenza termica Rda di circa 7,7°C/W La stima sulla dissipazione è stata fatta seguendo il seguente ragionamento. Da prove al banco, se il display LCD è completamente nero (tutte le celle accese), con retroilluminazione al massimo, la corrente che assorbe sulla linea a +5V DC è di circa 240mA per la retroilluminazione e di 5mA per l'elettronica di bordo. Il pic con l'uscita pwm attiva assorbe circa 10mA .Il totale risulta quindi di 255mA, arrotondiamo a 300mA nel caso siano contemporaneamente attive le uscite che pilotano il relè e la ventola (nei ragionamenti non consideriamo Iadj che è di pochi nano ampere). Considerando questa corrente, risulta anche dimensionato correttamente il ponte B1. Il 7805 alimenta anche il pin di MCLR, usato per mettere il pic in modalità di esecuzione del programma. Essendo la resistenza in oggetto R1 di 4700 la corrente drenata è trascurabile. Per il calcolo della dissipazione di potenza sul 7805 dovremo quindi conoscere, oltre la corrente massima erogata, la differenza tra tensione massima in ingresso e minima in uscita. Per quanto riguarda la tensione massima in ingresso, basta prendere il valore di picco dell'alternata dell'avvolgimento a 12V AC e aumentarla del 10% per le oscillazioni direte, quindi : Vingresso max7805=12∗ 2∗1,1=18V Relazione 33: La tensione minima in uscita dall'integrato, si rileva dal datasheet e vale : Vuscita min7805=4,8 V Relazione 34: La dissipazione varrà quindi, riferita alla corrente stimata di 700mA : Pd max 7805 =Vingresso max7805 −Vuscita min7805 ∗Ia max7805=18−4,8∗0,255=3,366 W Relazione 35: La temperatura massima raggiunta dall'integrato sarà quindi : T max7805 = RgcRcd Rda∗Pd max Ta=51,47,7∗3,36625=72,46 ° C Relazione 36: La temperatura massima che raggiungerà l'integrato risulta di 72,46°C che risulta di molto inferiore al limite di 125°C indicato sul datasheet. I condensatori C16, C4, C15 e C5 servono per migliorare la stabilità del regolatore. Ripetiamo gli stessi ragionamenti per quanto riguarda l'LM317. Il regolatore alimenta tutti gli operazionali e il transistor Q2 che fa parte del bypass della scheda di segnale. Come ipotesi peggiorativa, supponiamo che tutti gli operazionali abbiano l'uscita in corto circuito, quindi stiano 75 erogando la loro corrente massima, che è di 60mA. La somma di tutte le correnti sarà di 320mA. La corrente ai morsetti in uscita, va divisa nei 4 rami del parallelo dei darlington. Se ora dividiamo la corrente di ogni ramo per l' Hfe minimo del transistor, avrò la corrente massima richiesta dal transistor per il suo pilotaggio, quindi : Iout / 4 Iout 2,5 =2,5 A quindi = =5mA 4 Hfe mintip142 500 Se ogni ramo assorbisse 0,5mA, 4 rami per venire pilotati assorbirebbero 2mA, corrente trascurabile se confrontata con i 320mA supposti prima. Consideriamo, come per il 7805, trascurabile la Iadj, potremmo quindi scrivere : Vingresso max317=36∗ 2=50V Relazione 37: 36 volte radice 2 è il massimo valore che l'LM317 vede ai suoi capi, ossia la tensione di picco in uscita dal ponte a diodi della parte di potenza (trascuriamo come per il ponte di graetz della parte di segnale, la caduta sui diodi in conduzione). La tensione minima in uscita, sotto la quale non vogliamo mai scendere, è quella che ci permette di avere almeno 30V in uscita. Tale tensione è stata calcolata in precedenza, e vale circa 2,75V, per sicurezza maggioriamola e portiamola a 3V. Vuscita min317 =Vout3=33V Relazione 38: Regolando l'LM317 per ottenere questa tensione, la potenza dissipata massima varrà Pd max 317 =Vingressomax 317 −Vuscita min317 ∗Ia max317 =50−33∗0,320=5,44 W Relazione 39: La temperatura massima raggiunta dal corpo dell'integrato varrà quindi : T max317= RgcRcd Rda ∗Pd max317 Ta= 41,47,7∗5,4425=96,26 ° C Relazione 40: Anche in questo caso siamo sotto la temperatura massima ammessa che è di 125C°. Rispetto al caso precedente, dobbiamo calcolare le resistenze per poter regolare la tensione in uscita. Dal datasheet risulta che : 76 { Vuscita 317=1,25 1 } R16 R18 Iadj∗ R16R18 R6 Relazione 41: Come ipotesi peggiorativa consideriamo il secondo termine nullo, in quanto la Iadj risulta al massimo di 100 micro ampere. Utilizziamo come somma R16+R18 una resistenza da 3,9 k con in serie un trimmer multi giro da 2k. La resistenza R6 viene scelta di 220 ohm. In questa configurazione il range di escursione ottenibili, va da 22,72 volt con trimmer escluso a 35V con trimmer completamente inserito. Il range risulta più che sufficiente per compensare le cadute di figura 15. Il terminale di regolazione è bypassato dal condensatore C26 per evitare che il ripple venga amplificato durante la regolazione. I condensatori posizionati sull'ingresso e sull'uscita sono utilizzati, come per il 7805, per migliorare la stabilità. I diodi D5 e D6 sono diodi di protezione che evitano che le capacità si scarichino sul regolatore quando viene a mancare la tensione di alimentazione (D5 protegge dalla scarica di C10 e D6 dalla scarica di C28). L'ingresso dell'LM317 viene prelevato da un piccolo ponte a diodi di portata 1 ampere. Il fatto di non prelevare l'alimentazione dal ponte a diodi di potenza, risiede nel fatto che in tale condizione l'LM317 sarebbe alimentato dal banco di condensatori elettrolitici del filtro di potenza, di conseguenza, in condizione di ripple elevati, la tensione in ingresso potrebbe scendere a valori troppo bassi. Eccetto i valori delle resistenze, i valori dei condensatori sono stati in parte derivati dal data sheet e in parte scelti in seguito a varie prove. 4.1.4 Filtri livellamento In riferimento allo schema numero dieci, ci sono due filtri di livellamento, che servono rispettivamente il ponte a diodi della parte di potenza e il ponte a diodi della parte di segnale. In dettaglio il gruppo C3, C6, C11, C13, C14, C21 è il filtro di livellamento del ponte a diodi di potenza, mentre C8 e C9 sono collegati a valle del ponte a diodi che serve la scheda di segnale. Si porta a conoscenza che esiste anche anche un terzo ponte (da collegare tramite cablaggi), non presente nello schema elettrico, che fornisce la tensione all' LM317. Ci sono vari approcci per il dimensionamento dei condensatori di livellamento, il più diffuso è ragionare sugli esponenziali di carica e scarica dei condensatori, riferiti alla resistenza di carico e alla resistenza del secondario del trasformatore. Infatti si può immaginare il banco di condensatori che si carica attraverso il secondario del trafo e si scarica sul carico, con due costanti di tempo distinte. In base alla differenza tra le tau di carica e scarica avremo un determinato ripple, che può essere minimizzato facendo in modo che la tau di scarica sia sempre molto maggiore di quella di carica. Questo metodo seppur 77 analiticamente più corretto è di difficile soluzione. Esiste un altro metodo, che si basa su diagrammi, che per iterazioni successive ci porta al corretto valore di capacita per un determinato carico. Nel nostro caso si è deciso di usare un approccio diverso ma pure sempre valido. Immaginiamo che il carico sia un dispositivo che assorbe una corrente costante, indipendentemente dal valore di tensione al quale è alimentato. Analizziamo la seguente figura : v T' φφ Vmin Vr Vmax Vmin' t T Figura 22: Ripple sul filtro di livellamento Le linee nere rappresentano il profilo di scarica, la loro pendenza φè direttamente proporzionale alla corrente drenata dal carico. Più la corrente è elevata, più la pendenza e ripida, e raggiunge valori di Vmin bassi (linea blu, relativa al valore Vmin'), aumentando la Vr. Immaginiamo di posizionarci in un generico istante t, all'apice della sinusoide. In questo istante, la quantità di carica immagazzinata sarà : Q max=Ctot∗Vmax Relazione 42: Alla fine della scarica, la quantità di carica rimasta nel banco di condensatori sarà : Qmin=Ctot∗Vmax−Vr Relazione 43: A questo punto facciamo un ipotesi, ossia poniamo che T' coincida con T, anche se ciò non risulta 78 vero, in quanto T' è minore di T. Potremmo dire che la variazione di carica vale : Qmax−Qmin= I∗T '≈ I ∗T Relazione 44: Sostituendo la relazione 42 e 43 nella 44, otteniamo : Ctot∗Vmax−C Vmax−Vr =I∗T quindi Ctot∗Vmax−Ctot∗Vmax Ctot∗Vr= I∗T ricaviamoC I ∗T Ctot= Vr Relazione 45: Il dimensionamento di C si otterrà quindi dalla relazione 39, ponendo I uguale alla massima corrente che può circolare, ossia 10 ampere, T=0,01 secondi (l'onda ha periodo doppio della frequenza di rete, ossia 100Hz). Per Vr bisogna fare un ragionamento ulteriore, infatti il nostro obbiettivo è che il valore di Vr non ci porti mai al di sotto del valore Vmin. In ogni caso, essendo l'uscita dell'alimentatore regolabile tra 0 e 30 volt, appare sufficiente fissare la Vmin a 40V. Come Vmax utilizzeremo la tensione massima in uscita dal ponte, con le condizioni più sfavorevoli, ossia con la caduta massima sui diodi di potenza e la tensione di rete al 10% sotto il valore nominale. Considerando il secondario del trafo a 36V, nella condizione più sfavorevole avremo 36V decurtato del 10% ossia 32,4V. Da questa tensione dobbiamo sottrarre la caduta sui diodi del ponte (essendo un full bridge dobbiamo moltiplicarla per 2) che in condizioni sfavorevoli vale 1V per ogni diodo. Avremo quindi che ai capi del banco di condensatori la tensione minima varrà 30,4V moltiplicato per radice 2 ossia circa 42 volt. In questo caso, fissata la Vmin a 40V, il ripple ammissibile varrà solamente 2V, quindi il banco di condensatori dovrà avere una capacità di : C= I ∗T 0,01∗10 = =0,05 F Vr 2 Relazione 46: A livello sperimentale, in ogni caso per questa prima release del progetto, utilizzeremo 4 capacità elettrolitiche da 10.000uF con in parallelo altre due capacità di tipo diverso. Una è costituita da un piccolo condensatore in poliestere, mentre l'altra è un elettrolitico di misura ridotta. L'uso di vari condensatori in parallelo, che vanno a formare la grossa capacità richiesta, si rende necessario per ridurre l'ESR totale del banco, mentre parallelare condensatori più piccoli e di tipo diverso, è utile per eliminare disturbi e oscillazioni a frequenze diverse da quella della rete. Infatti i condensatori ceramici e in poliestere, dispongono di un ESR ridotto, e sono più adatti a filtrare rumore a 79 frequenze alte, rispetto agli elettrolitici che lavorano bene in bassa frequenza. A livello di schema si notano quindi 4 capacità da 10.000uF in parallelo (C3, C11, C13 e C14) a una capacità al poliestere (C21) da da 100nF e un elettrolitico da 220uF (C11). Il compromesso migliore si ottiene in ogni caso solamente per via sperimentale. Tutte le capacità devono avere una tensione di lavoro maggiore della massima tensione in uscita dal ponte, in questo caso considereremo la tensione di rete maggiorata del 10% e la caduta sui diodi del ponte nulla, quindi la tensione di lavoro dei condensatori dovrà essere maggiore di 36V più il 10%, moltiplicato per radice 2 ,ossia 56V. Per quanto riguarda il ponte a diodi B1 valgono gli stessi ragionamenti. In questo caso la capacità si ricaverà sempre dalla relazione 40. Con riferimento alla corrente, utilizzeremo quella stimata in precedenza al paragrafo 4,4 ossia la Ia(max) del 7805. La tensione minima in arrivo sul 7805, viene nuovamente calcolata ponendo la caduta sui diodi del ponte a 1V ciascuno, e considerando la tensione minima ai capi dell'avvolgimento a 12V ridotta del canonico 10%. Otteniamo quindi : C= I max7805 ∗T Vr Relazione 47: Decurtiamo la tensione a 12V sul secondario del 10%, arriveremo a 10,8. Sottraiamo ancora 2V di caduta sui diodi del ponte e arriviamo a 8,8. Moltiplicando per radice 2 avremo la tensione massima disponibile sul banco dei condensatori, ossia 12,44V. Poniamo che sul 7805 non si scenda mai al di sotto dei 10V, quindi partendo dal valore di cresta minimo di 12,44 non dovremo mai superare il seguente valore di ripple, ossia 12,44-10=2,44V. Per sicurezza poniamo il valore del ripple a 2V. Sostituendo nella relazione 41 i dati (si ricorda che I(max)7805 vale 0,255A), avremo che il banco dei condensatori deve essere almeno di 1270uF. Utilizzeremo quindi analogamente al caso precedente, due condensatori da 680uF. Non è necessario usarne uno di tipo ceramico di piccola capacità poiché sono già presenti all'ingresso del 7805. In questo caso i condensatori dovranno avere una tensione nominale maggiore di 12V, maggiorati del 10% (consideriamo nuovamente nulle le cadute sui diodi del ponte), ossia almeno 13,2V. 4.1.5 Resistenza di scarica dei condensatori E' stata anche prevista una resistenza di scarica per il banco di condensatori di potenza. Infatti vista la grande capacità del banco, la tensione può rimanere elevata anche per giorni dopo lo spegnimento del dispositivo. Si utilizza un piccolo relè in alternata, collegato sull'avvolgimento a 12 volt del 80 trafo come nella seguente figura. Quando il circuito è alimentato, il relè si eccita e disconnette la resistenza di scarica Rsc. Quando viene levata alimentazione, il secondario del trafo non può più mantenere eccitato il relè, quindi il contatto torna a chiudersi e il banco di condensatori si scarica su Rsc. Figura 23: Relè di scarica dei condensatori Se supponiamo di voler scaricare il banco di condensatori in cinque minuti, assumendo come tempo di scarica 6 tau, allora possiamo scrivere 6∗tau scairca=Ctot∗Rsc quindi Rsc= 6∗tau scarica 300 −6 = ∗10 =7500 ohm Ctot 40000 Relazione 48: La potenza massima istantanea che dovrà poter dissipare Rsc verrà calcolata ipotizzando che i condensatori siano carichi al valore la tensione di cresta della sinusoide (ipotizziamo come fatto in precedenza la tensione di caduta diretta dei diodi del ponte nulla). P maxrsc = V maxrsc 2 36∗ 22 = =0,34 W Rsc 7500 Relazione 49: Utilizzeremo quindi una resistenza da ½ watt del valore commerciale di 6800 ohm. 4.1.6 Condensatori di Bypass o disaccoppiamento Dallo schema si nota che ogni integrato, contiene 2 operazionali, e in parallelo ai suoi morsetti di alimentazione, sono posizionati dei gruppi di condensatori. Questi paralleli di condensatori, servono 81 per evitare che i disturbi sulla linea di alimentazione degli operazionali vadano a interessare la linea di segnale. Spesso infatti, i disturbi entrano nella catena di amplificazione proprio attraverso le linee di alimentazione dell'operazionale, con il risultato di venire anche essi amplificati e sovrapposti al segnale di uscita. Tali condensatori non rivestono solamente importanza perché schermano il dispositivo, ma hanno anche il compito speculare di evitare che disturbi in radio frequenza si irradino dal dispositivo alla linea di alimentazione che lo serve. Questo secondo caso si nota nel pic, che utilizzando una linea di segnale pwm, durante il funzionamento irradia disturbi elettro magnetici che inevitabilmente finiscono sui suoi pin di alimentazione e da li si irradiano nel resto del circuito. Esistono varie tecniche per stimare il valore di tali condensatori, in ogni caso non esistono calcoli precisi, ma occorre ragionare tenendo presente che : ● I condensatori di disaccoppiamento vanno collegati a ridosso dei pin di alimentazione del dispositivo da proteggere, in ogni caso il più vicino possibile minimizzando l'induttanza serie il più possibile. A questo compito sono adatti i condensatori ceramici, di valore dai 10nF a 1uF ● Qualora il disaccoppiamento non sia sufficiente, occorrerà utilizzare più condensatori di tipo e capacità diversa con lo scopo di aumentare la banda dove il disaccoppiamento è reso con efficacia. Nel nostro caso, dopo varie prove abbiamo utilizzato il secondo metodo, ossia abbiamo utilizzato una piccola batteria di condensatori ceramici, di varie capacità. Nel dettaglio ogni integrato contenente operazionali, è bypassato da un parallelo di tre condensatori ceramici (tranne IC4 che non ha dato particolari problemi a funzionare con la soluzione singola) rispettivamente di valore 0,1uF, 10nF e 1nF. Con il pic i risultati migliori si sono ottenuti con un condensatore singolo da 0,1 uF. Anche in questo caso i condensatori devono avere tensione minima di 56V, visto che sono collegati sulla linea con tensione più elevata. 4.1.7 Protezione adc La protezione degli adc è realizzata con dei semplici diodi zener. Il dimensionamento consiste semplicemente nel calcolare la resistenza di limitazione. Per prima cosa utilizziamo uno zener che non rubi risoluzione all'adc, quindi con tensione di soglia minima maggiore di 5 volt. Utilizziamo quindi degli zener da 5,6 volt, con tensione di soglia minima di 5,1 volt. Dal datasheet la corrente di zener vale circa 5mA. Supponiamo quindi che oltrepassata la tensione minima di zener, ossia 5,1 volt il diodo vada in conduzione. In riferimento al seguente schema potremmo calcolare la 82 Figura 24: Diodo zener per la protezione degli adc resistenza Rz da porre in serie al generico dispositivo. Risulta quindi : Rz= V max 7805 −Vz min Iz Relazione 50: Le condizioni peggiori sono quelle in corrispondenza di Vz(min), per le quali deve pur sempre essere garantito l'intervento del diodo. Iz è fissata a 5ma, mentre Vmax stabiliamo che sia 5,2V (gli adc sono già internamente protetti contro superamenti di tensione, in ogni caso abbiamo preferito una protezione aggiuntiva. La relazione 42 diventa quindi : Rz max = 5,2−5,1 =20 ohm 5∗10−3 Relazione 51: Questo è il massimo valore di resistenza da non superare per garantire l'intervento nelle condizioni viste sopra. Vista l'esigua corrente, risulta sufficiente l'uso di una resistenza da ¼ di watt del valore commerciale di 22 ohm. In riferimento allo schema 10 le resistenze in esame sono R21, R20 e R19. Supponendo infine che un operazionale fissi la sua uscita alla tensione di alimentazione (a causa di un guasto ad esempio) della linea s30v. Ricordando che gli operazionali erogano al massimo 60 mA, l'eventuale potenza dissipata dal diodo sarà : Pd max zener= I maxlm358 2∗Rz max =60∗10−32∗20=72 mW Relazione 52: 83 Potenza che risulta largamente inferiore agli 1,3 watt che il diodo può dissipare. Sapendo inoltre che la resistenza termica del diodo nei confronti dell'ambiente è di 130°C/W, nella peggiore delle ipotesi il diodo arriverà alla temperatura di : T max zener=Pd max zener∗130 ° C / W Ta=72∗10−3∗13025=34 ° C Relazione 53: Essendo la temperatura massima ammissibile dalla giunzione di 150°C possiamo confermare il corretto dimensionamento. 4.1.8 Transistor di bypass della scheda di segnale In dettaglio abbiamo 3 transistor di bypass : ● Bypass segnale costituito da Q2, pilotato da IC4B, che pilota i transistor di potenza ● Bypass delle porte del pic, ossia Q3 e Q4 che pilotano rispettivamente la ventola e il relè di commutazione dei secondari In tutti i casi sono utilizzati dei transistor NPN di segnale, del tipo BC548. Il Q2 non dispone di resistenze di polarizzazione, vista la sua connessione. Q3 e Q4 dispongono di un unica resistenza per limitare la corrente che circola nella base. Tale resistenza deve essere dimensionata in funzione del carico, in maniera che permetta la circolazione di corrente necessaria nelle condizioni più sfavorevoli. Nel caso di Q3, il carico è costituito dalla bobina del relè. La resistenza della bobina è di circa 400 ohm. Collegando il relè a 12V, ossia la sua tensione nominale, nella bobina scorrono 12/400, ossia 0,03 ampere. Il relè è collegato con un capo della bobina a 12V, mentre l'altro capo è collegato al collettore di Q3. Quando la porta del pic è a 0 volt, il relè è isolato da massa, quindi diseccitato. Quando la porta del pic viene posta a uno (ossia fissata a 5 V), inizia a circolare corrente in base, limitata solamente dalla resistenza R4. Tale resistenza dovrà garantire che in condizioni di Hfe minimo nel collettore possa scorrere almeno una corrente di 0,03 ampere (ossia che siamo in saturazione).Considerando che l'uscita del pic a livello alto vale +5V (nel dettaglio siamo sul pin 18), l'equazione alla maglia di Q3 sarà (vedi schema 10) 5−R14∗I b−Vbe=0 quindi R14 vale R14= 5−Vbe Ib Relazione 54: Siccome ogni porta del pic non può erogare più di 25ma, assumiamo il limite cautelativo di 10ma, quindi la resistenza R14 limiterà Ib a questa corrente. Considerando dal datasheet la Vbe di 84 saturazione massima, ossia 0,9V avremo che R14 dalla relazione 44 varrà 410 ohm. In questa situazione nel collettore, considerando l' hfe minimo (110), possono scorrere ben 1,1 ampere, corrente che ragionevolmente è più che sufficiente al relè per eccitarsi. Gli stessi ragionamenti andranno seguiti per il calcolo di R15, del transistor Q4. In questo caso la ventola è collegata per un capo a +12V, mentre il restante terminale è collegato al collettore di Q4. Essendo la ventola alimentata da un elettronica propria, non è possibile determinare una resistenza costante che la rappresenti. Dobbiamo semplicemente accontentarci dei dati presenti sulla carcassa, che sono la tensione di alimentazione, 12 volt e la corrente nominale, ossia 0,13 ampere. Appare utile riutilizzare i calcoli del transistor Q4, consapevoli del fatto che il dimensionamento della sua resistenza di base garantiva una corrente di collettore di 1,1 ampere, la stessa resistenza risulta più che adatta anche nel caso della ventola. Quindi possiamo concludere che R14 e R14 possono essere due resistenze con un valore commerciale di 470 ohm, con potenza ¼ di watt. Va notato che ai capi della bobina del relè è posto un diodo di ricircolo per evitare che durante la commutazione del relè, le sovratensioni danneggino Q3. 4.2 Dimensionamento componenti power board In questo paragrafo andremo a determinare i valori dei componenti presenti sulla power board. Lo schema di riferimento è il numero 11. p30v Vce Iout/4 Vmis Vre Filtro uscita Iout Vce Vsk* Vsk* Schema 11: Schema elettrico della power board 85 4.2.1 Transistor di potenza I transistor costituenti i finali di potenza sono degli NPN modello TIP142 con connessione interna di tipo darlington. La corrente massima che può percorrere il collettore di questo tipo di transistor è di 10 ampere. Con il collegamento dello schema 11 la corrente massima erogata dall'alimentatore, proveniente dal banco dei condensatori di potenza viene divisa in 4, quindi ogni ramo del parallelo è impegnato da 2,5 ampere (quando l'alimentatore si trova ad erogare la sua corrente massima). Non essendo i transistor perfettamente simmetrici, a causa delle tolleranze costruttive, come detto in precedenza, dobbiamo prevedere delle resistenze per equilibrare il parallelo. Tali resistenze sono numerate R23, R24, R25 e R26, per il calcolo della massima potenza dissipata dal generico transistor, dovremo quindi moltiplicare la corrente del ramo per la Vce del transistor. La Vce si ottiene sottraendo dalla tensione presente ai capi del banco di condensatori elettrolitici che servono la parte di potenza (linea p30v), la tensione in uscita. La potenza dissipata si ottiene moltiplicando tale tensione per la corrente massima del ramo. In un ottica peggiorativa, supponiamo che : ● Tensione in uscita a zero, ipotizziamo che stia scorrendo la massima corrente con un dc del segnale pwm vicino a zero ● Corrente nel generico ramo uguale al massimo valore teorico, ossia Iout/4 ● Tensione della linea p30v al massimo. I Pd maxtip142 =Vce max∗I maxtip142 =18,6∗2,5=46,6 W Relazione 55: La tensione sul collettore, per basse tensioni, proviene dal secondario a 12V AC e non il 36V AC, grazie alla commutazione tra i secondari In questo caso supponendo la caduta sui diodi del ponte di potenza nulla, e la maggiorazione della tensione di rete del 10% si trova appunta la tensione di 18,6 V. A livello di dissipazione di potenza, dal datasheet risulta che la potenza massima dissipabile dal collettore è di 125W, quindi il parallelo di 4 elementi è sufficiente per rimanere nei limiti imposti dal produttore. Va ricordato che la giunzione non deve, in nessun caso, oltrepassare la temperatura di 150°C. Si fa presente che se non avessimo adottato il sistema di commutazione dei secondari, nelle stesse condizioni la potenza dissipata sarebbe stata : Pd max tip142 =Vce max∗I maxtip142 =18,6∗2,5=140W Relazione 56: Questo da conferma che un solo elemento non è sicuramente sufficiente a gestire la corrente di 10 ampere nella condizione peggiore. 86 Noto che la resistenza termica tra giunzione e case vale 1°C/W, possiamo stimare che la resistenza di contatto tra transistor e dissipatore valga circa 0,4°C/W (valore comune per transistor con corpo metallico con interposta mica isolante e pasta tra corpo e dissipatore). Il dissipatore usato è un dissipatore commerciale da 0,25°C/W. La temperatura raggiunta dal singolo transistor sarà quindi : T maxtip142 = RgcRcd Rda ∗Pd max tip142 Ta=10,40,25∗46,625=101 °C Relazione 57: Abbiamo quindi verificato che la temperatura raggiunta dalla giunzione nel caso peggiore non oltrepasserà la temperatura limite di 150°C. Senza l'uso della commutazione tra le prese del secondario, sarebbe stato impossibile raffreddare efficacemente i finali, se non aumentandone il numero e i relativi dissipatori. Rimane ancora da determinare il valore delle resistenze di emettitore per diminuire il mismatch tra le correnti dei vari rami. Ammettendo di voler perdere al massimo 0,5 volt su ogni elemento, avremo che le resistenze dovranno valere : Rem 0,5 0,5 / 2,50,2 ohm Iout / 4 Relazione 58: La potenza massima che ogni resistenza deve poter dissipare vale : Pd max Rem=Rem∗ Iout 2 max 2 10 =0,22∗ =1,375 W 4 4 Relazione 59: Dalla relazione 59, risulta quindi che il valore di 3 watt è sufficiente. Per ottimizzare la dissipazione termica utilizziamo delle resistenze di tipo corazzato, ossia contenute in un package metallico dotato di radiatore. Va notato che le resistenze utilizzate, devono avere innanzi tutto una bassa tolleranza, questo perché il parallelo dei darlington deve essere il più possibile bilanciato. L'uso di componenti con una tolleranza troppo alta, ad esempio oltre il 10% rappresenta un serio pericolo, sopratutto vista la bassa entità del valore richiesto. Basta pensare che il 10% di 0,22 ohm significa che il minimo e il massimo possono valere rispettivamente 0,198 e 0,242 ohm. Nel caso del minimo, significherebbe che la corrente tenderebbe a percorrere interamente quel ramo portando velocemente alla distruzione del BJT. Risulta quindi intuitivo che le resistenze di stabilizzazione sugli emettitori, oltre ad essere essenziali vanno opportunamente scelte, sopratutto in termini di valore e tolleranza. Commercialmente la nostra scelta è ricaduta su quattro resistenze a filo da 0,22 ohm. La potenza di queste resistenze è di 25W alla temperatura di 75°C . Un altro punto molto importante, è che questi componenti devono avere un ottimo 87 coefficiente di temperatura (ossia l'indice che indica la variazione della resistenza in funzione della temperatura, solitamente espresso in parti per milione per grado centigrado ppm/°C.) 88 Capitolo5 Realizzazione e collaudo 5.1 Realizzazione del pcb Procediamo ora con la realizzazione pratica del circuito. Innanzi tutto, per la costruzione del PCB abbiamo utilizzato la tecnica della fotoincisione, che ora andremo brevemente a descrivere. I PCB grezzi utilizzati in questa tecnica sono formati da tre substrati, il primo substrato di vetronite funge da supporto fisico per il circuito. Sopra di esso è quindi depositato uno strato di rame, dal quale andremo a ottenere, tramite apposito procedimento, le piste di rame. Infine, l'ultimo strato, è una sottile pellicola di vernice scura, comunemente riconosciuta con il nome di fotoresist. La sequenza per ottenere il circuito stampato è la seguente : 5.1.1 Realizzazione del master La prima fase è quella di utilizzare un software specifico, per disegnare lo schema elettrico, derivando da esso lo sbroglio delle piste che andremo ad applicare al PCB grezzo. Nel nostro caso abbiamo usato il software Eagle Layout Editor, Tramite il quale è possibile disegnare sia lo schema elettrico che il layout dello stampato. Prima di iniziare a disegnare lo schema è necessario munirsi di tutti i componenti e verificare se sono presenti nella libreria del software, e che le dimensioni geometriche coincidano. In caso contrario è necessario crearli manualmente. Dopo il disegno dello schema elettrico, si passa alla sezione del software che gestisce lo sbroglio delle piste. Inizialmente tutti i componenti sono svincolati, e rimane a noi dare una posizione iniziale a ognuno di essi. Fatto questo si può iniziare a disegnare le varie piste che uniscono i componenti. Ovviamente ogni pista va dimensionata, in larghezza, in funzione della corrente che dovrà percorrerla. Per questo le piste che alimentano componenti di potenza devono essere più ampie, sia per poter condurre più corrente, sia per poter essere stagnate, in modo da aumentarne la sezione. Il risultato di questo lavoro è visibile in figura 25. Il condensatore C22 è stato posizionato per rendere visibile gli “elastici” che il software inserisce all'atto della stesura dello schema elettrico. Il componente andrà poi piazzato nella posizione migliore, e gli “elastici” andranno sostituiti dalle piste vere e proprie che andremo a disegnare. Nel nostro caso abbiamo realizzato, per minimizzare i costi, uno stampato a singola faccia. E' anche possibile usare una funzione di autorouting, ma non è efficiente e prevede la realizzazione di troppi ponticelli. La soluzione migliore, anche se più lunga rimane quella di fare il routing delle tracce in modalità manuale. Una volta che la disposizione è completata e le piste 89 tracciate, si può passare alla creazione del master. Il master è costituito esclusivamente da una stampa su acetato del solo layout costituente le piste di figura 25. Il layout si ottiene disattivando i vari layer (componenti, valori....) e stampando solo il layer che rappresenta le traccie di rame. Il risultato è visibile in figura 26. Signal Board Power Board Figura 25: Layout e disposizione componenti dei PCB 90 Signal board Power Board Figura 26: Lato piste dei PCB 5.1.2 Fotoincisione A questo punto, ottenuto il master, possiamo passare alla fotoincisione. Per questa operazione, è necessario l'uso di uno strumento chiamato bromografo, banalmente un contenitore dotato di un set di lampade UV e dei dispositivi per la loro accensione (starter e reattori). La disposizione del master all'interno del bromografo si evince facilmente dalla figura 27. Il vetro viene utilizzato per mantenere il master aderente alla basetta. Prima dell'incisione vera e propria vengono fatte una serie di prove di esposizione su sfridi di pcb pre sensibilizzato, dello stesso tipo di quello usato nell'incisione definitiva, questo al fine di determinare con precisione l'esposizione corretta. Durante questo processo, i raggi UV attraversano il vetro e giungono alla basetta solamente nelle zone trasparenti del master in acetato, visto che la zona delle piste è protetta dalle tracce nere stampate sul master. Il fotoresist colpito dai raggi UV va incontro a una trasformazione che lo rende aggredibile da una soluzione diluita di soda caustica. Il fatto che il fotoresist, irradiato dai raggi UV 91 venga sciolto dalla soluzione di soda, fa si che solamente il rame protetto dalle tracce nere del master rimanga protetto dalla pellicola del fotoresist. A questo punto non resta che lavare il pcb in acqua, asciugarlo e immergerlo in una soluzione di tricloruro ferrico, che aggredirà solo il rame “scoperto” consumandolo fino ad arrivare al substrato di vetronite. Alla fine dell'erosione rimarranno solo le piste del master. Il risultato è visibile in figura 28. Figura 27:Principio di funzionamento della foto incisione Figura 28: PCB della signal board al termine del bagno nell'acido 92 5.1.3 Foratura e stagnatura La fase finale di questa parte è la foratura del pcb, per accogliere i reofori dei componenti. Sono state utilizzate per questo scopo un set di punte da 0,5 a 1,5 mm per adattare i fori ai vari componenti. Una volta completata la foratura, il PCB va sgrassato e ripulito da ogni impurità con del comune solvente. Prima di procedere alla stagnatura delle piste dei componenti di potenza e di tutto il resto, le traccie vanno leggermente strofinate con della carta vetro fine per renderle rugose, in maniera che lo stagno si attacchi più facilmente al rame. Il risultato, parziale, di questa fase si può osservare in figura 29. Nella parte bassa della figura si può osservare tutta la stagnatura della sezione che accoglie il banco di condensatori costituenti il filtro di potenza del raddrizzatore principale Figura 29: Stagnatura delle piste del PCB 93 5.2 Completamento del prototipo Il completamento del prototipo passa attraverso la completa saldatura di tutti i componenti ed i cablaggi tra la signal board e la power board. Una volta completata questa fase si è proceduto alle verifiche finali e alle tarature. 5.2.1 Verifiche e tarature Una volta completate tutte le saldature, è stata data tensione al circuito, avendo l'accortezza di non collegare i circuiti integrati, ossia gli operazionali e il micro controllore. E' stato verificato con una sonda termometrica che nessun componente si surriscaldasse e che le tensioni in ingresso e uscita dai regolatori di tensione che servono le funzioni del circuito fossero corrette. Infine abbiamo proceduto alla verifica dell'isolamento tra il corpo dei transistor di potenza e il dissipatore di calore. Completata questa verifica è stato scritto un semplice software privo di retroazione che si limitasse solamente a regolare la tensione in uscita in funzione del valore impostato dal potenziometro della regolazione di tensione. Questo è stato fatto per poter tarare tutti gli operazionali tramite i rispettivi trimmer. Sarebbe infatti stato impossibile effettuare una taratura corretta se l'anello fosse stato chiuso, in quanto la retroazione avrebbe costretto il circuito continuamente in regolazione. Il software usato è stato il seguente : program pwmtest dim vimp as word dim duty as word 'Routines per Gestione pwm a 10 bit sub procedure PWM_10bit(dim duty as word) CCP1CON = 0 'reset del pwm' T2CON=%00000100 PR2=255 'imposto freq pwm (19.53khz -> 10 bit)' CCP1CON.5 = %00000001 and duty 'CCP1CON 2 LSB of pwm' CCP1CON.4 = %00000001 and (duty >>1) 'CCP1CON 2 LSB of pwm' CCPR1L=%11111111 and (duty>>2) '8 msb pwm' CCP1CON.2=1 CCP1CON.3=1 94 end sub main: adcON1=$82 'setto le trisC come uscite' trisc=0 'setto le trisA (2adc+2potenziometri)che uso come ingressi' trisa.0=1 trisa.1=1 trisa.2=1 trisa.3=1 trisa.4=1 'attivo relè di commutazione per fissare al max' portc.3=1 voltagering: vimp=adc_read(0) delay_ms(5) duty=vimp PWM_10bit(duty) goto voltagering end. Una volta caricato il software nel pic, abbiamo provveduto a portare il pwm al 100% e a regolare l'operazionale IC4B (riferiti allo schema numero 10) affinché il suo guadagno portasse in saturazione l'uscita, tarando quindi il massimo valore di tensione che l'alimentatore può fornire. Per passaggi successivi abbiamo poi compensato la tensione di alimentazione degli operazionali, tramite il trimmer di regolazione dell'LM317 per poter raggiungere il fondo scala di 30 volt prefissato in fase di progetto. Ottenuto questo abbiamo regolato i trimmer del feedback di tensione in modo da far coincidere alla tensione in uscita di 30 volt il valore di 5 volt, ossia il fondo scala dell' adc. Fatto questo siamo passati al funzionamento sotto carico, questo per poter tarare il feedback di corrente, in maniera da far coincidere alla massima corrente di 10 ampere il valore di 5 volt in uscita dal circuito di condizionamento di corrente. Rispettivamente la regolazione del 95 feedback di tensione e di corrente, si ottiene agendo sui trimmer R5, R28 e R29. Durante il funzionamento sotto carico, è stata progressivamente aumentata la tensione di alimentazione degli operazionali (unitamente al guadagno di IC4B), per compensare le cadute viste nel paragrafo 4.1.2 .La taratura del feedback di temperatura è stata effettuata utilizzando come riferimento un termometro ad infrarossi. E' stato fatto funzionare l'alimentatore a piena potenza privo di ventilazione, dopo di ché una volta che il corpo del transistor più caldo ha raggiunto la temperatura di 80°C è stata misurata la temperatura del dissipatore. Tramite il software, visto che il feedback di temperatura non ha regolazione, abbiamo fatto poi in maniera che il programma avviasse la ventola non appena il feedback di temperatura misurasse quel determinato valore. Il circuito completo, con tutti i cablaggi è visibile nella seguente immagine, nel montaggio al banco. Figura 30: Montaggio al banco dell'alimentatore 5.3 Test di funzionamento In questo ultimo paragrafo andremo ad analizzare il funzionamento del circuito a vuoto e a carico, utilizzando per l'occasione carichi puramente ohmici, induttivi, misti e apparecchiature che 96 irradiano radio frequenza, il tutto per avere una verifica tangibile del corretto funzionamento dell'alimentatore. Durante i test è stato inserito un fusibile sulla linea di alimentazione del collettore dei transistor di potenza, questo per evitare che problemi alla retroazione del sistema portassero a danneggiare i finali. 5.3.1 Qualità della Forma d'onda in uscita Questo test si propone di verificare se, durante il funzionamento, il valore di tensione dell'uscita rimane stabile, valutandone il ripple. I test sono stati effettuati a partire dalla minima tensione in uscita, incrementando il dc generato dal pic dallo 0 al 100% . Vengono di seguito riportati i valori corrispondenti ai seguenti dc, ossia 0, 20, 40, 60 e 100%. Per le misure è stato utilizzato un oscilloscopio doppia traccia. La sonda uno è stata collegata sui morsetti di uscite, mentre la sonda due è stata collegata a monte del filtro attivo, per poter visualizzare il valore del dc del segnale pwm. Figura 31: Forma d'onda di uscita e del segnale pwm (20us/div – 200mV/div) dc=0% 97 Figura 32: Forma d'onda di uscita e del segnale pwm (20us/div – 200mV/div) dc=20% Figura 33: Forma d'onda di uscita e del segnale pwm (20us/div – 200mV/div) dc=40% 98 Figura 34: Forma d'onda di uscita e del segnale pwm (20us/div – 200mV/div) dc=60% Figura 35: Forma d'onda di uscita e del segnale pwm (20us/div – 200mV/div) dc=80% 99 Figura 36:Forma d'onda di uscita e del segnale pwm (20us/div – 200mV/div) dc=100% Il carico utilizzato per le prove è costituito da una resistenza variabile, la corrente in ogni prova è stata fissata al 75% della corrente massima erogabile, inoltre le prove sono state eseguite mantenendo sempre attiva la ventilazione del dissipatore. La scelta di un carico puramente ohmico è dettata dal fatto che utilizzando dispositivi attivi, quali motori o altri dispositivi elettronici, la forma d'onda in uscita risulta deformata dal loro funzionamento, impedendo di fatto le valutazioni. Possiamo notare che la forma d'onda (traccia 1) si mantiene pressoché costante ed esente da ondulazioni. Per tutti i valori di dc (traccia 2) notiamo la presenza di uno spike, di ampiezza variabile, ai vari valori di tensione. L'ampiezza dell'impulso varia, durante il funzionamento, da pochissimi milli volt a circa 800mV picco picco, mentre il suo periodo è di circa 3kHz (17 divisioni da 20 micro secondi). Dopo un attenta analisi, abbiamo scoperto che la causa di tale picco è dovuto alla pessima qualità del motore brushless utilizzato dalla ventola montata sul dissipatore di calore. In ogni caso l'ampiezza del picco, vista la sua alta frequenza, non provoca nessun problema di funzionamento ne all'alimentatore ne ai carichi collegati. Va fatto notare che isolando la ventola dal circuito, utilizzando un piccolo alimentatore dotato di un trasformatore di isolamento, il disturbo si riduce notevolmente. Purtroppo parte del disturbo viene irradiata dalla ventola come disturbo elettromagnetico, andando sempre a interessare il segnale di uscita con un fastidioso rumore di fondo. Il problema non viene completamente risolto neanche con ventole di fattura migliore, in ogni caso va ribadito che tali disturbi non sono significativi come detto in precedenza. Non è stato possibile effettuare test a piena potenza poiché non abbiamo reperito nessun carico in grado di 100 assorbire stabilmente 10 ampere in modo continuativo ai vari valori di tensione. 5.3.2 Prove termiche Con questo test abbiamo voluto verificare se i transistor di bypass finali potessero garantire il corretto funzionamento in corrispondenza della massima corrente erogata. Per condurre il test abbiamo usato come carico, una resistenza a filo da 0,05 ohm. Abbiamo quindi progressivamente aumentato la tensione in uscita per gradi, fino ad avere la massima corrente erogabile. La temperatura è stata misurata ad intervalli regolari, avendo cura di attendere un tempo sufficiente affinché i transitori termici si esaurissero. Prima di eseguire la prova, è stato applicato uno strato di pasta termo conduttiva tra la mica isolante di ogni transistor e il dissipatore e tra il transistor stesso e la medesima. Lo stesso è stato fatto tra il corpo di ogni resistenza corazzata e il dissipatore. Il risultato di questa prova è riassunto nella seguente tabella (ogni colonna corrisponde a un transistor) : Corrente [A] 1 3 5 7 9 10 T1 [°C] T2 [°C] T3 [°C] T4 [°C] 32,5 33 33 33 36,5 37 37 37 38 38 38 38,5 39,5 40 40 40 40,5 41 41 41 45 45,5 45,5 46 Tabella 13: Prova riscaldamento transistor finali Dalla tabella 13 possiamo notare che esiste una buona simmetria nel parallelo dei transistor, in quanto non vi sono mai differenze di temperatura sostanziali tra i vari componenti. Le prove sono state effettuate con la ventilazione forzata, alla temperatura ambiente di 27°C. I dati ottenuti dimostrano che il dimensionamento del dissipatore e la suddivisione della corrente erogata in 4 rami permettono agevolmente di mantenere i transistor all'interno della loro SOA. Riportiamo di seguito anche il grafico che mostra la parziale sovrapposizione delle curve, andando a visualizzare graficamente la buona ripartizione del calore tra i quattro transitori. 101 50 45 temperatura [°C] 40 35 30 T1 [°C] 25 T2 [°C] 20 T3 [°C] T4 [°C] 15 10 5 0 0 2 4 6 8 10 12 corrente [A] Figura 37: Grafico riscaldamento transistor finali 5.3.3 Test di protezione da sovracorrenti Una caratteristica molto importante di questo progetto è che la protezione da sovracorrenti è realizzata interamente dal software del micro controllore e senza l'ausilio di componentistica esterna. Per l'esecuzione della prova abbiamo utilizzato una carico resistivo che in corrispondenza della massima tensione in uscita facesse erogare all'alimentatore una debole corrente di circa 10mA. Abbiamo successivamente ridotto il valore della corrente impostata sui comandi al limite superiore entro il quale l'alimentatore non decrementava la tensione in uscita, ossia il valore limite tra funzionamento come generatore di tensione e generatore di corrente. In questa condizione, ogni variazione della resistenza del carico, verso il basso, porterebbe la corrente ad oltrepassare la soglia impostata. In tale situazione,il micro è costretto a decrementare la tensione in uscita nel tentativo di non superare tale limite. A questo punto abbiamo collegato un relè che cortocircuitasse i morsetti di uscita, tramite opportuno comando, non venisse comandato in chiusura. Una volta eccitato il relè, il cortocircuito porta la corrente in uscita a un valore altissimo, che in prima approssimazione è limitato solamente dalla resistenza dello shunt e dalle resistenze corazzate di emettitore collegate ai transistor di potenza. Tale corrente con l'uscita fissa a 30 volt assume in pochissimi istanti un valore elevatissimo. Se la dinamica del sistema fosse particolarmente lenta, tale evento porterebbe alla completa distruzione dello stadio di potenza e dei relativi cablaggi. Le condizioni sopracitate, sono peggiorative, poiché una volta cortocircuitata l'uscita, la tensione è al massimo, quindi il sistema si trova a dover percorrere tutto il campo di valori di tensione, fino allo zero, per tentare di riportare la corrente all'esiguo valore impostato. Tutti gli eventi simili che occorreranno per valori di tensione in 102 uscita minori, saranno sicuramente meno gravosi perché necessiteranno di meno tempo per estinguersi. I tempi sono stati stimati con l'uso dell'oscilloscopio in modalità singola. Il test per ogni valore di tensione impostata è stato ripetuto tre volte, viene anche verificato l'effettivo valore di dc impostato dal micro durante la fase di corto circuito. Il valore riportato nella tabella è il valore medio arrotondato tra le tre misurazioni. Il risultato del test è riassunto nella seguente tabella : Tensione impostata Corrente impostata Tempo di discesa [ms] dc [V] [mA] 30 10 5 0 24 10 4 0 18 10 2 0 12 10 0,5 0 6 10 0,2 0 [%] Tabella 14: Test della velocità di risposta al cto cto Di seguito riportiamo l'andamento grafico dei valori ricavati : 6 5 tempo [ms] 4 3 2 1 0 0 5 10 15 20 25 30 35 tensione [V] Figura 38: Grafico del test di velocità della risposta al cto. cto. Possiamo notare che nella zona centrale vi è un andamento lineare, mentre per bassi valori di tensione in uscita si perde la linearità e i valori si avvicinano sensibilmente gli uni agli altri. In ogni caso la condizione peggiorativa non provocato nessun danno alla power board, non permettendo di 103 rilevare incrementi di temperatura significativi. Va inoltre osservato che durante ogni prova il micro porta a 0% il dc, in quanto anche al minimo valore la corrente oltrepasserebbe il limite impostato di 10mA. 5.4 Analisi dei costi Per la realizzazione di questo progetto, ha avuto molta importanza l'analisi dei costi. Non avendo un budget abbastanza ampio, molte scelte sono state condizionate dalla ricerca del miglior componente dal punto di vista del rapporto qualità prezzo. Purtroppo, una volta identificata una certa categoria di componenti, ci siamo scontrati con un ulteriore problema. Infatti sul mercato sono disponibili innumerevoli classi di componenti di pari valore e dalle performance simili. Questo concetto va applicato sopratutto nella scelta del micro, infatti pur avendo a disposizione molti dispositivi simili, dal prezzo e caratteristiche equivalenti, assume particolare importanza il tempo necessario per poter iniziare ad utilizzarlo al meglio . Il tempo è un fattore molto importante nell'analisi dei costi, infatti è ben diverso acquistare un dispositivo che si può utilizzare al meglio in una settimana, rispetto a un altro che magari è nettamente migliore, addirittura più economica, ma che richiede un tempo di start nettamente superiore. Va anche valutata l'attrezzatura necessaria al contorno, ad esempio kit di sviluppo, documentazione e diffusione del dispositivo. Parliamo di diffusione, perche rappresenta pur sempre un buon parametro per la scelta, in quanto a maggior diffusione, di solito corrisponde una possibilità maggiore di informazioni utili allo sviluppo. Alla luce di quanto detto, i pic sicuramente pur non essendo i micro dal valore unitario più basso, permetto di avviare lo sviluppo delle prime applicazioni nel giro di pochi giorni. In termini di costi possiamo dire che i pic utilizzati in questo progetto hanno un costo unitario di circa 6€, mentre un buon programmatore costa all'incirca 50€. Per poter sviluppare efficacemente è anche necessario l'uso di una demo board (visibile in figura 39) per i test, dispositivo che si assesta intorno ai 100€. L'ambiente di sviluppo mikrobasik costa invece circa 99$ (circa 70€ al cambio attuale). 104 Figura 39: Esempio di demoboard commerciale Per quanto riguarda resistenze, transistor e condensatori, non è stato necessario fare scelte particolari, in quanto sono componenti di uso comune dal costo ormai unificato. L'unica scelta che ha presentato qualche difficoltà è stata la selezione dei transistor finali e dei condensatori del filtro. Infatti sia i condensatori che i finali, dovevano avere delle caratteristiche elettriche di un certo livello. Nel caso dei condensatori abbiamo cercato quelli con un buon compromesso qualità prezzo e con il minimo valore di esr, acquistando dei condensatori della ditta ELNA. Per quanto riguarda i transitor di potenza, la scelta è caduta sul collaudatissimo ed economico tip142, avendo l'accortezza di comprarli con numerazione consecutiva, per poterli accoppiare in parallelo efficacemente. Per quanto riguarda le resistenze corazzate viste al paragrafo 4.2.1, il mercato non fornisce molta scelta per tali valori di tolleranza, resistenza e potenza, quindi abbiamo valutato l'acquisto dal punto di vista sopratutto della reperibilità, visto che non sono componenti molto facili da reperire in commercio, almeno al pubblico. Di seguito riportiamo una tabella riepilogativa dei costi sostenuti per l'attrezzatura e per avere un esemplare funzionante del circuito : 105 Componente Prezzo [€] Quantità Demoboard Mikroelettronica 100 1 Compilatore Mikrobasik 70 1 Programmatore Propic2 50 1 PIC 16F877A 6 6 Totale 256€ Tabella 15: Costo attrezzature necessarie A questo starter kit va sicuramente aggiunto un oscilloscopio con banda passante di almeno 20Mhz e un buon multimetro, possibilmente da banco. Il costo di tali attrezzature è di almeno 400€, portando il costo iniziale a circa 700€. Completano l'attrezzatura un buon saldatore a stagno da 25W e un minimo di utensili, il tutto valutabile in ulteriori 200€. Con buona approssimazione possiamo affermare quindi, che con vari extra, il laboratorio tipo per poter realizzare questo progetto costa circa 1000€. Aggiungiamo ulteriori 100€ per un piccolo bromografo per poter incidere il PCB . Il costo del materiale utilizzato per costruire il prototipo è riassunto nella tabella 16. Va notato che il prezzo si riferisce al prototipo, ossia alla creazione di un esemplare unico. Ovviamente se fosse costruito in serie il suo costo sarebbe sicuramente minore, ma va fatto presente che un alimentatore stabilizzato di classe media, di pari caratteristiche elettriche costa circa 150€ al. Va infine calcolato il tempo necessario a sviluppare l'intero progetto, che nel caso di questo dispositivo è stato di circa 6 mesi. Ovviamente un progettista esperto impiegherebbe sicuramente meno tempo la realizzazione, ma va fatto notare che il costo finale del prototipo, viste le varie limitazioni, non risulta per nulla elevato. 106 Componente Prezzo [€] Quantità Resistenze 1/4W allen bradley 0,02 18 Resistenze corazzate a filo 3,70 4 Condensatori elettrolitici (filtro potenza) 7 4 Condensatori elettrolitici vari 1 (prezzo medio) 5 Condensatori poliestere e ceramici 0,1 (prezzo medio) 17 Diodi zener 5,1V 0,1 3 Diodi 1N4148 0,1 4 Ponte raddrizzatore di potenza 3 1 Ponti raddrizzatori di segnale 1,50 2 Regolatori di tensione 0,60 2 Relè commutazione 3 1 Relè scarica condensatori 2 1 PIC 16F877A 6 1 Operazionali LM358 1,50 3 Transistor BC358 0,25 3 Transistor TIP142 2,16 4 Display LCD 5 1 Morsettiere 1,50 5 Shunt 1 1 Quarzo 1,50 1 Trimmer multi giro 1 6 PCB presensibilizato 5 2 Voltmetro e Amperometro da pannello 10 2 Contenitore metallico 30 1 Cablaggi vari 10 XXXXXX Zoccoli per integrati 0,5 (prezzo medio) 4 Trasformatore 300VA (0-12-36) 40 1 Dissipatore di calore con relativa ventola 14 1 Varie 20 XXXXXX Totale 243,65€ Tabella 16: Quantità e costo del materiale necessario per realizzare il prototipo 107 Conclusioni In questa breve parentesi conclusiva analizzeremo cosa è stato fatto e cosa poteva essere fatto per ottenere un risultato migliore. Dai test effettuati, si dimostra che il dispositivo è più che valido e sicuramente garantisce performance allineate, se non migliori di molti prodotti commerciali. L'idea di utilizzare l'uscita pwm del micro per ottenere un segnale analogico si è dimostrata particolarmente valida. Durante le ricerche effettuate sul web, sono stati trovati molti progetti che iniziano a seguire questa filosofia nella creazione di alimentatori stabilizzati e regolatori di tensione, sopratutto in campo automotivo. Per la realizzazione del progetto è stato necessario impiegare molto tempo per acquisire il necessario know how, sopratutto per quanto riguarda lo sviluppo software del micro controllore. Particolare attenzione è stata posta nella progettazione del filtro attivo, infatti la configurazione utilizzata, sia per quanto riguarda il tipo di filtro, sia per quanto riguarda la scelta della frequenza di cut off, è frutto di innumerevoli prove su svariati circuiti e con moltissimi valori di componenti. Inoltre per ottenere i risultati mostrati nel capitolo 5, molto tempo è stato impiegato per minimizzare il ripple in uscita dai regolatori di tensione, per evitare che si propagasse all'interno del circuito. Tale risultato è stato ottenuto sia dal punto di vista dell'ottimizzazione del layout del pcb, sia dal punto di vista dei componenti accessori, i cui valori sono, anche in questo caso, frutto di innumerevoli prove. Purtroppo la mancanza di attrezzature adeguate, quali oscilloscopi digitali, data logger e molti altri strumenti di laboratorio, ha fatto si che non si potessero ottenere risultati migliori, visto che il progetto è stato sviluppato in via strettamente personale con mezzi limitati. In ogni caso molti obbiettivi, pur alla luce delle limitazioni elencate in precedenza, sono stati raggiunti in maniera soddisfacente, sopratutto quelli riguardanti il basso costo , la semplicità costruttiva e la modularità. Durante la progettazione sono emersi problemi di varia natura, problemi che raramente si incontrano, o vengono portati alla luce con un approccio puramente didattico. L'aver incontrato queste difficoltà, sia in fase di progettazione che di realizzazione, mi ha permesso di avere una visione molto più ampia nell'affrontare le problematiche che probabilmente saranno oggetto della mia futura vita lavorativa. Inoltre dover realizzare da zero l'oggetto di questa tesi ha portato particolarmente in risalto una delle problematiche principali che si andranno a incontrare nel mondo reale, ossia l'analisi dei costi. Avendo avuto a disposizione risorse (anche in termini di tempo) limitate, si è dovuto mettere in conto, fin dalle fasi di analisi iniziale del progetto, che molte soluzioni tecnicamente ottime, non sarebbero potute essere seguite sia a causa della mancanza di strumentazione, sia a causa dell'elevato costo del materiale. Per fare un esempio di quanto detto in precedenza, possiamo dire che sicuramente utilizzare un micro controllore ST7 e 108 un filtro di ordine elevato, avrebbe dato al progetto una connotazione più professionale ed elegante. Indubbiamente i risultati forse sarebbero stati migliori, in ogni caso ci sarebbe voluto molto più tempo per imparare a programmare tale tipo di micro e molto probabilmente l'uso di filtri con un numero di poli più elevato non avrebbe dato significativi miglioramenti al ripple in uscita, che peraltro è già bassissimo in questa configurazione. Come visto al capitolo 5 inoltre, pur attuando una progettazione rigorosa, a volte sono i componenti stessi utilizzati che non permettono di ottenere i risultati voluti. Nel nostro caso, un esempio dell'affermazione precedente, è il ripple rilevato in uscita. Tale disturbo è frutto delle emissioni condotte e irradiate della ventola del dissipatore, quindi un componente sul quale non abbiamo la possibilità di intervenire, se non entro certi limiti. In un ottica di sviluppo futuro di questo progetto, sicuramente si potrà intervenire sul layout del pcb ottimizzandolo e riducendolo. Anche il software ha sicuramente dei margini di miglioramento, pur garantendo già in questa release un ottima regolazione. Sicuramente è migliorabile la sezione di condizionamento dei segnali misurati, infatti utilizzando operazionali di qualità migliore si potrà raggiungere una migliore precisione nella retroazione, anche se va fatto presente che l'utilizzo di un alimentatore stabilizzato, anche di ottima qualità, va sempre accompagnato a un multimetro da banco per l'esatta misura del valore di tensione, o corrente, in uscita. Volendo concludere, questa esperienza ha sicuramente arricchito la mia visione dello sterminato campo costituente l'elettronica digitale e analogica, portando alla luce nuove metodologie di lavoro e valutazioni, sia nei confronti dei problemi che nell'approccio alla progettazione. 109 Bibliografia Libri ● Paul Horowitz, Winfield Hill. The art of electronics 2nd edition. Cambridge University Press. ● Ned Mohan, Tore M. Undeland, William P. Robbins. Power Electronics 3rd edition. 2003 ● Ignazio Mendola, Umberto Torelli. Formulario di elettronica. Ulrico Hoepli Editore 1989 ● R.Giometti, F.Frascari. Elettronica “La logica”. Edizioni Calderini 1993 ● R.Giometti, F.Frascari. Elettronica “L'analogica”. Edizioni Calderini 1993 Documentazione Online di pubblico dominio ● On Semiconductor. Linear & Switching Voltage Regulator Handbook. HB206/D 2002 ● Nebojsa Matic . Programming PIC Microcontrollers in BASIC. ● Mikroeleetronica. Mikrobasic Manual v.7.0.0.2 2008 Il presente documento non può essere riprodotto, modificato o citato previa comunicazione con la mia persona. Per contattarmi scrivetemi a [email protected] In ogni caso dalla stesura del documento sono state modificate e sostituite varie parti, se siete interessati alla versione definitiva scrivetemi all'indirizzo sopra citato. 110