Comments
Transcript
M.Baliviera (Laurea Specialistica) - diegm
UNIVERSITÀ DEGLI STUDI DI UDINE _______________________________________________ Facoltà di Ingegneria Corso di Laurea in Ingegneria Elettronica Dipartimento di Ingegneria Elettrica, Gestionale e Meccanica Tesi di Laurea Studio e sviluppo di Librerie per test automatici di regolatori di tensione Relatore Chiar.mo Prof. Ing. Selmi Luca Laureando Baliviera Mirco Correlatore Dott. Ing. Monetti Antonio ______________________________________________ Anno Accademico 2002/03 INTRODUZIONE ----------------------------------------------------------------------------------------------------------- 5 1 I REGOLATORI DI TENS IONE ------------------------------------------------------------------------------ 8 1.1 1.2 INTRODUZIONE----------------------------------------------------------------------------------------------8 CONVERTITORI SWITCHING -----------------------------------------------------------------------------------8 1.2.1 Principio di Funzionamento dei convertitori switching----------------------------------------- 8 1.2.2 Convertitori Buck -----------------------------------------------------------------------------------------10 1.2.3 Convertitori Boost----------------------------------------------------------------------------------------11 1.2.4 Convertitori Buck -Boost--------------------------------------------------------------------------------12 1.2.5 Convertitori Flyback -------------------------------------------------------------------------------------13 1.2.6 I Convertitori Push-Pull --------------------------------------------------------------------------------15 1.2.7 I convertitori Half-Bridge ------------------------------------------------------------------------------17 1.2.8 I convertitori Full-Bridge-------------------------------------------------------------------------------18 1.2.9 Alcuni accorgimenti negli switching regulators--------------------------------------------------19 1.2.10 Misura dell’efficienza degli switching regulator:--------------------------------------------23 1.3 I REGOLATORI LINEARI --------------------------------------------------------------------------------------- 26 1.3.1 Struttura base di regolatore lineare -----------------------------------------------------------------26 1.3.2 Le funzioni del Control Loop--------------------------------------------------------------------------26 1.3.3 Tipici regolatori lineari ---------------------------------------------------------------------------------27 1.3.4 I regolatori lineari Standard (NPN) -----------------------------------------------------------------28 1.3.5 I regolatori LDO ------------------------------------------------------------------------------------------28 1.3.6 I Quasi Low-Dropout (LDO) Regulator------------------------------------------------------------29 1.3.7 Confronto dei tre tipi di Regolatori Lineari -------------------------------------------------------30 1.4 CONFRONTO FRA I REGOLATORI SWITCHING-E LINEARI ---------------------------- 34 2 L’ AMBIENTE LABVIEW --------------------------------------------------------------------------------------37 2.1 2.2 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.3 2.3.1 2.3.2 2.3.3 2.3.4 2.3.5 3 INTRODUZIONE-------------------------------------------------------------------------------------------- 37 LABVIEW -------------------------------------------------------------------------------------------------------- 38 Generalità --------------------------------------------------------------------------------------------------38 Organizzazione Gerarchica dei VI-------------------------------------------------------------------38 Front Panel-------------------------------------------------------------------------------------------------39 Diagramma a Blocchi -----------------------------------------------------------------------------------40 Le strutture -------------------------------------------------------------------------------------------------43 L’A CQUISIZIONE DATI --------------------------------------------------------------------------------------- 46 Confronto fra DAQ Devices e Special-Purpose Instrument-----------------------------------46 Comunicazione pc - DAQ devices--------------------------------------------------------------------47 Comunicazone pc – special purpose instrument--------------------------------------------------48 Instrument Drivers in Labview------------------------------------------------------------------------49 GPIB e Instrument Control usati---------------------------------------------------------------------51 MISURA DELLA LOAD REGULATION-----------------------------------------------------------------52 3.1 3.2 3.3 INTRODUZIONE-------------------------------------------------------------------------------------------- 52 DEFINIZIONE DEL PROBL EMA------------------------------------------------------------------------------- 52 DEFINIZIONE DEL SUBVI CHE IMPOSTA IL KE2400 COME GENERATORE DI CORRENTE ------ 55 3.3.1 GPIB Address to Resource Name.vi -----------------------------------------------------------------56 3.3.2 Ke24XXInizialize.VI--------------------------------------------------------------------------------------57 3.3.3 Ke24xx Enable/Disable Beeper.vi--------------------------------------------------------------------58 3.3.4 Ke24xx Configure DCV.vi------------------------------------------------------------------------------59 3.3.5 Ke24xx Configure Source Mode.vi-------------------------------------------------------------------59 3.3.6 Ke24xx Configure Source Compliance.vi----------------------------------------------------------61 3.3.7 Ke24xx Configure Source Volt/Cur Level.vi-------------------------------------------------------61 3.3.8 Ke24xx Enable/Disable Source Output.vi----------------------------------------------------------62 3.3.9 Ke24xx Read.vi--------------------------------------------------------------------------------------------63 3.3.10 Ke2400 PerformIV_Simple_sense----------------------------------------------------------------63 3.4 DEFINIZIONE DEL SUBVI CHE IMPOSTA IL KE2000 COME MULTIMETRO------------------------- 65 3.4.1 ke2000 Configure Measurement.vi-------------------------------------------------------------------65 3.4.2 ke2000 Configure Trigger.vi---------------------------------------------------------------------------67 1 3.4.3 3.4.4 ke2000 Read.vi --------------------------------------------------------------------------------------------68 ke2000 Close.vi--------------------------------------------------------------------------------------------69 3.5 KE2000 SINGLE POINT MEASUREMENT .VI-------------------------------------------------------------- 69 3.6 LIBRERIA LABVIEW PER LA CELLA TERMICA ----------------------------------------------------------- 73 3.7 SUB VI PER IL TEST DI LOAD REGULATION AD UNA DATA TEMPERATURA---------------------- 80 3.8 VI CHE REALIZZA IL TEST LOAD REGULATION A DIVERSE TEMPERATURE ---------------------- 86 3.8.1 Possibili miglioramenti della libreria---------------------------------------------------------------87 3.9 ELABORAZIONE AUTOMATICA DELLE MISURE DI LOAD REGULATION --------------------------- 94 3.9.1 Connector Pane-------------------------------------------------------------------------------------------95 3.9.2 Definizioni delle Macro Excel-------------------------------------------------------------------------96 3.10 UTILIZZO DELLE LIBRERIE ---------------------------------------------------------------------------------105 3.11 SOMMARIO--------------------------------------------------------------------------------------------------105 4 MISURA DELLA LINE REGULATION ----------------------------------------------------------------107 4.1 4.2 4.3 INTRODUZIONE-------------------------------------------------------------------------------------------107 DEFINIZIONE DEL PROBL EMA------------------------------------------------------------------------------107 DEFINIZIONE DEL SUBVI CHE IMPOSTA IL KE2400 COME GENERATORE DI CORRENTE -----108 4.3.1 Ke24xx Configure DC IV.vi--------------------------------------------------------------------------109 4.3.2 Ke24xx Configure V Source Protection.vi -------------------------------------------------------110 4.4 KE2400 PERFORM VI SINGLE POINT WITH CLOSE (2WIRES) CONSTANTS.VI ------------------110 4.5 SUB VI PER IL TEST DI LINE REGULATION AD UNA DATA TEMPERATURA ----------------------111 4.6 VI CHE REALIZZA IL TEST LINE REGULATION A DIVERSE TEMPERATURE -----------------------116 4.6.1 Possibili miglioramenti della libreria-------------------------------------------------------------119 4.7 ELABORAZIONE AUTOMATICA DELLE MISURE DI LINE REGULATION ---------------------------122 4.8 UTILIZZO DELLE LIBRERIE ---------------------------------------------------------------------------------125 4.9 SOMMARIO--------------------------------------------------------------------------------------------------125 5 MISURA DEL DROP OUT -----------------------------------------------------------------------------------126 5.1 5.2 5.3 5.4 5.5 6 INTRODUZIONE-------------------------------------------------------------------------------------------126 DEFINIZIONE DEL PROBL EMA------------------------------------------------------------------------------126 LIBRERIA CHE UTILIZZA SOLAMENTE DUE KE2400--------------------------------------------------128 UTILIZZO DELLE LIBRERIE ---------------------------------------------------------------------------------133 SOMMARIO--------------------------------------------------------------------------------------------------134 MISURA DELLA TENSIONE DI BANDGAP ---------------------------------------------------------135 6.1 6.2 INTRODUZIONE-------------------------------------------------------------------------------------------135 CIRCUITI DI BANDGAP --------------------------------------------------------------------------------------135 6.2.1 Widlar Bandgap Reference---------------------------------------------------------------------------135 6.2.2 Brokaw Bandgap Reference -------------------------------------------------------------------------137 6.3 DEFINIZIONE DEL PROBL EMA------------------------------------------------------------------------------137 6.4 LIBRERIA DELLA MISURA DEL BANDGAP PER UNA DATA TEMPERATURA ----------------------138 6.4.1 SubVi che rileva la temperatura con un 4wire RTDs con il Ke2700----------------------139 6.5 LIBRERIA DELLA MISURA DEL BANDGAP ---------------------------------------------------------------143 6.6 ELABORAZIONE AUTOMATICA DELLA MISURA DEL BANDGAP ------------------------------------144 6.7 UTILIZZO DELLE LIBRERIE ---------------------------------------------------------------------------------146 6.8 SOMMARIO--------------------------------------------------------------------------------------------------146 7 MISURA DELLA CURRENT LIMITING --------------------------------------------------------------147 7.1 7.2 INTRODUZIONE-------------------------------------------------------------------------------------------147 CIRCUITI DI CURRENT LIMITING --------------------------------------------------------------------------147 7.2.1 Constant Current Limiting ---------------------------------------------------------------------------147 7.2.2 Voltage Dependent (foldback) Current Limiting-----------------------------------------------148 7.3 DEFINIZIONE DEL PROBL EMA------------------------------------------------------------------------------149 7.4 LIBRERIA LABVIEW PER LA MISURA DI CURRENT LIMITING PER UNA DATA TEMPERATURA 150 7.5 LIBRERIA LABVIEW PER LA MISURA DI CURRENT ----------------------------------------------------152 7.6 ELABORAZIONE AUTOMATICA DELLA MISURA DEL BANDGAP ------------------------------------152 7.7 UTILIZZO DELLE LIBRERIE ---------------------------------------------------------------------------------152 2 7.8 8 SOMMARIO--------------------------------------------------------------------------------------------------153 MISURA TERMAL SHUTDOWN -------------------------------------------------------------------------154 8.1 8.2 8.3 8.4 8.5 8.6 8.7 9 INTRODUZIONE-------------------------------------------------------------------------------------------154 CIRCUITO DI TERMAL SHUTDOWN -----------------------------------------------------------------------154 DEFINIZIONE DEL PROBL EMA------------------------------------------------------------------------------155 SUB VI PER LA MISURA DI VOUT E DI TEMPERATURA -----------------------------------------------156 LIBRERIA LABVIEW PER IL TEST DI TERMAL SHUTDOWN------------------------------------------157 UTILIZZO DELLA LIBRERIA---------------------------------------------------------------------------------160 SOMMARIO--------------------------------------------------------------------------------------------------160 MISURA PSRR ----------------------------------------------------------------------------------------------------161 9.1 9.2 9.3 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.7 9.8 9.9 9.10 10 INTRODUZIONE-------------------------------------------------------------------------------------------161 POWER SUPPLY REJECTION RATIO-----------------------------------------------------------------------161 DEFINIZIONE DEL PROBL EMA------------------------------------------------------------------------------162 LIBRERIA HP 33250.VI ---------------------------------------------------------------------------------------163 hp33120a Configure Output Mode.vi -------------------------------------------------------------165 hp33120a Configure Operation Mode.vi---------------------------------------------------------166 hp33120a Configure Standard Waveform.vi ----------------------------------------------------166 hp33120a Configure Ref Clock Source.vi--------------------------------------------------------167 LCLT 584_ACQUISITIONCH1_MATHCH2. VI:----------------------------------------------------------167 lcltxxxx Auto Setup.vi----------------------------------------------------------------------------------171 lcltxxxx Read Waveform.vi ---------------------------------------------------------------------------171 lcltxxxx Actual Sample Rate.vi ----------------------------------------------------------------------172 lcltxxxx Reset Math Channel.vi ---------------------------------------------------------------------172 lcltxxxx Channel Math.vi -----------------------------------------------------------------------------173 PSRR_SIMPLE ------------------------------------------------------------------------------------------------174 FFT Spectrum (Mag-Phase).vi----------------------------------------------------------------------176 LIBRERIA PSRR ----------------------------------------------------------------------------------------------177 ELABORAZIONE AUTOMATICA DELLA MISURA DI PSRR--------------------------------------------180 UTILIZZO DELLE LIBRERIE ---------------------------------------------------------------------------------181 SOMMARIO--------------------------------------------------------------------------------------------------181 MISURA ESR ------------------------------------------------------------------------------------------------------182 10.1 INTRODUZIONE-------------------------------------------------------------------------------------------182 10.2 STABILITÀ NEGLI LDO--------------------------------------------------------------------------------------182 10.3 DEFINIZIONE DEL PROBL EMA------------------------------------------------------------------------------184 10.4 LCLT 584_AVG(CH1)_AVG(CH2)+PMT(ESR).VI -------------------------------------------------186 10.4.1 Configure PMT.vi-----------------------------------------------------------------------------------190 10.4.2 LTDSO Parameter Value.vi----------------------------------------------------------------------192 10.5 M ISURA DI ESR AL VARIARE DELLA TEMPERATURA------------------------------------------------192 10.6 ELABORAZIONE AUTOMATICA DELLA MISURA DI ESR----------------------------------------------194 10.7 UTILIZZO DELLA LIBRERIA---------------------------------------------------------------------------------194 10.8 SOMMARIO--------------------------------------------------------------------------------------------------194 11 CARATTERIZZAZIONE DI UN BJT MULTICOLLETTORE---------------------------------195 11.1 INTRODUZIONE-------------------------------------------------------------------------------------------195 11.2 DEFINIZIONE DEL PROBLEMA------------------------------------------------------------------------------195 11.3 TEST _ CHIP _SWEEP _IB_VB_SWEEP _VC.VI ------------------------------------------------------------197 11.3.1 KE2700 Set Channel List.vi----------------------------------------------------------------------201 11.3.2 KE2700 Configure Multi-Point.vi--------------------------------------------------------------201 11.3.3 KE2700 Read Multi-Point.vi---------------------------------------------------------------------201 11.4 ELABORAZIONE DEI DATI DEL “TESTCHIP ”-------------------------------------------------------------202 11.5 SOMMARIO--------------------------------------------------------------------------------------------------204 CONCLUSIONI-----------------------------------------------------------------------------------------------------------205 APPENDICE A: INTERFACCIA GPIB --------------------------------------------------------------------------207 3 A.1 INTRODUZIONE------------------------------------------------------------------------------------------------------207 A.2 STRUTTURA ---------------------------------------------------------------------------------------------------------207 A.3 POLLING --------------------------------------------------------------------------------------------------------------210 A.4 SOMMARIO ----------------------------------------------------------------------------------------------------------210 APPENDICE B: INTERFACCIA SERIALE RS-232 --------------------------------------------------------212 B.1 INTRODUZIONE -------------------------------------------------------------------------------------------------212 B.2 CARATTERISTICHE DELL ’INTERFACCIA SERIALE RS-232-------------------------------------------------212 B.2.1 Pinout DB25 -------------------------------------------------------------------------------------------------213 B.2.2 Pinout DB9 ---------------------------------------------------------------------------------------------------213 APPENDICE C : CAMERA TERMOSTATICA “ANGELANTONI CH60T”--------------------------------------216 C.1 CARATTERISTICHE TECNICHE------------------------------------------------------------------------------------216 C.2 STRUTTURA DEI REGISTRI DEL MICROCONTROLLORE------------------------------------------------------216 APPENDICE D: REGOLATORE DI TENSIONE TLE 4270---------------------------------------------219 BIBLIOGRAFIA ----------------------------------------------------------------------------------------------------------231 4 INTRODUZIONE La maggior parte dei circuiti elettronici richiedono, per il loro corretto funzionamento, una tensione di alimentazione continua, di valore costante indipendente dalla corrente richiesta e dalla temperatura ambiente. I circuiti che forniscono in uscita una tensione (o più tensioni) costante(i) indipendente(i) dalla tensione al loro ingresso, dalla corrente richiesta dal carico e dalla temperatura ambiente sono chiamati regolatori di tensione. Le applicazioni per le quali si rende necessario l’uso di un regolatore di tensioni sono innumerevoli, dalla centralina elettronica delle auto alla scheda madre di un computer. I regolatori di tensione sono prodotti sotto forma di circuiti integrati e necessitano di test sia in fase di sviluppo che in produzione. In particolare i circuiti integrati impiegati nel settore automobilistico devono rispondere a standard di funzionamento militari e necessitano quindi di test anche in temperatura, tra -40°C e +150°C. Normalmente, almeno in fase di progettazione, i test sui circuiti integrati vengono effettuati “manualmente” in laboratorio e su un numero limitato di campioni. I test effettuati su un componente in fase di progettazione servono a verificare il rispetto delle specifiche di progetto e tutte queste operazioni si possono definire “caratterizzazione di un componente”. La maggior parte di questi test sono ripetitivi e comportano la necessità di impostare strumenti di misura e acquisire dati da altri strumenti di misura e possono durare anche giorni. Da qui nasce la richiesta di ottimizzare e rendere automatici questi test permettendo così all’operatore di risparmiare tempo. Scopo di questa tesi è quello di studiare e realizzare un insieme di metodologie che consentano di effettuare, in maniera del tutto automatica, un insieme di test per la caratterizzazione dei regolatori di tensione. Per risolvere questo problema ho utilizzato due pacchetti software commerciali, Labview della National Instrument ed Excel della Microsoft. Labview è un linguaggio di programmazione che negli ultimi anni è diventato uno standard per quanto riguarda lo sviluppo di applicazioni che comportano la comunicazione tra strumenti di misura. Grazie a questo linguaggio è infatti possibile realizzare in modo semplice e veloce applicazioni grafiche per il controllo remoto di strumenti di misura. Excel è un software per l’elaborazione di dati che ho utilizzato per completare l’automazione dei test, rendendo automatica la realizzazione dei report. All’operatore resta il compito di collegare il circuito al banco di prova, scegliere la libreria Labview adatta per il tipo di test da effettuare, impostare opportunamente tutti gli strumenti e definire dove salvare i dati, il tutto tramite una chiara interfaccia utente, costruita appositamente per quel test. Al termine dell’esecuzione del programma Labview, l’operatore troverà i dati acquisiti già elaborati e salvati con il software Excel. Se durante l’esecuzione del test si verificassero degli errori sugli strumenti di misura o nella comunicazione tra il 5 computer e gli strumenti, il test verrà interrotto e i dati fin li raccolti saranno comunque disponibili. Questa tesi è stata sviluppata durante uno stage presso il Design Center di Infineon Technologies s.r.l. di Padova, specializzato nella progettazione di regolatori di tensione per il settore automotive. Nel capitolo 1 vengono spiegate le caratteristiche principali dei dispositivi ai quali sono rivolte le librerie, ossia gli switching converter ed i linear regulator. Nel capitolo 2 verranno spiegati gli aspetti fondamentali del software Labview per permettere di capire le librerie che verranno sviluppate. Nel capitolo 3 viene affrontato lo sviluppo della libreria per la misura di Load Regulation, che definisce la apacità del regolatore a mantenere la tensione d’uscita costante al variare del carico. In questo capitolo viene anche creata una libreria per il controllo della cella termica, fondamentale per eseguire automaticamente i vari test in temperatura. Il capitolo 4 riguarda la misura di Line Regulation, che definisce la capacità del regolatore di mantenere un corretto funzionamento al variare della tensione di alimentazione. Nel capitolo 5 viene sviluppata una libreria per il test della tensione di Dropout, che affronta il problema di quanto l’alimentazione (es. una batteria) possa scendere mantenendo in uscita la tensione di funzionamento minima garantita. Il capitolo 6 riguarda il test di Bandgap: all’interno di un regolatore vi è una tensione, chiamata tensione di Bandgap, che deve essere stabile in temperatura in quanto viene presa come riferimento per tutta la circuiteria interna al dispositivo. Il capitolo 7 effettua il test di Current limiting: è un test che determina la corrente di massima di carico oltre la quale si attiva la protezione di current limiting. Nel capitolo 8 viene effettuato un test rivolto ad un’altra protezione presente nei regolatori, chiamato Termal Shutdown: con questa misura si verifica a che temperatura si attiva la protezione contro eventuali surriscaldamenti nel dispositivo. Il capitolo 9 è intitolato “Power Supply Rejection Ratio” e affronta il problema di come un dato rumore in ingresso si ripercuote nell’uscita. Nel capitolo 10 viene sviluppata una libreria che da una stima della resistenza equivalente serie (ESR) di un condensatore, parametro molto importante per la progettazione e studio della stabilità dl dispositivo. Infine nel capitolo 11 viene sviluppata una libreria in grado di caratterizzare un componente comune in tutti i regolatori lineari a bassa dropout, ossia un particolare transistor PNP. Nell’appendice A sono poi riportate le caratteristiche principali dell’interfaccia GPIB usate per la comunicazione fra gli strumenti ed il pc, mentre l’appendice B riguarda l’interfacia seriale RS 232 usata per la comunicazione fra il microcontrollore della cella termica ed il pc. Nell’appendice C sono riportati tutti i registri presenti nel microcontrollore della cella termica che vengono utilizzati per il controllo remoto da Labview via porta seriale. 6 Nell’appendice D è riportato il data sheet del regolatore Infineon TLE 4270, le cui specifiche sono state utilizzate come esempio durante lo sviluppo delle varie librerie. 7 I regolatori di tensione 1 I regolatori di tensione 1.1 INTRODUZIONE I convertitori Switching stanno aumentando di popolarità poiché offrono i vantaggi di una più alta efficienza nella conversione di potenza e un incremento nella flessibilità del design (differenti tensioni in uscita possono essere generati da un’unica tensione d’ingresso). In queste pagine verranno esposte le principali caratteristiche dei regolatori switching e di quelli lineari, quindi seguirà un confronto fra le due categorie [1]. 1.2 Convertitori switching I convertitori switching si possono suddividere in queste categorie: Buck: usato per abbassare una tensione DC a una minore. Boost: provvede a una tensione d’uscita maggiore di quella d’ingresso. Buck-Boost: la tensione in uscita ha polarità opposta a quella di ingresso . Flyback: una tensione d’uscita, minore o maggiore di quella in ingresso può essere disponibile in uscite multiple. Push-Pull: è un convertitore a due transistor efficiente soprattutto per basse tensioni in ingresso. Half-Bridge: è un doppio transistor converter usato in molte applicazioni in cui è richiesta una potenza elevata. Full-Bridge: è caratterizzato da quattro transistor e fra tutti i convertitori switching può generare la maggior potenza di uscita. 1.2.1 Principio di Funzionamento dei convertitori switching Lo schema a blocchi di un alimentatore a commutazione (o “switching”) è rappresentato in figura: 8 I regolatori di tensione Figura 1-1 Schema di massima di un convertitore switching La tensione alternata di alimentazione viene dapprima raddrizzata mediante, ad esempio, un circuito raddrizzatore a ponte e successivamente livellata con un condensatore. La tensione continua così ottenuta è quindi applicata al convertitore DC/DC. In esso un transistore interrompe opportunamente la tensione continua, effettuando in altre parole una modulazione PWM (pulse width modulation). Gli impulsi ottenuti sono poi applicati ad un trasformatore il cui compito è di portare la tensione al livello richiesto; il circuito di raddrizzamento ed il filtro di livellamento all’uscita convertono la tensione da impulsiva in continua. Il circuito di controllo consente di regolare e stabilizzare la tensione d’uscita contro variazioni del carico o fluttuazioni della tensione di alimentazione; il controllo è realizzato o agendo sul transistore che funge da interruttore, variandone il tempo di chiusura, o mediante un avvolgimento avvolto sullo stesso nucleo del trasformatore del convertitore. Un esempio di uso di un segnale PWM può essere il seguente: Applicando una serie di impulsi rettangolari a frequenza costante ma duty cicle variabile su un filtro L-C, si può ricavare una tensione continua pari al prodotto del valore della tensione di picco degli impulsi per il duty cycle: questa relazione 9 I regolatori di tensione dimostra come la tensione d’uscita può essere direttamente controllata cambiando il tempo di chiusura dello switch. Nella seguente figura sono riportati tre diversi casi di impulsi modulati, caratterizzati rispettivamente da un duty-cicle di 0,25 – 0,5 e 0,75. supponendo che la tensione di picco Vp degli impulsi sia di 48 V, se si filtrano tali impulsi con la rete LC si ottiene proprio in uscita una tensione DC uguale a Vp moltiplicato il duty-cicle: E’ chiaro come modulando la larghezza dell’impulso, sia possibile ottenere qualsiasi tensione d’uscita, senza dissipare inutile potenza. Naturalmente affinché il segnale così ottenuto sia esente da disturbi e ondulazioni, occorrerà dimensionare opportunamente il filtro. Il vantaggio principale di questo modo di funzionamento sta proprio nella caratteristica di un segnale PWM: possiamo ottenere correnti considerevoli semplicemente utilizzando impulsi di brevissima durata, e quindi in un periodo di funzionamento il dispositivo resterà spento per gran parte del tempo, dissipando così pochissima energia. 1.2.2 Convertitori Buck I convertitori switching più comunemente utilizzati per abbassare una tensione continua ad un’altra (mantenendo la stessa polarità) sono i convertitori Buck. Questi dispositivi risultano essenziali nelle reti di distribuzione (da 24 V a 48 V) che devono essere convertite localmente in 15 V, 12 V, 5 V con bassissime perdite di potenza. Un Buck converter usa un transistor come convertitore che alternativamente connette disconnette la tensione di alimentazione sull’induttore: Figura 1-2 Struttura e principio di funzionamento di un convertitore Buck 10 I regolatori di tensione La fig 1-2 mostra come la corrente scorra in due rami quando l’interruttore è aperto o chiuso. Quando l’interruttore è chiuso, esiste una tensione ai capi dell’induttore pari alla differenza fra la tensione d’ingresso e quella di uscita, causando così un aumento della corrente dell’induttore stesso. Durante il tempo in cui l’interruttore resta chiuso la corrente dell’induttanza scorre sia nel carico sia nella capacità d’uscita (in questo modo caricandola) ed il diodo risulta polarizzato in inversa. Aprendo l’interruttore si disconnette l’alimentazione dal resto del circuito ma, poiché la corrente in una induttanza non può interrompersi istantaneamente, si crea ai capi di quest’ultima una tensione che tenterà di mantenere la corrente in circolo. La corrente fluisce allora nel carico assieme alla corrente proveniente dal condensatore e, attraverso il diodo, ritorna nell’induttanza. ll comando di switch è affidato ad un apposito circuito (PWM control) che verifica la tensione presente su carico e, di conseguenza, varia la durata dei tempi di accensione e spegnimento. Come appena spiegato, la rampa di corrente nell’induttore cresce finché l’interruttore resta chiuso, mentre cala quando è aperto. La corrente DC equivalente presente nel carico è la media della corrente sull’induttore. La differenza peak-to-peak della corrente nell’induttore è riferita al suo ripple e tipicamente l’induttanza è scelta abbastanza grande da sopportare ripple di correnti entro il 20% 30% del valore medio DC. Confronto fra modo di funzionamento continuo e discontinuo: In molte applicazioni con convertitori Buck, la corrente dell’induttanza non può scendere a zero durante tutto il ciclo di carico (questo è definito continuous mode operation). Si può ottenere la prestazione migliore usando il modo continuo, che permette pure la massima potenza sul carico per una data tensione di alimentazione e una data frequenza di attivazione degli interruttori. In altre applicazioni dove generalmente la massima corrente di carico è bassa, può essere vantaggioso progettare convertitori che operino in modo discontinuo (discontinuous mode operation). Questo modo di operare può essere utile per ricavare convertitori di piccole dimensioni (perché viene adoperato un piccolo induttore). In genere il modo discontinuo alle basse correnti non causa nessun problema e ogni convertitore progettato per operare in modo continuo a pieno carico può essere portato a operare in modo discontinuo al diminuire della corrente richiesta. 1.2.3 Convertitori Boost I convertitori Boost funzionano con una tensione continua d’ingresso e producono in uscita una tensione continua più elevata. Lo schema di massima di questi convertitori è riportato nella seguente figura, accompagnato dai dettagli del percorso della corrente a seconda dello stato dello switch: 11 I regolatori di tensione Figura 1-3 Struttura e principio di funzionamento di un convertitore Boost Nel caso in cui l’interruttore risulti chiuso, la tensione in ingresso ai capi dell’induttore forza la corrente a crescere (rampa crescente). Quando l’interruttore è aperto la corrente dell’induttanza scorre attraverso il diodo permettendo al condensatore di caricarsi raggiungendo una tensione più alta di quella d’ingresso; come si può vedere in figura, durante questo stato la corrente scorre sia sul carico che sul condensatore, mentre quando l’interruttore è chiuso la corrente nel carico è dovuta solo alla scarica del condensatore. CORRENTE E POTENZA IN USCITA : Un importante aspetto da tener in considerazione nei Boost regulator è che la corrente sul carico e quella sull’interruttore non sono uguali, e la corrente massima disponibile sul carico è sempre minore del valore della corrente dello “switch transistor”. Dovrebbe essere noto che in ogni regolatore la potenza massima disponibile della conversione è uguale alla tensione d’ingresso moltiplicata per il valor medio della corrente d’ingresso. Dato che la tensione d’uscita del Boost è più alta di quella d’ingresso ne consegue che necessariamente la corrente d’uscita dovrà essere minore di quella d’ingresso. 1.2.4 Convertitori Buck-Boost I convertitori Buck-Boost (chiamati anche Inverting regulator) data una tensione continua d’ingresso producono una tensione d’uscita di polarità opposta che, in valore assoluto, può essere sia più grande che più piccola di quella di alimentazione. Questo tipo di regolatore è raffigurato nella seguente figura: 12 I regolatori di tensione Figura 1-4 Struttura e principio di funzionamento di un convertitore Buck-Boost Quando l’interruttore è chiuso, la tensione d’ingresso applicata all’induttanza, provoca un aumento della corrente in essa. Durante questo stato, la sola sorgente di corrente per il carico risulta dalla scarica del condensatore. Questo richiede che la quantità di carica persa dalla capacità durante questo periodo di tempo, debba essere recuperata nell’altro stato. Infatti quando l’interruttore (switch transistor) è aperto, la diminuzione della corrente nell’induttanza causa uno swing negativo sul catodo del diodo, consentendo così la sua accensione e permettendo alla corrente di scorrere sia sul carico sia sul condensatore.Come mostrato in figura, la corrente sul carico è dovuta all’induttanza mentre lo switch è aperto, e al condensatore quando lo switch è chiuso. 1.2.5 Convertitori Flyback I regolatori Flyback sono i più versatili tra tutte le architetture viste in precedenza poiché permettono al progettista di creare, data una singola tensione d’ingresso, una o più tensioni d’uscita, alcune delle quali di polarità opposta.I convertitori Flyback hanno guadagnato in popolarità nei sistemi a batteria, dove una singola tensione deve essere convertita in quelle richieste dal sistema (per esempio +5 V, +12 V, - 12 V) con un’alta efficienza di conversione di potenza. La struttura base dei convertitori Flyback è qui riportata: 13 I regolatori di tensione Figura 1-5Struttura e principio di funzionamento di un convertitore Flyback La caratteristica più importante dei regolatori Flyback è il trasformatore; quando l’interruttore è chiuso la tensione d’ingresso è applicata ai capi dell’avvolgimento primario, causando un aumento del flusso della corrente. Si noti come le polarità delle tensioni sugli avvolgimenti siano fra loro opposte (in figura la polarità negativa è rappresentata col punto). In questo modo la tensione che si crea sull’ avvolgimento secondario tiene spento il diodo, evitando che la corrente scorra in questo avvolgimento. Durante questa fase la corrente sul carico è dovuta soltanto dalla scarica del condensatore. Quando l’interruttore è aperto la diminuzione della corrente nel primario causa alla tensione individuata, nella figura, da un punto, uno swing positivo. Contemporaneamente la tensione sul primario è riflessa sul secondario con la stessa polarità. In questo modo il diodo si accende permettendo alla corrente di scorrere sia sul carico sia sulla capacità. La quantità di carica persa dalla capacità nella fase precedente (switch on) è recuperata in questa fase (switch off). I convertitori Flyback possono operare sia in continuous mode (in cui la corrente è sempre maggiore di zero), che in discontinuous mode (in cui la corrente nel secondario raggiunge lo zero in ogni ciclo). Il nome Flyback deriva proprio dal fattoche l’energia è fornita al carico durante l’intervallo di ritorno, cioè quando il transistor non conduce . COME GENERARE USCITE MULTIPLE: Un altro grande vantaggio dei convertitori Flyback è la capacità di prevedere uscite multiple (vedi figura seguente). In queste applicazioni una delle uscite (solitamente quella con corrente più alta) è adibita al PWM feedback, e quindi è direttamente regolata. La tensione sugli altri avvolgimenti è indirettamente regolata e segue quella dell’avvolgimento retroazionato. In genere, però, la regolazione del carico su questi avvolgimenti non è buona (tipicamente 5-10%) ma comunque risulta adeguata per molte applicazioni. Se è richiesta una regolazione più precisa, una eccellente soluzione è quella di usare un regolatore lineare a basa dropout (LDO) sulle uscite. La tensione secondaria è mantenuta a 1 Volt oltre a quella desiderata e questo ulteriore regolatore permette di migliorare il controllo dell’uscita con una minima perdita di efficienza (il dropout indica la tensione che si “perde” nel regolatore). 14 I regolatori di tensione Figura 1-6 Esempio di convertitore Flyback a tre uscite 1.2.6 I Convertitori Push-Pull I convertitori Push-Pull usano due transistor per effettuare una conversione DC-DC : Figura 1-7 Struttura e principio di funzionamento di un convertitore Push-pull Questi convertitori operano accendendo alternativamente i due transistor all’ interno del ciclo (i due transistor non sono mai accesi contemporaneamente). La corrente dell’avvolgimento secondario scorre contemporaneamente a quella nel primario ( quando uno dei due transistor risulta acceso). Per esempio, quando il transistor A è acceso, vi è una corrente dovuta alla tensione d’ingresso nella parte alta del primario e per una questione di polarità, si accenderà il secondo diodo,cioè quello inferiore del secondario, consentendo ad una corrente di scorrere nell’induttanza alimentando così sia il carico che la capacità d’uscita. Quando invece è il transistor B ad essere acceso, dallo schema si può vedere che la corrente interesserà la parte inferiore del primario, mente sul secondario risulterà acceso il primo diodo (quello superiore) e, come prima, ci sarà una corrente nell’induttanza e nel carico più condensatore. Una importante caratteristica dei convertitori Push-Pull è che i due transistor devono essere in grado di sopportare una tensione doppia di quella in ingresso: 15 I regolatori di tensione quando è acceso un transistor, la stessa tensione di alimentazione è indotta anche nell’altra parte dell’avvolgimento primario non interessato dalla corrente, ma risulta “floating” rispetto al polo positivo di ingresso: in questo modo, rispetto a massa, sul collettore del transistor spento vi sarà una tensione doppia dell’alimentazione. Questo fatto riduce l’uso dei convertitori Push-pull per basse tensioni di ingresso; essi sono largamente usati per sistemi a batteria a 12 V e 24 V. Figura 1-8 Diagramma temporale del circuito di fig 1-7 È importante notare come la frequenza d’uscita dell’onda rettangolare sul secondario sia doppia rispetto al controllo PWM dei due transistor. Per esempio, se il controllore PWM opera a 50 Hz sul primario, la frequenza del segnale sul secondario sarà di 50 Hz. Dalla fig 1-8 risulta ovvio che la tensione DC complessivamente ottenuta sul carico risulti: Vout = Vpk * Ton Tper Ai capi dell’avvolgimento primario vi è una tensione pari a quella di ingresso meno quella di saturazione dei transistor (Vin-Vswitch); posto Ns/Np il rapporto spire e Vrect la tensione su un diodo (rectified diode), il valore di picco della tensione d’uscita risulta Vpk = (Vin - Vswitch ) * (Ns/Np ) − Vrect Queste due relazioni evidenziano come i convertitori Push-pull siano adatti a operare a basse tensioni. Se si usano come interruttori dei MOS, con questi convertitori si possono ricavare varie tensioni d’uscita (aggiungendo più avvolgimenti secondari), alcune delle quali con polarità opposta rispetto alle altre, permettendo, con un’unica alimentazione, tutte le tensioni necessarie per una data applicazione. Il convertitore push-pull è più complesso del convertitore flyback; il suo uso è conveniente quando le potenze sono elevate, al di sopra di 1 Kw. 16 I regolatori di tensione 1.2.7 I convertitori Half-Bridge I convertitori Half-Bridge prevedono l’uso di due transistor e sono largamente usati nella progettazione ad alta potenza. Essi sono molto indicati per tutte quelle applicazioni che richiedono una potenza sul carico compresa fra 500W e 1500W, e spesso funzionano direttamente dalla rete di alimentazione AC. Il principale vantaggio dei convertitori Half-Bridge è l’isolamento fra ingresso ed uscita ( la tensione DC pilotata in uscita è elettricamente isolata da quella AC della rete). Ma questo significa anche che il circuito di controllo PWM deve essere riferito alla massa della sezione DC. La struttura base di un convertitore Half-Bridge è rappresentato in figura: Figura 1-9 Struttura e principio di funzionamento di un convertitore Half-bridge Come si vede dallo schema, con le due capacità in serie, uguali fra loro, collegate alla tensione DC non regolata, si riesce a portare un capo dell’avvolgimento primario del trasformatore a metà della tensione Vin . L’altra estremità dell’avvolgimento è alternativamente pilotata alta e bassa dal circuito con i due transistor, i quali, per non essere distrutti, non devono mai essere contemporaneamente accesi. I diagrammi temporali sono riportati qui sotto: Figura 1-10 Diagramma temporale del circuito di fig 1-9 Quando è acceso il transistor A, date le polarità, risulterà acceso nel secondario il diodo superiore, consentendo alla corrente di scorrere sul carico e sulla 17 I regolatori di tensione capacità. Viceversa, quando è acceso il transistor B si invertono le polarità e nel secondario sarà acceso l’altro diodo. In questi convertitori, vi è la scarica del condensatore sul carico solo quando non scorre alcuna corrente nel trasformatore, cioè quando i due transistor sono entrambi spenti. Si noti dai diagrammi come gli impulsi in uscita siano a frequenza doppia di quelli del controllo PWM che pilota i due transistor. Utilizzando la stessa terminologia del caso precedente, la tensione in uscita può essere calcolata come: Vout = Vpk * Ton Tper Mentre il valore di picco della tensione : Vin Vpk = - Vswitch * ( Ns - Np) − Vrect 2 1.2.8 I convertitori Full-Bridge I convertitori Full-Bridge richiedono complessivamente quattro switching transistors per realizzare la conversione DC-DC. Il Full-Bridge è spesso impiegato in applicazioni che utilizzano la potenza direttamente dalla linea AC, provvedendo ad una potenza disponibile sul carico da 1 Kw a 3 Kw. Un aspetto importante di questo dispositivo è l’isolamento dalla la rete AC grazie allo “switching transformer”. Il circuito di controllo PWM è riferito alla massa d’uscita, richiedendo un’alimentazione a parte solitamente ricavata da un piccolo trasformatore a 50 Hz. Inoltre, per mantenere l’isolamento, la base dei convertitori switching è pilotata con altri piccoli trasformatori, come si evince dalla seguente figura: Figura 1-11 Struttura e principio di funzionamento di un convertitore Full-bridge Il trasformatore principale è sottoposto a tutta la tensione di ingresso quando tutti e due i transistor A o i B sono accesi. Dall’utilizzo dell’intera tensione di alimentazione deriva i nome Full-Bridge Converter, che mette a disposizione la più alta potenza disponibile sul carico di tutti i tipi di convertitori. 18 I regolatori di tensione Come è ovvio, può scorrere una corrente nel primario e secondario quando i transistor A o B sono accesi e, dualmente, sarà attivo il diodo superiore o inferiore del circuito secondario, mentre la capacità in uscita potrà scaricarsi sul carico solamente quando tutti e quattro i transistor saranno spenti. I diagrammi temporali sono stati rappresentanti precedentemente. La tensione DC in uscita sarà: Ton Tper Mentre il picco di tensione sul secondario è dato da : Vout = Vpk * Vpk = (Vin - 2Vswitch ) * (Ns - Np) − Vrect 1.2.9 Alcuni accorgimenti negli switching regulators Si possono apportare alcuni miglioramenti alle prestazioni dei regolatori switching con una attenta scelta delle capacità di ingresso e uscita, l’uso di capacità bypass, una attenta connessione dei componenti a ground, e una scelta oculata del tipo di trasformatore-induttore. Ricordiamo a proposito come è fatta una capacità reale e come i suoi componenti parassiti riducano il comportamento ideale: ESR : l’ESR (Equivalent Series Resistance) comporta un riscaldamento interno al condensatore dovuto alla dissipazione termica. L’ ESR può comportare casi di instabilità nel loop di regolazione e la capacità stessa può distruggersi se il ripple di corrente supera il limite. Il valore di ESR aumenta al diminuire della temperatura ed è funzione della frequenza. ESL : l’ESL (Equivalent Series Inductance)limita l’efficienza del condensatore alle alte frequenze, infatti dopo la frequenza di risonanza il condensatore si comporta come una induttanza. Questo è anche il motivo per cui i condensatori elettrolitici devono essere sostituiti con condensatori a film o ceramici per migliorare le prestazioni alle alte frequenze. ESR, ESL e C formano un circuito risonante, la cui frequenza di risonanza deve essere più alta possibile, perché oltre l’impedenza equivalente avrebbe un comportamento induttivo. I regolatori switching generano segnali con componenti in alta frequenza ( anche maggiori di 10 MHz) e quindi se tale frequenza risulta troppo bassa c’è il pericolo che nascano segnali spuri. 19 I regolatori di tensione Le capacità d’ingresso: Tutti i convertitori switching visti nei precedenti paragrafi hanno bisogno di assorbire della corrente dall’alimentazione DC ad una frequenza piuttosto alta; l’impedenza di ingresso è estremamente importante e per taluni persino una piccola induttanza potrebbe causare significativi disturbi nell’alimentazione del dispositivo. Un modo per ovviare a questo problema è quello di usare capacità di bypass vicine all’ingresso degli switching converter. Ancor meglio è usare un condensatore elettrolitico con in parallelo una capacità ceramica o a film per ottimizzare i bypassing in frequenza. Effetti dell’ESR nelle capacità d’uscita: La funzione principale delle capacità d’uscita in uno switching regulator è quella di filtro; mentre il convertitore funziona, ci deve essere una corrente carica/scarica sul condensatore. L’ESR della capacità d’uscita limita direttamente le prestazioni degli switching regulator ed in genere le case costruttrici definiscono un dato ESR per una data frequenza. Ad esempio i condensatori elettrolitici hanno la specifica di ESR a 120 Hz, ma in particolari applicazioni con i regolatori di tensione si deve avere una ESR stabile anche per alte frequenze (20KHz – 100 KHz). Per questo motivo, ho anche sviluppato una libreria che, con gli strumenti disponibili in laboratorio, fosse in grado di definire in modo automatico il valore di ESR per un dato range di frequenze. Sono molti i parametri che dipendono dall’ESR: Ripple Voltage: in molti casi, la maggior parte del ripple della tensione d’uscita dipende dal valore di ESR; se l’ESR aumenta, (come si vedrà dai risultati della libreria che ho sviluppato, ciò avviene alle basse temperature), il ripple in uscita aumenta sensibilmente. Efficiency: l’ESR è causa della dissipazione interna al condensatore e questa potenza persa riduce l’efficienza del regolatore e può addirittura arrivare a bruciare il condensatore stesso se è troppo alta. Loop stability: il valore di ESR delle capacità di uscita modificano anche la stabilità del controllo di retroazione dei regolatori. Come si vedrà meglio nella descrizione dei regolatori lineari, generalmente viene definito un range di ESR entro il quale il sistema resta stabile. Avere un condensatore con un definito e stabile ESR non è cosa semplice se tutto il dispositivo deve essere operare in un vasto range di temperatura: ad esempio l’ ESR di un tipico condensatore elettrolitico può crescere fino a 40 volte se la temperatura passa da 25 °C a –40°C. In questi casi è utile utilizzare in parallelo al condensatore elettrolitico in alluminio, un altro condensatore con una curva di ESR più stabile in temperatura, esempio quelli in Tantalium, consentendo così all’effettivo ESR di restare nel range di stabilità. 20 I regolatori di tensione Capacità di Bypass: Le capacità di bypass sono raccomandate sui pin di alimentazione, ma diventano indispensabili quando ci sono anche altri dispositivi vicino ai convertitori switching per ridurre l’interferenza elettromagnetica irradiata . Collegamenti di Ground: La ground in un circuito è supposta essere ad un solo e definito potenziale, ma in realtà non è così. Quando una corrente scorre verso massa, il filo di collegamento presenta comunque una seppur piccola resistenza, e quindi si crea una differenza di potenziale lungo il circuito di massa. Nei circuiti DC a bassa frequenza, la “gestione della ground” è abbastanza semplice: il solo parametro critico è la resistenza di collegamento del conduttore che ne definisce la tensione ai suoi capi. In alta frequenza, diventa importante anche l’induttanza interna della traccia o del conduttore di massa. Nei switching converter, ci sono impulsi di corrente ad alta frequenza che causano seri problemi se l’induttanza parassita è alta. Molti dei disturbi sulla tensione dei switching converter sono il risultato della corrente attraverso queste induttanze. È noto che in un conduttore ad alte frequenze la corrente, tende per effetto pelle a scorrere sulla sua superficie, e quindi è conveniente avere piste di ground larghe, in molti casi si usa tutto un lato della board. Un esempio di un pessimo layout è il seguente: Si può osservare come la corrente di ritorno del Power Switch scorra su un’unica pista comune al PWM Control Chip e al Logic Circuits: questa corrente causa spike di tensioni positivi e negativi (che seguono la legge v=L(di/dt) ), la cui ampiezza, come si vede in figura, è tanto maggiore quanto si è vicini al power switching . Quindi il pin di massa dei tre blocchi non è fisso ad un punto stabile e ben definito, ma è sottoposto a considerevoli sbalzi di tensione, oltremodo diversi ed in istanti differenti fra loro. Questo rumore presente sui pin di ground può causare una errata regolazione della tensione di uscita con un eccessivo ripple, e molto spesso i regolatori che soffrono di rumore di ground possono diventare instabili ed entrare in oscillazione al crescere della corrente ( cioè al crescere della corrente di ground). 21 I regolatori di tensione Un layout migliore è il seguente: In questo modo tutti e tre gli elementi sono collegati al punto di massa con tre diversi conduttori e, cosa importante, il power switch (che ha la più alta corrente di ground) è posizionato più vicino al pin di ground per ridurre l’induttanza di questo collegamento responsabile dei disturbi più alti. La capacità di ingresso deve essere una capacità elettrolitica con un buon comportamento di ESR ad alta frequenza (solitamente quelli in Tantalium), per mantenere il più possibile stabile l’alimentazione. Inoltre ai capi di ogni blocco è presente una capacità RF bypass ( solitamente condensatori a film o ceramici), di valore in genere di 0,01µF , ma il valore esatto dipende comunque dall’entità degli spike di corrente. Scelta del tipo di trasformatore ed induttore: Il costo di un induttore o di un trasformatore dipende in gran parte dal tipo di nucleo ferromagnetico adottato. Il rumore irradiato da un trasformatore è estremamente importante e deve essere limitato per prevenire errate operazioni del circuito di sensitive del switching regulator. Verranno presentati i tipi di nuclei più comuni, con i loro svantaggi e svantaggi: Figura 1-12 Due tipi di nuclei Si noti come il flusso magnetico del nucleo a sinistra esca da un lato, attraversi l’aria ed entri nell’altro lato; questo tipo di nucleo è il peggiore per quanto 22 I regolatori di tensione riguarda il rumore, ma risulta il più economico ed il più piccolo per un dato induttore. Viceversa, in un toroide il flusso magnetico è completamente contenuto in esso; per questa ragione risulta il migliore per la bassa irradiazione di rumore, ma ha lo svantaggio del costo più alto rispetto agli altri tipi di nucleo (realizzare l’avvolgimento in un toroide è più costoso di quello su un nucleo parallelepipedo). C’è poi una serie di nuclei con proprietà di rumore irradiato migliori di quelli a parallelepipedo, ma non come quelli a toroide. Questi nuclei sono costituiti da due pezzi e spesso vi è un “gap” d’aria per prevenire la saturazione del nucleo in ferrite. Nella seguente figura vi sono tre tipi di nuclei spesso usati nei trasformatori degli switching regulator: Vi è del rumore nel gap d’aria fra i due materiali dovuto al flusso magnetico che lascia un pezzo del nucleo e raggiunge l’altro. I primi due tipi di nuclei sono molto semplici e poco costosi da realizzare, e si presentano in moltissime applicazioni con gli switching regulator sopra 1 Kw, realizzati a seconda degli usi in varie dimensioni e differenti mescole di Ferrite; in più il rumore irradiato è ragionevolmente basso e questo tipo di nucleo può facilmente adoperato nei layout delle board. Il pot core sfrutta i vantaggi della protezione dei lati stessi di questo tipo di nucleo (che non presentano gap), consentendo di limitare il flusso irradiato meglio degli altri due casi e secondo solo al toroide. Generalmente il nucleo pot core è più costoso dei casi E-E, E-I ma presenta una limitata rumorosità; essi sono più facili da costruire rispetto ai nuclei a toroidi poiché gli avvolgimenti sono realizzati da bobine standard ed semplicemente il nucleo viene assemblato attorno ad esse. 1.2.10 Misura dell’efficienza degli switching regulator: L’ efficienza è definita come: η = Pload/Ptot Considerando la tensione d’ingresso DC, Ptot è definita come la potenza totale assorbita dall’alimentazione, che equivale a : Ptot = Vin *Iin(average) Si deve tener presente che nel calcolo viene considerata la corrente media assorbita ( essa in realtà non sarà né DC, né sinusoidale) 23 I regolatori di tensione La potenza totale può altresì calcolata considerando la potenza assorbita dal carico e quella dissipata all’interno del regolatore: Ptot = Pload + Plosses Dai valori DC della corrente e tensione d’uscita Vout , Iout , ricaviamo: Pload = Vout * Iout Ma quantificare la potenza assorbita dall’alimentazione non è semplice: benché la tensione di ingresso sia sostanzialmente DC, la stessa cosa non si può dire per la corrente assorbita. La corrente media assorbita dal regolatore può essere ricavata con ragionevole accuratezza usando una sonda di corrente a larga banda collegata ad un oscilloscopio: Se è necessaria una misura più accurata nel calcolo della corrente DC assorbita, conviene allora usare una filtro L-C fra l’alimentazione e lo switching converter: in questo modo la corrente in uscita al DC power supply sarà solo la componente DC: Risulta indispensabile l’uso di una grande capacità Cin bassa ESR in quanto la rete L-C presenta un’alta impedenza alle componenti switching della corrente e quindi Cin deve essere in grado di soddisfare queste richieste di impulsi di corrente. Nei convertitori off-line , che assorbono potenza direttamente dalla rete AC, vengono usati un raddrizzatore ed una capacità di filtro per ottenere una tensione DC (non regolata). La misura della potenza complessivamente assorbita dalla rete AC risulta difficoltosa per il fattore di forma: se la tensione e la corrente sono entrambe sinusoidali, il fattore di forma è definito come il coseno dello sfasamento fra i due segnali. Ma in questo caso la corrente non è per niente sinusoidale, ma risulta sottoforma di stretti e elevati impulsi (chiamati Haversine pulses) che richiedono una ri-definizione del fattore di forma. Usando una capacità d’ingresso come filtro, il fattore di potenza P.F. è definito come: P.F = Preal / Papparent 24 I regolatori di tensione Questo termine può essere rilevato dal Lecroy waverunner Lt584L e sarà sfruttato all’interno di una libreria per il calcolo del valore di ESR. La potenza reale sarà data dalla somma della potenza dissipata sul carico più le perdite interne al regolatore .Per il calcolo di queste potenze esistono speciali strumenti, abbastanza costosi e non sempre disponibili dal design. Un altro metodo meno costoso che consente di ottenere un buon risultato, è quello di misurare la potenza dopo che la tensione AC sia stata raddrizzata e filtrata (cioè è solo sostanzialmente DC),come in figura: La corrente che va da Cin al convertitore è prossima a essere DC e quindi facilmente misurabile o approssimabile (vedi caso precedente). La potenza totale assorbita dalla rete AC sarà la somma della potenza su Vin*Idc e quella dissipata dal ponte raddrizzatore, che attualmente può essere facilmente trascurata. 25 I regolatori di tensione 1.3 I regolatori lineari I regolatori lineari sono di uso semplicissimo e poco costosi, e per questo motivo risultano diffusissimi nei dispositivi elettronici a basso costo.Come i regolatori switching, i regolatori lineari sono usati per fornire una tensione DC d’uscita sul carico continuamente regolata entro determinate specifiche [4]. 1.3.1 Struttura base di regolatore lineare Un regolatore lineare opera utilizzando un generatore di corrente comandato in tensione per mantenere una tensione DC costante sul carico: Figura 1-13 Struttura generica di un regolatore lineare Il circuito di controllo rileva continuamente la tensione d’uscita (sense control circuitry) e apporta opportuni aggiustamenti della corrente per mantenere la tensione ad un dato valore. La tensione d’uscita è regolata da un circuito di retroazione, che richiede una compensazione per assicurarne la stabilità. La maggior parte dei regolatori lineari adottano una compensazione interna e sono completamente stabili senza nessuna altra compensazione esterna aggiuntiva; altri invece, vedi i Low DropOutput, richiedono una capacità esterna fra il piedino di Vout e massa per assicurarne la stabilità. Un’altra caratteristica di tutti i regolatori lineari è quella che richiedono un tempo finito per correggere la tensione d’uscita dopo una variazione della corrente assorbita: questo “flag time“ è chiamato transient response e da una misura della rapidità di regolazione al variare della corrente assorbita. 1.3.2 Le funzioni del Control Loop Le funzioni del control loop in un tipico regolatore lineare possono essere spiegate facendo riferimento alla seguente figura: 26 I regolatori di tensione Figura 1-14 Tipa struttura di controllo in un regolatore lineare Il pass device Q1 del regolatore è formato da un Darlington NPN pilotato da un transistor PNP (questa è la classica tipologia degli Standard Regulator). La corrente che scorre dall’emettitore del pass device è controllata da Q2 con il voltage error amplifier. La corrente attraverso R1 e R2 è considerata trascurabile rispetto a quella sul carico IL. Il circuito di retroazione che controlla la tensione d’uscita è ricavato usando la serie R1 e R2 per una sua stima che viene applicata al piedino negativo del comparatore, il cui ingresso positivo è mantenuto ad una tensione di riferimento. In questo modo l’error ampifier porterà continui aggiustamenti, pilotando la corrente su Q1, affinché la tensione d’uscita rimanga stabile. È importante tener presente che un improvviso aumento o diminuzione della corrente sul carico, costringerà in un tempo finito, grazie ad una variazione della tensione su R2, a delle correzioni della corrente attraverso Q1. 1.3.3 Tipici regolatori lineari Ci sono tre tipi di regolatori lineari: § § § Standard (NPN Darlington) Regulator Low DropOut Regulator (LDO) Quasi LDO Regulator La diversità più evidente fra i tre tipi di regolatore sta nel Dropout Voltage, definito come la differenza minima fra la tensione di ingresso e quella d’uscita regolata. Un’altra differenza fra i tre tipi di regolatori sta nel valore della corrente di ground del dispositivo. Gli Standard Regulator hanno la più bassa corrente di ground, mentre in genere gli LDO presentano la più alta. Questa corrente di ground è indesiderata poiché viene “persa”, ossia viene assorbita dall’alimentazione ma non la si ritrova nella potenza sul carico. 27 I regolatori di tensione 1.3.4 I regolatori lineari Standard (NPN) I primi regolatori di tensione lineari integrati usavano la configurazione NPN Darlington come pass device, e sono stati chiamati Standard Regulator: Figura 1-15 Tipica struttura dei regolatori lineari Standard Un importante aspetto degli regolatori Standard è che per mantenere la tensione d’uscita regolata richiedono come minimo una tensione di dropout pari a : Vdmin = 2Vbe + Vce Operando in un tipico range di temperatura da –55°C a +150°C, la tensione minima richiesta per un corretto funzionamento di questo regolatore è generalmente compresa fra 2.5V e 3V, mentre in genere non riescono più a regolare correttamente al di sotto di 1.5V ( comunque questo valore dipende dalla corrente sul carico e dalla temperatura d’esercizio). Il valore di dropout di questi regolatori risulta il peggiore fra i tutti e tre. Un pregio però di questi regolatori è la bassa corrente di ground (ad es. ci sono regolatori standard come LM309 che con 1A di corrente sul carico hanno una corrente di ground di meno di 10 mA). Infatti la corrente di ground è dovuta sostanzialmente alla corrente di base che pilota il pass device ed è uguale al valore della corrente sul carico diviso il guadagno del pass device. Nei regolatori standard il pass device è costituito da un PNP che pilota due NPN in configurazione Darlington ed il guadagno totale di corrente è molto alto (maggiore di 300), necessitando così di una bassa corrente di pilotaggio. La corrente di ground negli standard regulators, data la loro struttura interna, risulta la più bassa tra i tre tipi di regolatori lineari. 1.3.5 I regolatori LDO I Low DropOut regulator (LDO) differiscono dai regolatori standard poichè il loro pass device è costituito da un solo transistor PNP: 28 I regolatori di tensione Figura 1-16 Tipica struttura dei regolatori lineari LDO La minima tensione di drop richiesta dagli LDO al fine di un corretto funzionamento corrisponde proprio alla tensione sul transistor PNP: Vd(min) = Vce Generalmente il dropout voltage di un regolatore LDO è di circa 0,8V , ma comunque è funzione della corrente assorbita dal carico e dalla temperatura d’esercizio; a questo proposito si può far riferimento ai risultati ottenuti dalla libreria che ho sviluppato per la misura di dropout in cui si varia la corrente di carico e la temperatura. Comunque i regolatori LDO presentano il valore di Dropout più basso di tutti e tre i tipi di regolatori lineari, e per questo trova grande impiego nelle applicazioni a batteria, in quanto riescono a massimizzare l’utilizzo della tensione di alimentazione. Uno svantaggio di questi regolatori sta nella corrente di ground, pari a quella di carico divisa dal guadagno del singolo transistor PNP. Di conseguenza, la corrente di ground di questi regolatori è la più alta dei tre tipi. Per esempio, il LP2953 LDO regulator progettato per una Iload max di 250 mA, dato il guadagno del suo transistor di 9,ha una corrente di ground di 28 mA, mentre il LM2940 con Iload max 1A ha corrente di ground max di 45 mA. 1.3.6 I Quasi Low-Dropout (LDO) Regulator Una variante dei regolatori LDO sono I Quasi Low-Dropout Regulator che usano un pass device composto da un transistor NPN e PNP . La minima tensione di Dropout che assicura un corretto funzionamento è : V D(MIN) = VB E + VCE Figura 1-17 Tipica struttura dei regolatori lineari Quasi LDO 29 I regolatori di tensione Generalmente il drop voltage di un quasi-LDO è di circa 1.5V (max), comunque non scende mai sotto ai 0,9V (25°C) con corrente di carico massima. Perciò il dropout voltage dei quasi-LDO regulator risulta più alto degli LDO, ma più basso degli Standard Regulator. Inoltre la corrente di ground è piuttosto bassa (generalmente minore di 10 mA con corrente di carico massima) e quindi sono migliori sotto questo aspetto degli Standard Regulator. 1.3.7 Confronto dei tre tipi di Regolatori Lineari I tre tipi di regolatori differiscono da come è implementato il pass device: Gli Standard Regulator sono i più indicati per le applicazioni di potenza con rete AC, dato il loro costo contenuto e la loro alta corrente di carico disponibile; in applicazioni AC (previo uso di un circuito raddrizzatore e di un condensatore di filtro) la tensione sul regolatore è come minimo di 3V e quindi la tensione è meno critica e tuttavia , data la loro limitata corrente di ground, hanno una bassa dissipazione interna. Gli LDO Regulator sono invece i più indicati nelle applicazioni a batteria dato il loro basso valore di drop. Se la differenza fra l’alimentazione e la tensione d’uscita desiderata risulta bassa (da 1V a 2V) i regolatori LDO sono più efficienti dei regolatori Standard perché riducono la potenza dissipata che può essere approssimata al prodotto della corrente sul carico per questa differenza di tensione. Ci sono anche altri tipi di pass device oltre a quelli visti, che vado ora a riassumerli e confrontarli nelle seguenti figure: 30 I regolatori di tensione VANTAGGI e SVANTAGGI: La scelta di quale regolatore lineare sia il migliore per una data applicazione deve essere individuata valutando questi fattori: • • • • • Maximun Load Current Il tipo di alimentazione (Batteria o AC) Output voltage Precision Quiescent current Caratteristiche specifiche (Shutdown Pin, Error Flag…) Maximun load current : il valore di corrente massima disponobile sul carico deve essere attentamente valutata nella scelta del tipo di regolatore. Il tipo di regolatore scelto deve essere in grado di fornire una corrente sufficiente per l’applicazione in ogni condizione d’uso perchè sia davvero efficiente. 31 I regolatori di tensione Input Voltage Source (Battery or AC): il tipo di alimentazione influenza fortemente la scelta del tipo di regolatore da usare: - BATTERIA: nelle applicazioni a batteria la scelta migliore cade nei LDO poiché dato il loro basso LDO sfruttano l’alimentazione nel modo più efficiente. Per esempio una batteria a 6V quando è completamente carica è sui 6.3 volt e per avere una tensione regolata sui 5V l’ideale è un LDO che presenta circa 0,5V di dropout e quindi consente un funzionamento fino a 5,5V di alimentazione. - AC: se si ricava una tensione DC raddrizzando e filtrando un segnale alternato, non è significativo il valore di drop del regolatore poiché basterà aumentare un poco il numero di avvolgimenti del secondario. In queste applicazioni la scelta più economica è uno Standard regulator che offre una buona corrente d’uscita, comunque in forte concorrenza con i nuovi LDO regulator che possiedono una più accurata regolazione. Output voltage Precision: tipicamente i regolatori lineari hanno una specifica sul valore di tensione d’uscita in cui si assicura il valore entro il 5% di quello nominale. Ci sono poi i nuovi regolatori che fissano la tolleranza dell’uscita entro il 2% attraverso un laser-trim process. Quiescent current: è definita come la corrente a vuoto assorbita dal regolatore ed è molto importante per la durata della batteria. In molte applicazioni un regolatore passa la maggior parte del tempo in standby e la quiescient current può diventare critica. Molti dei nuovi regolatori LDO vengono per avere basse quiscient current, dell’ordine di 75-150µA. Special Features: molti LDO offrono speciali caratteristica che consentono all’utilizzatore una certa flessibilità: - ENABLE è un pin che permette ad una logica di controllo o a un microcontrollore di spegnere il regolatore. - OVER-VOLTAGE PROTECTION è molto usato nel campo Automotive come protezione contro le sovratensioni: il regolatore si spegne durante overvoltage transient, per poi riaccendersi quando il transitorio è finito. - REVERSE INPUT VOLTAGE PROTECTION per proteggere il regolatore quando accidentalmente l’utilizzatore sbaglia la polarità della batteria. - RESET FLAG per controllare se la tensione d’uscita scende oltre una data tolleranza (5%) rispetto al valore nominale. Questo pin è come un “warning flag” che segnala a un controllore che la tensione è scesa ad un valore che può causare errori ad una eventuale CPU o a un circuito logico alimentati dal regolatore. La tipica struttura di un regolatore lineare si può quindi riassumere in questa figura: 32 I regolatori di tensione Figura 1-18 Tipica struttura di un regolatore lineare In molti dispositivi la tensione di riferimento non è ricavata semplicemente con un diodo zener, ma con un circuito di bandgap che, assieme ad altri blocchi dei regolatori lineari, verrà trattato nei capitoli delle rispettive librerie Labview. A titolo d’esempio riporto lo schema a blocchi del 5-V Low-Drop Fixed Voltage Regulator TLE 4270 dell’ Infineon (vedi appendice D) che verrà usato come esempio di regolatore per lo sviluppo delle librerie: 33 I regolatori di tensione 1.4 CONFRONTO FRA I REGOLATORI SWITCHING-E LINEARI La scelta fra regolatori switching e regolatori lineari non è per niente semplice e deve tener conto di molteplici fattori quali ad esempio le richieste di corrente e tensione sul carico, la potenza dissipata, la necessità di filtri per limitare il rumore, lo spazio disponibile nella board ed il costo. La riduzione delle dimensioni degli IC (“Integrated Circuit”) è accompagnata dalla riduzione delle tensioni in gioco: per applicazioni digitali, i 3,3V hanno sostituito i classici 5V, ma anche a loro volta stanno per essere sostituiti da tensioni d’esercizio più basse; comunque una bassa tensione d’uso comporta solo una piccola diminuzione dato che in un IC ci sono milioni e milioni di transistor . Un tempo per le tensioni a 5V la scelta cadeva sugli switching regulator, ma sono diventati poco efficienti alle basse tensioni e la scelta ora generalmente cade sui LowDropout regulator che in più non richiedono filtri. In un regolatore Buck ci sono differenti tipi di perdite: Figura 1-19 Regolatore Buck Si consideri una resistenza di conduzione dello switch e del diodo pari a 0,1Ω e 2A con 1V di corrente sul carico e un duty-cicle del 50% , quindi Iavg = 1A; la perdita RI2 risulta allora di 0,1W , sull’induttanza 0,4W , sul carico 2W e si consideri un ulteriore 0,1W perso nel transitorio dello switching: in totale saranno persi 0,7W con 2W sul carico, quindi l’efficienza sarà del 74% (in questa analisi non viene considerata la resistenza ESR della capacità d’uscita e la potenza sul controllore PWM). Ma i principali vantaggi degli switching regulator sono l’efficienza, le dimensioni ed il peso, ma rispetto a quelli lineari sono più complessi nella progettazione e generano, a causa delle repentine commutazioni, rumore in uscita. Inoltre date le perdite dovute alla conversione DC-AC della tensione di rete, l’efficienza del convertitore switching cala al diminuire della tensione d’uscita. Recentemente i costi degli switching si sono abbassati perché si è ridotto il costo e integrato il circuito di controllo. Un confronto fra le prestazioni dei due tipi di regolatori è riassunto nella seguente tabella: 34 I regolatori di tensione Si noti come l’efficienza degli switching sia attorno al 70%-80% , d’altra parte ci sono regolatori lineari per applicazioni in cui sono minimi i problemi di variazione del carico che raggiungono un’efficienza del 50%,quella tipica resta attorno al 30%. Un problema degli switching è il rumore e gli spike di tensione generati e per questo richiedono dei filtri aggiuntivi o dei diodi di protezione, ma in compenso hanno una migliore rapidità di risposta perché per le capacità di filtro è più facile immagazzinare energia alle alte tensioni (200V, 400V) che alle basse: le dimensioni fisiche di un condensatore e dipendono dal termine CV, mentre l’energia è 1/2CV2 . Con questi convertitori possiamo raggiungere elevate correnti d’ uscita (anche 100 mA) grazie a impulsi di tensione strettissimi che consentono al dispositivo di restare spento per la maggior parte del periodo di funzionamento e quindi di dissipare poca energia. I vantaggi e svantaggi delle due categorie di regolatori possono così essere riassunti: Switching Voltage Regulator 1.4.1.1.1.1 Linear Voltage Regulator Vantaggi: ü Semplice ü Basso output ripple voltage ü Buona Line e Load regulation ü Velocità di risposta a variazioni di carico e di alimentazione ü Bassa interferenza elettromagnetica (EMI) ü Basso dropout Svantaggi: ü Bassa efficienza ü Maggior spazio se è richiesto un dissipatore ü Maggior costo (uso della tecnologia più recente) Vantaggi: ü Alta efficienza ü Disponibilità di varie tensioni d’uscita,anche più alte di quelle in ingresso(Boost) ü Disponibilità di tensioni con polarità diverse ü Bassa dissipazione Svantaggi: ü Alto output ripple voltage ü Transitori lenti ü Necessità di filtri causa EMI Il grafico seguente rappresenta il risultato del confronto fra i due tipi di regolatori di tensione; ovviamente, diverse condizioni di tensione uscita, corrente uscita e tensione ingresso possono modificare i valori; generalmente, tanto più 35 I regolatori di tensione grande è la potenza trattata tanto maggiore è la differenza a favore della soluzione switching. 36 L’ambiente Labview 2 L’ ambiente Labview 2.1 INTRODUZIONE LabVIEW è uno strumento di programmazione che, sebbene permetta in teoria di sviluppare qualsiasi tipo di applicativo, è orientato verso la misura ed il controllo di processi industriali e di laboratorio. Sia l'interfaccia utente, sia il programma stesso, sono realizzate per via grafica. Questo significa che l’operatore non deve inviare comandi o digitare valori con la tastiera, ma può ottenere lo stesso risultato utilizzando il mouse premendo pulsanti o per ruotando potenziometri. Per chi sviluppa il software programmare per via grafica vuol dire essere liberati dalla pesante architettura dei linguaggi basati sul testo: così le linee di istruzioni si traducono in blocchi che eseguono determinate funzioni collegati tra loro tramite fili che trasportano i valori dall'uscita di un blocco all'ingresso di un altro. Un punto di forza di LabVIEW è quindi la visibilità, l'immediatezza che offre tanto all'utente quanto al programmatore. Ma LabVIEW nonostante sia di facile comprensione, è un potente strumento di programmazione che consente di utilizzare le strutture classiche di tutti i linguaggi (case, cicli for, while, ecc.). Inoltre essendo uno strumento di sviluppo orientato all'acquisizione dati e al controllo di processo fornisce numerose librerie e driver per interfacciarsi alle più comuni schede di acquisizione e di controllo, e numerose funzioni matematiche e statistiche per l'elaborazione dei dati acquisiti. Scopo del prossimo paragrafo è quello di offrire una panoramica sugli aspetti principali di questo programma, indispensabile per capire le librerie che sono state fatte per risolvere i problemi proposti a questa tesi. Nel successivo paragrafo verrà illustrato il sistema hardware di acquisizione dati adottato e quindi quali instrument driver usati. 37 L’ambiente Labview 2.2 Labview 2.2.1 Generalità Labview è un programma di applicazione molto simile al C o al Basic, ma ne differisce sotto un importante aspetto. Gli altri sistemi di programmazione usano linguaggi basati sulla scrittura di linee di codice mentre Labview usa il linguaggio di programmazione grafico G, per creare programmi sotto forma di diagrammi a blocchi. Il linguaggio G può essere considerato l’equivalente del codice sorgente nella programmazione tradizionale. Figura 2-1L'Applicazione Labview Labview è un sistema di programmazione ad ampio spettro, ma comprende anche una serie di funzioni e strumenti di sviluppo designati appositamente per l’acquisizione di dati ed il controllo della strumentazione stessa. I programmi scritti in Labview vengono chiamati Virtual Instrument (VI) poiché per la loro apparenza e funzionalità imitano e sostituiscono gli strumenti reali. Fondamentalmente un Virtual Instrument consiste in una interfaccia utente iterativa (Panel), un diagramma di flusso di dati che agisce come codice sorgente (Block Diagram), un’icona e dei connettori che permettono lo scambio di dati fra VI diversi. Si possono usare VI per creare sistemi custom per test, misure e automazioni industriali combinando differenti componenti hardware e software. 2.2.2 Organizzazione Gerarchica dei VI Tutti i vari Virtual Instrument creati possono essere usati gerarchicamente, allo stesso modo delle funzioni scritte in altri linguaggi. Infatti una volta creato un VI, esso può essere usato come un programma di massimo livello, oppure come sottoprogramma all’interno di Diagram Block di strumenti di un livello più alto. Un VI all’ interno di un altro VI verrà chiamato subVI. Dato un VI, si devono associare i parametri grafici quali l’icona ed i connettori perché possa scambiare dati 38 L’ambiente Labview con altri subVI dil VI di livello superiore (vedi Icona e Connettore della figura precedente) . Date queste caratteristiche , Labview applica una tecnica modulare di analisi. Abbiamo adottato uno stile di programmazione del tipo Botton Up , ossia in genere definisco quali funzioni dovrà essere in grado di compiere il mio VI principale, quindi successivamente costruisco i subVI che eseguono le necessarie elaborazioni sui dati che passano nel diagramma a blocchi. Il debug è attivabile attraverso i tasti programma: presenti nella barra degli strumenti del Attivando questa opzione è si attiva l’esecuzione del programma “passopasso”, visualizzando quali subVI vengono via via chiamati e quali dati vengono passati e/o ritornati. 2.2.3 Front Panel Il nome Virtual Instrument rispecchia il fatto che l‘interfaccia utente di un VI si presenta come il pannello frontale di uno strumento vero e proprio. È possibile introdurre valori in ingresso grazie a vari controllori, e, cosa importantissima, visualizzare con indicatori, grafici, tabelle e quant’altro, l’andamento in tempo reale dell’ esecuzione del programma. Anticipo a titolo di esempio il pannello frontale che ho creato per la misura di PSRR (Power Supply Rejection Ratio), che verrà affrontata in un capitolo a parte: Figura 2-2 Esempio di Front Panel 39 L’ambiente Labview In questo Front Panel si possono subito notare: § § § § § § § i controllori che definiscono i parametri della forma d’onda (wafeform,amplitude e offset) i controllori che definiscono lo sweep in frequenza con la frequenza di start, stop e il valore dello step i controllori che individuano il generatore di funzioni AG33250 e l’oscilloscopio LT584L attraverso gli indirizzi GPIB . i controllori che definiscono i parametri d’uso nell’oscilloscopio (quali canali, quali finestre utilizzare per la FFT…) il controllore che definisce path file in cui salvare i dati l’indicatore del valore di PSRR gli indicatori di eventuali errori sorti nel corso dell’esecuzione del programma (per sicurezzaè previsto un controllo interno che in caso di errori interrompe l’esecuzione) I controllori che mette a disposizioni Labview sono i più disparati : numerici, a manopole, booleani, e verranno spiegati di volta in volta nel corso della progettazione delle varie librerie, evitando di riportare ora un semplice e lungo elenco. 2.2.4 Diagramma a Blocchi Il diagramma a blocchi rappresenta il vero e proprio corpo programma; è composto da nodi, terminali, collegamenti e vari subVI. I nodi sono gli elementi che consentono l’esecuzione del programma e sono analoghi alle subroutine dei linguaggi di programmazione basati sul testo. Ci sono quattro tipi di nodi: • • • • Nodi funzione Nodi subVI Strutture Code Interface Nodes (CIN) Le funzioni sono nodi già disponibili che possono eseguire funzioni elementari come somma, differenza…, e più complicate (dipende dalla versione di Labview in uso) come la ricerca di minimi, funzioni numeriche… 40 L’ambiente Labview Figura 2-3 Esempio di tool disponibili in Labview I nodi subVI sono le icone associate ai vari subVI che vengono usate in un VI di livello superiore. Ci sono poi le Strutture come cicli For, While , ed il Case, che data la loro fondamentale importanza all’interno di qualsiasi programma in qualunque linguaggio, verranno riportate nel prossimo paragrafo per capire l’uso all’interno di Labview. Infine i CIN sono interfacce fra il diagramma a blocchi ed un eventuale codice scritto dall’utente direttamente in C. Per iniziare a capir meglio questi aspetti fondamentali del linguaggio Labview riporto Front Panel ed il Block Diagram che costituirà un piccolo pezzo comune ma fondamentale a quasi tutte le librerie che andrò a sviluppare: Figura 2-4 Esempio di Front panel e relativo Block diagram Nel Front Panel a sinistra andremo a settare tramite i primi tre indicatori i parametri dello sweep di tensione mentre l’indicatore in basso visualizzerà lo stato corrente; si osservi la struttura corrispondente nel Block Diagram con le relative connessioni fra i controllori e gli indicatori, il tutto racchiuso dentro un ciclo While. 41 L’ambiente Labview I dati fluiscono in una sola direzione, da uno o più terminali sorgente a più terminali di destinazione; si ricorda che l'ambiente LabVIEW tenta per quanto possibile di eseguire in parallelo tutti i nodi di un VI. Tuttavia un nodo può iniziare la propria attività solo se tutti i suoi elementi di ingresso (controllori) contengono dati. Le comunicazioni tra i nodi di un VI fissano un ordine nell'esecuzione dei nodi che lo compongono nel senso che se due nodi sono interconnessi, quello che dei due fornisce dati di ingresso per l'altro viene eseguito per primo Questo metodo di flusso di dati viene chiamato data flow che si contrappone al metodo control flow proprio dei programmi scritti con linguaggi convenzionali, nei quali le istruzioni vengono eseguite nello stesso ordine con cui sono state scritte nel listato. Nel metodo data flow non c’è un preciso ordine di esecuzione, un nodo viene eseguito quando i dati sono disponibili a tutti i suoi terminali di ingresso, e restituisce i risultati al termine dell’ esecuzione. Una sorta di sequenzialità tra le varie funzioni si stabilisce nel momento in cui i dati di ingrasso ad un nodo siano forniti dall’uscita del nodo precedente. Allora il secondo nodo aspetterà che il primo abbia finito l’esecuzione per avere in ingresso dei dati da elaborare. Quando invece una funzione deve essere eseguita prima di un’altra e non c’è nessun tipo di dipendenza tra gli ingressi e le uscite dell’una e dell’altra, bisogna utilizzare la struttura Sequence per forzare l’ordine di esecuzione ed eventualmente delle temporizzazioni, tutti aspetti che verranno affrontati nelle varie librerie sviluppate. Da questi semplici schemi si può anche notare come in Labview si possa riconoscere il Tipo di una variabile dal suo corrispondente colore nel Block Diagram : es. arancione per i double, blu per integer, rosa per string… Inoltre si possono creare array che verranno usati nelle librerie che ho creato per salvare i dati dei vari test, avendo così una collezione di dimensione variabile di elementi dello stesso tipo. Gli elementi di un array sono individuati da un indice compreso tra 0 ed n-1 e si può accedere ad essi specificando l'indice relativo all'elemento che si vuole leggere o scrivere. Infine si possono creare Cluster : un cluster individua un insieme di variabili di tipo diverso; ho usato i cluster per creare i grafici in Labview e, soprattutto, per raccogliere i dati di eventuali errori sorti nell’esecuzione del programma in un unico blocco. La figura 2-5 si riferisce al Front Panel che ho creato per pilotare un Keithley 2400 Source Meter che ho usato in varie librerie come generatore di tensione e sfruttare il fatto che fornisce pure la misura della corrente erogata. Si notino i due cluster in basso al Front Panel in cui informo l’utente se si è verificato un errore (e le librerie che ho creato interromperanno l’ esecuzione del programma), il relativo codice, e per ogni codice ho scritto una corrispondente stringa con una breve spiegazione del tipo di errore riferendomi al manuale : nell’esempio seguente si può vedere il comunissimo errore occorso quando gli strumenti non sono collegati o settati per il bus GPIB. 42 L’ambiente Labview Figura 2-5 Front Panel della libreria che pilota il cource-meter Ke2400 2.2.5 Le strutture Si può controllare il flusso di dati di un virtual instrument attraverso le strutture. Labview mette a disposizione quattro tipi di strutture: il ciclo While e il ciclo For, la struttura Case e la struttura Sequence . Il ciclo while : Come è noto un ciclo while ripete una parte di programma più volte. Il codice al suo interno viene eseguito fino a che il valore booleano passato al “terminale condizione” non cambia di stato. Lo strumento virtuale controlla il terminale condizione al termine di ciascuna iterazione. Il terminale iterazione è il contatore vero e proprio usato in questo ciclo (parte da zero). La struttura cardine “while loop” è illustrata nella seguente figura: Figura 2-6 struttura while 43 L’ambiente Labview Cliccando col tasto destro del mouse sul terminale di condizione si può selezionare “Stop if True” o “Continue if true” (come in figura precedente). Inoltre si possono collegare i “Cluster Error” al terminale di condizione e selezionare “Stop on Error” oppure Continue “While Error”. Dopo aver creato un While Loop, è possibile usare registri di trasferimento (“Shift Register”) per passare valori da un ciclo al successivo. Il ciclo For: La struttura For Loop esegue il diagramma contenuto nel rettangolo che la delimita per i = 0,1,…,N-1: essa è riportata nella seguente figura: Figura 2-7 struttura For Come si può notare il ciclo For ha due terminali : il terminale contatore ed il terminale iterazione. Il primo specifica il numero di volte che il ciclo deve essere eseguito, mentre il secondo contiene il numero delle volte che lo stesso ciclo è stato eseguito. La differenza sostanziale fra un ciclo For e un ciclo While risiede nel fatto che il ciclo For viene eseguito un numero predeterminato di volte, mentre un ciclo While termina di eseguire il codice racchiuso in esso solo quando il terminale condizione cambia di stato. La struttura Case: La struttura Case usata in Labview è analoga alle istruzioni SWITCH CASE…, IF…THEN…ELSE… dei classici linguaggi di programmazione. La struttura Case viene rappresentata nel Block Diagram come una “serie di schede” sovrapposte, delle quali se ne può vedere solo una alla volta: ogni “scheda” contiene una sezione di codice, che viene eseguita quando la variabile collegata al terminale di selezione della scheda coincide con il valore previsto per quella sezione. La potenzialità di questa struttura sta nel fatto che il terminale di selezione può essere di qualsiasi tipo, (numerico, booleano…) : Figura 2-8 Struttura Case controllata da una variab1e booleana 44 L’ambiente Labview Figura 2-9 Struttura Case controllata da una variabile numerica La struttura Sequence: Questa struttura appare graficamente come una serie di riquadri sovrapposti con un bordo forato come quello di una pellicola cinematografica, e verrà utilizzata per eseguire il codice in una sequenza pre-ordinata. Infatti nei linguaggi di programmazione convenzionali le righe di programma vengono eseguite nell’ordine in cui appaiono nel codice. Nel linguaggio grafico G di Labview un nodo viene eseguito soltanto quando tutti i dati in ingresso sono disponibili, ma a volte è necessario forzare e controllare l’ordine di esecuzione con la struttura Sequence. Nel caso della struttura Sequence l'identificatore rappresenta il numero d'ordine dei vari sub-diagrammi, chiamati frames , che compongono la struttura stessa: i frames appaiono sovrapposti l'uno all'altro ed è possibile cambiare il frame visualizzato agendo con la “operating tool” sulle freccette poste sul bordo superiore della struttura. Una volta posizionata nel block diagram, una struttura Sequence presenta un solo frame di default: per aggiungerne altri si deve selezionare l'opzione "Add frame after/before" dal menù pop-up associato alla struttura stessa. Quando si utilizza una struttura Sequence può risultare utile rendere disponibile su più frames il valore assunto da una variabile appartenente ad un determinato frame: ciò è possibile selezionando l'opzione “Add sequence local” dal menu pop-up associato alla Sequence. Selezionando tale opzione, comparirà sul bordo esterno del frame corrente un simbolo grafico quadrato vuoto: una volta collegato un filo tra tale simbolo ed una variabile appartenente al frame corrente, all'interno del quadrato comparirà una freccia diretta verso l'esterno del frame. Tale freccia indica che per il frame corrente il valore collegato alla Sequence local è di uscita; in tutti gli altri frame la freccia sarà rivolta verso l'interno, ad indicare che il valore associato alla Sequence local è di ingresso per tali frame, come illustrato nella seguente figura: 45 L’ambiente Labview Figura 2-10 Esempio di Sequence . Come si può notare dalla Fig. 76, l'uscita dal nodo di somma viene passata ai frame successivi per effettuare altre elaborazioni: si noti come il verso della freccia interna al quadratino che raffigura il Sequence local sia uscente per il frame 0 ed entrante per i frame 1 e 2. 2.3 L’Acquisizione dati Gli strumenti di misura, come i General-purpose Data Acquisition (DAQ) sono studiati per l’ acquisizione e la presentazione delle misure che si vogliono effettuare. Attraverso l’operazione di acquisizione di segnali come la tensione, la corrente, la pressione, e la temperatura, sono convertiti in formati digitali e letti dal computer. I vari metodi per acquisire i dati includono plug-in DAQ e instrument devices, GPIB instrument, VXI instrument, e RS 232 instrument. La successiva analisi dei dati trasforma “semplici “stringhe” di numeri” in informazioni articolate, come grafici, statistiche o altre operazioni. Per le applicazioni delle varie librerie che ho sviluppato non sono stati usati DAQ Devices in quanto c’erano già Special-Purpose Instrument disponibili (multimetri, oscilloscopi..), comunque si possono confrontare i due sistemi: 2.3.1 Confronto fra DAQ Devices e Special -Purpose Instrument La principale differenza fra le varie opzioni hardware, individuate nelle due categorie DAQ Devices e Special-Purpose Instrument, consiste nel tipo di comunicazione fra l’ hardware di misura vero e proprio ed il computer. I General purpose DAQ devices sono dispositivi che, connessi al computer, permettono alll’ operatore di avere direttamene i dati in forma digitale. Tipicamente questi dispositivi sono direttamente connessi al bus interno del computer attraverso uno slot pug-in. Altri,invece, sono esterni e connessi al computer via pota seriale, GPIB o ethernet. Il loro uso è diffuso nei test di produzione di un elevato numero di 46 L’ambiente Labview campioni, mentre gli “special purpouse” sono adottati nei test in fase di progettazione. La prima distinzione di questi sistemi è come la misura viene effettuata. Con i DAQ device non si possono elaborare i dati e questa operazione viene demandata al software del computer. Questi dispositivi possono compiere innumerevoli misure semplicemente cambiando l’applicazione software adibita alla lettura dei dati. Così, mentre questa flessibilità permette all’utente di avere solo un dispositivo hardware per vari tipi di test, per contro si dovrà spendere del tempo per sviluppare le applicazioni per questi diversi tipi di dati. Pure gli “special-purpose instrument” tipicamente digitalizzano i dati, ma sono in grado di effettuare solo una specifica misura. Il software, o firmware, richiesto per processare i dati e calcolare il risultato solitamente, è interno allo strumento e non può essere modificato. Per esempio, un multimetro non può leggere dati provenienti da un oscilloscopio e il programma memorizzato dentro il multimetro non può essere mai modificato. Molti strumenti sono esterni al computer e possono funzionare da soli o essere controllati e monitorati se connessi. In genere gli strumenti hanno un protocollo specifico di comunicazione, e la connessione può essere tipo Ethernet, Seriale, GPIB o VXI. Inoltre ci sono strumenti che si possono installare nel computer similmente ai “general purpose DAQ devices”, chiamati anche “computer-based-strument”. 2.3.2 Comunicazione pc - DAQ devices Prima che un sistema pc-DAQ possa misurare un segnale fisico, un sensore o un trasduttore deve convertire la grandezza da misurare in segnale elettrico, come una tensione o una corrente. I “plug-in DAQ devices” sono schede per acquisizioni specifiche e sono spesso considerati un sistema DAQ completo, benché sia invece soltanto un elemento di questo sistema. Invece a differenza degli “special pur pose instrument”, non è possibile collegare direttamente la scheda DAQ alle grandezze da misurare. In questi casi, si deve usare un accessorio che condizioni il segnale prima che il dispositivo plug-in DAQ lo converta in informazione digitale. Successivamente il software preposto al controllo del DAQ riceverà, analizzerà ed elaborerà i dati. Nella seguente figura vi sono visualizzate due soluzioni per un sistema DAQ. In A, il dispositivo plug-in DAQ risiede nel computer, in B invece è esterno. Con una board esterna, si possono realizzare sistemi DAQ usando computer sprovvisti di slot plug-in, ad esempio laptops. Il computer ed il modulo DAQ comunicheranno attraverso vari bus come la porta parallela, seriale, ethernet. 47 L’ambiente Labview Figura 2-11 Sistemi plug-in DAQ Una terza opzione usa il bus PCMCIA disponibile in alcuni laptops. Un PCMCIA DAQ device è inserito nel computer e i segnali sono collegati nella board come in A, permettendo di avere un compatto e portabile DAQ system. 2.3.3 Comunicazone pc – special purpose instrument Il modo in cui un computer controlla i vari strumenti e ne acquisisce i dati dipende da come quest’ultimo è costruito. In genere i più comuni strumenti mettono a disposizione: • • • • • 48 GPIB Serial Port VXI PXI Computer-Based instruments L’ambiente Labview In questa tesi verrà usato per comunicare con gli strumenti il bus GPIB e la porta seriale le cui caratteristiche sono riportate nell’AppendiceA e B. Brevemente possiamo dire: GPIB : è il bus più diffuso per il controllo degli strumenti; è un bus digitale a 24 pin, e consente ai vari device di avere un unico indirizzo GPIB da 0 a 30 e per stabilire quale abbia il controllo del bus, i device sono suddivisi in Controllers, Talkers, o Listeners. Maggior dettagli si possono trovare in Appendice A. Serial port: ci sono vari tipi di porte seriale: la più diffusa è al RS-232. la RS-422 presenta una maggiore immunità al rumore per l’uso di segnali differenziali, mentre la RS-485 è un’evoluzione di questa porta perché permette di collegare più dispositivi (al massimo 32) ottenendo una network di devices connessi a un’unica porta seriale RS-485. Maggior dettagli si possono trovare nell’ Appendice B. VXI (VME eXtensions for Instument): definisce un protocollo di comunicazione attraverso comandi ASCII (come per il GPIB) , ed è una estensione della specifica IEEE 1014 (VMEbus) in quanto adotta gli stessi connettori, board con la stessa larghezza e gli stessi segnali. PXI Modular Instrumentation : PXI è completamente compatibile con CompactPCI e incorpora le temporizzazioni del VXI. PXI risolve il gap fra il basso costo di soluzioni PC e l’ alto costo di VXI e GPIB , accomunando gli standard PCI, CompactPCI e VXI. Computer-Based Instruments : sono costruiti per specifiche piattaforme, includendo PCMCIA, PCI e PXI ; offrono il vantaggio della potenza di un PC, della memoria espandibile, display ad alta risoluzione e connettività col web. 2.3.4 Instrument Drivers in Labview Uno strumento può comunicare col pc attraverso dei bus utilizzando un preciso protocollo di comunicazione: ogni strumento riconosce solo precisi comandi, ma nello sviluppo delle librerie di questa tesi sono stati utilizzati soprattutto “instrument driver”, salvo in alcuni casi ricorrere direttamente alle stringhe di comando in mancanza di questi. Un “instrument driver” è una collezione di funzioni che implementano i comandi necessari atti a pilotare lo strumento. Il principale vantaggio è quello di semplificare la programmazione in comandi di alto livello, evitando la conoscenza della sintassi di basso livello riconosciuta dallo strumento. In questo modo si risparmia molto tempo, consentendo 49 L’ambiente Labview di concentrarsi maggiormente allo sviluppo del progetto e non anche allo studio dei comandi di basso livello necessari per la scrittura del programma (sfortunatamente nello sviluppo di alcune librerie per l’oscilloscopio e per il pilotaggio via porta seriale della cella termica ho dovuto ricorrere a molti comandi di basso livello). Per questa tesi sono stati scaricati i drivers di comunicazione via GPIB per seguenti strumenti: ü ü ü ü ü ü Generatori di funzioni Ag33250 e Ag33120, Multimetri Keithley Ke200X , Source-meter Ke2400, Oscilloscopi Lecroy waverunner LT584L e LT374, DC load AGT3301, Multimetro multichannel Ke2700 Tutti questi drivers sono disponibili gratuitamente nei siti delle rispettive case costruttrici: http://www.keithley.com http://www.lecroy.com/ http://web.home.agilent.com Gli instrument drivers vengono installati automaticamente nella …labview\instr.lib e resi disponibili nel Function Palette di Labview: subdirectory In questa figura si possono osservare i drivers che sono stati installati e come sono tipicamente organizati. Ci sono varie applicazioni divise per categoria e con opportuni collegamenti, comandi e variabili di ingresso, si possono creare i subVI richiesti. Figura 2-12 Esempio di drivers installati in Labview 50 L’ambiente Labview 2.3.5 GPIB e Instrument Control usati Dato che sugli strumenti attorno porta di comunicazione più diffusa è la strumenti sono stati utilizzati due GPIB controllo fissa e uno per il notebook. vantaggio: • • • • • ai quali andrò a sviluppare le librerie, la porta GPIB, per la comunicazione fra pcplug-in controllers, uno per la stazione di Un GPIB plug-in controller offre questo È l’ideale per ogni workstation e laptop Aumenta le prestazioni (oltre 8 Mb) fra PCI e HS488 Facile configurazione con il software Measurement & Automation Explorer Combina assieme le funzioni GPIB Controller/Analyzer Riduce i tempi di sviluppo utilizzando il software dello standard NI488.2 Per la stazione fissa si utilizza la scheda NI PCI-GPIB compatibile con Windows 2000/XP/Me/98: -Trasferimento dati fino a 1.5 Mb/s (IEEE488.1) e 7.7 Mb/s (HS488) - Compatibile con Windows 2000/XP/Me/98 - Onboard bus master DMA controller per evitare interruzioni del microprocessore nel traferimento dati - NI custom TNT ASIC per massimizzare le prestazioni della IEEE 488.2 Per il notebook si utilizza come interfaccia GPIB una card compatibile con il bus PCMCIA e con il sistema Windows 2000/XP/Me/98: Le caratteristiche principali sono le seguenti: - Completamente compatibile con NI488.2 - Bassa potenza assorbita -Uso di registri FIFO per aumentare le prestazioni -Compatibile con Windows 2000/XP/Me/98 51 Misura Load Regulation 3 Misura della Load Regulation 3.1 INTRODUZIONE La misura della Load regulation assieme a quella della Line Regulation è una delle più comuni e importanti misure dei power supply. In questo capitolo verranno presentate le librerie Labview in grado di effettuare automaticamente questo test, accompagnate dai subVI che piloteranno i vari strumenti di misura. 3.2 Definizione del problema La misura di Load Regulation è una misura statica delle prestazioni del regolatore di tensione, e definisce la sua abilità di mantenere la tensione d’uscita regolata al variare del carico. Nei vari data sheet dei regolatori (vedi il TLE4270 Infineon in appendice) la specifica di Load regulation viene indicata come valore minimo, massimo e tipico di: Load Regulation = Vout (min) - Vout (max) Le librerie che andremo a sviluppare saranno in grado di effettuare in maniera completamente automatica la misura di Load Regulation e l’ elaborarazione dei dati acquisiti. Per realizzare questa misura devremo essere in grado di variare il carico, leggere le tensioni in gioco, elaborare i dati e successivamente ripetere il tutto a diverse temperature (anche queste programmabili). Per prima cosa si effettua la misura “a mano”, per poi rendere il tutto automatico con la programmazione in Labview e Visual Basic per Microsoft Excel. Saranno necessari questi strumenti: • un alimentatore per effettuare la misura ad una data tensione di ingresso come indicato nelle specifiche dei data sheet • volmetri e amperometri per rilevare le tensioni e le correnti di ingressouscita, • un carico variabile per impostare la corrente d’uscita In un primo tempo ho pensato di utilizzare come carico variabile l’ Agilent N3301A: questo strumento può essere impostato come carico attivo a corrente o tensione costante oppure come resistenza costante, consentendo pure la misura della corrente e tensione. Ma da svariate prove è stato constatato che questo strumento risultava un po’ danneggiato: in misure DC di tensione si presentava un off-set quantificabile attorno 52 Misura Load Regulation a 20 mv rispetto a stesse misure effettuate con più di un multimetro Ke2000: in attesa di una sua ricalibratura sono state comunque state sviluppate librerie Labview in grado di pilotarlo automaticamente, in particolare come: Ø Carico costante in corrente e misura della tensione Ø Carico costante in tensione e misura della corrente Ø Carico resistivo e misura della corrente e tensione Al posto del N3301A è stato utilizzato come carico programmabile in uscita del LDO il Keithley2400. Il Ke2400 è un source-meter programmabile via GPIB: se impostato come carico attivo di corrente consente una lettura della tensione ai suoi capi e viceversa se impostato come carico in tensione. In più, tramite l’opzione “sense 4wire” è possibile ottenere misure più accurate che tengano conto delle perdite sui cavi di collegamento. Infatti gli LDO effettuano le regolazioni in base alla tensione effettivamente in uscita al piedino di out e non quella che realmente c’è sul carico (alcuni LDO ovviano a questo problema con due piedini d’uscita, uno dei quali è definito di “sense” ): Figura 3-1 Collegamenti in uscita al LDO Vload = Vout – Iload * (Rwp+Rwn) Il Ke2400 mette allora a disposizione due tipi di misure: § § 2wire local sensing connection 4wire remote-sensing In genere si effettua la misura a due fili quando l’errore dovuto alle perdite sui cavi è comunque accettabile: per correnti più piccole di 100mA, l’errore commesso non è significativo (assumento la resistenza dei cavi minore di 1Ω). Inoltre poiché se il source-meter è in serie al resto del circuito la corrente è la stessa, la misura a quattro fili non comporta alcun miglioramento in accuratezza. 53 Misura Load Regulation Figura 3-2 Tipiche connessioni sul Front panel del source-meter Ke2400 Al contrario, quando il Ke2400 è usato come source/meter in tensione, ci sono degli errori dovuti alle perdite sui cavi che possono essere limitati usando la misura 4wire remote sensing. In questa configurazione il Ke2400 viene adoperato come generatore in tensione e continuamente confronta le tensioni sulle connessioni local e quelle sul sense con quella programmata apportando opportuni accorgimenti al fine di aggirare le perdite in tensione sui cavi di collegamento. Per la misura di Load Regulation ho innanzitutto sviluppato un subVI in labview in grado di pilotare il Ke2400 come carico attivo di corrente accompagnato da una misura della tensione e un’altra libreria che complessivamente sia in grado di utilizzare il multimetro Ke2000 come amperometro e volmetro. Successivamente, dato che questa misura deve essere effettuata a varie temperature (-40°C a +150°C) ho sviluppato una libreria che fosse in grado di far fare alla cella termica a disposizione un determinato ciclo in temperatura: queste librerie verranno riprese anche per gli altri tipi di test, in cui avrò bisogno di un Ke2400 Isource, dei Ke2000 per misure di tensioni e correnti e dei cicli termici. Inoltre, tutti i dati verranno esportati ed elaborati in Excel tramite un codice Visual Basic lanciato automaticamente da Labview al termine delle rilevazioni delle misure. 54 Misura Load Regulation 3.3 Definizione del subVi che imposta il Ke2400 come generatore di corrente Questa libreria dovrà essere in grado di programmare tramite Labview via GPIB, il source-meter Keithley2400 come “current-source” (perché assorba corrente basta impostarla negativa o scambiare i cavi sui connettori d’uscita), impostare i relativi valori di protezione (Vcompliance, cioè la massima tensione che può avere ai suoi capi e Imax al fine di non bruciare il dispositivo) e di dare una lettura della tensione (successivamente verrà creato un subVI per l’opzione 4wire-sensing). Inoltre per limitare il sovrariscaldamento del chip alle alte correnti di carico questo subVI dovrà prevedere lo spegnimento dello strumento, evitando in questo modo di falsare ad esempio una successiva misura a 0°C . A questo punto si devono creare dei moduli che consentano di effettuare queste funzioni: - Inizializzare la comunicazione Definire il tipo di misura da effettuare Definire source mode : voltage o current mode Definire il parametro di sicurezza Compliance Definire il valore da generare Abilitare l’uscita Effettuare la misura Spegnere il dispositivo. Dato che questa libreria, pensata come DC Load current, può essere utilizzata anche per generare una data corrente e quindi in alcuni casi necessita di alimentare il dispositivo per un dato periodo in cui probabilmente si fanno altre misure, ho deciso di non terminare questo subVI con lo spegnimento dello strumento ma rimandando quest’operazione al subVI di livello superiore. Ora si cercano fra numerosi drivers installati (vedi cap2 pag 50) se ci sono a disposizione delle opportune funzioni adatte ai nostri scopi, altrimenti si programmano direttamente gli strumenti con linguaggio a basso livello attraverso stringhe di comandi definiti negli Operator’s Manual, utilizzando i seguenti moduli messi a disposizione da Labview (GPIBread, GPIBwrite,…), come saremo costretti a fare per la misura di ESR cap. 10. 55 Misura Load Regulation Figura 3-3 Tool Labview per la comunicazione via comandi SCPI La libreria Labview che imposta lo strumento Ke2400 come generatore di corrente, è stata creata utilizzando, nell’ordine, i seguenti subVI: 3.3.1 GPIB Address to Resource Name.vi Connector Pane Tutti i drivers individuano lo strumento attraverso una stringa chiamata “resource name” la cui definizione è la seguente: GPIB[board] :: primary address [ :: secondary address][ :: INSTR] default GPIB0::24 56 Misura Load Regulation Per migliorare l’interfaccia utente del programma è stato creato un subVI che lasci all’ operatore solo il compito di inserire l’indirizzo GPIB per individuare lo strumento. Questo subVI sarà poi riutilizzato in tutte i casi d’indirizzamento GPIB tramite la sua icona ed il connector pane. In questo subVI si effettuerà semplicemente una connessione fra stringhe: Figura 3-4 Front panel e block diagram del subVI GPIB Address to Resource Name.vi 3.3.2 Ke24XXInizialize.VI Connector Pane Il modulo Ke24XXInizialize.VI svolge queste funzioni: - Stabilisce una comunicazione con lo strumento usando l’interfaccia e l’indirizzo specificato nella variabile Resource Name Reset dello strumento Ritorna un Instrument Handler che sarà utilizzato dai successivi moduli come un puntatore all’instrument driver. Ad ogni chiamata la sessione aperta è unica, è possibile avere più sessioni aperte con uno stesso indirizzo. 57 Misura Load Regulation In ingresso a questo VI sarà collegato proprio il subVI appena visto, che si occupa della conversione del puro indirizzo GPIB nel formato resource name. Controls and Indicators resource name individua l’interfaccia da inizializzare. Default Value: "GPIB0::24" error in (no error) è un controllore tipo cluster che accetta informazioni di Vis chiamati precedentemente. Raggruppa tre tipi di controlli: status è un controllo tipo Boolean e viene posto TRUE (X) nel caso di errore, altrimenti è FALSE code controllore tipo integer che individual il codice dell’errore source controllore tipo string utilizzato per una breve descrizione dell’errore status indicatore tipo integer che individua lo stato dello strumento dopo la chiamata della funzione model ritorna il modello dello strumento che è stato inizializzato instrument handle out questo controllore verrà usato in ingresso in ogni successiva funzione error out è un indicatore tipo cluster che segnale eventuali errori in uscita allo strumento. Ha la struttura di “error in”, ma in questo caso non raggruppa tre controlli ma tre indicatori: status è un indicatore tipo Boolean e viene posto TRUE (X) nel caso di errore, altrimenti è FALSE code indicatore tipo integer che individual il codice dell’errore source indicatore tipo string utilizzato per una breve descrizione dell’errore 3.3.3 Ke24xx Enable/Disable Beeper.vi Connector Pane Questo modulo è utilizzato per abilitare/disabilitare il beeper dello strumento. Le sue caratteristiche sono le seguenti: Controls and Indicators instrument handle questo controllo accetta in ingresso l’ Instrument Handle rirornato dal modulo Initialize .vi state controllore tipo boolean. Posto FALSE, disabilita il beeper error in (no error) controllore tipo error cluster status indicatore tipo integer che individua lo stato dello strumento dopo la chiamata della funzione instrument handle out questo indicatore verrà usato in ingresso in ogni successiva funzione error out indicatore tipo cluster che segnale eventuali errori in uscita allo strumento. 58 Misura Load Regulation 3.3.4 Ke24xx Configure DCV.vi Connector Pane Questo modulo è utilizzato per il settare lo strumento per una misura di tensione continua DCV. Controls and Indicators instrument handle questo controllo accetta in ingresso l’ Instrument Handle rirornato dal modulo Initialize .vi range controllore tipo Integer che definisce il range di funzionamento. Sono definiti questi possibili valori: KE24XX_AUTO_RANGE 0 KE24XX_200M_V_RANGE 1 KE24XX_2_V_RANGE 2 KE24XX_10_V_RANGE 3 KE24XX_20_V_RANGE 4 KE24XX_40_V_RANGE 5 KE24XX_60_V_RANGE 6 KE24XX_100_V_RANGE 7 KE24XX_200_V_RANGE 8 KE24XX_1000_V_RANGE 9 nplc controllore tipo double, può assumere qualsiasi valore nell’intervallo 0.001 : 10.00 error in (no error) controllore tipo error cluster status indicatore tipo integer che individua lo stato dello strumento dopo la chiamata della funzione instrument handle out questo indicatore verrà usato in ingresso in ogni successiva funzione error out indicatore tipo cluster che segnale eventuali errori in uscita alllo strumento 3.3.5 Ke24xx Configure Source Mode.vi Connector Pane Questo modulo definisce il “source mode” dello strumento (tensione o corrente). Controls and Indicators instrument handle questo controllo accetta in ingresso l’ Instrument Handle rirornato dal modulo Initialize .vi function : controllore tipo integer che definisce il source mode. Può essere uno dei seguenti valori: 59 Misura Load Regulation KE24XX_SOURCE_VOLTAGE_FUNCTION 0 KE24XX_SOURCE_CURRENT_FUNCTION 1 mode : controllore tipo integer che definisce il modo di funzionamento. Può essere uno dei seguenti valori: KE24XX_SOURCE_FIXED_MODE 0 KE24XX_SOURCE_SWEEP_MODE 1 KE24XX_SOURCE_LIST_MODE 2 shape controllore tipo integer che definisce la “forma del segnale”. Può essere uno dei seguenti valori: KE24XX_SOURCE_DC_SHAPE 0 KE24XX_SOURCE_PULSE_SHAPE 1 range range controllore tipo Integer che definisce il range di funzionamento. Sono definiti questi possibili valori: KE24XX_AUTO_RANGE KE24XX_200M_V_RANGE KE24XX_2_V_RANGE KE24XX_10_V_RANGE KE24XX_20_V_RANGE KE24XX_40_V_RANGE KE24XX_60_V_RANGE KE24XX_100_V_RANGE KE24XX_200_V_RANGE KE24XX_1000_V_RANGE 0 1 2 3 4 5 6 7 8 9 Current Range Constants: KE24XX_AUTO_RANGE KE24XX_1U_A_RANGE KE24XX_10U_A_RANGE KE24XX_100U_A_RANGE KE24XX_1M_A_RANGE KE24XX_10M_A_RANGE KE24XX_20M_A_RANGE KE24XX_100M_A_RANGE KE24XX_1_A_RANGE KE24XX_3_A_RANGE KE24XX_5_A_RANGE KE24XX_10_A_RANGE error in (no error) controllore tipo error cluster 0 1 2 3 4 5 6 7 8 9 10 11 status indicatore tipo integer che individua lo stato dello strumento dopo la chiamata della funzione instrument handle out questo indicatore verrà usato in ingresso in ogni successiva funzione error out indicatore tipo cluster che segnale eventuali errori in uscita alllo strumento 60 Misura Load Regulation 3.3.6 Ke24xx Configure Source Compliance.vi Connector Pane Questo modulo è usato per definire il massimo valore di “compliance”. Essendo il Ke2400 impostato come generatore di corrente, questo valore individuerà la massima tensione possibile ai suoi capi (e quindi in uscita al regolatore di tensione). Controls and Indicators instrument handle questo controllo accetta in ingresso l’ Instrument Handle rirornato dal modulo Initialize .vi source function controllore tipo integer che definisce il modo di funzionamento dello strumento. Può essere uno dei seguenti valori: KE24XX_SOURCE_ACTUAL_FUNCTION -1 KE24XX_SOURCE_VOLTAGE_FUNCTION 0 KE24XX_SOURCE_CURRENT_FUNCTION 1 level controllore tipo integer che definisce il livello della compliance (volt o ampere). error in (no error) controllore tipo error cluster status indicatore tipo integer che individua lo stato dello strumento dopo la chiamata della funzione instrument handle out questo indicatore verrà usato in ingresso in ogni successiva funzione error out indicatore tipo cluster che segnale eventuali errori in uscita alllo strumento 3.3.7 Ke24xx Configure Source Volt/Cur Level.vi Connector Pane Questo subVI definisce il valore della grandezza elettrica che deve essere generata dallo strumento quando è stato selezionato il modo DC. Per questo motivo deve essere preceduto dal modulo “Ke24xx Configure Source Mode.vi” in cui si seleziona “KE24XX_SOURCE_FIXED_MODE” . Controls and Indicators instrument handle questo controllo accetta in ingresso l’ Instrument Handle rirornato dal modulo 61 Misura Load Regulation Initialize .vi source function controllore tipo integer che definisce il modo di funzionamento dello strumento. Può essere uno dei seguenti valori: KE24XX_SOURCE_ACTUAL_FUNCTION -1 KE24XX_SOURCE_VOLTAGE_FUNCTION 0 KE24XX_SOURCE_CURRENT_FUNCTION 1 level controllore tipo integer che definisce il livello DC da generare (volt o ampere). update controllore tipo integer che definisce quando generare l’uscita. Può essere uno dei seguenti valori: KE24XX_SOURCE_LEVEL_IMMEDIATE KE24XX_SOURCE_LEVEL_TRIGGERED error in (no error) controllore tipo error cluster 0 1 status indicatore tipo integer che individua lo stato dello strumento dopo la chiamata della funzione instrument handle out questo indicatore verrà usato in ingresso in ogni successiva funzione error out indicatore tipo cluster che segnale eventuali errori in uscita alllo strumento 3.3.8 Ke24xx Enable/Disable Source Output.vi Connector Pane Questo subVI è utilizzato per abilitare l’uscita. All’interno del block diagram ci sarà un altro analogo modulo che spegnerà lo trumento dopo uno step di misure, per evitare un possibile surriscaldamento del dispositivo sotto test. Controls and Indicators instrument handle questo controllo accetta in ingresso l’ Instrument Handle rirornato dal modulo Initialize .vi state controllore tipo boolean: se TRUE abilita l’uscita, FALSE altrimenti error in (no error) controllore tipo error cluster status indicatore tipo integer che individua lo stato dello strumento dopo la chiamata della funzione instrument handle out questo indicatore verrà usato in ingresso in ogni successiva funzione error out indicatore tipo cluster che segnale eventuali errori in uscita alllo strumento 62 Misura Load Regulation 3.3.9 Ke24xx Read.vi Connector Pane Questo subVI è utilizzato per ottenere una lettura della misura dello strumento. Controls and Indicators instrument handle questo controllo accetta in ingresso l’ Instrument Handle rirornato dal modulo Initialize .vi elements controllore tipo integer che “aggiusta” il tipo di misura effettuata. Può essere uno dei seguenti valori: KI24XX_READ_VOLTAGE 0x01 KI24XX_READ_CURRENT 0x02 KI24XX_READ_RESISTANCE 0x04 KI24XX_READ_TIME 0x08 size of values controllore tipo integer che definisce la dimensione dell’array nel quale verranno salvate le misure. Default 200.000 error in (no error) controllore tipo error cluster status indicatore tipo integer che individua lo stato dello strumento dopo la chiamata della funzione instrument handle out questo indicatore verrà usato in ingresso in ogni successiva funzione number of readings indicatore integer che individual il numero di misure effettuate values Array che viene allocato dalla chiamata della funzione contenente i valori misurati error out indicatore tipo cluster che segnale eventuali errori in uscita alllo strumento 3.3.10 Ke2400 PerformIV_Simple_sense Collegando tutti i precedenti subVI nell’ordine in cui sono stati presentati e con gli opportuni controllori-indicatori, si ricava il subVI preposto al controllo del Keithley 2400 come generatore di corrente. Si costruisce il seguente connector pane per il suo utilizzo nella libreria di Load Regulation: Connector Pane 63 Misura Load Regulation Da questo connector pane si possono già individuare le variabili d’ingresso che dovranno essere passate quando verrà richiamato nel subVI preposto al test di Load Regulation ad una data temperatura e quelle di uscita: Controls and Indicators GPIB Address Tquesto controllore tipo String specifica l’indirizzo GPIB del Ke2400 che verrà utilizzato come carico attivo per il regolatore di tensione. error in (no error) controllore tipo error cluster Source compliance controllore tipo double che definisce il livello della compliance I level (A) controllore tipo double che definisce il livello di corrente DC da generare error out indicatore tipo cluster che segnale eventuali errori in uscita alllo strumento Voltage (V) indicatore che ritorna il valore di tensione in uscita al Ke2400 Si costruisce inoltre la seguente interfaccia utente (Front Panel) e Block diagram: Figura 3-5 Front panel e block diagram della libreria Ke2400 PerformIV_Simple_sense.vi 64 Misura Load Regulation Grazie alle numerosi label presenti in figura si possono riconoscere tutti i subVI visti precedentemente e la loro modalità di utilizzo. 3.4 Definizione del subVi che imposta il Ke2000 come multimetro Vado ora creare il subVI in grado di pilotare via GPIB i multimetri a disposizione Ke2000. Il metodo di sviluppo è lo stesso usato per il keithley 2400: questo subVI dovrà essere in grado di: - Inizializzare la comunicazione Definire il tipo di misura, il range e la risoluzione Configurare il trigger dello strumento Effettuare la misura Chiudere la comunicazione Si inizializza la comunicazione con il modulo Ke2000Inizialize.VI utilizzando per la conversione del puro indirizzo GPIB nell’adeguata formato richieso in ingresso dal modulo Inizialize.VI il subVI “GPIB Address to Resource Name” che è già stato realizzato, quindi si definisce il tipo di misura, il trigger ed il range, infine si chiude la sessione. Le funzionalità del modulo Ke2000Inizialize.VI sono analoghe a quelle del corrispettivo nel Ke2400 visto in precedenza, quindi non verranno analizzate. Gli altri moduli utilizzati, disponibili nei drivers installati per i multimetro della serie Ke20xx, vengono ora affrontati nei seguenti sottoparagrafi: 3.4.1 ke2000 Configure Measurement.vi Connector Pane Questo subVI configura le più comuni proprietà nei multimetro, quali il tipo di misura,il range massimo e la risoluzione assoluta. Controls and Indicators nstrument handle questo controllo accetta in ingresso l’ Instrument Handle rirornato dal modulo Initialize .vi range (-1.00E+0) controllore tipo double che definisce il range (in valore assoluto). Possibili valori: KE2000_VAL_AUTO_RANGE_OFF (-2.0) - Auto-range Off KE2000_VAL_AUTO_RANGE_ON (-1.0) - Auto-range On Function Min Value Max Value Unit 65 Misura Load Regulation DC Volts 0.1 1010.0 volts AC Volts 0.1 757.5 volts DC Current 0.01 3.03 amperes AC Current 1.0 3.03 amperes 2-Wire Res 100.0 101.0E6 ohms |4-Wire Res 100.0 101.0E6 ohms Temperature (C) Auto-range on Auto-range on centigrade Frequency Auto-range on Auto-range on Hertz Period Auto-range on Auto-range on seconds Diode Auto-range on Auto-range on volts Continuity 1.0 1000.0 resolution (absolute) (100.00E-6) Controllore double che definisce la risoluzione. Un basso valore incrementa l’accuratezza ma a scapito della velocità. II possibili valori sono in funzione della grandezza da misurare : Unit FUNCTION DC Volts AC Volts DC Current AC Current 2-Wire Res |4-Wire Res Temperature (C) Frequency Period Diode Continuity volts volts amperes amperes ohms ohms centigrade Hertz seconds volts volts Valori: Function DC Volts AC Volts DC Current AC Current 2-Wire Res |4-Wire Res Temperature (C) Frequency Period Diode Continuity Min Value Max Value Unit 1 0.1 0.001 0.001 1000.0 1000.0 1 100 1E-4 1E-5 0.1 1E-7 1E-7 1E-8 1E-6 1E-4 1E-4 1E-4 0.1 1E-7 1E-6 1E-4 volts volts amperes amperes ohms ohms centigrade Hertz seconds volts volts Default Value: 0.0001 Volts error in (no error) controllore tipo error cluster measurement function (DC Volts) controllore tipo integer che definisce il tipo di misura, può assumere i seguenti valori KE2000_VAL_DC_VOLTS KE2000_VAL_AC_VOLTS KE2000_VAL_DC_CURRENT KE2000_VAL_AC_CURRENT KE2000_VAL_2_WIRE_RES KE2000_VAL_4_WIRE_RES KE2000_VAL_TEMPERATURE KE2000_VAL_FREQ KE2000_VAL_PERIOD 66 - DC Volts (Default) - AC Volts - DC Current - AC Current - 2-Wire Resistance - 4-Wire Resistance - Temperature (C) - Frequency - Period Misura Load Regulation KE2000_VAL_DIODE KE2000_VAL_CONTINUITY - Diode - Continuity instrument handle out questo indicatore verrà usato in ingresso in ogni successiva funzione error out indicatore tipo cluster che segnale eventuali errori in uscita alllo strumento Nelle librerie che andremo a sviluppare sarà utilizzata sempre la risoluzione massima, mentre per misure di corrente si deve tener conto che con range minori di 100 mA la resistenza di shunt è di 10Ω. 3.4.2 ke2000 Configure Trigger.vi Connector Pane Questo subVI configura le proprietà del trigger di un multimetro quali trigger source e trigger delay. Controls and Indicators Instrument handle questo controllo accetta in ingresso l’ Instrument Handle rirornato dal modulo Initialize .vi trigger source (Immediate) controllore che specifica il tipo di trigger source .Possibili valori: KE2000_VAL_IMMEDIATE - Immediate (Default) KE2000_VAL_EXTERNAL - External KE2000_VAL_SOFTWARE_TRIG - Software Trigger Function KE2000_VAL_TIMER - Timed trigger trigger delay (0.00E+0 s) controllore double che specifica il trigger delay (in secondi). Possibili valori: KE2000_VAL_AUTO_DELAY_OFF (-2.0) - Auto-delay off KE2000_VAL_AUTO_DELAY_ON (-1.0) - Auto-delay on Valid Manual Range: 0.000 - 999999.999 (seconds) error in (no error) controllore tipo error cluster instrument handle out questo indicatore verrà usato in ingresso in ogni successiva funzione error out indicatore tipo cluster che segnale eventuali errori in uscita alllo strumento Nelle nostre misure useremo “immediate trigger” e “trigger delay” a zero perché effettueremo tutte misure in DC. 67 Misura Load Regulation 3.4.3 ke2000 Read.vi Connector Pane Questo subVI inizia una misura, aspetta che il multimetro ritorni nello stato di idle e quindi rende disponibile la lettura della misura. Controls and Indicators Instrument handle questo controllo accetta in ingresso l’ Instrument Handle rirornato dal modulo Initialize .vi maximum time (5000 ms) controllore tipo integer che definisce il tempo Massimo per completare una lettura. Default 5000 . Altri valori possibili: KE2000_VAL_MAX_TIME_INFINITE (-1) KE2000_VAL_MAX_TIME_IMMEDIATE (0) error in (no error) controllore tipo error cluster instrument handle out questo indicatore verrà usato in ingresso in ogni successiva funzione reading indicatore double che ritorna il valore della misura. Il tipo di unità di misura deve essere definito precedentemente ke2000 Configure Measurement VI FUNCTION Unit DC Volts volts AC Volts volts DC Current amperes AC Current amperes 2-Wire Res ohms |4-Wire Res ohms Temperature (C) centigrade Frequency Hertz Period seconds Diode volts Continuity volts error out indicatore tipo cluster che segnale eventuali errori in uscita alllo strumento Nelle nostre misure in genere lasceremo il parametro “maximun time” al valore di default (5000 ms). 68 Misura Load Regulation 3.4.4 ke2000 Close.vi Connector Pane Questo subVI esegue le seguenti operazioni: - Chiude la “instrument I/O session “ - Dealloca ogni risorsa di memoria usata. Dopo la chiamata di questo subVI, per riutilizzare gli instrument driver è necessario riaprire la sessione con il modulo ke2000 Initialize.vi Controls and Indicators Instrument handle questo controllo accetta in ingresso l’ Instrument Handle rirornato dal modulo Initialize .vi error in (no error) controllore tipo error cluster error out indicatore tipo cluster che segnale eventuali errori in uscita alllo strumento 3.5 ke2000 Single Point Measurement.vi Collegando tutti i questi subVI nell’ordine in cui sono stati presentati e con gli opportuni controllori-indicatori, si ricava il subVI preposto al controllo del Keithley 2000 come multimetro. Si costruisce il seguente connector pane per il suo utilizzo nella libreria di Load Regulation: Connector Pane Da questo connector pane si possono già individuare le variabili d’ingresso che dovranno essere passate quando verrà richiamato nel subVI preposto al test di Load Regulation ad una data temperatura e quelle di uscita: Controls and Indicators measurement function (DC Volts) controllore tipo integer che definisce il tipo di misura, può assumere i seguenti valori KE2000_VAL_DC_VOLTS KE2000_VAL_AC_VOLTS KE2000_VAL_DC_CURRENT - DC Volts (Default) - AC Volts - DC Current 69 Misura Load Regulation KE2000_VAL_AC_CURRENT KE2000_VAL_2_WIRE_RES KE2000_VAL_4_WIRE_RES KE2000_VAL_TEMPERATURE KE2000_VAL_FREQ KE2000_VAL_PERIOD KE2000_VAL_DIODE KE2000_VAL_CONTINUITY - AC Current - 2-Wire Resistance - 4-Wire Resistance - Temperature (C) - Frequency - Period - Diode - Continuity resolution (absolute) (100.00E-6) Controllore double che definisce la risoluzione. Un basso valore incrementa l’accuratezza ma a scapito della velocità. II possibili valori sono in funzione della grandezza da misurare : Unit FUNCTION DC Volts AC Volts DC Current AC Current 2-Wire Res |4-Wire Res Temperature (C) Frequency Period Diode Continuity volts volts amperes amperes ohms ohms centigrade Hertz seconds volts volts Valori: Function DC Volts AC Volts DC Current AC Current 2-Wire Res |4-Wire Res Temperature (C) Frequency Period Diode Continuity Min Value Max Value Unit 1 0.1 0.001 0.001 1000.0 1000.0 1 100 1E-4 1E-5 0.1 1E-7 1E-7 1E-8 1E-6 1E-4 1E-4 1E-4 0.1 1E-7 1E-6 1E-4 volts volts amperes amperes ohms ohms centigrade Hertz seconds volts volts Default Value: 0.0001 Volts range (-1.00E+0) controllore tipo double che definisce il range (in valore assoluto). Possibili valori: KE2000_VAL_AUTO_RANGE_OFF (-2.0) - Auto-range Off KE2000_VAL_AUTO_RANGE_ON (-1.0) - Auto-range On Function DC Volts AC Volts DC Current AC Current 2-Wire Res |4-Wire Res Temperature (C) Frequency 70 Min Value Max Value Unit 0.1 0.1 0.01 1.0 100.0 100.0 Auto-range on Auto-range on 1010.0 757.5 3.03 3.03 101.0E6 101.0E6 Auto-range on Auto-range on volts volts amperes amperes ohms ohms centigrade Hertz Misura Load Regulation Frequency Auto-range on Period Auto-range on Diode Auto-range on Continuity 1.0 error in (no error) controllore tipo error cluster Auto-range on Auto-range on Auto-range on 1000.0 Hertz seconds volts maximum time (5000 ms) controllore tipo integer che definisce il tempo Massimo per completare una lettura. Default 5000 ms. Altri valori possibili: KE2000_VAL_MAX_TIME_INFINITE (-1) KE2000_VAL_MAX_TIME_IMMEDIATE (0) GPIB Address questo controllore tipo String specifica l’indirizzo GPIB del Ke2400 che verrà utilizzato come carico attivo per il regolatore di tensione. reading indicatore double che ritorna il valore della misura. Il tipo di unità di misura deve essere definito precedentemente ke2000 Configure Measurement VI FUNCTION Unit DC Volts volts AC Volts volts DC Current amperes AC Current amperes 2-Wire Res ohms |4-Wire Res ohms Temperature (C) centigrade Frequency Hertz Period seconds Diode volts Continuity volts error out indicatore tipo cluster che segnale eventuali errori in uscita alllo strumento Si costruiscono quindi il seguente Front Panel e Block Diagram: Figura 3-6 Front panel per il controllo del multimetro Ke200 71 Misura Load Regulation Si noti come sia lasciato libero all’operatore il compito di impostare il tipo di risoluzione, il range, il tempo massimo in cui lo strumento deve completare la misura, ricordando che qualsiasi misura è comunque affetta da errori sensibili a seconda della scala scelta1 . Nel relativo Block Diagram si noti la cascata e le relative funzionalità dei vari subVI visti precedentemente: Figura 3-7 block diagram della libreria Ke2000 Single Point Measurement.vi 1 Come indicato nelle specification dello strumento, nel caso di misura DCI con range minore di 100 mA, la resis tenza di shunt risulta di 10Ω. 72 Misura Load Regulation A questo punto vado a creare la libreria che mi consenta di impostare alla cella termica un ciclo di Temperatura in cui per ogni step sarà effettuato il test di Load Regulation (al termine del quale i dati verranno automaticamente elaborati in Excel). 3.6 Libreria Labview per la cella termica Per effettuare i test in temperatura è utilizzata una cella termica, in particolare la “Angelantoni Challenge T60” (vedi appendice C). Con questa cella termica è possibile impostare un dato ciclo di temperatura, una data umidità interna d’esercizio e la velocità in termini di °C/minuto per raggiungere una data temperatura (nel manuale d’uso è chiamato gradiente di temperatura e al gradiente uguale a zero corrisponde la velocità massima). Tutte queste funzioni vengono impostate su un microcontrollore, interfacciabile non via GPIB ma tramite porta seriale. I collegamenti a disposizione sono i seguenti (per ulteriori informazioni si veda l’Appendice B relativa alla porta seriale RS232) : Nel caso di più celle termiche a disposizione, per ognuna c’è un file Configurazione.ini presente nei drivers di interfacciamento in cui si individua con un indice la cella termica e la porta di comunicazione : 73 Misura Load Regulation Dato che la cella termica a disposizione è unica, i due parametri evidenziati saranno posti rispettivamente a 0 e a 1. Inoltre vi sono disponibili due drivers chiamati Icbcmonitor.VI e Globals.VI : il primo si occupa di leggere e scrivere sul controllore i flag necessari al corretto funzionamento, mentre il secondo contiene tutti i dati sotto forma di variabili globali. Icbcmonitor.VI consente una lettura-scrittura sul microcontrollore tramite un continuo polling regolato da un timer interno; i valori dei vari flag da scrivere e/o da salvare sono sottoforma di variabili globali in GLOBAL.VI . Quindi per costruire un sub.VI che consenta di programmare la cella termica, si deve usare innanzitutto il subVI Icbcmonitor.VI stabilire la comunicazione fra pcmicrocontrollore, mentre i dati verranno scritti e/o letti tramite le variabili globali presenti nell’altro subVI. Queste variabili globali possono essere suddivise in due categorie: Alcune di queste variabili globali fanno riferimento ad array di dati e quindi devono essere correttamente adoperate; ad esempio, per rilevare la temperatura e l’umidità si devono leggere i primi due dati contenuti nella variabile globale “meas” che, come specificato nel manuale d’uso, è un array così strutturato: 74 Misura Load Regulation Similmente, anche per tutte le altre variabili globali occorrerà far riferimento alle relativi definizioni del manuale d’uso per un loro corretto utilizzo. Ad esempio anche la variabile globale è riferita ad un array di 96 interi, tutti posti a zero in caso di corretto funzionamento, altrimenti in caso di allarme viene posto a 1 l’opportuno elemento dell’array. Una parte di questa specifica è la seguente: Quindi con l’utilizzo della struttura “Case” ho creato una decodifica all’interno della libreria che permetta all’ operatore di risalire subito al tipo di allarme occorso: 75 Misura Load Regulation Le variabili che devono essere usate per il corretto controllo della cella termica possono essere riassunte nella seguente tabella: Figura 3-8 Tabella che riassume le variabili usate Per come è impostato il microcontrollore, ogni operazione di scrittura deve essere accompagnata da un flag di conferma con transizione off-on-off; le variabili globali alle quali si deve far riferimento sono “write control”, “write contacts” (in verde), quindi ho previsto due tasti di conferma sul Front Panel forzando la transizione richiesta per mezzo di una struttura Case: In realtà, poiché le grandezze controllate dalla variabile “contact” esulano dai nostri scopi (controllo umidità, U.V.Lamp, … ) verrà usato solo un tasto, “Confirm” per l’ invio dei dati al microcontrollore. 76 Misura Load Regulation Tutta la procedura per il controllo della cella termica può essere rappresentato nel seguente flow-chart: si possono notare due cicli while: il ciclo più esterno aggiorna di volta in volta la temperatura da raggiungere con il valore Tstep e con lo “slope” voluto, fino ad arrivare al valore Tstop. Il ciclo più interno serve per impostare il microcontrollore e controlla con un polling che si raggiunga la temperatura voluta (in labview ci sarà un adeguato delay all’interno di questo controllo). Inoltre è prevista l’interruzione in caso di errore e in labview ci saranno delle “spie di controllo” per monitorare lo stato della cella termica. Il front panel corrispondente è il seguente: 77 Misura Load Regulation Figura 3-9 Front panel per il controllo della cella trmica Si noti come nel riquadro a sinistra sia possibile impostare la temperatura di start e stop e lo step del ciclo di temperatura e la velocità con cui il forno raggiunge una temperatura prefissata; inoltre quando sono stati impostati i parametri di temperatura devono esser posti in on i controllori “run” e “enable temperature” (con la possibilità di reset con l’altro parametro) e quindi tutte queste impostazioni vengono passate al microcontrollore premendo il tasto “confirm” : i tre LED ci daranno la conferma se i tre parametri di controllo sono stati accettati, mentre nel riquadro a sinistra è possibile controllare i setpoints e la temperatura correnti, con eventuale allarme (comunque in caso di allarme è previsto nel block diagram lo spegnimento della cella termica). Il corrispondente diagramma a blocchi è riportato nella pagina seguente ed è piuttosto complicato a causa, come è stato visto durante questa trattazione, della modalità in cui deve essere impostata la comunicazione fra microcontrollore e cella termica. Si può osservare un grande ciclo while utilizzato per regolare gli step termici, quindi via via numerose strutture Sequence e Case che abilitano nell’ordine opportuno i vari flag preposti alla comunicazione. Esterno al ciclo while principale vi sono i subVI IcbMonitor.VI e Global.VI: il primo si occupa in modalità polling della comunicazione fra pc-microcontrollore, aggiornando di volta in volta i valori memorizzati nelle variabili globali in Global.VI. Per maggior informazioni riguardo i flag usati vedere l’appendice C. Ogni qual volta verrà raggiunta una data temperatura, il ciclo while più esterno che aggiorna e controlla di volta in volta il nuovo setpoint di temperatura, richiamerà la libreria che effettua la misura di Load Regulation. 78 Misura Load Regulation Figura 3-10 Block diagram relativo al conrollo della cella termica 79 Misura Load Regulation 3.7 SubVI per il test di Load Regulation ad una data temperatura Questo subVI dovrà essere in grado di effettuare la misura di Load Regulation per una data temperatura. Tutte le operazioni da effettuare possono essere riassunte nel flow-chart a fianco: In particolare questa libreria deve: Inizializzare la comunicazione con gli strumenti Configurare il source.meter 2400 come DC I-load Configurare un Ke2000 come amperometro per la corrente di ingresso Configurare un altro Ke2000 per la misurare la tensione di ingresso Realizzare un ciclo in cui si varia al corrente sul carico e per ogni step, rilevare la tensione e corrente in ingresso ed uscita tramite i multimetro KE2000, salvando i dati raccolti. In caso di errori interrompere l’esecuzione Per eseguire questi punti utilizzo i subVI creati precedentemente. Lo sweep della corrente di carico lo ottengo chiamando la libreria che imposta il Ke2400 DC I-Load dentro il ciclo while, aggiornando di volta in volta il valore di I. Complessivamente, allora, vi sarà un ciclo while all’interno del quale ci sarà una struttura Sequence in cui nell’ordine abiliterò con il Ke2400 una data corrente in uscita, misurando poi nell’ ordine Iout, Vout, Iin, Vin. Tra una sequenza e l’ altra vi è un delay impostato con il modulo in figura, per consentire ad eventuali transistori, di esaurirsi. 80 Misura Load Regulation Quindi ho scelto di salvare tutti i dati raccolti in formato *.txt in quanto è il più compatibile con la maggior parte dei software, e per far questo converto prima i dati da tipo numerico a tipo string, quindi li concateno separandoli con la tabulazione e terminano una data riga col carattere LoadEnd, infine li salvo su un file utilizzando la funzione Labview “Write Characters To File.VI” che consente di decidere se sovrascrivere o appendere nuovi dati in un file già esistente. Con un controllore si specifica il nome del file con relativo path in cui si vogliono salvare i dati, e si scegliendo di appendere i dati sempre in uno stesso file con un operatore booleano. Il relativo front panel è il seguente: Figura 3-11 Front panel relativo alla misura di Load Reg. a temp. fissa Si notino oltre a tutti i controllori ed indicatori visti in precedenza, il pulsante di Stop per bloccare in ogni momento l’esecuzione del programma, e un parametro in cui viene impostata la temperatura d’esercizio: quando questo subVI verrà utilizzato dentro al VI visto in precedenza che pilota la cella termica in un determinato ciclo, 81 Misura Load Regulation questo parametro sarà dato in ingresso da questo subVI di livello superiore. Il Connector Pane è il seguente: Grazie al Connector Pane questo subVI verrà richiamato nel successivo VI che realizzerà il controllo della cella termica visto in precedenza, Si notino da questa figura tutti i valori che devono essere passati, posti sulla sinistra, e i valori ritornati da questa funzione. Per questo primo Block Diagram sono riportati le funzioni di ogni frame delle strutture Case e Sequence, nella trattazione delle prossime librerie verranno riportati solo quelli più complessi. 82 Misura Load Regulation Figura 3-12 Block Diagram Della Load Regulation 83 Misura Load Regulation In questo frame della sequenza più esterna,definisco le label del file *.txt in cui verranno salvati i dati, con l’ausilio di opportuni caratteri di delimitazione. Il frame successivo, visualizzato nella pagina precedente, conterrà il ciclo while e relativi controlli che realizzano le misure di Load Regulation. Questo frame appartiene alla sequenza interna al ciclo while che abilita le misure di tensioni-correnti del circuito. In particolare questo frame, primo dei tre, imposta la corrente di carico generata dal Ke2400 richiamando il subVI visto in precedenza con un valore che viene aggiornato dal ciclo while. In più viene rilevata la tensione d’uscita il cui valore sarà passato esternamente alla sequenza per essere salvato e si rilevano eventuali errori confrontando l’ “error code” del cluster “error out” con il valore 0 (no error). 84 Misura Load Regulation In questo frame viene rilevata la corrente d’ingresso richiamando il subVI che controlla il multimetro Ke2000: con dei controllori resi delle costanti si definisce il tipo di misura, DC Volts, la risoluzione massima e l’autorange e si rilevano eventuali errori. Il frame 1, rappresentato nella figura del block diagram globale, sarà analogo a questo, ma rileverà la tensione di ingresso. 85 Misura Load Regulation 3.8 Vi che realizza il test Load Regulation a diverse temperature Utilizzando il subVI che realizza il test di Load Regulation nel Vi che controlla la cella termica, si va a creare il seguente Front Panel: Figura 3-13 Front panel della libreria complessiva di Load Regulation Per effettuare il test di Load Regulation a temperature diverse, prima di eseguire il programma, si devono impostare i seguenti controlli: ü definire il range e gli step di temperatura desiderati utilizzando i controlli posti nel riquadro in alto a sinistra; ü definire il nome del file e relativo path in cui verranno salvati i dati con l’apposito “control box”; ü definire il range di Iout e ed i relativi step di corrente per i quali verranno rilevate le misure di tensione e corrente; ü definire il parametro di sicurezza “source compliance” del Ke2400: esso rappresenta la massima tensione possibile sui connettori, e quindi in uscita al LDO; 86 Misura Load Regulation ü definire il range per il Ke2000 usato come amperometro: ponendo l’apposito controllore a “–1” si seleziona la modalità “autorange”, altrimenti la scala può essere definita manualmente, tenendo presente che con range minori di 100 mA lo strumento pone una resistenza di shunt di 10Ω (vedi specifiche del Keithley2000 allegate) ü definire tutti gli indirizzi GPIB e collegare il pc al microcontrollore tramite cavo seriale. ü Collegare gli strumenti come in figura: A questo punto si avvia l’esecuzione del programma premendo la freccia della barra di controllo di Labview; come già visto, nel block diagram è stato creato un apposito controllo che interrompe l’ esecuzione del programma in caso di errori, spegnendo anche la cella termica, ma i dati raccolti fino a quel punto non andranno persi perché ho adottato una modalità di salvataggio per mezzo della quale i nuovi dati vengono di volta in volta appesi in coda a quelli vecchi. Comunque in ogni caso è possibile fermare l’esecuzione del programma tramite il pulsante di stop. 3.8.1 Possibili miglioramenti della libreria Nel corso di svariati test è stato riscontrato che in presenza di un considerevole numero di misure da effettuare, ad un certo punto il programma non è più in grado di continuare l’esecuzione (ciò accade dopo circa 130 misure). L’errore segnalato dal sistema è il seguente: 87 Misura Load Regulation Figura 3-14 Problema che causa l'interruzione dell'esecuzione del programma Come si vede dal tipo di errore segnalato, il problema sembra essere generato dalla mancanza di risorse a livello di sistema; ma utilizzando il programma “monitoring” abbiamo però verificato che il sistema non è mai sovraccarico, dato che la quantità di RAM utilizzata non superava mai i 190 KB. Essendo, per una data temperatura, la quantità di misure determinata dal range e dallo step impostato per pilotare la corrente data dal Ke2400, talvolta è stato necessario modificare queste impostazioni. Per risolvere questo inconveniente, sono stati interpellati anche i tecnici della National Instrument e si è provato ad aumentare la memoria RAM del pc a 512MB, ma senza risultato alcuno. A questo punto la mia attenzione è caduta sulla struttura modulare a subVI della libreria: osservando la struttura del Block Diagram della libreria che effettua il test di Load Regulation a temperatura fissa, si vede come ci sia un ciclo while, il cui numero di cicli è dato da (Istop-Istart)/Istep+1, ed una struttura che richiama, nell’ordine, i subVI: § § § § KE2400 performIVSimple_Sense.VI per impostare la corrente di carico e misurando la tensione d’uscita, aggiornando di volta in volta i valori utilizzando il contatore del ciclo while . Ke2000 Single Point Measurement.VI per la misura di Vout Ke2000 Single Point Measurement.VI per la misura di Iout Write Characters To File.VI per salvare i dati in *.txt La complessità della libreria che comprende il controllo del forno può esser meglio capita visualizzando la sua struttura gerarchica: 88 Misura Load Regulation Figura 3-15 Struttura gerarchica della libreria Riassumendo, i principali subVI richiamati sono i seguenti: globals.vi GPIB Address to Resource Name.vi icbMonitor.vi KE2400 performIVSimple_Sense Load Regulation Measurement.vi Ke2000 Single Point Measurement.VI Write Characters To File.vi Per risolvere questo errore ho innanzitutto provato a salvare i dati non dopo ogni step di corrente, ma solo alla fine dello sweep di corrente; tuttavia, anche con questa soluzione il sistema si bloccava (circa dopo 130 rilevazioni). Allora ho provato ad analizzare la struttura ed il funzionamento dei vari subVI tramite la funzione debug di labview: ho notato che generalmente in ogni subVI vengono aggiornati, rispetto alla chiamata nello step precedente, un numero ristretto di moduli. In altre parole, torniamo ad esempio al subVI preposto alla lettura di tensione-corrente con il Ke2000: 89 Misura Load Regulation Figura 3-16 Block diagram della libreria del controllo del multimetro Una volta inizializzato lo strumento, definiti i parametri ed il tipo di misura, l’unico modulo che subirà delle modifiche fra una misura in uno step e quello successivo sarà il modulo preposto alla lettura, cioè ke2000Read.vi Similmente, nel subVI KE2400 performIVSimple_Sense i moduli che subiranno delle modifiche fra uno step e l’altro saranno quello preposto alla configurazione del livello di corrente, quello relativo all’abilitazione dell’uscita ed infine il modulo relativo alla misura della tensione. Da tutte queste considerazioni, ho creato allora un’altra libreria in cui ho modificato il Block Diagram relativo al subVI della Load Regulation a temperatura fissa. Come si può vedere nello schematico di pagina seguente, non si è più utilizzata una programmazione modulare tramite subVI: ogni subVI che veniva richiamato nella precedente libreria è stato sostituito con tutta la sua struttura, lasciando dentro al ciclo While e alla Sequence solo i moduli dei vecchi subVI che devono essere aggiornati in ogni ciclo. In più ho aggiunto per il 2400 l’opzione della misura a quattro fili, che verrà ripresa nel prossimo capitolo. Con questa soluzione, adottata anche nello sviluppo delle prossime librerie, non si sono più verificati errori di questo tipo (ad esempio nella misura di dropout vengono effettuati anche 8-10.000 step di misure senza alcun problema). Il front panel non subirà sostanziali modifiche, se non per la presenza di un tasto di enable della misura a quattro fili, mentre il block panel, relativo alla misura di Load Regulation a temperatura fissa, non verranno più richiamati i vari subVI con i rispettivi Connector Pane, ma saranno opportunamente sostituiti con tutta la loro struttura. Infatti si noti nella figura a pagina seguente come nel frame 0 della sequenza che viene richiamata ad ogni ciclo del while, siano presenti soltanto i moduli del Ke2400 che devono essere aggiornati fra un ciclo e l’altro, ed in particolare il modulo che definisce il livello di corrente, il modulo che abilita l’uscita ed il modulo che effettua la misura di tensione: 90 Misura Load Regulation Figura 3-17 Block diagram relativo alla libreria modificata 91 Misura Load Regulation In questo frame, invece, è presente soltanto il modulo che effettua la misura della tensione d’ingresso, mentre tutti gli altri moduli adibiti al set-up dello strumento sono esterni al ciclo while e quindi attivati soltanto una volta. 92 Misura Load Regulation Anche nel frame 2 si può notare la presenza di un solo modulo appartenente al subVI del Ke2000, in particolare quello adibito alla lettura della corrente d’ingresso: infatti in ogni step l’impostazione dello strumento rimarrà uguale, e quindi ecco la presenza dei moduli che espletano questa funzione fuori del ciclo while. L’ultimo frame spegne il source-meter: da notare che in questa libreria viene eliminato il delay tra un frame e l’altro, così da velocizzare l’esecuzione. In questa libreria è previsto un delay fra uno step di corrente di uscita ed il successivo in cui si tiene spento il dispositivo, evitando così di evitare surriscaldamenti che falserebbero test a basse temperature. L’esecuzione di quest’ ultima libreria risulta più veloce della precedente a chiamate gerarchiche di subVI in quanto gli strumenti vengono inizializzati ed impostati solo all’avvio e non in ogni step. Ma pure con questo sistema si rischia di introdurre un errore sistematico man mano che ci si avvicina ad alte correnti di carico, in quanto nel seppur breve periodo di tempo in cui il source-meter è attivo, è stato rilevato che determinati dispositivi, soprattutto quelli ceramici, cominciavano a scaldarsi: in questo caso si introduce un errore nella valutazione delle caratteristiche del dispositivo dovuto alla deriva termica. È stato valutato con una semplice libreria labview quanto tempo occorre per il Ke2400 ad abilitare la corrente d’uscita, misurare la tensione ai suoi capi e quindi spegnersi: sia per l’opzione 4wire che senza risultava mediamente 167 ms. Tale valore è stato poi verificato con l’oscilloscopio acquisendo con una sonda di corrente il segnale in uscita al source-meter: 93 Misura Load Regulation Dalla misura dell’oscilloscopio il tempo in cui il source-meter resta acceso risulta di 144 ms, quindi possiamo ritenere la differenza di 23 ms fra i due valori dovuta al tempo di trasmissione dei dati. Allora si è pensato di regolare la corrente di carico mediante un trimmer esterno, acquisendo il valore di Vout e Iout con due multimetro Ke2000, usando come alimentazione un generatore di funzioni in modalità single shot: il tempo di acquisizione è risultato di 83 ms, comunque ancora eccessivo (almeno dovrebbe essere inferiore ai 10 ms). Quindi c’è da tener conto in queste misure che avvicinandosi a correnti di carico alte commettiamo un errore sistematico dovuto alla deriva termica del dispositivo. 3.9 Elaborazione automatica delle misure di Load Regulation Tutte le misure di Load Regulation vengono salvate in formato *.txt assieme all’utilizzo del carattere Carriage return, End of Load e dal carattere di separazione tab constant. Andiamo ora a definire un metodo che consenta una loro elaborazione automatica. In un generico file *.txt di un test di Load Regulation, i dati hanno questo aspetto: Temperature(°C) 120 26,023146 120 26,022832 120 26,022779 120 26,022729 120 26,022474 120 26,021941 120 26,021991 120 26,021722 120 26,021691 120 26,021516 120 26,021498 120 26,021265 120 26,021068 120 26,020889 120 26,020666 120 26,020366 120 26,019981 Vin(A) Iin(A) 0,000096 0,010383 0,020706 0,031036 0,041416 0,05186 0,062364 0,072923 0,083556 0,094276 0,105078 0,116449 0,127946 0,139021 0,150223 0,161535 0,172935 Vout(V) 5,015258 5,013709 5,012434 5,011436 5,010406 5,009284 5,008026 5,006646 5,005172 5,003604 5,001986 5,000288 4,997928 4,994865 4,992965 4,990818 4,988529 Iout(A) 0 -0,01 -0,02 -0,03 -0,04 -0,05 -0,06 -0,07 -0,08 -0,09 -0,1 -0,11 -0,12 -0,13 -0,14 -0,15 -0,16 Temperature(°C) Vin(A) Iin(A) Vout(V) Iout(A) 100 20,002369 0,000085 5,012095 0 100 20,002078 0,010394 5,010797 -0,01 100 20,002307 0,020742 5,009736 -0,02 100 20,002163 0,031101 5,00901 -0,03 100 20,002262 0,041514 5,008175 -0,04 ………………………………………………………………………. ………………………………………………………………………. La misura di Load Regulation viene effettuata per vedere il comportamento della tensione in uscita al regolatore al variare del carico: è quindi opportuno tracciare un grafico di Vout al variare di Iout che, idealmente, dovrebbe essere una 94 Misura Load Regulation retta orizzontale centrata sul valore nominale. In più è anche conveniente visualizzare l’andamento di Vout rispetto Iout per le diverse temperature. Per rendere l’elaborazione dei dati in modo automatico, ci viene in aiuto la funzione labview “Open Excel and Make Visibile” che consente di aprire da labview il programma Microsoft Excel, ritornando un puntatore tipo Excel.Application (application refnum) 3.9.1 Connector Pane Esiste poi una funzione labview, Invoke Node, con la quale è possibile eseguire un’azione a VI, VI object, or application (vedi manuale labview) attraverso dei metodi. Tra i mille metodi disponibili per un application refnum tipo Excel.Application, esiste un relativo method , chiamato Run, così strutturato: Sintassi 1: esegue una macro o richiama una funzione. Può essere utilizzata per eseguire una macro scritta in linguaggio Visual Basic o nel linguaggio macro di Microsoft Excel 4.0 oppure per eseguire una funzione in una DLL o XLL. Sintassi 2: esegue la macro di Microsoft Excel 4.0 in questa posizione. È necessario che l'intervallo si trovi in un foglio macro. Sintassi 1: espressione.Run (Macro, Arg1, Arg2, ...) Sintassi 2: espressione.Run (Arg1, Arg2, ...) espressione Argomento facoltativo per Application e necessario per Range. Un'espressione che restituisce l'applicazione contenente la macro o un intervallo su un foglio macro contenente una macro di Microsoft Excel 4.0. Macro : Argomento necessario di tipo Variant (qualsiasi tipo) per la sintassi 1. Non viene utilizzato nella sintassi 2. Indica la macro che deve essere eseguita. Può essere rappresentato da una stringa contenente il nome della macro, un oggetto Range indicante la posizione della funzione oppure un numero di identificazione di una funzione registrata in una DLL o XLL. Se si utilizza una stringa, questa verrà calcolata nell'ambito del foglio attivo. Arg1, Arg2, ... : Argomenti facoltativi di tipo Variant. Gli argomenti che si desidera passare alla funzione. Note: Non è possibile utilizzare argomenti denominati ed è inoltre necessario passare gli argomenti in base alla relativa posizione. Il metodo Run restituisce qualsiasi valore fornito dalla macro richiamata. Gli oggetti passati alla macro come argomenti vengono convertiti in valori applicando la proprietà Value all'oggetto. Scelgo allora di utilizzare il metodo Run relativo al refnum Excel.Application e avvalendomi della sintassi1, farò eseguire delle macro scritte in linguaggio Visual 95 Misura Load Regulation Basic per Microsoft Excel 4.0 grazie alle quali renderò automatica l’elborazione dei risultati di Load Regulation con il software Excel aperto precedentemente da Labview con l’altra funzione vista. In altre parole, una volta raccolti tutti i risultati il programma Labview eseguirà una serie di operazioni, che verranno raccolte in una Sequence, in cui aprirà il programma Excel ed eseguirà determinati script di Visual Basic (macro) rendendo così automatica l’elaborazione dei dati stessi. I parametri per l’esecuzioni delle macro vengono impostati scegliendo il metodo Run della categoria Application delle funzioni Invoke Node di Labview: Figura 3-18 Funzione Invoke Node 3.9.2 Definizioni delle Macro Excel Una volta aperta l’applicazione Excel, bisogna innanzitutto creare uno script VBA che consenta di importare i dati salvati in formato *.txt Nel salvataggio in *.txt sono stati utilizzati i caratteri end of Line, carriage return, tab costant, allora andremo a definire una funzione che riconosca questi caratteri consentendo una giusta formattazione dei dati. Il linguaggio VBA è orientato ad oggetti e la sintassi è di due tipi: oggetto.proprietà ogetto.metodo In una cartella di lavoro excel ci sono oggetti di varia natura, come celle, intervalli,fogli…., e la loro gerarchia è facilmente reperibile nella guida in Loada VBA. L’ oggetto principale è Application, che comprende tutti gli altri; si tratta di Excel stesso (altrove Application corrisponderà a Word, Access…) Application comprende: • L’oggetto Workbook che è la cartella di lavoro (una di quelle attualmente aperte) • L’ oggetto Worksheet, foglio di lavoro • L’ oggetto Range, intervallo di celle Questi oggetti sono così strutturati: 1) ciascun oggetto fa parte di una famiglia o classe (di suoi simili) e l’accesso al singolo membro di ciascuna classe si effettua attraverso “metodi”, ai quali corrispondono insiemi (collection) di oggetti omogenei: Workbooks, Worksheet, Range, Cells; 96 Misura Load Regulation 2) i membri più elevati di una catena gerarchica si possono omettere, nel qual caso è sottointeso il soggetto attualmente attivo; 3) l’ istruzione Set serve a fissare un oggetto in una variabile. Per realizzare gli script si utilizza l’help del programma e tutti i numerosi esempi proposti La prima macro che è stata scritta per importare in Excel i dati delle misure salvati in *.txt è la seguente: Sub ImportData() ' ‘import0 in Foglio2 il n° di misure ed il nome del file corrispondente: Worksheets("foglio2").Activate With ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\Nmisure.txt", _ Destination:=Range("A1")) .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = xlWindows .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = False .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1) .Refresh BackgroundQuery:=False End With NomeFile = Cells(2, 1) ‘Leggo il nome del file in cui ho salvato le misure, Foglio2 è ‘ancora attivo Worksheets("foglio1").Activate 'Rendo attivo Foglio1, ora importo tutte le misure With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;" & NomeFile & ".txt", Destination:=Range("A1")) .Name = " & NomeFile & " .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False 97 Misura Load Regulation .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = xlWindows .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = True 'riconosce il Tab come carattere di separazione .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = False .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1) .Refresh BackgroundQuery:=False End With Come si può notare, nella prima parte dello script importo in Foglio2 l’informazione relativa al numero di misure presenti nel file dati ed il suo nome con la sua directory, informazioni necessarie per importare i dati, eseguire i grafici e salvare l’elaborazione. Ricordando l’impostazione del test di Load Regulationil numero di misure sarà dato dal rapporto fra il range della corrente di carico per lo step (più uno). Questo valore verrà salvato da Labview grazie all’aggiunta di questo codice nel block diagram: Si noti che nel block diagram vi è pure una parte di programma che salva solo il nome del file *.txt (con la directory) nella seconda riga del file c:\Nmisure.txt, utilizzando la funzione Search/Split String che consente di separare una stringa in due parti. Lo script seguente calcola il valore di Load Regulation come la differenza fra il valore massimo e minimo di Vout : Sub Calculate() ' Macro che calcola il valore di LoadRegulation ' Utilizzo la mo dalità di indirizzamento diretto e non quella indiretta R1C1 ' Worksheets("foglio2").Activate N_misure = Cells(1, 1) 98 ‘leggo il numero complessivo di misure effettuate assegnando il valore alla variabile N_misure che per default è di tipo Variant Misura Load Regulation Worksheets("foglio1").Activate ‘ora riattivo il controllo nel Foglio1 Range("G2").Select ActiveCell.Formula = "Value LoadReg." Range("G3").Select 'Seleziono in che cella visualizzare la label ‘Questa è la label ‘Seleziono in che cella visualizzare il dato ActiveCell.Formula = "=MAX(D3:D" & 3 + N_misure & ")-MIN(D3:D" & 3 + N_misure & ")" End Sub Segue ora lo script che consente di creare in automatico il grafico di Vout in funzione di Iout per una misura di Load Regulation ad una temperatura fissa: Sub GraficoLoadReg() ' Grafico di Vout in funzione di Iout per una singola temperatura Worksheets("foglio2").Activate N_misure = Cells(1, 1) 'leggo il numero di misure Worksheets("foglio1").Activate TEMPERATURA = Range("A3") 'seleziono il valore della temperatura per rendere ‘rendendo questo valore dinamico ' Costruisco il grafico XY Charts.Add ActiveChart.ChartType = xlXYScatterSmooth ‘definis co quale tipo di grafico usare ActiveChart.SetSourceData Source:=Sheets("Foglio1").Range("I2"), PlotBy:= _ xlColumns ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).XValues = "=Foglio1!R3C5:R" & 3 + N_misure & "C5" ActiveChart.SeriesCollection(1).Values = "=Foglio1!R3C4:R" & 3 + N_misure & "C4" ActiveChart.SeriesCollection(1).Name = "=""Temp" & TEMPERATURA & """" ActiveChart.Location Where:=xlLocationAsObject, Name:="Foglio1" With ActiveChart .HasTitle = True .ChartTitle.Characters.Text = "Load Regulation" .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Iout (A)" .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Vout (V)" End With ActiveChart.HasLegend = True ActiveChart.Legend.Select ‘Posiziono il grafico nel foglio di lavoro: Selection.Position = xlRight ActiveSheet.Shapes("Grafico 1").IncrementLeft 178.5 ActiveSheet.Shapes("Grafico 1").IncrementTop -103.5 End Sub 99 Misura Load Regulation Eseguendo nell’ordine questi tre script si ottiene il seguente foglio Excel: Figura 3-19 Esempio di elaborazione automatica Infine creo un ultimo script che salva l’elaborazione in un file con lo stesso nome del file dei vechi dati *.txt, ma nel formato “xls” proprio di Excel. Sub Save() 'Script che salva l'elaborazione Excel in un file con lo stesso 'nominativo di quello *.txt delle misure Labviev, ma formato xls Worksheets("foglio2").Activate PathFile = Cells(2, 1) 'ora concateno le due stringhe ActiveWorkbook.SaveAs Filename:="" & PathFile & ".xls" End Sub Per l’elaborazione dei risultati di test di Load Regulation a diverse temperature è conveniente aggiungere uno script che visualizzi su di un unico grafico l’andamento di Vout in funzione di Iout al variare della temperatura. Nello script ci sarà quindi un ciclo For con il quale si plotteranno di volta ni volta i risultati per le diverse temperature, ed il numero dei grafici “sovrapposti” sarà uguale al rapporto fra il range di temperatura diviso il valore degli step più uno. Questo valore, fondamentale per il controllo del ciclo For, verrà aggiunto nel file C:\Nmisure.txt con la seguente modifica Labview: 100 Misura Load Regulation Inoltre per ogni “blocco” di misure dovremo calcolare il valore di Load Regulation. Perciò andremo ripetere con un ciclo For lo script Calculate() visto in precedenza su ogni blocco di misura, per un numero totale di cicli pari al valore calcolato con la nuova modifica Labview. Sub Calculate() ' Macro che calcola il valore di LoadRegulation ' Worksheets("foglio2").Activate N_misure = Cells(1, 1) 'leggo il numero complessivo di misure effettuate per blocco 'assegnando il valore alla variabile N_misure che 'per default è di tipo Variant N_blocchi = Cells(1, 2) ‘leggo il n° di blocchi che corrisponderà al numero di cicli Worksheets("foglio1").Activate 'ora riattivo il controllo nel Foglio1 For i = 0 To N_blocchi – 1 Range("G" & 2 + i * (N_misure + 3) & "").Select ActiveCell.Formula = "Value LoadReg." 'Seleziono in che cella ‘visualizzare la label 'Questa è la label ‘ Range("G" & 3 + i * (N_misure + 3) & "").Select 'Seleziono in che cella visualizzare ‘il dato ‘Scrivo la formula che verrà eseguita per ogni blocco ActiveCell.Formula = "=MAX(D" & 3 + i * (N_misure + 3) & ":D" & 3 + (N_misure + 3) * i + N_misure & ")-MIN(D" & 3 + i * (N_misure + 3) & ":D" & 3 + (N_misure + 3) * i + N_misure & ")" Next I ‘incremento il contatore End Sub Ora scriveremo lo script per il grafico della Load Regulation in funzione della temperatura: a questo scopo ci viene in aiuto il grafico Excel tipo XY, in cui aggiungeremo con un ciclo For tante “serie di dati” quanti sono stati gli step di temperatura: 101 Misura Load Regulation Sub GraficoLoadReg() ' ' GraficoLoadReg Macro ' Worksheets("foglio2").Activate N_misure = Cells(1, 1) 'leggo il numero complessivo di misure effettuate 'assegnando il valore alla variabile N_misure che 'per default è di tipo Variant N_blocchi = Cells(1, 2) 'ora riattivo il controllo nel Foglio1 Worksheets("foglio1").Activate 'Ricavo il valore dello step di Temperatura, mi servirà nelle label del grafico Temp_Start = Cells(3, 1) Temp_Stop = Cells(3 + (N_blocchi - 1) * (N_misure + 3), 1) Temp_Step = (Temp_Stop - Temp_Start) / (N_blocchi - 1) ' Charts.Add ActiveChart.ChartType = xlXYScatterSmooth ‘definisco quale tipo di grafico usare ActiveChart.SetSourceData Source:=Sheets("Foglio1").Range("A174"), PlotBy:= _ xlColumns For i = 0 To N_blocchi - 1 ActiveChart.SeriesCollection.NewSeries ‘ora costruisco dinamicamente il grafico ActiveChart.SeriesCollection(i + 1).XValues = "=Foglio1!R" & 3 + i * (N_misure + 3) & "C5:R" & 3 + (N_misure + 3) * i + N_misure & "C5" ActiveChart.SeriesCollection(i + 1).Values = "=Foglio1!R" & 3 + i * (N_misure + 3) & "C4:R" & 3 + (N_misure + 3) * i + N_misure & "C4" ActiveChart.SeriesCollection(i + 1).Name = "=""Temp" & Temp_Start + Temp_Step * i & """" ActiveChart.Location Where:=xlLocationAsObject, Name:="Foglio1" Next i 'Scrivo le legende With ActiveChart .HasTitle = True .ChartTitle.Characters.Text = "Load Regulation" .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Iout(A)" .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Vout(V)" End With ActiveChart.ApplyDataLabels Type:=xlDataLabelsShowNone, LegendKey:=False Windows("LoadReg.xls").SmallScroll Down:=-33 'Riposiziono il Grafico ActiveSheet.Shapes("Grafico 1").IncrementLeft 325.5 ActiveSheet.Shapes("Grafico 1").IncrementTop –1875 End Sub 102 Misura Load Regulation Per il cip NCV8502 sono stati ricavati questi risultati: Figura 3-20 Esempio di elaborazione automatica di misure di Load Regulation effettuate anche a temperature diverse A questo punto, come spiegato a inizio paragrafo, si modifica il programma Labview che effettua il test di Load Regulation introducendo una Sequence. Il frame zero della sequence conterrà tutta libreria che è stata sviluppata per questo test, comprese le istruzioni che salvano i risultati nel formato *.txt, mentre il frame successivo si occuperà di aprire l’applicazione Excel e di lanciare gli script nell’ordine più opportuno. Come accennato ad inizio paragrafo, saranno necessarie queste funzioni: Ø “Open Excel and Make Visible.vi” , apre Excel e crea un Automation Refnum per gli Excel.Application object. Ø “ Open Specific Workbook.vi” , apre il workbook in cui sono state salvate le macro excel. Ø “Invoke Node.vi”, che, grazie al puntatore (refnum) tipo Excel.Application consente, col metodo Run, di lanciare gli script (Macro) di Visual Basic per Microsoft Excel. Ø “Automation Close (Windows).vi” , chiude l’applicazione individuata da application refnum, in questo caso Excel. 103 Misura Load Regulation Ø “Simple Error Handler.vi” , riporta attraverso un dialog box eventuali errori occorsi. Riporto allora il frame1 della Sequence aggiunta alla libreria che effettua il test di Load Regulation a temperature diverse: Figura 3-21 Parte di front panel che avvia automaticamente l'esecuzione degli script 104 Misura Load Regulation Si noti l’ordine dell’esecuzione delle varie funzioni: 1. Apertura dell’ applicazione Excel 2. Apertura del workbook contenente gli script Visual Basic 3. Esecuzione delle macro, nell’ordine: a) “Import Data” per importare in Foglio2 le informazioni del file c:\Nmisure.txt riguardanti la struttura e relativo path del file *.txt con i risultati delle misure, e in Foglio1 i dati stessi. b) “Calcolate” per calcolare ad ogni step di temperatura il valore di Load Regulation c) “GraficoLoadReg” per ricavare il grafico della tensione d’uscita rispetto la corrente di carico, in funzione della temperatura d) “Save” per salvare tutta l’elaborazione in formato .xls con il nome del file lo stesso di quello impostato nella libreria labview che individuava il report *.txt 4. Chiusura del workbook 5. Chiusura dell’applicazione Excel 6. Segnalazione di eventuali errori. 3.10 Utilizzo delle librerie In questo capitolo sono state create diverse librerie per la misura di Load Regulation. Esse sono ora riportate con le loro caratteristiche principali: Load Reg.temp_fixed_with_subVI : esegue il test di Load Regulation ad una data temperatura e la sua è una struttura gerarchica a subVI. Load Reg.temp_fixed : esegue il test di Load Regulation ad una data temperatura non utilizzando una struttura gerarchica a subVI Load Reg.temp_fixed_with_subVI_with_oven : esegue il test di Load Regulation per un ciclo di temperature e la sua è una struttura gerarchica a subVI. Load Reg.temp_fixed_with_ with_oven : esegue il test di Load Regulation per un ciclo di temperature e la sua è una struttura gerarchica a subVI. Assieme a queste librerie c’è LoadReg.xls che deve essere memorizzata in C:\ che contiene tutti gli script per l’elaborazione automatica. Si sceglierà allora una libreria Labview a seconda delle esigenze, che a sua volta richiamerà gli opportuni script presenti in C:\ LoadReg.xls per l’elaborazione automatica. 3.11 SOMMARIO In questo capitolo è stato affrontato e risolto il problema di rendere automatico il test di Load Regulation. 105 Misura Load Regulation Sono stati riportati e spiegati tutti i passi dello sviluppo della libreria: sono state costruite le librerie per il controllo degli strumenti necessari alla misura (multimetro e generatore di corrente/tensione) e della cella termica, quindi si è costruita la libreria per il test ad una data temperatura. Successivamente questa libreria è stata richiamata in una di livello superiore, ottenendo così in automatico il test di Load Regulation per un dato ciclo di temperature (impostabile). A questo punto sono stati sviluppati degli script in Visual Basic per Microsoft Excel che consentissero un’ elaborazione automatica dei dati raccolti; quindi sono state aggiunte delle funzioni alla libreria di Load Regulation che, al termine del test (si pensi che per completare il test per un ciclo di temperatura sono necessarie anche delle ore), avviassero in automatico l’ elaborazione dei dati grazie a tali script. Possiamo perciò sottolineare l’efficienza di questa libreria: all’operatore è lasciato solo il compito di collegare gli strumenti al dispositivo da testare, impostare correttamente i controllori del Front Panel (indirizzi GPIB, lo sweep di temperatura e di corrente di carico), e avviare il programma: al termine dell’esecuzione i dati saranno già elaborati in un foglio elettronico Excel. Ricordiamo inoltre i numerosi accorgimenti che interrompono l’esecuzione del programma in caso di errore, consentendo comunque di disporre dei dati fin lì raccolti e di risalire in ogni caso al tipo di errore occorso. 106 Misura Line regulation 4 Misura della Line Regulation 4.1 INTRODUZIONE La misura della Line Regulation assieme a quella della Load Regulation è una delle più comuni e importanti misure dei power supply. In questo capitolo verranno presentate le librerie Labview in grado di effettuare automaticamente questo test, accompagnate dai subVI che pilotano i vari strumenti di misura. 4.2 Definizione del problema La misura di Line Regulation è una misura statica delle prestazioni del regolatore di tensione, e definisce l’abilità di mantenere la tensione d’uscita regolata al variare della tensione di alimentazione. Nei data sheet dei regolatori di tensione, la specifica di Line Regulation viene indicata per un dato range di tensione di alimentazione e per corrente di carico fissata, come valore minimo, massimo e tipico di: Line Regulation = Vout (max) - Vout (min) A questo proposito riporto a titolo di esempio la specifica del regolatore TLE4270, per ulteriori informazioni vedere in appendice D: Le librerie che andrò a sviluppare saranno in grado di effettuare in maniera completamente automatica la misura di Line Regulation e la elaborarazione dei dati acquisiti. Per realizzare questa misura devo essere in grado di variare la tensione (DC) di alimentazione entro un dato range per una data corrente di carico, leggere le tensioni in gioco, elaborare i dati e successivamente ripetere il tutto a diverse temperature (anche queste programmabili). 107 Misura Line regulation Per prima cosa si effettua la misura “a mano”, per poi rendere il tutto automatico con la programmazione in Labview e Visual Basic per Microsoft Excel. Saranno necessari questi strumenti: • • Un generatore di tensione programmabile Volmetri e amperometri per rilevare le tensioni e le correnti di ingressouscita, • un reostato per impostare la corrente d’uscita Per effettuare le misure di corrente - tensioni in modo automatico via Labview possiamo utilizzare il subVI sviluppato per la precedente misura di Load Regulation in grado di pilotare il multimetro Keithley2000, mentre bisognerà sviluppare una libreria per pilotare il Keithley2400 da generatore di tensione. In un primo tempo si utilizza ancora uno stile di programmazione gerarchico in cui una libreria principale richiama altre sottolibrerie attraverso il “connector pane” in quanto consente all’ operatore, in caso di necessità, un più semplice e immediato utilizzo della modalità “debug” ossia l’ esecuzione “passo passo” del programma. Infatti, come per il test di Load Regulation, anche questa libreria così strutturata presenta un limite nel numero complessivo di misure per ogni step di temperatura (circa 130), che viene anche in questo caso superato sviluppando una libreria che non richiama più subVi, ma gli utilizza con tutta la loro struttura inserendo dentro ai cicli del programma solo i loro moduli che devono essere aggiornati. Ripetiamo ancora una volta che questa libreria è sì più efficiente perché non presenta limiti nel numero di misure, ma in caso di necessità rende più complicato l’uso e la comprensione da parte dell’operatore nella modalità di esecuzione “passo-passo” del programma. 4.3 Definizione del subVi che imposta il Ke2400 come generatore di corrente Questa libreria dovrà essere in grado di programmare tramite Labview via GPIB, il source-meter Keithley2400 come “Voltage-source” ottenendo così lo sweep di tensione di alimentazione, impostare i relativi valori di protezione (Icompliance, cioè la massima tensione che può avere ai suoi capi e Vprotection al fine di non bruciare il dispositivo) e di dare una lettura della corrente. A questo punto si cercano nei drivers installati del Ke2400 (vedi cap2 pag 50) se ci sono a disposizione delle funzioni in grado di: - 108 Inizializzare la comunicazione Definire il tipo di misura da effettuare Definire source mode : voltage o current mode Definire il parametro di sicurezza Icompliance e Vprotection Definire il valore da generare Abilitare l’uscita Misura Line regulation - Effettuare la misura Spegnere il dispositivo. Come si vede chiaramente da questi punti, la struttura di questa libreria sarà simile a quella precedentemente creata per pilotare il Ke2400 come generatore di corrente : basterà impostare la modalità “Voltage-mode” e aggiungere un modulo che consenta di impostare il parametro Vprotection. I moduli che vengono ora utilizzati in questa nuova libreria e non visti nella precedente “Ke2400 PerformIV_Simple_sense” del cap.3, vengono ora riportati nei seguenti sottoparagrafi. 4.3.1 Ke24xx Configure DC IV.vi Connector Pane Questo subVi è utilizzato per impostare la misura della corrente di ingresso ed è così strutturato: Controls and Indicators instrument handle questo controllo accetta in ingresso l’ Instrument Handle rirornato dal modulo Initialize .vi range controllore tipo Integer che definisce il range di funzionamento. Sono definiti questi possibili valori: KE24XX_AUTO_RANGE 0 KE24XX_1U_A_RANGE 1 KE24XX_10U_A_RANGE 2 KE24XX_100U_A_RANGE 3 KE24XX_1M_A_RANGE 4 KE24XX_10M_A_RANGE 5 KE24XX_20M_A_RANGE 6 KE24XX_100M_A_RANGE 7 KE24XX_1_A_RANGE 8 KE24XX_3_A_RANGE 9 KE24XX_5_A_RANGE 10 KE24XX_10_A_RANGE 11 In questa libreria verrà usato l’autorange nplc controllore tipo double, può assumere qualsiasi valore nell’intervallo 0.001 : 10.00 error in (no error) controllore tipo error cluster status indicatore tipo integer che individua lo stato dello strumento dopo la chiamata della funzione instrument handle out questo indicatore verrà usato in ingresso in ogni successiva funzione error out indicatore tipo cluster che segnale eventuali errori in uscita alllo strumento 109 Misura Line regulation 4.3.2 Ke24xx Configure V Source Protection.vi Connector Pane Questa funzione è usata per definire la tensione massima generabile, definendo così un parametro di protezione per il dispositivo sotto test. Per maggiori dettagli vedere cap.3 dell’ user's manual. Controls and Indicators instrument handle questo controllo accetta in ingresso l’ Instrument Handle rirornato dal modulo Initialize .vi level controllore double che definisce il valore della tensione di protezione (volt) error in (no error) controllore tipo error cluster status indicatore tipo integer che individua lo stato dello strumento dopo la chiamata della funzione instrument handle out questo indicatore verrà usato in ingresso in ogni successiva funzione error out indicatore tipo cluster che segnale eventuali errori in uscita alllo strumento Non vengono utilizzati ulteriori moduli diversi dalla precedente libreria che impostava il Ke2400 come generatore di corrente, e si ricava la seguente libreria: 4.4 ke2400 perform VI Single Point with close (2wires) constants.VI Integrando opportunamente i due subVI visti in precedenza nella libreria con quelli di“Ke2400 PerformIV_Simple_sense” del cap.3, costruiamo la libreria in grado di pilotare il Ke2400 come generatore di tensione che verrà utilizzata nella libreria di Line Regulation con il seguente connector pane : Connector Pane Si osservino i parametri che devono essere passati: L’ indirizzo GPIB dello strumento I valori di protezione Vprotection e la compliance (valore max. di corrente disponibile) Il valore della tensione da generare Eventuale errore in ingresso, 110 Misura Line regulation mentre in uscita avremo la misura della corrente e la segnalazione di eventuali errori. La relativa interfaccia utente ed il block diagram sono i seguenti: Front Panel Block Diagram Figura 4-1Front panel e block diagram relativo alla libreria ke2400 perform VI Single Point with close (2wires) constants.VI Si noti l’uso dei due subVI visti precedentemente Ke24xx Configure V Source Protection.vi e Ke24xx Configure DC IV.vi ; confrontando questa struttura con quella vista nel cap.3 si vede chiaramente come con l’uso opportuno dei controllori i vari subVI sono stati impostati per generare una tensione e misurare una corrente. Ora questa libreria, assieme a quella che pilota il multimetro, verrà usata in un’altra libreria di livello superiore per effettuare la misura di Line Regulation (a temperatura fissa). 4.5 SubVI per il test di Line Regulation ad una data temperatura Questo subVI dovrà essere in grado di effettuare la misura di Line Regulation per una data temperatura. Tutte le operazioni da effettuare possono essere riassunte nel flow-chart seguente; in particolare questa libreria effettua queste operazioni: 111 Misura Line regulation - - Inizializzare la comunicazione con gli strumenti Configurare il source.meter 2400 come DC I-load Configurare un Ke2000 come amperometro per la corrente di ingresso Configurare un altro Ke2000 per la misurare la tensione di ingresso Realizzare un ciclo in cui si varia la corrente sul carico e per ogni step, rilevare la tensione e corrente in ingresso ed uscita tramite i multimetro KE2000, salvando i dati raccolti. In caso di errori interrompere l’esecuzione Per eseguire questi punti utilizzo i subVI creati precedentemente. Lo sweep della tensione di alimentazione lo ottengo richiamando la libreria che imposta il Ke2400 DC V-source dentro un ciclo while, aggiornando di volta in volta il valore della tensione da generare. Complessivamente, allora, vi sarà un ciclo while all’interno del quale ci sarà una struttura Sequence in cui nell’ordine abiliterò con il Ke2400 una data tensione di alimentazione, misurando poi nell’ ordine Vin, Iin, Iout, Vout. Tra una sequenza e l’ altra vi è un delay impostato con il modulo in figura, per consentire ad eventuali transistori, di esaurirsi. Come per la misura di Load Regulation, ad ogni step salvo le misure in formato *.txt utilizzando opportunamente, come già visto, la funzione Labview “Write Characters To File.VI” . Con un controllore si specifica il nome del file con relativo path in cui si vogliono salvare i dati, e si sceglie di appendere i dati sempre in uno stesso file con un operatore booleano. 112 Misura Line regulation Si costruisce il seguente Front Panel : Figura 4-2a Front panel per Line Regulation a temperatura fissa Si notino i controllori che definiscono gli indirizzi GPIB degli strumenti, lo sweep e i parametri di sicurezza della tensione di alimentazione, la temperatura d’esercizio e il path dove salvare il file con le misure. Inoltre vi sono indicatori che in tempo reale ci danno la misura delle tensioni-correnti nel dispositivo ed eventuali errori e un pulsante di Stop per interrompere in caso di necessità l’esecuzione del programma. Grazie al Connector Pane questo subVI verrà richiamato nel successivo VI che realizzerà il controllo della cella termica nel modo visto in precedenza, Si notino da questa figura tutti i parametri presenti nel front panel che devono essere passati, posti sulla sinistra, e i valori ritornati da questa funzione. 113 Misura Line regulation Il Block Diagram di questa libreria di Line Regulation è il seguente: In questo frame 0 della Sequence più esterna prepara la “label” di intestazione nel file in cui verranno man mano salvati i dati. Gli altri frame sono rièortati nelle pagine seguenti: 114 Misura Line regulation Questo successivo frame effettua il test di Line Reg. vero e proprio: si noti il ciclo while all’interno del quale si aggiorna la tensione da generare con l’uso del contatore del ciclo, una Sequence in cui il frame 0 abilita il source-meter Ke2400, il salvataggio delle misure per ogni step nel file txt inizializzato precedentemente, il controllo del ciclo e eventuali errori (si osservi pure come il pulsante di Stop, se azionato, interrompa l’esecuzione del programma). 115 Misura Line regulation In questi altri due frame della sequenza interna al ciclo viene richiamato il subVI adibito al controllo del multimetro Ke2000 per rilevare la corrente e la tensione d’uscita. 4.6 Vi che realizza il test Line Regulation a diverse temperature Ora, come per la Load regulation, si riutilizza la libreria che controlla la cella termica: ogni qual volta verrà raggiunta una data temperatura, il ciclo while più esterno che aggiorna e controlla di volta in volta il nuovo setpoint di temperatura, richiamerà la libreria che effettua la misura di Line Regulation. Si costruisce il seguente Front Panel: 116 Misura Line regulation Figura 4-3 Front panel per la misura di Line Reg. in un ciclo di temperatura Per effettuare il test di Line Regulation a temperature diverse, prima di eseguire il programma, si devono impostare i seguenti controlli: ü definire il range e gli step di temperatura desiderati utilizzando i controlli posti nel riquadro in alto a sinistra; ü definire il nome del file e relativo path in cui verranno salvati i dati con l’apposito “control box”; ü definire il range di Vin e ed i relativi step di tensione per i quali verranno rilevate le misure di tensione e corrente; ü definire il parametro di sicurezza “source compliance” del Ke2400: esso rappresenta la massima corrente possibile sui connettori, e quindi in ingresso al LDO; ü definire il parametro “source protection” che rappresenta la massima tensione generabile dal Ke2400 e quindi in ingresso al LDO; ü definire il range per il Ke2000 usato come amperometro: ponendo l’apposito controllore a “–1” si seleziona la modalità “autorange”, altrimenti la scala può essere definita manualmente, tenendo presente che con range minori di 100 mA lo strumento pone una resistenza di shunt di 10Ω (vedi specifiche del Keithley2000 allegate); ü definire tutti gli indirizzi GPIB e collegare il pc al microcontrollore tramite cavo seriale. 117 Misura Line regulation Collegare gli strumenti come in figura e impostare il reostato affinché la corrente di carico sia uguale alla corrente riportata nella specifica di Line Regulation del regolatore: Figura 4-4 Schema di collegamento per effettuare il test Quindi complessivamente la libreria di Line Regulation ha questa struttura gerarchica: Figura 4-5 Struttura gerarchica della libreria Line Regulation Si notino, sulla sinistra, i tre moduli che consentono il controllo della cella termica, quindi l’ uso del subVI che effettua il test a temperatura fissa che richiama a sua volta i subVI per il controllo dei multimetro, del source-meter e del salvataggio dei dati raccolti. 118 Misura Line regulation 4.6.1 Possibili miglioramenti della libreria Anche questa libreria, come la precedente della Load Regulation, è stato riscontrato che in presenza di un considerevole numero di misure da effettuare ad un certo punto il programma non è più in grado di continuare l’esecuzione (ciò accade dopo circa 130 misure). Come per la precedente libreria di Load Regulation, il problema è stato superato utilizzando nella libreria non una programmazione gerarchica, ma sostituendo i vari subVI con tutta la loro struttura e inserendo nel ciclo while del controllo del valore di tensione di alimentazione e delle misure solo i moduli che devono essere di volta in volta aggiornati. Il front panel non subisce modifiche, se non per l’aggiunta di un tasto per la scelta dell’opzione 4 fili per il source meter, mentre il block diagram è il seguente: Figura 4-6 Block diagram della libreria di Line Regulation modificata Risalta subito come tutti i moduli adibiti al controllo degli strumenti che non devono essere aggiornati, siano esterni al ciclo while. Infatti il frame1 della Sequence interna al ciclo vi è solo un modulo che abilita la misura di corrente (Ke24xx Enable/Disable Concurrent Meas..vi) e quello relativo alla misura vera e proria 119 Misura Line regulation (Ke24xx Read.vi). Nel frame precedente a questo viene abilitato il source meter a generare la tensione di alimentazione. Come è chiaro dalla figura, nel frame2 eseguo la misura della tensione d’uscita Vout, utilizzando solamente il modulo Ke2000Read.VI; il frame 3, che non riporto, sarà esattamente analogo e misurerà la corrente d’uscita. 120 Misura Line regulation Questo ultimo frame della Sequence disabilita il source meter: in altre parole spegniamo il regolatore togliendo l’alimentazione per un determinato periodo di tempo regolato dal controllo delay time del ciclo while. In questo modo si evita di surriscaldare il dispositivo, falsando in questo modo misure effettuate a basse temperature. Nel block diagram principale si vede la presenza nella struttura adibita al controllo del source meter del modulo “ke2400 Configure 4W.vi”per l’opzione 4wire: Figura 4-7Front panel e connector pane dell'opzione 4wires Nell’uso del source-meter come generatore di tensione l’opzione 4wire consente di superare la caduta di tensione sui fili di collegamento, applicando veramente la tensione voluta ai piedini del regolatore. Nel block diagram ci sarà innanzitutto una struttura case per l’opzione 4wire: 121 Misura Line regulation Questo è il caso in cui è richiesta l’opzione 4fili: osserviamo che viene infatti abilitato il modulo Ke24XX Enable/Disabile Remote Sensing.vi All’interno vi è un’ulteriore struttura Case a seconda del tipo di applicazione: qui a fianco è visualizzata l’opzione di misura di resistenza a 4 fili, abilitata con i due moduli in figura. In questi altri due casi, nel caso 0 viene configurata la misura di corrente, mentre nel caso 1 quella di tensione. 4.7 Elaborazione automatica delle misure di Line Regulation Per l’elaborazione automatica delle misure di Line Regulation si segue la stessa procedura vista nel capitolo precedente per la misura di Load Regulation: al termine delle misure si richiamano con Labview opportuni script in Visual Basic per Microsoft Excel come già ampiamente visto nel cap.3. Innanzitutto importiamo i dati salvati in *.txt con la stessa macro utilizzata per la Load Regulation, ossia ImportData ( ) . Analogo sarà lo script che calcola il valore di Line Regulation come la differenza fra il valore massimo e minimo di Vout, così pure lo script Save() che salva tutta l’elaborazione in un file formato .xls con lo stesso path file di quello .txt . Ricordando quanto visto nel precedente capitolo, in questi script è fondamentale il ruolo del file C:\Nmisure.txt che contiene l’informazione relativa al numero di misure ed il path in cui recuperare il file con i dati salvati; quindi nel block diagram della libreria di Line Regulation a temperatura fissa è necessario aggiungere: 122 Misura Line regulation In questo tipo di test è opportuno visualizzare con un grafico l’andamento di tensione d’uscita in funzione di quella d’ingresso (teoricamente una retta nella regione di funzionamento) e, dato che i dati vengono salvati nel file .txt con lo stesso formato di quelli per la Load Regulation, basterà ridefinire nello script della Load regulation che crea il grafico di Vout in funzione di Iout, solamente le righe di programma relative ai dati da graficare: Sub GraficoLineReg() ' ' Grafico di Vout in funzione di Vin per una singola temperatura Worksheets("foglio2").Activate N_misure = Cells(1, 1) 'leggo il numero di misure Worksheets("foglio1").Activate TEMPERATURA = Range("A3") 'seleziono il valore della temperatura per rendere ‘rendendo questo valore dinamico ' Costruisco il grafico XY Charts.Add ActiveChart.ChartType = xlXYScatterSmooth ‘seleziono il tipo di grafico ActiveChart.SetSourceData Source:=Sheets("Foglio1").Range("I2"), PlotBy:= _ xlColumns ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).XValues = "=Foglio1!R3C2:R" & 3 + N_misure & "C2" ActiveChart.SeriesCollection(1).Values = "=Foglio1!R3C4:R" & 3 + N_misure & "C4" ActiveChart.SeriesCollection(1).Name = "=""Temp" & TEMPERATURA & """" ActiveChart.Location Where:=xlLocationAsObject, Name:="Foglio1" With ActiveChart .HasTitle = True .ChartTitle.Characters.Text = "Load Regulation" .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Vin (V)" .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Vout (V)" End With ActiveChart.HasLegend = True ActiveChart.Legend.Select ‘Posiziono il grafico nel foglio di lavoro: Selection.Position = xlRight 123 Misura Line regulation ActiveSheet.Shapes("Grafico 1").IncrementLeft 178.5 ActiveSheet.Shapes("Grafico 1").IncrementTop -103.5 End Sub Per l’elaborazione dei risultati di test di Line Regulation a diverse temperature è conveniente aggiungere uno script che visualizzi su di un unico grafico l’andamento di Vout in funzione di Vin al variare della temperatura. Nello script ci sarà quindi un ciclo For con il quale si plotteranno di volta in volta i risultati per le diverse temperature, ed il numero dei grafici “sovrapposti” sarà uguale al rapporto fra il range di temperatura diviso il valore degli step più uno. Questo valore, fondamentale per il controllo del ciclo For, verrà aggiunto nel file C:\Nmisure.txt con la seguente modifica Labview: Anche in questo caso lo script che calcolerà il valore di Line Regulation resterà lo stesso di quello visto nella Load a temperature diverse, mentre nello script del grafico complessivo (che non riporto) basterà solamente ridefinire i dati in origine. Tutti questi script verranno eseguiti da labview aggiungendo al block diagram della libreria le stesse funzioni riportate a pag.104 del test di Load regulation. Per il cip NCV8502 sono stati ricavati questi risultati: Figura 4-8 Esempio di un test di Line Regulation 124 Misura Line regulation 4.8 Utilizzo delle librerie Come nel precedente capitolo, sono state create diverse librerie per la misura di Line Regulation: Line Reg.temp_fixed_with_subVI : esegue il test di Line Regulation ad una data temperatura e la sua è una struttura gerarchica a subVI. Line Reg.temp_fixed : esegue il test di Line Regulation ad una data temperatura non utilizzando una struttura gerarchica a subVI Line Reg.temp_fixed_with_subVI_with_oven : esegue il test di Line Regulation per un ciclo di temperature e la sua è una struttura gerarchica a subVI. Line Reg._ with_oven : esegue il test di Line Regulation per un ciclo di temperature e la sua è una struttura gerarchica a subVI. Assieme a queste librerie vi è LineReg.xls che deve essere memorizzata in C:\ , la quale contiene tutti gli script necessari per l’elaborazione automatica delle misure. Si sceglierà allora una libreria Labview a seconda delle esigenze, che a sua volta richiamerà gli opportuni script presenti in C:\ LineReg.xls per l’elaborazione automatica. 4.9 SOMMARIO In questo capitolo sono state sviluppate delle librerie Labview e degli script VBA per rendere automatico il test di Line Regulation. In particolari sono stati ripresi e adattati a questo tipo di test i subVi e le macro sviluppati nel precedente capitolo per il test di Load Regulation. Possiamo quindi sottolineare l’efficienza di questa libreria: all’operatore è lasciato solo il compito di collegare gli strumenti al dispositivo da testare, impostare correttamente i controllori del Front Panel (indirizzi GPIB, lo sweep di temperatura e di corrente di carico), e avviare il programma: al termine dell’esecuzione i dati saranno già elaborati in un foglio elettronico Excel. Ricordiamo inoltre i numerosi accorgimenti che interrompono l’esecuzione del programma in caso di errore, consentendo comunque di disporre dei dati fin lì raccolti e di risalire in ogni caso al tipo di errore occorso. 125 Misura DropOut 5 Misura del Drop Out 5.1 INTRODUZIONE La misura di Drop Out è una misura molto importante, grazie alla quale possiamo definire fino a quanto la tensione di alimentazione della batteria può scendere, assicurando comunque un corretto funzionamento del dispositivo. Supponiamo ad esempio che un'apparecchiatura portatile necessiti di una tensione regolata di 2.8 V e di disporre di regolatori con drop output di 2.5 V e di 0.2 V. Supponiamo inoltre di utilizzare, per il pacco batterie, elementi ricaricabili con tensione di fine scarica di 1.0 V. Utilizzando il primo regolatore con drop output 2.5 V avremo Vbat = 2.8 + 2.5 = 5.3 V e dato che cinque elementi in serie forniscono 5.0 V, sono necessari sei elementi in serie. Utilizzando invece il secondo regolatore con drop output 0.2 V avremo Vbat = 2.8 + 0.2 = 3.0 V e quindi sono sufficienti tre elementi in serie. La seconda soluzione, a parità di prestazioni elettriche, permette un risparmio economico, di peso e di spazio. In questo capitolo verrà quindi creata una libreria Labview in grado di effettuare il test di Dropout in automatico. 5.2 Definizione del problema Riportiamo la specifica di DropOut del regolatore TLE4270 (riportato in appendice) Come si evince da queste specifiche, nella misura di DropOut dovremo individuare il livello di tensione in ingresso tale per cui l'uscita scenderà di 100mV rispetto al valore "nominale" : ricordando le tipologie dei pass-device di un regolatore lineare (cap1 pag.31), il valore di tesione d’uscita a regime lo possiamo misurare quando il PNP è in zona lineare. Il dropout sarà perciò la differenza VinVout in questa condizione. Già da questi punti emerge che questa nuova libreria sarà simile a quella del capitolo precedente relativa alla misura di Line Regulation, con la differenza che bisognerà diminuire la tensione di alimentazioni e a piccoli step, simulando così l’effettivo problema di un calo della batteria di alimentazione,verificando fino a che punto il dispositivo continua a funzionare correttamente. Durante la progettazione della libreria del DropOut è arrivato a disposizione un altro source-meter Ke2400: a questo punto la mia attenzione è stata rivolta nel 126 Misura DropOut sviluppare una libreria Labview che grazie al controllo di soltanto questi due strumenti potesse essere in grado di effettuare tutti i test visti sin d’ora. Disponendo di questa libreria, sarebbe possibile effettuare in successione i test collegando solamente una volta i vari strumenti al dispositivo sotto esame. Ricordiamo le caratteristiche principali delle librerie Labview (tralasciamo per il momento la parte in Visual Basic) sviluppate fin d’ora: Load Regulation: q q q Variazione della corrente di carico con il source-meter Ke2400 e misura della tensione d’uscita; Misura della tensione e corrente d’ingresso; Ripetere il test a diverse temperature. Line Regulation: q q q Variazione della tensione d’ingresso col source-meter Ke2400 e misura della corrente Iin; Misura della corrente e tensione d’uscita; Ripetere il test a diverse temperature. Drop Out: q Variazione della tensione d’ingresso col source-meter Ke2400 e misura della corrente Iin; q Misura della corrente e tensione d’uscita; q Ripetere il test a diverse temperature ed eventualmente per alcune specifiche a correnti di carico diverse. In sostanza, in tutte le librerie è stato necessario variare la corrente di carico o la tensione d’ingresso col Ke2400, mentre nel caso di alcune misure di Drop si renderanno indispensabili entrambe le operazioni. Ho quindi riunito queste operazioni in un’unica liberia nella quale non ci sarà più bisogno dei multimetro Ke2000 dato che sfrutterò i due source-meter Ke2400. Il block diagram di questa libreria sarà così strutturato: • Un ciclo while con cui imposteremo un Ke2400 come generatore della tensione di alimentazione, effettuando pure la misura della corrente d’ingresso; • Un alto ciclo while all’interno del precedente in cui si varierà la corrente di carico con l’altro Ke2400 e misurerà la tensione in uscita2 . Ciò che cambierà saranno gli script che dovranno essere richiamati al termine delle misure per l’elaborazione automatica dei dati. Verranno inseriti quelli visti sin 2 Per ogni source-meter vi sarà pure l’opzione 4wires. 127 Misura DropOut d’ora, mentre per la misura del dropout ci sarà un nuovo script che calcolerà la tensione di drop. 5.3 Libreria che utilizza solamente due Ke2400 Si costruisce il seguente Front Panel : Figura 5-1 Front panel della libreria fondamentale che utilizza solo 2 Ke2400 Nel riquadro in alto a sinistra vi è il controllore che definisce la temperatura d’esercizio e un altro che definisce per quanto tempo teniamo spento il dispositivo 128 Misura DropOut “lasciandolo raffreddare” per non falsare misure a basse temperature ed il pulsante di Stop per interrompere l’esecuzione del programma. Quindi a fianco definiamo dove salvare i dati e se eventualmente “sovrascrivere” i dati in un file già esistente. Il riquadro centrale imposta un Ke2400 per l’alimentazione del regolatore : vi si definiscono i parametri per lo sweep in tensione e quelli di protezione, quindi si può attivare l’opzione 4wires (come già detto alte volte, in questo modo si superano le perdite nei cavi di collegamento) e vi sono error cluster per monitorare eventuali errori e gli indicatori di tensione e corrente. L’ultimo riquadro racchiude il controllo dell’altro Ke2400 per la corrente di carico: anche per questo subVI si può definire lo sweep di corrente ed i parametri di protezione, quindi si può attivare l’opzione 4wires (come già detto alte volte, in questo modo si superano le perdite nei cavi di collegamento) e vi sono error cluster per monitorare eventuali errori e gli indicatori di tensione e corrente. Nota: la libreria è strutturata in modo che per una data tensione d’ingresso si effettui con l’altro Ke2400 lo sweep della corrente di carico. Il block diagram è stato costruito non utilizzando una struttura gerarchica nella quale si richiamano opportuni subVi, per i motivi più volte ribaditi nei precedenti capitoli, ma viene utilizzata tutta la struttura dei subVI per il controllo dei source-meter, aggiornando opportunamente dentro ai cicli while solo determinati moduli. Il block diagram è il seguente: 129 Misura DropOut In questo diagramma si nota immediatamente l’uso di due cicli while per ottenere lo sweep della tensione di alimentazione e della corrente di carico: in particolare il ciclo più esterno è regolato dalle impostazioni di Iout, e all’interno è annidato l’altro ciclo che regola la tensione di alimentazione: quindi, durante l’esecuzione, per ogni step di corrente di carico avremo uno sweep di tensione di alimentazione. È quindi ovvia la versatilità di questa libreria per il test di Load e Line Regulation, in cui rispettivamente necessitiamo solo di uno sweep della corrente di carico e dell’alimentazione, mentre per alcune specifiche di DropOut saranno necessari entrambi. Nel precedente diagramma si può altresì notare che non vengono utilizzati subVI per il controllo dei source-meter, bensì si utilizzano tutti i moduli necessari inserendo dentro ai cicli solamente quelli che devono essere di volta in volta aggiornati, per i motivi più volte esposti. Per ogni ciclo la parte di controllo presenta una struttura Case : Grazie a questo accorgimento, l’utente può impostare uno sweep sia in incremento che in decremento (in particolare, decrementando la Vin, se il pass device del regolatore lineare è semplicemente un PNP, passiamo dalla zona di funzionamento lineare a quella di saturazione). Inoltre nel ciclo while più interno vi è una Sequence che nell’ordine esegue queste operazioni: 130 Misura DropOut Come risulta chiaramente dalle figure, primo frame abilito l’alimentazione al circuito, mentre nel successivo frame fornisco una certa corrente di carico. Gli altri frame sono i seguenti: Nel frame2 rilevo la corrente d’ingresso, mentre nel frame3 la tensione d’uscita (a tal proposito ricordiamo che per ogni strumento vi è a disposizione l’opzione 4wires). In questi altri due frame spengo il dispositivo onde evitare eventuali surriscaldamenti che falserebbero le misure: nel frame 4 porto spengo il source-meter che regola la corrente di carico, mentre nell’ultimo frame tolgo l’alimentazione al circuito disabilitando l’altro source-meter. 131 Misura DropOut A questo punto il successivo ciclo viene eseguito dopo un dato periodo di delay (vedi il controllore nel front-panel). Come nelle altre librerie,in ogni sequenza controllo la presenza di eventuali errori (con la funzione unbundle reperisco il codice che rappresenta lo stato dello strumento che confrontandolo con lo zero riconosco se vi è occorso un errore): in tal caso si interrompe l’esecuzione del programma, viene segnalato il tipo di errore, e comunque i dati fin a quel punto salvati nel file *.txt non andranno persi. La struttura gerarchica di questa librerie è la seguente: Figura 5-2 Struttura gerarchica della libreria Al primo livello vi sono i moduli che impostano i due source-meter, con il modulo che traduce l’indirizzo GPIB nella sintassi richiesta dai drivers, il modulo che configura l’opzione 4wires ed il modulo per il salvataggio dei dati nel file txt. Nel livello inferiore vi sono le funzioni richiamate da questi due subVI. Ora, da questa libreria si creerà una per il test di Load Regulation e una per quello di Line, inserendo gli script sviluppati nei due precedenti capitoli con gli accorgimenti visti a pag 104 del cap3; quindi queste nuove librerie verranno inserite nella libreria che controlla la cella termica, per eseguire così i test a temperature diverse e impostabili. Completiamo ora la libreria per effettuare il test di DropOut: poiché in questa misura dobbiamo trovare quel valore di tensione di ingresso per cui la tensione d’uscita cala di un dato valore rispetto al valore dato con la tensione di alimentazione nominale, innanzitutto nel front panel inseriremo un controllore in cui definiremo la specifica di Drop. 132 Misura DropOut Inoltre, come indicato nel front panel, la tensione di Start sarà la tensione nominale, in corrispondenza della quale leggerò la tensione d’uscita che considererò di riferimento per la misura di DropOut. La parte di block diagram relativa a questa parte è riportata a fianco: Numeric è una variabile locale riferita al contatore del ciclo più interno, quello che regola la tensione di alimentazione. Al primo step, grazie alla struttura Case pilotata da Numeric, salvo in una variabile, Vout(to) 2, la tensione d’uscita in corrispondenza alla tensione di alimentazione nominale, che diverrà quella di riferimento per la misura di Drop. Nella figura successiva si vede come in tutti gli altri step, riassunti dal caso “ 1,Default “ , non si modifichi più la variabile che contiene la tensione d’uscita di riferimento, anzi in ogni step confrontiamo questo valore con la nuova tensione Vout, interrompendo il ciclo quando la differenza fra queste due tensioni raggiunge la specifica di Drop. Aggiungiamo quindi a questa libreria una Sequence nella quale il frame0 eseguirà questo block diagram, mentre nel frame1 eseguirò degli script per l’elaborazione automatica delle misure. In particolare utilizzerò gli script visti nei due capitoli precedenti che mi consentono di importare i dati e salvarli in formato excel. Inoltre viene poi creata una libreria di Dropout per ripetere il test in temperatura semplicemente inserendo quest’ultimo VI nella libreria che controlla la cella termica 5.4 Utilizzo delle librerie In questo capitolo sono state create delle librerie per la misura di Line, Load Regulation e dropout che utilizzano solamente due source-meter e sono: Line Reg.temp_fixed_with_2Ke2400: esegue il test di Line Regulation ad una data temperatura Line Reg._with_2Ke2400_with_oven : esegue il test di Line Regulation per un ciclo di temperature 133 Misura DropOut Load Reg.temp_fixed_with_2Ke2400: esegue il test di Load Regulation ad una data temperatura Load Reg._with_2Ke2400_with_oven : esegue il test di Load Regulation per un ciclo di temperature DropOutSimple: esegue il test di Dropout ad una data temperatura. DropOut: esegue il test di Dropout in un ciclo termico. Le librerie per il test di Line e Load fann sempre riferimento agli script dei file C:\ LineReg.xls e C:\ LoadReg.xls, mendre quelle del drop a C:\DropOut.xls . Assieme a queste librerie c’è LineReg.xls che deve essere memorizzata in C:\ che contiene tutti gli script per l’elaborazione automatica. Si sceglierà allora una libreria Labview a seconda delle esigenze, che a sua volta richiamerà gli opportuni script presenti in C:\ LineReg.xls per l’elaborazione automatica. 5.5 SOMMARIO In questo capitolo è stata sviluppata una libreria base che consente di effettuare le misure di Load Regulation, Line Regulation e DropOut solamente con due strumenti, utilizzando cioè due source-meter Ke2400. È stato poi visto come adattare questa libreria alla misura di DropOut, misura estremamente importante in quanto ci indica fino a che punto può scendere la tensione della batteria di alimentazione, garantendo comunque un corretto funzionamento del regolatore di tensione 134 Misura Bandgap 6 Misura della tensione di BandGap 6.1 INTRODUZIONE Il Bangap è diventato un elemento fondamentale nei circuiti elettronici integrati. Una tensione che viene adottata come riferimento deve essere ben definita e insensibile a variazioni di temperatura, di potenza e di carico. Il primo articolo apparso a riguardo fu di D. F. Hilbiber nel 1964quindi Robert Widlar nel 1971 pubblicò la prima soluzione di bandgap integrata. In questo capitolo verranno accennate i due circuiti di bandgap più usati, quello di Widlar e Brokaw, quindi la libreria in grado di effettuare il test in automatico. 6.2 Circuiti di Bandgap 6.2.1 Widlar Bandgap Reference Il circuito è basato su un generatore di corrente, ma in figura è sostituito da una resistenza collegata a + 5V di alimentazione [2]. La tensione di riferimento, Vref, è ricavata dalla somma della Vbe del transistor Q3 e dalla caduta su R1: Figura 6-1 Struttura base della cella di Widlar 135 Misura Bandgap La tensione sui collettori di Q1 e Q2 è pari alla Vbe ed essendo le resistenze sui collettori R1 e R3 uguali le correnti saranno uguali. Dato che l’area di Q2 è 10 volte più grande di Q1 ci sarà una DVbe ai capi di R2 che facendo alcuni calcoli risulta pari a Vt*Ln[(Ic1/Ic2)/(Ic2/A2)], in questo caso Vt*Ln(10) = 2.3Vt. La corrente sull’emettitore di Q2 vale perciò (2.3Vt)/R2. Trascurando le correnti di base, le correnti di emettitore e collettore sono uguali e quindi la tensione su R1 è perciò (2.3VtR1)/R2 = (2.3KTR1)/(qR2). Differenziando questo valore rispetto alla temperatura si ricava 2.3K/q *(R1/R2) volts/°K, con K/q = 87 mV/°K. Possiamo quindi osservare che la tensione ai capi di R1 ha un coefficiente di temperatura positivo, che appare in serie con quello negativo di Q3 ( approssimativamente 1.8 mV/°K). Quindi sommando i due contributi, per ottenere un coefficiente di temperatura nullo dobbiamo scrivere: 2.9 * 87(R1/R2) µV/°K –1800 µV/°K = 0, da cui R1/R2 = 9. Tornando al circuito di bandgap, possiamo ricavare: Vref = 2.3Vt(R1/R2) + 0.7 = 1.238 V Questo è solo un valore approssimato che ovviamente dipende dal valore che abbiamo assunto per Vbe, ma risulta chiaro come sia relativo alla tensione di bandgap del silicio ( 1.205 V ), da cui il termine “bandgap”. In ogni caso bisogna tener presente che è stata presentata un’analisi con approssimazioni del primo ordine: in realtà la parte NTC non ha un semplice comportamento rettilineo in temperatura, bensì vi è una curvatura verso il basso agli estremi;analogamente, ma meno marcato, per la parte PTC. Combinando questi due fenomeni, la tensione di bandgap in funzione della temperatura presenterà una curvatura agli estremi, mentre la parte più piatta è nel range 0 +70 °C: nel circuito ci saranno allora ulteriori accorgimenti per mantenere questa curva più piatta possibile. La cella di Widlar per la prima volta consentì di avere una tensione sostanzialmente stabile con queste due caratteristiche principali: - Un valore assoluto di tensione di riferimento - Un coefficiente in temperatura pari a zero o veramente piccolo. Dovrebbe subito risaltare guardando che il comportamento del circuito proposto dipende fortemente dalla corrente su Q3, che cambia al variare del carico; da qui la necessità di pilotare Q3 con un generatore costante di corrente e di un buffer di uscita, permettendo anche una scalabilità della tensione di riferimento. 136 Misura Bandgap 6.2.2 Brokaw Bandgap Reference Questo circuito venne proposto da Paul Brokaw per applicazioni analogiche [3]. Con delle semplificazioni, una delle quali consiste nel fatto che le resistenze di carico sono sostituite da carichi attivi, la cella di Brokaw ha questo aspetto: Si assume che le correnti in Q1 e Q2 siano mantenute in equilibrio dal loop di feedback. La differenza di area fra Q1 e Q2 provoca anche in questo caso una tensione di 2.3Vt ai capi di R2, come nella cella di Widlar. Questa tensione, divisa per R2, definisce la corrente su Q1 e Q2 ed entrambe finiscono su R1. Perciò, come nel caso precedente, la tensione su R1 ha un coefficiente in temperatura positivo. La tensione di bandgap è ricavata da quella su R1 in serie alla Vbe(Q1). Il rapporto R1/R2 ancora una volta aggiusta il coefficiente complessivo perché sia zero (in questo esempio R1/R2 = 4.5). Figura 6-2 Struttura base della cella di Brokawtemperatura Confrontando la cella di Widlar con quella di Brokaw, possiamo riconoscere in quest’ultima due significativi vantaggi: • Un aumento della corrente di carico su Vref non peggiora direttamente le prestazioni. In ogni caso, la resistenza d’uscita del circuito è ridotta dal feedback negativo; • La tensione di bandgap può essere facilmente scalata semplicemente cambiando il rapporto R1/R4. 6.3 Definizione del problema In questa libreria si vuole misurare ed elaborare in automatico la tensione di BandGap di un regolatore di tensione. 137 Misura Bandgap Per far questo dobbiamo innanzitutto essere in grado di: - impostare un ciclo alla cella termica in ogni step di temperatura, rilevare la tensione di bandgap salvare ed elaborare i dati Per soddisfare il primo punto si utilizza la libreria che pilota la cella termica, e per ogni step di temperatura rileverò la tensione di bandgap richiamando un altro subVI preposto a questa operazione. Dato che abbiamo bisogno di una misura precisa della temperatura, si utilizza il multimetro Keithley2700 con una PT100. 6.4 Libreria della misura del Bandgap per una data temperatura In questa libreria dovremo eseguire nell’ordine queste operazioni: 1. Misura della temperatura con il Ke2700; 2. Misura della tensione Vbg con un Ke2000; 3. Salvataggio dei dati in formato *.txt. Per misurare la tensione di bandgap si utilizza la libreria sviluppata nel cap.3 che controlla il multimetro Ke2000. Andremo a creare questo front panel: Figura 6-3 Front Panel della libreria di Bandgap a temperatura fissa 138 Misura Bandgap Come si può vedere, in alto a sinistra definisco dove salvare i dati, quindi nel riquadro a sinistra definisco l’indirizzo GPIB del Ke2700 e quale tipo di 4wire RTDs si utilizza, mentre nel riquadro a destra definisco l’indirizzo GPIB del multimetro che mi rileva la tensione di bandgap; infine vi sono gli indicatori delle misure rilevate e di eventuali errori. Il block diagram è il seguente: Figura 6-4 Block diagram con le due sequence relativo alla libreria per il test di bandgap a temperatura fissa Vi è una sequence che esegue nell’ordine i primi due punti, e all’esterno vi sono le funzioni che mi salvano i dati in formato .txt già più volte viste. Vediamo ora come rilevare la temperatura da Labview la temperatura con il multimetro Ke2700: 6.4.1 SubVi che rileva la temperatura con un 4wire RTDs con il Ke2700 In un primo tempo si è pensato di rilevare la temperatura con una semplice termocoppia attaccata allo strumento: è noto a tutti che una termocoppia sfrutta un 139 Misura Bandgap principio fisico grazie al quale quando due materiali diversi vengono a contatto, si genera una tensione proporzionale alla temperatura. Ma molti commettono il grave errore di non tener presente che quando si attacca direttamente la termocoppia ai connettori dello strumento si crea un’ulteriore giunzione e quindi viene aggiunta un’ulteriore tensione, che se ignorata, conduce a misure sbagliate. Per eliminare questo effetto indesiderato, il circuito con la termocoppia richiede una giunzione di riferimento a temperatura nota e stabile. Il Ke2700 supporta tre tipi di giunzioni di riferimento: simulated reference junction, internal reference junction, e external reference junction : Come si vede nella figura a fianco, nella simulated reference la giunzione che si crea collegando la coppia dei connettori della termocoppia con i fili di ingresso del multimetro è immersa in una soluzione a temperatura nota e stabile, ad esempio ghiaccio fuso. La internal reference junction usa un sensore interno per rilevare la temperatura della giunzione fra i connettori del multimetro e quelli della termocoppia, mentre external reference junction usa un sensore esterno, una 4wire RTDs per rilevare la temperatura esterna. Sono state effettuate delle prove utilizzando una termocoppia tipo T e l’opzione simulated reference junction in cui impostavamo la temperatura ambiente come riferimento, ma eseguendo dei test nei quali si confrontava la temperatura rilevata dalla termocoppia con quella fornita dalla cella termica, si notava una certa discordanza anche di alcuni gradi che via via aumentava tanto più la temperatura aumentava in valore assoluto. La termocoppia tipo T ha un range di funzionamento che va da –200 a +400 °C con risoluzione 0.001 °C, mentre la cella termica monta una PT100 con precisione di lettura di 0,3 °C . Dall‘ user’s manual del Ke2700 è indicato che una misura con termocoppia con configurazione simulated reference risulta tanto più accurata, quanto più è nota e stabile la temperatura di riferimento, che nel nostro caso era impostata quella ambiente. Dato che le misure fra il microcontrollore della cella termica e quelle rilevate con la termocoppia erano troppo discordanti, si è deciso di adottare una 4wire RTD. Come suggerito dal manuale del Ke2700, un termistore sarebbe il più 140 Misura Bandgap indicato per rilevare piccole variazioni di temperatura, ma dato il suo comportamento non lineare ad alta temperatura, il suo uso è ristretto al di sotto dei 100 °C . Quindi, si è deciso di effettuare la misura di temperatura con 4-wire RTD (Resistance Temperature Detector): in questo modo si evitano i problemi dovuti a giunzioni indesiderate, in quanto si effettua semplicemente una misura di resistenza, e si compensano gli errori dovuti ai cavi di collegamento con una misura a quattro fili. Inoltre una 4-wire RTD presenta un range di funzionamento lineare più ampio dei termistori, in genere da –200 °C a +630 con risoluzione 0.01 °C (vedi figura). Figura 6-5 Confronto fra un termistore e una 4RTD Una RTD è fatta da un metallo (in genere platino) e la temperatura è ricavata dalla misura a quattro fili utilizzanto la Callendar-Van Dusen equation: RRTD = R0 [1 + AT + BT2 + CT3(T-100)] In cui : RRTD è la resistenza della RTD R0 è la resistenza nota a 0 °C 0°C T is the temperature in °C A = alpha [1 + (delta/100)] B = -1 (alpha)(delta)(1e-4) C = -1 (alpha)(beta)(1e-8) alpha, beta, and delta values sono riportati nella seguente tabella: E’ stato quindi creato un subVI labview in grado di misurare la temperatura con il Ke2700 tramite una 4-wire RTD : nelle nostre misure useremo una PT100, ma la libreria può essere configurata anche per l’uso di altre RTD. 141 Misura Bandgap Il front panel è il seguente: In questo front panel è stato inserito un controllore che definisce l’indirizzo GPIB dello strumento ed il tipo di sonda usata, quindi con degli indicatori vengono visualizzati la temperatura ed eventuali errori. Questo subVI verrà richiamato col seguente connector pane nel subVI di livello superiore che misura la tensione di bandgap ad una data temperatura: Il relativo block diagram che è stato costruito è il seguente: Questo subVI è stato costruito seguendo la struttura utilizzata per il subVI che controlla i multimetro Ke2000, avvalendosi in particolare i seguenti moduli: GPIB Address to Resource Name.vi Questo subVI è utilizzato, come in tutti i block diagram creati, per convertire l’indirizzo GPIB nell’apposita sintassi adottata dai drivers (vedi cap pag ) KE2700 Initialize With Options.vi Con questo modulo stabilisco una comunicazione via GPIB fra pc e strumento. KE2700 Configure 4-wire RTD Type.vi Questo modulo è usato per configurare lo strumento ad acquisire una temperatura da una misura 4-wire. Si possono usare questi tipi di sonde: D100, PT100, F100, PT385, PT1396. 142 Misura Bandgap KE2700 Configure Measurement.vi Con questo modulo configuro il multimetro per una misura di temperatura KE2700 Read.vi Questo drivers effettua la lettura dello strumento KE2700 Close.vi Questo drivers chiude la comunicazione. 6.5 Libreria della misura del Bandgap A questo punto si crea il connector pane della libreria che esegue la misura a temperatura fissa, per richiamarla nella libreria che controlla la cella termica. Il connector pane è il seguente: Come è chiaro in figura, quando si richiama questa funzione si devono passare gli indirizzi degli strumenti, eventuali errori esterni in ingresso, dove salvare le misure e quale tipo di sonda è usata per la misura 4-wire RTD; i valori tornati saranno la tensione di bandgap, la temperatura misurata col Ke2700 e eventuali errori occorsi . Non viene riportato il relativo block diagram perché ormai dovrebbe essere chiaro al lettore la sua struttura, mentre il front panel che si costruisce è riportato a pagina seguente. Osservando la figura si può notare il solito controllo della cella termica, quindi un controllore che definisce dove salvare i dati, ed infine nei due riquadri inferiori i controlli relativi ai due strumenti, il Ke2700 per la misura precisa di temperatura ed il Ke2000 per la misura di tensione di bandgap. A questo punto si scrivono gli script Visual Basic che consentano una elaborazione dei dati automatica con il software Microsoft Excel. 143 Misura Bandgap Figura 6-6 Front panel per la misura di bandgap 6.6 Elaborazione automatica della misura del Bandgap Anche in questa libreria tutti i dati verranno elaborati automaticamente utilizzando la procedura vista a pag cap , ossia facendo aprire al termine da labview l’applicazione Microsoft Excel e quindi l’esecuzione di opportuni script. Innanzitutto, come visto negli altri capitoli, bisogna aggiungere una modifica alla libreria di bandgap in cui definisco il numero di misure e dove sono state salvate: 144 Misura Bandgap Utilizzeremo degli script VBA per: 1. Importare i dati salvati in *.txt in un foglio di lavoro excel; 2. Visualizzare in un grafico la tensione di bandgap in funzione della temperatura; 3. Salvare l’elaborazione. I punti 1 e 3 vengono soddisfatti utilizzando gli script delle altre librerie, mentre per il 2 utilizzeremo lo script in cui visualizzo in un grafico tipo XY una misura di Load Regulation a temperatura fissa, modificando la selezione dei dati: Sub GraficoBandGap() ' Grafico della tensione di Bandgap in funzione della temperatura Worksheets("foglio2").Activate N_misure = Cells(1, 1) 'leggo il numero di misure ' Costruisco il grafico XY Charts.Add ActiveChart.ChartType = xlXYScatterSmooth ActiveChart.SetSourceData Source:=Sheets("Foglio1").Range("I2"), PlotBy:= _ xlColumns ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).XValues = "=Foglio1!R3C1:R" & 3 + N_misure & "C1" ActiveChart.SeriesCollection(1).Values = "=Foglio1!R3C2:R" & 3 + N_misure & "C2" ActiveChart.SeriesCollection(1).Name = "=""Vbg""" ActiveChart.Location Where:=xlLocationAsObject, Name:="Foglio1" With ActiveChart .HasTitle = True .ChartTitle.Characters.Text = " Tensione Bandgap " .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Temp ( °C )" .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Vbg (V)" End With ActiveChart.HasLegend = True ActiveChart.Legend.Select ‘Posiziono il grafico nel foglio di lavoro: Selection.Position = xlRight ActiveSheet.Shapes("Grafico 1").IncrementLeft 178.5 ActiveSheet.Shapes("Grafico 1").IncrementTop -103.5 End Sub 145 Misura Bandgap A questo punto questi 3 script vengono eseguiti in ordine da Labview con una ulteriore modifica della libreria come a pag cap . 6.7 Utilizzo delle librerie In questo capitolo sono state create due librerie: Bandgap_TempFixed.vi : esegue il test di bandgap per una data temperatura; Bandgap.vi: esegue il test di bandgap in un dato ciclo termico. Il secondo file fa riferimento a Bandgap.xsl dove sono salvati gli script per l’elaborazione automatica. 6.8 SOMMARIO In questo capitolo è stato affrontato per gradi lo sviluppo di una libreria Labview che consenta, con l’ausilio di script in Visual Basic per Microsoft Excel, una misura ed elaborazione automatica della tensione di Bandgap dei regolatori di tensione. In un primo momento è stato spi egato cosa s’intende per tensione di bandgap con brevi cenni ai due tipi di celle fondamentali, quella di Widlar e Brokaw; quindi è stato discusso con quali sensori rilevare la temperatura, poi è stata sviluppata una libreria che esegue una misura di bandgap a temperatura singola, richiamata in seguito nella libreria che controlla la cella termica. Infine sono stati sviluppati gli script che consentono pure una elaborazione automatica dei dati utilizzando da labview il software Microsoft Excel. 146 Misura Current Limiting 7 Misura della Current Limiting 7.1 INTRODUZIONE In questo capitolo verrà sviluppata una libreria in grado di effettuare automaticamente il test di current limiting. La funzione di Current Limiting è molto importante nei regolatori di tensione in quanto evita possibili rotture del dispositivo in presenza di correnti di carico elevate. Verranno prima accennate le due tipologie basi che realizzano la funzione di current limiting nei regolatori lineari (Constant Current Limiting e Voltage Dependent Current Limiting), quindi verrà affrontata la realizzazione di una libreria Labview per questo test [5]. 7.2 Circuiti di current limiting 7.2.1 Constant Current Limiting Nella seguente figura è ripetuto un circuito semplificato che provvede alla funzione di current limiting. Figura 7-1 Struttura di current limiting La corrente di carico è rilevata dalla tensione sul resistore Sense e questa tensione è shiftata e amplificata dall’amplificatore operazionale: a sua volta è applicata all’ingresso invertente del current limit error amplifier, mentre sull’altro ingresso (non invertente) è applicata una tensione di riferimento che corrisponde sarà uguale alla tensione che si avrebbe in uscita dell’amplificatore differenziale quanto il regolatore sta lavorando con la massima corrente di carico. Quando la corrente raggiunge il valore limite, l’uscita del “current limit error amplifier” va bassa ed inizia ad assorbire corrente dall’uscita del voltage error amplifier ; a questo punto, seguendo il loop con i due bjt, calerà pure la tensione in uscita, l’uscita del “voltage error amplifier” sarà alta, ma il “current limit error amplifier” continuerà ad assorbire la sua corrente in uscita, limitando così la corrente su carico che implicherà una diminuzione della tensione d’uscita. 147 Misura Current Limiting 7.2.2 Voltage Dependent (foldback) Current Limiting I regolatori di tensione che operano con correnti relativamente alte (maggiori di 1 A) usano una limitazione della corrente di carico che dipende dalla differenza fra la tensione di ingresso e uscita. Questa ragione è dovuta alla caratteristica del transistor nota come SOA ( Safe Operatine Area ) che definisce la corrente massima in un transistor all’ aumentare della sua tensione Vce: Si può subito notare che se ad esempio si opera con una corrente di carico di 3 A, si rimane al limite della zona di sicurezza se la Vce non va oltre i 14V. Quindi, se in un regolatore lineare si usa come pass transistor un PNP (vedi pag 50 cap 1), la differenza fra la tensione di ingresso ed uscita ci dà una stima della Vce di quel transistor. Perciò dovremo avere una combinazione della corrente di carico e di tensione Vce che comunque permetta al transistor di operare nella zona di sicurezza SOA. A differenza del precedente metodo ( Constant Current Limiting ), il foldback Current Limiting può abbassare la tensione d’uscita ad un valore prossimo allo zero e inoltre è presente una certa “isteresi” in questa operazione: 148 Misura Current Limiting Nella figura in basso a destra della pagina precedente vi è la spiegazione da dove deriva il termine “foldback” , dovuto al fatto che la corrente di carico cala quando raggiunge il limite, e con essa la tensione d’uscita. Nell’altra curva (quella in alto a sinistra) è rappresentato il motivo dell’ isteresi : consideriamo una Vout = 28 V ed un carico di 14Ω (quindi Iload = 2 A); abbassando il carico a 12.2Ω, entrerà in azione il current limiting che abbasserà bruscamente la tensione d’uscita a circa 7V. Ma ristabilendo il carico a 14Ω, l’uscita non sarà più a 28 V come prima, ma osservando la figura risulterà circa a 10 V; per ritornare allo stato precedente al current limiting, si dovrà aumentare il carico fino a 15.1Ω (vedi curva in fig ), per poi diminuirlo: durante questa operazione la tensione crescerà lentamente fino ai 14V, per poi “saltare” ai 28V. Da qui il motivo dell’isteresi. E’ da tener presente anche la dipendenza dei dispositivi con la temperatura: è noto infatti che in un transistor la dipendenza della Vbe dalla temperatura: ∂Vbe ≅ −2.2 mV / ° K , e quindi è importante eseguire il test di Current Limiting ∂T in funzione della temperatura . 7.3 Definizione del problema Osserviamo la specifica di current limiting del regolatore Infineon TLE4270: Osservando anche specifiche di regolatori di altre case produttrici, in questa libreria dovremo essere in grado di : 1. Impostare una tensione di alimentazione; 2. Impostare una corrente di carico 3. Aumentare la corrente di carico fino ad azionare la protezione contro le sovraccorenti, misurando la massima corrente d’uscita ammissibile. 4. Ripetere il test a temperature diverse. Impostiamo la tensione di alimentazione e la corrente di carico utilizzando due Ke2400, ripetendo poi il test a temperature diverse utilizzando la libreria che pilota la cella termica. Poiché a volte non sono a disposizione entrambi i source-meter 149 Misura Current Limiting Ke2400, è stata creata una successiva libreria in cui si fa uso di un solo Ke2400 che impone la Iout, mentre la Vin è fornita da un alimentatore esterno. 7.4 Libreria Labview per la misura di Current Limiting per una data temperatura In questa libreria alimenteremo il circuito con un Ke2400, mentre eseguiremo lo sweep di corrente di carico controllando l’altro Ke2400 con un ciclo while, che interromperemo quando la tensione d’uscita scenderà al di sotto del valore nominale (vedi principio di funzionamento del current limiting spiegato nel paragrafo1. Per pilotare i due source-meter utilizzeremo le stesse struttura usata nelle altre librerie, e ottenendo questo front panel: Figura 7-2 Front Panel della liberia di Current Limiting a temperatura fissa Come si vede in figura, sono presenti: 150 Misura Current Limiting ü due riquadri nei quali imposto i due source-meter (anche con l’opzione 4wires per superare le perdite nei cavi di collegamento), ü un controllore in cui definisco dove salvare i dati ü un controllore in cui definisco la temperatura d’esercizio ü un pulsante di Stop per interrompere eventualmente l’esecuzione del programma ü Due controllori, uno in cui definisco la tensione d’uscita che considero al di sotto di quella nominale per l’azione di current limiting, e un delay : dato che opero comunque con correnti d’uscita alte, e necessario spegnere il dispositivo fra una step e l’altro per non surriscaldarlo e falsare così misure a basse temperature. Il block diagram relativo è il seguente: Figura 7-3 Block Diagram della libreria di Current Limiting a temperatura fissa Si può subito notare il controllo dei source meter con tutta la loro struttura, inserendo nel ciclo solo i moduli che devono essere aggiornati. Aiutandoci con le label persenti nel disegno, con il ciclo while imposto uno sweep di corrente di carico e con la sequence interna prima misuro la Iin (frame0 che non è riportato) e poi la Vout : se la Vout scende al di sotto del valore impostato sul controllore “Trigger Value” il ciclo viene interrotto (anche con lo Stop) e quindi si salva in un file *.TXT le tensioni e le correnti presenti a quello step. 151 Misura Current Limiting 7.5 Libreria Labview per la misura di Current Come visto in tutte le altre misure fin qui affrontate, si inserisce questa libreria grazie al suo connector pane nella libreria che controlla la cella termica, ottenendo quindi una libreria che esegue il test di Current Limiting al variare della temperatura. Per semplicità non riportiamo il relativo front panel. 7.6 Elaborazione automatica della misura del Current Limiting Complessivamente otterremo un numero di dati pari al numero di step di temperatura eseguiti e quindi, come nella misura di bandgap del capitolo precedente, dovremo aggiungere al block diagram la modifica riportata a pag. 145. Quindi, come nel cap. precedente, eseguiremo 3 script VBA per: 4. Importare i dati salvati in *.txt in un foglio di lavoro excel; 5. Visualizzare in un grafico il valore di Current Limiting in funzione della temperatura; 6. Salvare l’elaborazione Per tracciare il grafico, basterà modificare nello script di pag XX le righe relative all’origine dei dati (e le label), con queste righe di comandi: ………………………………………………………………………………… ActiveChart.SeriesCollection(1).XValues = "=Foglio1!R3C1:R" & 3 + N_misure & "C1" ActiveChart.SeriesCollection(1).Values = "=Foglio1!R3C5:R" & 3 + N_misure & "C5" ………………………………………………………………………………… ………………………………………………………………………………… Infatti nella prima colonna reperisco il valore della temperatura, mentre nella quinta la corrente d’uscita, che per ogni step di temperatura corrisponde alla current limiting. 7.7 Utilizzo delle librerie In questo capitolo sono state create due librerie; dopo aver effettuato gli opportuni collegamenti fra gli strumenti ed il dispositivo, l’operatorè scegliera quale usare fra queste: Current_Limiting_Temp_Fixed: effettua il test di current limiting ad una data temperature. Current_Limiting: effettua il test di current limiting per un ciclo termico. 152 Misura Current Limiting 7.8 SOMMARIO In questo capitolo è stata sviluppata una libreria per il test di Current Limiting utilizzando due source-meter Ke2400 e la cella termica. Sono stati anche accennati i due principali dispositivi di current limiting: Constant Current Limiting e Voltage Dependent Current Limiting. Quindi, seguendo quanto fatto per la libreria di bandgap, è stato visto come rendere automatica l’ elaborazione della misura utilizzando degli script Visual Basic per Microsoft Excel. 153 Misura Termal Shutdown 8 Misura Termal Shutdown 8.1 INTRODUZIONE In questo capitolo verrà sviluppata una libreria in grado di effettuare automaticamente il test di Termal Shut-down.Vi sarà innanzitutto un cenno alla struttura di termal shutdown utilizzata nei regolatori lineari, quindi lo sviluppo della libreria in grado di eseguire automaticamente questo test [5]. 8.2 Circuito di Termal Shutdown Il circuito di termal shutdown usato negli IC (Integrated Circuit) evita che la temperatura delle giunzioni cresca fino a provocare una loro rottura. Questa funzione è eseguita monitorando la temperatura interna e riducendo, se necessario, la dissipazione interna per mantenere la temperatura entro un limite (di solito 160 °C). Figura 8-1 Struttura base del circuito di protezione Termal Shutdown In questa figura è rappresentata chiramente la struttura base del circuito di Termal Shutdown. Il sensore di temperatura Q1 è posto vicino al transistor di potenza, il primo che si potrebbe danneggiare, per assicurare “un buon inseguimento termico” . R1 e R2 mantengono la base di Q1 a circa 0.35V, che corrisponde alla tensione Vbe ∂Vbe di soglia di Q1 ad una temperatura di circa 160 °C, dato che ≅ −2.2 mV / ° K ∂T (dipende dalla tecnologia, in genere va da -1.8 a -2.2 mV/°K). Quando la temperatura interna aumenta, Q1 può eventualmente accendersi (circa a 160 °C) e quindi assorbire la corrente che pilota il power stage: potrebbe nascere il dubbio che a sua volta il transistor Q1 potrebbe surriscaldarsi, ma se si osserva bene lo schema a destra si osserva che Q1 assorbe la corrente di base del bjt che pilota a sua volta la base del pass-transistor, quindi risulta molto piccola. 154 Misura Termal Shutdown Perciò attivando Q1 si riduce la corrente di carico (o al massimo la si porta a zero) che a sua volta riduce la dissipazione interna del regolatore e quindi la sua temperatura. Se il Termal Shutdown è attivo, sia la corrente che la tensione d’uscita diminuiscono; quando la tensione d’uscita si abbassa rispetto al valore nominale, l’ error amplifier cercherà di correggere la tensione d’uscita portando la sua tensione d’uscita alta, ma troverà il termal circuit limit che continuerà ad assorbire la sua corrente di uscita per mantenere l’uscita del regolatore bassa affinché la temperatura non superi i 160 °C. Come è chiaro in figura, e così pure per il current limiting visto nel capitolo precedente, il circuito di Termal Shutdown si attiva sul loop principale del circuito di regolazione, assicurando così una pronta risposta onde evitare possibili danneggiamenti. 8.3 Definizione del problema In questo test dovremo essere in grado di rilevare la temperatura in corrispondenza della quale si attiva la protezione di Termal Shutdown. Una prima soluzione sarebbe quella di utilizzare il regolatore con una alta corrente di carico, prossima al limite di current limiting, e verificare a che temperatura entra in azione la protezione di termal shutdown. Ma rilevare la temperatura propria del chip risulta un’operazione abbastanza complicata, quindi si è preferito operare seguendo un’altra strada: si simula il problema di un’elevata temperatura interna, portando con la cella termica la temperatura ambiente d’esercizio via via sempre più alta, e molto lentamente per assicurare che la temperatura esterna al chip sia effettivamente prossima alla sua interna. Si può gia intuire la struttura della nostra libreria, che può essere semplificata col seguente flow-chart: Prima di tutto devo impostare la temperatura con cui iniziare il test, quindi lo step e la velocità con cui eseguire l’incremento: questi due valori dovranno essere molto piccoli per permettere effettivamente alla temperatura interna del chip di seguire quella esterna. Inoltre verrà impostato un valore di tensione d’uscita al di sotto oltre il quale considero attivata la protezione di termal shutdown. Quindi il “cuore” centrale della struttura sarà un ciclo while in cui 155 Misura Termal Shutdown andrò man mano ad incrementare la temperatura finchè la tensione d’uscita scenderà al di sotto di un determinato valore, che indicherà l’attivazione della protezione termica. In questa libreria saranno necessari questi strumenti: o Un multimetro Ke2000 per la lettura della Vout o Un Ke2700 per una lettura precisa della temperatura con una misura 4-wires RTD o La cella termica per eseguire lo sweep in temperatura. Per eseguire questi punti utilizzeremo opportunatamente le librerie fin d’ora sviluppate, in particolare per il secondo punto la libreria per la misura di temperatura del capitolo precedente. Creeremo allora un primo subVI per la misura di temperatura e di tensione, che verrà richiamato nella libreria che controlla la cella termica. 8.4 SubVI per la misura di Vout e di Temperatura Questa libreria eseguirà un “polling” di lettura della Vout e della temperatura, finchè la tensione d’uscita scenderà al di sotto del trigger value . Si va a creare il seguente front panel: Come si può vedere in figura, vi sarà un controllo per il Ke2700 analogo a quello usato nella libreria della misura di Bandgap, mentre nel riquadro a destra verrà impostata tramite un controllore la tensione d’uscita al di sotto della quale considero attivata la protezione termica, segnalando questo evento con il “led” a fianco; inoltre vi è un indicatore che visualizza in tempo reale il valore della tensione e un altri per eventuali errori, ed un pulsante di stop per interrompere l’esecuzione. 156 Misura Termal Shutdown Il relativo block diagram è riportato a pagina seguente e sarà costituito da un ciclo while che richiama i due subVI per la misura di temperatura e di tensione, che terminerà quando si raggiunge il trigger value (segnalando l’evento con il led) : 8.5 Libreria Labview per il test di Termal Shutdown Come anticipato nel secondo paragrafo, costruiremo questa libreria andando a modificare la libreria che controlla la cella termica. A differenza di quanto rappresentato nel precedente flow-chart, si è deciso di non impostare una temperatura di start ed il suo valore valore di incremento per il ciclo termico, ma si è deciso di impostare una temperatura superiore a quella per cui scatta la protezione termica, sempre con uno “slope” molto lento, per permettere alla temperatura interna del chip di seguire quella esterna: vi sarà quindi un controllo all’interno della libreria che in corrispondenza dell‘ attivazione di Termal Shutdown, interromperà il ciclo termico. All’ interno di questa libreria utilizzeremo il subVI visto nel paragrafo precedente mentre per rilevare l’evento di Termal Shutdown, useremo proprio il segnale che attiva il “led” di quel subVI. Il block diagram che si realizza è riportato nella pagina seguente: 157 Misura Termal Shutdown Figura 8-2 Le due parti di Block Diagram della libreria di Termal Shutdown Il frame 0 della Sequence più esterna attiva tutta la procedura vista nel paragrafo 3.6 che consente di impostare sulla cella dermice una data temperature ed un dato gradiente ( °C/min ) per raggiungerla. Il frame1, non riportato, serve solamente per leggere effettivamente che temperatura e che gradiente vengono impostati sulla cella termica (come a pag 79). Il frame2 richiama il subVI visto nel paragrafo precedente, che, come già visto, continua a leggere in modalità “polling” la temperatura e la tensione d’uscita, finchè la Vout raggiunge il TriggerValue, segnalando questo evento ponendo a 1 la variabile boolean d’uscita (ossia “accendendo il led): a questo punto questo segnale che entra in ingresso ad un OR assieme al segnale di Stop, interromperà il ciclo termico. A differenza di tutte le altre ilbrerie finora viste, si può notare in alto a destra del block diagram un’altra modalità di salvataggio dei dati (sempre in formato *.txt) : in particolare, quando si avvia l’esecuzione del programma viene visualizzato un dialog box con cui si chiede all’operatore se vuole salvare i dati ed eventualmente il path file (case in alto a destra) e questa informazione viene poi passata al case in basso a destra che effettivamente salva i dati con la funzione Write Caracters To File.vi. 158 Misura Termal Shutdown L’ interfaccia utente di questa libreria è riportata a pagina seguente: si notino i controlli per i due multimetro visti nel paragrafo 6.5, quindi il controllo della cella termica in cui imposto una temperatura più alta dell’attivazione del Termal Shutdown, e la velocità in °C/min con cui la raggiungo (che deve essere bessa per i motivi precedentemente esposti): Figura 8-3 Front panel della libreria di Termal Shutdown Vi è anche un indicatore Time(mm:ss) che visualizza in quanto tempo è stata raggiunta la temperatura di Shutdown, utilizzando (vedi block diagram) la funzione Tick Count(ms) . 159 Misura Termal Shutdown 8.6 Utilizzo della libreria La libreria labview che è stata creata per il test di Termal Shutdown si chiama TSD.vi: all’operatore non resta che collegare opportunamente il regolatore di tensione agli strumenti e quindi avviare l’esecuzione di questo programme. 8.7 SOMMARIO In questo capitolo è stata realizzata la libreria che permette di realizzare in automatico il test di Termal Shutdown, accompagnata da una breve introduzione della struttura base che realizza la protezione termica nei regolatori lineari. Non sono stati necessari script VBA, in quanto i dati salvati contengono solamente il valore di temperatura per la quale è scattata la protezione e la tensione d’uscita corrispondente. 160 Misura di PSRR 9 Misura PSRR 9.1 INTRODUZIONE In questo capitolo verrà sviluppata una libreria in grado di effettuare automaticamente il test Power Supply Rejection Ratio.Vi sarà innanzitutto un cenno alle caratteristiche di questa misura, quindi lo sviluppo della libreria vera e propria per questo test. 9.2 Power Supply Rejection Ratio Power Supply Rejection Ratio (PSRR), nota pure come “ripple rejection”, misura l’abilità dei regolatori lineari di prevenire una eventuale fluttuazione dell’uscita regolata dovuta ad un disturbo nell’alimentazione. Si applica lo stesso principio della Line Regulation, con la differenza che non si tratta più di una misura DC, ma ad una data frequenza. La figura seguente spiega meglio in cosa consiste questa misura: Figura 9-1 Caratteristiche della misura PSRR Il “ripple rejection” è quindi definito ad ogni frequenza come : Per esempio, questa misura assume una certa rilevanza per capire come un eventuale disturbo in ingresso al regolatore si ripercuote nell’ uscita. Normalmente il caso peggiore lo si ha quando ESR risulta grande. 161 Misura di PSRR Il loop di controllo assume il ruolo dominante per la supply rejection; un basso valore di ESR, una elevata capacità d’uscita ed una successiva di bypass può migliorare il valore di PSRR. 9.3 Definizione del problema Per eseguire questo test si deve essere in grado di inserire nell’alimentazione DC del circuito anche una componente AC che simuli l’eventuale disturbo in ingresso. Per far questo utilizzeremo il generatore di funzioni Agilent 33250 , ma dato che la sua corrente d’uscita al massimo è dell’ordine di 200 mA, è necessario uno stadio di ingresso per pilotare il regolatore. Si utilizza allora un mos di potenza in configurazione drain-comune con una opportuna polarizzazione che consenta di non uscire dalla zona di funzionamento in saturazione e la tensione d’uscita muoversi sulla retta di carico attorno al punto di lavoro DC prossimo alla tensione di alimentazione nominale del dispositivo. Si utilizza quindi questo circuito : Figura 9-2 Circuito di misura di PSRR Il valore dei due generatori e di R dipende dal tipo di mos e dall’alimentazione richiesta dal regolatore; generalmente R è di 10Ω, la Cin richiesta dal regolatore è di solito 470 nF, quindi il filtro R-Cin ha una frequenza di taglio pari a f = 1/(2πRCin)=33,8 Khz, comunque ben maggiore delle nostre specifiche. Non ci interessano le componenti introdotte dalla distorsione del mos in quanto applicheremo una sonda dell’oscilloscopio al piedino IN del regolatore e col metodo che andremo a vedere calcoleremo il valore di PSRR solamente considerando l’armonica principale in ingresso ed in uscita. Infatti una prima idea, sbagliatissima, per calcolare il PSRR, potrebbe essere semplicemente quella di eseguire una misura ACV con il Ke2000. Ma in questo modo si introduce tutta una serie di errori : o Non si rispetta la definizione di PSRR, che è riferita ad una singola frequenza o Non si tiene conto della banda passante dello strumento 162 Misura di PSRR o Per definizione di rms, si tengono conto di tutte le componenti del segnale (in uscita al mos ci saranno anche delle componenti dovute alla distorsione), compreso il rumore. Per eseguire correttamente la misura sarebbe quindi necessario un analizzatore di spettro con il quale rilevare la componente di segnale in ingresso ed in uscita ad una data frequenza. Non avendo a disposizione questo strumento, si usa l’oscilloscopio Lecroy waverunner LT584L, che è in grado di effettuare la FFT di un segnale in ingresso; ricordiamo quindi che quanto andremo a sviluppare, sarà comunque limitato dalla sensibilità dello strumento (20mV/div). Per eseguire questo test dovremo essere in grado di : 1. Generare in ingresso al regolatore un segnale sinusoidale a frequenza f0 ; 2. Rilevare il segnale in ingresso e in uscita al regolatore ed eseguire le rispettive FFT; 3. Calcolare e quindi salvare il valore di PSRR per quella frequenza f0; 4. Ripetere il tutto per altre frequenze. Il punto 1 lo realizziamo con il driver di ingresso visto in precedenza, mentre per il punto 2 utilizzeremo opportune funzioni disponibili nell’oscilloscopio; il calcolo di PSRR lo eseguiremo semplicemente da Labview una volta che siamo riusciti ad acquisire l’ampiezza delle componenti dei due segnali a quella frequenza f, mentre lo sweep in frequenza lo realizzeremo con un semplice ciclo while. Innanzitutto per i nostri scopi dovremo realizzare queste librerie labview: § § Una libreria che consenta di pilotare il gen. di funzioni Agilent 33250; Una libreria che consenta di pilotare l’oscilloscopio Lecroy waverunner LT584L. Quindi realizzeremo un subVI in grado di calcolare il valore di PSRR in una data frequenza, che a sua volta verrà richiamato dentro al ciclo while che realizza lo sweep in frequenza. 9.4 Libreria Hp33250.vi Questa libreria dovrà essere in grado di impostare sul generatore di funzioni Agilent33250 una forma d’onda a piacimento (in particolare per il nostro caso una sinusoide) di una data ampiezza, frequenza ed eventualmente con un certo offset. Procedendo per gradi, ed aiutandoci con le strutture utilizzate nelle percedenti librerie per controllare i multimetri, utilizzeremo innanzitutto i drivers disponibili per il controllo del generatore di funzioni che consentono di inizializzare e chiudere la comunicazione. Utilizzeremo allora i moduli hp33120 Inizialize.vi e hp33120Close.vi assieme al nostro modulo GPIB AddressToResourceName.vi per la conversione del puro indirizzo GPIB nella sintassi accettata dai drivers (vedi paragrafo 3.3.1) e creeremo un subVI che effettivamente imposta lo strumento. 163 Misura di PSRR Complessivamente abbiamo ricavato questo front panel: Figura 9-3 Front panel della libreria di controllo del gen. di funzioni AG33250 Come è chiaro dalla figura, con questa libreria saremo in grado di impostare sul generatore di funzioni qualsiasi funzione standard a nostro piacimento. Questo subVI verrà utilizzato con il suo connector pane all’interno del ciclo della libreria di livello superiore che realizza uno sweep in frequenza. Connector Pane Il block diagram di questa libreria è il seguente: 164 Misura di PSRR In questa figura possiamo riconoscere i tre moduli nominati precedentemente, ovvero hp33120 Inizialize.vi e hp33120Close.vi e GPIB AddressToResourceName.vi , quindi un subVI che è stato creato per impostare effettivamente il generatore di funzioni : hp33120a Generate Std Wfm.vi. Da innumerevoli prove fatte utilizzando i drivers a disposizione, si è arrivati a creare questo block diagram per il subVI hp33120a Generate Std Wfm.vi : Vediamo ora le funzionalità espletate da ogni modulo che hanno condizionato la nostra scelta: hp33120a Configure Output Impedance.vi Definisce il valore di impedenza d’uscita, nel nostro caso 50 Ω. hp33120a Configure Output Enabled.vi Abilita l’uscita Vediamo ora in particolare gli altri drivers che configurano lo strumento: 9.4.1 hp33120a Configure Output Mode.vi Connector Pane Questo VI configura lo strumento a generare una standard o arbitraria forma d’onda. Controls and Indicators instrument handle questo controllo accetta in ingresso l’ Instrument Handle rirornato dal modulo Initialize .vi output mode indicatore con il quale si sceglie l’opzione Standard Waveform o Arbitrary Waveform. Per il nostro uso si sceglierà Standard Waveform. error in (no error) controllore tipo error cluster instrument handle out questo indicatore verrà usato in ingresso in ogni successiva funzione error out indicatore tipo cluster che segnale eventuali errori in uscita allo strumento. 165 Misura di PSRR 9.4.2 hp33120a Configure Operation Mode.vi Connector Pane Questo VI definisce il modo di operare dello strumento, ossia come produce genera il segnale in uscita. Controls and Indicators instrument handle questo controllo accetta in ingresso l’ Instrument Handle rirornato dal modulo Initialize .vi channel name ("1") Passa il nome del canale che si vuole configurare, default 1. operation mode Passa il modo di operare, può assumere I seguenti valori: HP33120A_VAL_OPERATE_CONTINUOUS - Continuous operation mode HP33120A_VAL_OPERATE_BURST - Burst operation mode HP33120A_VAL_OPERATE_GATE - Gate operation mode HP33120A_VAL_OPERATE_SWEEP - Frequency sweep operation mode Useremo il modo Continuos error in (no error) controllore tipo error cluster instrument handle out questo indicatore verrà usato in ingresso ad ogni successiva funzione error out indicatore tipo cluster che segnale eventuali errori in uscita allo strumento. 9.4.3 hp33120a Configure Standard Waveform.vi Connector Pane Questo VI definisce le proprietà della funzione standard da generare: Controls and Indicators instrument handle questo controllo accetta in ingresso l’ Instrument Handle ritornato dal modulo di inizializzazione channel name ("1") Imposta il nome del canale waveform (1) Definisce il tipo d’onda. Valori validi: HP33120A_VAL_WFM_SINE HP33120A_VAL_WFM_SQUARE HP33120A_VAL_WFM_RAMP_UP HP33120A_VAL_WFM_TRIANGLE HP33120A_VAL_WFM_DC HP33120A_VAL_WFM_NOISE HP33120A_VAL_WFM_PULSE (Agilent 33250A only) 166 - Sinusoid waveform - Square waveform - Positive ramp waveform - Triangle waveform - Constant voltage - random noise waveform - Pulse waveform Misura di PSRR HP33120A_VAL_WFM_RAMP_DOWN (Agilent 33250A only) - Negative ramp HP33120A_VAL_WFM_RAMP (Agilent 33250A only) - Adjustable ramp amplitude (0.10 Vpp) Definisce il valore dell’ampiezza, in volt peak to peak. Valid Range (Agilent 33250A):0.001 - 10.00 (Vpp) (50 Ohm impedance) 0.002 - 20.00 (Vpp) (Infinite impedance) dc offset (0.00 V) Definisce la componente DC del segnale. Valid Range: -5.00 - 5.00 V (50 Ohm impedance) 10.00 - 10.00 V (Infinite impedance) frequency (1000.0 Hz) Definisce la frequenza, in Hz, del segnale. Valid Range: 1.00e-6 - 15.00e+6 (Hz) (Sine, Square waves) 1.00e-6 - 100.0e+3 (Hz) (Triangle, Ramp Up waves) 1.00e-6 - 5.00e+6 (Hz) (All other waves) start phase (0.00 degrees) Definisce la fase iniziale, in gradi, del segnale. error in (no error) controllore di tipo error cluster instrument handle out questo indicatore verrà usato in ingresso ad ogni successiva funzione error out indicatore tipo cluster che segnale eventuali errori in uscita allo strumento. 9.4.4 hp33120a Configure Ref Clock Source.vi Connector Pane Definisce il clock di riferimento da cui derivare il segnale da generare: Controls and Indicators instrument handle questo controllo accetta in ingresso l’ Instrument Handle rirornato dal modulo Initialize .vi error in (no error) controllore tipo error cluster reference clock source Definisce quale clock usare come riferimento. Possibili valori: HP33120A_VAL_REF_CLOCK_INTERNAL - internal clock source HP33120A_VAL_REF_CLOCK_EXTERNAL - external clock source instrument handle out questo indicatore verrà usato in ingresso ad ogni successiva funzione error out indicatore tipo cluster che segnale eventuali errori in uscita allo strumento. 9.5 lclt584_AcquisitionCH1_MathCH2.vi: Viene ora sviluppata una libreria che consenta di acquisire dei segnali dall’oscilloscopio LT584L. In un primo momento abbiamo tentato di far eseguire da Labview le stesse operazioni in automatico che un operatore farebbe durante questo 167 Misura di PSRR test, ma si sono incontrate notevoli difficoltà nell’acquisire la FFT calcolata dall’oscilloscopio. In questa figura è riportato un segnale con la relativa FFT che abbiamo rilevato durante una misura di PSRR. In un primo tempo, il segnale è stato “pulito” dal rumore utilizzando una funzione matematica average (più avanti vedremo in che cosa consiste), quindi è stata utilizzata un’ ulteriore funzione matematica che calcoli la FFT di quel segnale. Nell’ operator’s manual sono riportati una serie di comandi SCPI che consentono con un controllo remoto di eseguire la FFT sull’oscilloscopio; con alcune librerie di prova siamo riusciti a far eseguire dall’oscilloscopio la FFT, pure con finestra impostabile, ma non si è riusciti in alcun modo ad ottenere la figura a fianco, né tanto meno quelle riportate a pagina seguente, in quanto per visualizzare la FFT sono necessari numerosi accorgimenti di zoom e riposizionamenti “custom” per ogni dato segnale da analizzare. Figura 9-4 Esempio di componente AC in uscita al regolatore e relativa FFT Nella figura riportata nella pagina successiva sono visualizzate delle FFT che si sono incontrate in una misura di PSRR. 168 Misura di PSRR Si può notare la distorsione introdotta principalmente dal mos di potenza del driver d’ingresso, e i due valori a quelle frequenze (da tener conto che si sta usando una finestra di Hamming, più indicata per ridurre il leakage). Ebbene, queste figure sono frutto di continui aggiustamenti del valore di time/div, del simple rate e di continui zoom e riposizionamenti della funzione matematica, tutte operazioni che non si riescono ad impostare automaticamente. Allora semplicemente si è pensato di risolvere questo problema facendo acquisire i campioni del segnale da Labview e utilizzare uno dei tanti potenti tool : una volta acquisiti i campioni, si esegue la FFT direttamente da Labview! . Andiamo quindi a creare un VI labview che sia in grado di acquisire i segnali presenti in due canali dell’oscilloscopio. Dato che in un canale ci sarà il segnale AC in uscita al regolatore, di ampiezza molto piccola, imposteremo pure una funzione matematica averaging per “pulire” il segnale dal rumore. L’oscilloscopio Lecroy mette a disposizione due funzioni average: continuous averaging e summed averaging per ridurre il rumore presente nella funzione. Continuous averaging : è la continua ripetizione, con differente peso, della funzione. È utile per ridurre Figura 9-5 esempio di FFT del segnale in uscita al regolatore il rumore nel segnale quando varia molto lentamente. L’aquisizione più recente ha più peso di tutte le altre : la funzione continuous averaging è regolata statisticamente dai cambiamenti più recenti dei campioni acquisiti, ed il peso delle acquisizioni meno recenti tendono via via esponenzialmente a zero. 169 Misura di PSRR Summed averaging : in questa modalità tutte le acquisizioni hanno lo stesso peso. Una volta impostato il numero di acquisizioni, il risultato di questa “media” di funzioni è rappresentato ad intervalli regolari sullo schermo dell’oscilloscopio. Nella libreria che andremo a creare per pilotare il Lecroy dovremo quindi prevedere questa opzione, in particolare stabiliamo di acquisire nel canale 1 il segnale che diamo in ingresso al regolatore, mentre nel canale 2 rileveremo l’uscita: essendo quest’ultimo segnale molto piccolo, dovremo prevedere di impostare sul canale 2 la funzione matematica di averaging. La costruzione del block diagram che consenta di acquisire i campioni del segnale di ingresso e di uscita del regolatore è risultata piuttosto difficoltosa, soprattutto nel trovare la giusta combinazione di drivers da usare tra tutti quelli che consentono di impostare elementari configurazioni sull’oscilloscopio. Il block diagram che si ottiene è il seguente: Il connector pane è il seguente: Connector Pane Dal connector pane si possono riconoscere i parametri che devono essere passati a questo subVI (sulla sinistra) che corrispondono ai controllori del front-panel, ossia: - l’indirizzo GPIB dello strumento - quali canali acquisire - quale funzione matematica fra continuous averaging e summed averaging eseguire - il parametro relativo alla funzione matematica di averaging. 170 Misura di PSRR I valori in uscita, che verranno ripresi da un subVI di livello superiore per creare la libreria di PSRR, sono: - i due array delle acquisizioni e la loro rappresentazione grafica - la dimensione delle acquisizioni - la velocità di campionamento - segnalazione di eventuali errori. Le funzioni espletate dai VI GPIB Address to Resource Name.vi, lcltxxxx Initialize.vi, lcltxxxx Close.vi sono le stesse viste nei capitoli precedenti. Andiamo ora per ordine a vedere le funzioni espletate dagli altri VI che ci consentono di creare il subVI adatto ai nostri scopi: 9.5.1 lcltxxxx Auto Setup.vi Connector Pane Questo VI è usato per configurare automaticamente l’oscilloscopio: alla sua chiamata, lo strumento rileva il segnale di ingresso e automaticamente configura lo strumento. Controls and Indicators instrument handle questo controllo accetta in ingresso l’ Instrument Handle rirornato dal modulo Initialize .vi error in (no error) controllore di tipo error cluster instrument handle out questo indicatore verrà usato in ingresso ad ogni successiva funzione error out indicatore tipo cluster che segnale eventuali errori in uscita allo strumento. 9.5.2 lcltxxxx Read Waveform.vi Connector Pane Questo VI esegue un’acquisizione di campioni del canale specificato dal parametro di ingresso. Quando viene richiamato, aspetta che l’acquisizione sia eseguita con la configurazione prestabilita, quindi ne ritorna la funzione. Osservando come questa funzione viene richiamata nel subVI che si è costruito per pilotare l’oscilloscopio, si osserva che i dati in uscita vengono salvati in un array (del quale è fornita la dimensione) e si va creare il rispettivo grafico, visualizzando così nel front panel la funzione acquisita. 171 Misura di PSRR Controls and Indicators instrument handle questo controllo accetta in ingresso l’ Instrument Handle rirornato dal modulo Initialize .vi channel name ("") Definisce il canale da acquisire. Possibili valori: C1,C2,C3,C4,TA,TB,TC,TD,M1,M2,M3,M4 Nel nostro subVI questo modulo verrà pima usato per acquisire il canale1, cioè il segnale in ingresso al regolatore. waveform size (0) Definisce il numero di dati maximum time (5000ms) definisce il tempo Massimo entro cui effettuare l’acquisizione error in (no error) controllore tipo error cluster instrument handle out questo indicatore verrà usato in ingresso in ogni successiva funzione initial x indica il tempo in cui è stato acquisito il primo campione rispetto l’evento di trigger (sec) x increment indica quanto tempo intercorre fra un campione e l’altro (sec.) error out indicatore tipo cluster che segnale eventuali errori in uscita allo strumento. Actual points definisce il il numero di campioni effettivamente acquisiti. 9.5.3 lcltxxxx Actual Sample Rate.vi Connector Pane Questo VI ritorna la velocità di campionamento con cui è stata acquisita la funzione (in samples per second). Prima di questo modulo è stato anche inserito il modulo lcltxxxx Configure Reference Levels.vi che definisce i livelli di riferimento per la funzione acquisita. Vengono lasciati i valori di default : low ref (10,00E+0 %) mid ref (50,00E+0 %) high ref (90,00E+0 %) 9.5.4 lcltxxxx Reset Math Channel.vi Connector Pane Dato che ora imposteremo l’acquisizione del segnale presente al canale 2, cioè quello in uscita al regolatore, utilizzando la funzione matematica averaging, 172 Misura di PSRR risulta necessario resettare il buffer contenente i risultati delle precedenti funzioni matematiche averaging; questa operazione corrisponde all’operazione Clear Sweeps sul pannello frontale dell’oscilloscopio. 9.5.5 lcltxxxx Channel Math.vi Connector Pane Questo VI è usato per configurare effettivamente il dell’oscilloscopio per l’acquisizione averaging del secondo canale. Le sue caratteristiche sono le seguenti: canale matematico Controls and Indicators instrument handle questo controllo accetta in ingresso l’ Instrument Handle ritornato dal modulo Initialize .vi math channel ("TA") Definisce su quale canale assegnare il risultato della funzione matematica. Possibili valori: TA, TB, TC, TD source 1 ("C1") Passa un argomento per la funzione matematica; possibili valori: C1, C2, C3, C4, TA, TB, TC, TD, M1, M2, M3, M4 source 2 ("C2") Passa l’eventuale secondo argomento della funzione matematica. function (1: Sum) Specifica la funzione matematica da eseguire. Per i nostri scopi renderemo disponibili le funzioni : Summed Averaging Continuous Averaging max points (1000) Definisce il Massimo numero di punti del risultato della funzione; valore massimo 25000000. parameter 1 (0,00E+0) L’uso del parametro dipende dal tipo di funzione matematica scelta. Nel caso di Summed Averaging indica il numero di acquisizioni da cui viene eseguita la media, nel caso di Continuous Averaging definisce il “peso” dei campioni. Il peso delle acquisizioni meno recenti decresce con legge esponenziale tanto più è alto il valore di questo parametro. parameter 2 (0,00E+0) è un ulteriore parametro che non verrà usato per I nostri scopi. error in (no error) controllore tipo error cluster instrument handle out questo indicatore verrà usato in ingresso in ogni successiva funzione error out indicatore tipo cluster che segnale eventuali errori in uscita allo strumento. Il modulo successivo a questo sarà lcltxxxx Read Waveform.vi analogo a quello visto in precedenza, nel quale imposteremo come canale di acquisizione il canale 173 Misura di PSRR matematico che è stato impostato con i moduli visti, quindi rileveremo la velocità di campionamento con lcltxxxx Actual Sample Rate.vi e chiuderemo con il modulo lcltxxxx Close.vi (vedi block diagram). 9.6 PSRR_Simple Creata la libreria per l’acquisizione del segnale di ingresso e quello d’uscita del regolatore, viene ora creata una libreria labview che consenta di calcolare il valore di PSRR per una data frequenza.Come già anticipato nell’ introduzione, verrà utilizzato un tool labview che esegue la FFT di un segnale. Questa libreria dovrà essere in grado di : 1) Acquisire il segnale dato in ingresso al regolatore e quello presente alla sua uscita; 2) Eseguire la FFT dei due segnali; 3) Calcolare il valore di PSRR. Il punto 1 lo realizzo richiamando il subVI del paragrafo precedente lclt584_AcquisitionCH1_MathCH2.vi ; il punto 2 con il tool di labview; per il punto3, data la definizione di PSRR, individuo l’ampiezza delle componenti dei due segnali Noti i due valori, se li esprimo in dB il PSRR sarà nient’altro la differenza dei due (e quindi non importa se rilevavo metà ampiezza o quella intera) : Vopp PSRR = 20 Log = 20 Log (Vopp) − 20 Log (Vipp) Vipp Tutto quanto appena spiegato può essere ritrovato nel block-diagram a pagina seguente: 174 Misura di PSRR Il subVI preposto all’acquisizione dei dati viene richiamato con opportuni controllori, che compaiono nel front panel di pagina seguente (è il subVI esterno alla sequence). Nel frame 0 viene eseguita la FFT del segnale di canale 1: per far questo, viene costruito il segnale temporale, noti i campioni, con la funzione Build Waveform, viene definita la finestra d’uso ed il “format” dei dati d’uscita con i cluster di tre boolean (per capire meglio come funziona il tool che esegue la FFT si rimanda al paragrafo successivo), e sceglieremo di esprimerli in dB. Noto lo spettro (discreto) del segnale, si ricava la componente e la frequenza corrispondente di ampiezza massima con le funzioni Unbundle by Name e Array Max & Min . Il frame successivo eseguirà le stesse operazioni per l’altro segnale. Note le due ampiezze in dB, il valore in PSRR viene semplicemente calcolato eseguendo la differenza delle due. Il front panel è riportato a pagina seguente seguente: 175 Misura di PSRR Figura 9-6 Front Panel per la misura semplice di PSRR Si possono notare i controllori che configurano l’oscilloscopio visti nella libreria del paragrafo precedente, mentre per il calcolo della FFT è possibile impostare per ogni canale quale finestra utilizzare. Quindi eseguendo il programma, per ogni segnale viene ricavata la componente principale individuandola con la sua ampiezza (in dB) e frequenza, quindi viene calcolato il valore di PSRR. Vengono ora spiegate le funzionalità del tool che esegue la FFT: 9.6.1 FFT Spectrum (Mag-Phase).vi Connector Pane Questo VI calcola la FFT in termini di ampiezza e fase di una forma d’onda data in ingresso (consente anche di calcolare la FFT average). I parametri che ci interesano sono: window Definisce la finestra temporale da usare. Possibili scelte: Von Hann : riduce il leakage, migliora l’accuratezza in ampiezza ma peggiora quella in frequenza. 176 Misura di PSRR - quella in frequenza. Rectangular : usare quando visualizzo un numero intero di periodi, altrimenti nasce il problema di leakege in frequenza e scallop loss in frequenza Hamming : riduce il leakage, migliora l’accuratezza in ampiezza ma peggiora quella in frequenza. Flat Top : provvede ad un’ottima accuratezza in ampiezza (ha lo scallop loss più piccolo, vedi tabella sottostante), ma riduce l’accuratezza in frequenza. Blackman-Harris riduce il leakage al minimo, ma riduce anche la risoluzione in frequenza. view è un cluster che definisce in che formato ritornare il calcolo della FFT. E’ costituito dalle seguenti variabili: dB On (F) dB On Specifica se esprimere l’ampiezza in decibel, nel nostro caso sarà ON unwrap phase (F) unwrap specifica se sliminare le discontinuità di fase convert to degree (F) convert to degree specifica se convertire la fase in gradi o radianti. 9.7 Libreria PSRR Realizziamo ora la libreria Labview che esegue la misura di PSRR per uno sweep di frequenze seguendo quanto anticipato nel paragrafo 9.3; ci sarà un ciclo while che richiamerà la libreria che pilota il generatore di funzioni Agilent 33250, quindi eseguirà la misura di PSRR per quello step di frequenza. Il block diagram è il seguente: 177 Misura di PSRR Figura 9-7 Block Diagram della libreria di PSRR complessiva 178 Misura di PSRR Nella figura 9-7 si può notare il ciclo while regolato dai parametri dallo sweep in frequenza, che richiama all’interno di una sequence il subVI precedentemente sviluppato che imposta il generatore di funzioni. Nel frame successivo richiamo il subVI che calcola il valore di PSRR esaminato precedentemente. Complessivamente si ottiene il seguente front panel : Figura 9-8 Front Panel per la misura di PSRR complessiva In questa figura possiamo riconoscere complessivamente tutti i controllori ed indicatori visti nel corso della progettazione di questa libreria: - Un controllore per definire dove salvare i dati e un pulsante di Stop per interrompere eventualmente l’esecuzione del programma; - I controllori e gli indicatori per il generatore di funzioni Agilent33250; - I controllori e gli indicatori per acquisire le due funzioni tramite l’oscilloscopio; - I controllori che definiscono le finestre da usare nel calcolo della FFT e gli indicatori della componente principale di ogni segnale; - Indicatori di eventuali errori sugli strumenti o nel calcolo delle FFT; 179 Misura di PSRR - Un indicatore del valore di PSRR per quella frequenza. 9.8 Elaborazione automatica della misura di PSRR Anche per questo tipo di misura per l’elaborazione automatica dei dati è stato adottato lo stesso stile di progetto usato per le altre librerie. Anche in questo caso salveremo in un file testo l’informazione riguardante il numero di misure ed il percorso del file dati introducendo una modifica nell’ultima libreria analoga a quelle viste alla fine di ogni precedente capitolo; questa modifica la si ritrova nella parte in alto a sinistra di questa figura: Osservando la figura precedente, si può notare come l’intero block diagram della vecchia libreria PSRR sia stato incluso nel frame 0 di una grande sequence, all’interno del quale vi è anche la modifica appena vista; in questo modo nel frame 0 si eseguono tutte le misure di PSRR per un dato sweep di frequenze, e nel frame 1 attiverò opportuni script Visual Basic per Microsoft Excel proprio come in fig pag cap . Il format dei dati nel file .txt è il seguente: Freq(Hz) ……….. ……….. 180 Signal_In(dB) …………….. …………….. Signal_Out(dB) ……………….. ……………….. PSRR(dB) …………. …………. Misura di PSRR Utilizzeremo, come nelle librerie degli altri capitoli, lo script ImportData() per importare i dati salvati in *.txt in un foglio elettronico Excel (vedi anche paragr. 3.9), uno script che visualizzi in un grafico l’andamento del PSRR in funzione della frequenza e lo script Save() che salva tutta l’elaborazione excel nello stesso path file e con lo stesso nome di quello *.txt. Lo script che crea il grafico di PSRR sarà uguale a quello utilizzato nel paragrafo 6.6 nel capitolo sulla misura del Bandgap, salvo cambiare le due righe di programma in cui definisco che dati plottare con queste: ………………………………………………………………………………… ActiveChart.SeriesCollection(1).XValues = "=Foglio1!R3C1:R" & 3 + N_misure & "C1" ‘ i valori sull’asse x da graficare sono le frequenze e sono riportate nella prima colonna ActiveChart.SeriesCollection(1).Values = "=Foglio1!R3C4:R" & 3 + N_misure & "C4" ‘ l’asse y corrisponde ai valori di PSRR e sono salvati nell’ultima colonna, la quarta. ………………………………………………………………………………… ………………………………………………………………………………… 9.9 Utilizzo delle librerie La libreria che è stata creata in questo capitolo si chiama PSRR.vi ed esegue la misura di Power Supply Rejection Ratio per uno sweep di frequenze. Assieme a questo file si necessita del file PSRR.xls, che, memorizzato in C:\, consente l’elaborazione automatica dei dati acquisiti. 9.10 SOMMARIO In questo capitolo è stata realizzata una libreria che consente di effettuare ed elaborare in modo automatico la misura di Power Supply Rejection Ratio di un regolatore di tensione. Essendo una misura riferita alle componenti spettrali in ingresso ed in uscita di un regolatore, lo strumento più adatto sarebbe un analizzatore di spettro, che non era però disponibile; la sua mancanza è stata allora sopperita acquisendo i segnali con l’oscilloscopio e, noti i campioni dei due segnali, eseguendo le due corrispondenti FFT direttamente da Labview. Sono stati visti quindi tutti i passi della progettazione di questa libreria, fino alla sua elaborazione automatica. Ricordiamo comunque che un limite di questa libreria risiede proprio nella sensibilità dell’oscilloscopio (2mV/div), che ne pregiudica il suo utilizzo con PSRR elevati (oltre –60dB). 181 Misura di ESR 10 Misura ESR 10.1 INTRODUZIONE In questo capitolo verrà sviluppata una libreria per la misura dell’ Equivalent Series Resistance di un condensatore. È una misura molto importante, in quanto riguarda la stabilità di funzionamento di un regolatore di tensione e risulta necessaria perché sono pochi i costruttori che forniscono una specifica esauriente a riguardo (ossia, come vedremo più avanti, definire l’ESR in base alla temperatura e frequenza d’esercizio). 10.2 Stabilità negli LDO Un regolatore lineare di tensione puo richiedere di inserire in uscita una certa capacità con un dato range ESR al fine di stabilizzare il control loop. Se consideriamo per semplicità un LDO con due poli non compensati come in figura, vi è la possibilità che nascano oscillazioni indesiderate. In altre parole il linear regulator risulta instabile poiché alla frequenza di guadagno unitario UGF presenta una fase di –180°. Per rendere il regolatore stabile è allora necessario aggiungere uno zero che cancelli la variazione di fase introdotta da uno dei due poli : 182 Misura di ESR Figura 10-1 Risposta in frequenza di un LDO non compensato Uno zero introdotto con l’ ESR prima del punto UGF consente di avere in UGF1 una variazione di fase di circa –90° ( 2 poli + 1zero = -180° + 90° = -90° ) e rendendo così stabile il regolatore. Figura 10-2 Risposta in frequenza di un LDO compensato Questo è il caso in cui la risposta in frequenza di un LDO è stato modellizzato semplicemente con due poli dominanti, ma generalmente esiste un valore minimo e uno massimo di ESR che determina così una curva chiamata “Tunnel of death”. Il grafico seguente visualizza un range di ESR compreso fra 0.2 e 9 Ω : in particolare “solid tantalum electrolytic, aluminum electrolyc, e multilayer ceramic capacitor” sono i più indicati alle richieste di ESR. 183 Misura di ESR Figura 10-3 Esenpio di range di stabilità di ESR Risulta quindi interessante conoscere il valore della resistenza parassita propria di un condensatore che, con in serie un’eventuale resistenza (generalmente a film in carbonio), potrebbe render stabile il sistema . 10.3 Definizione del problema La libreria che andremo a sviluppare dovrà essere in grado di calcolare il valore della resistenza parassita in serie ad un condensatore. Un condensatore reale ha queste caratteristiche: Figura 10-4 Rapprasentazione circuitale e semplificata di un condensatore reale La resistenza Rdiel, rappresenta le perdite nel dielettrico tra le armature (generalmente di valore molto grande); la capacità CT e l'induttanza LT modellizzano l'effetto dei reofori (piedini del componente); la resistenza Rarm rappresenta l'effetto resistivo delle armature da cui è costituito il condensatore. Il modello semplificato risulta quindi essere un circuito RLC serie di cui possiamo ricavare l'impedenza complessiva: 184 Misura di ESR la cui frequenza di risonanza vale: Si vede come, al di sotto della frequenza di risonanza, il comportamento del condensatore sia prevalentemente capacitivo, mentre al crescere della frequenza, l'impedenza dell'induttanza ZL aumenta fino a superare quella capacitiva al di sopra di f0 ; in queste condizioni il condensatore assume un comportamento prevalentemente induttivo; perciò nel caso in cui il condensatore dovesse essere utilizzato come corto circuito per segnali di disturbo ad alta frequenza, si dovrebbe scegliere un condensatore con un valore capacitivo che determina una frequenza di risonanza maggiore della frequenza di disturbo; in caso contrario il valore dell'impedenza potrebbe diventare molto grande ed annullare la funzione di corto circuito del condensatore. Per effettuare questa misura esistono strumenti opportuni chiamati LCR meter: oltre a dare la misura (a quattro fili) effettiva di una impedenza, è in grado di fornire il valore di DF, che è definito come il rapporta fra la potenza attiva e reattiva su quell’impedenza e quindi in un condensatore corrisponde, se trascuriamo la parte induttiva, a Resr/Xc. In mancanza di questo strumento, un’ idea per il calcolo di ESR potrebbe essere di sfruttare proprio il comportamento capacitivo-induttivo di un condensatore reale: alla frequenza di risonanza l’impedenza ha un comportamento puramente resistivo. Ma in questo modo si commette questo l’errore, molto diffuso, di considerare la resistenza parassita di un condensatore indipendente dalla frequenza d’uso, cosa assolutamene non vera se si guardano i data sheet di alcuni costruttori: Figura 10-5 Esempio di curva di ESR in frequenza 185 Misura di ESR Infatti generalmente il valore di ESR cresce al diminuire della frequenza e dipende anche dalla temperatura d’esercizio, come si può vedere nella figura seguente: Figura 10-6 Esempio di curva di ESR in temperatura Si può osservare come il valore di ESR aumenti al diminuire della temperatura. La libreria che andremo a sviluppare dovrà essere in grado di definire una misura di ESR in base alla frequenza e alla temperatura d’esercizio, per sopperire alla mancanza di una esauriente indicazione a riguardo nei data sheet di molti costruttori di capacità. Come già spiegato, lo strumento più adatto sarebbe un LCR meter, ma cercheremo di sopperire alla sua mancanza utilizzando gli strumenti disponibili. A questo proposito ci vengono in aiuto delle funzioni disponibili sull’oscilloscopio Lecroy, che utilizzeremo per “imitare” proprio il principio di funzionamento di un LCR meter. L’oscilloscopio LT584L offre, con l’ausilio di una sonda di corrente, una misura di potenza attiva di un dispositivo sotto test: dato che la potenza attiva è riferita ad una impedenza puramente resistiva, effettuando allora una sua misura su un condensatore sollecitato da una data sinusoide, possiamo allora risalire al valore di ESR. Costruiremo dapprima una libreria in grado di effettuare questa misura per una data frequenza, quindi la utilizzeremo assieme a quella che controlle l’ Agilent 33250 per ricavare uno sweep di frequenza, e infine studieremo opportuni accorgimenti per una misura al variare della temperatura. 10.4 lclt584_AVG(CH1)_AVG(CH2)+PMT(ESR).vi Come è stato anticipato, la realizzazione della libreria di questo capitolo verte principalmente sulla misura di una potenza attiva da parte dell’oscilloscopio Lecroy LT584L. Per impostare il Lecroy è stato utilizzato uno stile analogo a quello del capitolo precedente per la misura di PSRR, e in questo caso “ripuliamo” anche il canale1 dal rumore con la funzione average. Perciò innanzitutto imposteremo l’acquisizione dei due canali con la stessa struttura modulare di pagXX, con l’aggiunta dell’ opzione averaging continuous o averaging summed anche per il canale1. In particolare sul canale1 verrà rilevata la tensione ai capi del condensatore, 186 Misura di ESR e sul canale2 la corrente tramite la sonda di corrente (quando la si collega all’oscilloscopio è richiesto di eseguire esternamente la funzione DEGAUSS PROBE). Non essendo a disposizione un drivers o un comando SCPI nel Waverunner Remote Control Manual (January 2000) in grado di rilevare il valore rms della corrente, abbiamo allora ricavato tale valore utilizzando la funzione RMS.vi di Labview: Questo VI calcola il valore rms del segnale di ingresso X e segnala eventuali errori o warning durante il suo utilizzo. Connector Pane La parte di block diagram che si ottiene fino a questo punto è allora la seguente: Figura 10-7Connector pane della parte di libreria lclt584_AVG(CH1)_AVG(CH2)+PMT(ESR).vi relativa all’acquisizione dei segnali Dalle varie label in figura si possono riconoscere tutti i moduli già visti nel paragrafo XX del capitolo precedente, salvo l’aggiunta di RMS.vi per il calcolo del valore efficace della corrente rilevata dalla sonda. In più si può osservare che ai canali matematici TA e TB sono assegnati i due segnali di ingresso (tensione e corrente) elaborati con la funzione averaging (impostabile in continuos o summed). A questo punto della progettazione dobbiamo elaborare un metodo per impostare e misurare sul Lecroy la potenza attiva. Non essendo disponibile nei drivers installati un VI adatto ai nostri scopi, imposteremo l’oscilloscopio tramite comandi SCPI definiti nel Waverunner Remote Control Manual creando il subVI Configure PMT.vi, mentre potremo rilevare le misure con il modulo LTDSO Parameter Value.vi . Complessivamente creeremo allora una sequence in cui con il frame0 acquisiremo i due segnali e nel frame1 misureremo la potenza attiva sul condensatore; a questo punto, da P=RI2 , risaliremo al valore di ESR. Infine inseriremo tutto questo block 187 Misura di ESR diagram dentro un ciclo while nel quale controlleremo anche l’Agilent 33250 con la libreria sviluppata nel cap 9 “Libreria33250.vi”ottenendo così una misura in frequenza.Il block diagram che si ottiene è il seguente: Figura 10-8 Block diiagram relativo alla libreria di misura di ESR Oltre a tutto quello che è stato precedentemente riportato, in questa figura si nota anche la classica procedura utilizzata in tutte le altre librerie per salvare i dati nel formato *.txt, (vedi pag cap). Si può vedere come nel frame0 imposto l’acquisizione dei segnali nell’oscilloscopio, mentre nel frame successivo imposterò e misurerò la potenza attiva: Il front possono acquisiti ognuno 188 panel complessivo di tutta questa libreria è riportato a pagina seguente. Si subito notare due display che rappresentano i due segnali che vengono e sotto ad essi i relativi controllori per l’impostazione: in particolare per si può definire quale canale acquisire e quale funzione averaging con Misura di ESR relativo parametro e canale matematico corrispondente utilizzare, quindi è riportato un array con i dati acquisiti. 189 Misura di ESR Nella parte inferiore del block diagram vi è un primo riquadro in cui si imposta l’indirizzo GPIB dell’osciloscopio e vengono segnalati eventuali errori sullo strumento, quindi vi è un controllore nel quale definisco dove salvare i dati. Vi è poi un riquadro con i controllori per il generatore di funzioni visti nel paragr. E a fianco un altro riquadro nel quale definisco il calcolo della potenza attiva, impostando i due parametri di ingresso che corrisponderanno ai canali matematici e quale potenza calcolare. Infine vi è un riquadro con le misure del valore rms della corrente (più eventuale errore nella sua elaborazione), la potenza attiva ed il valore di ESR ad ogni step di frequenza. Vediamo ora brevemente i due moduli utilizzati per la misura di potenza: 10.4.1 Configure PMT.vi Connector Pane Questo subVI è stato creato per impostare sull’oscilloscopio una misura di potenza e non essendoci a disposizione drivers per questo scopo, sono stati direttamente utilizzati i comandi SCPI definiti nel Waverunner Remote Control Manual del Lecroy. I parametri per il calcolo di una potenza vengono impostati manualmente sul front panel dello strumento selezionando la finestra “Parameter Custom” . A questo proposito fra gli innumerevoli comandi SCPI ci vengono in aiuto due in particolare (riportati a pag.56 di quel manuale): ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… Useremo allora il comando PACU per l’impostazione della misura e PADL eventualmente per cancellarla sul display dello strumento. La loro sintassi è la seguente COMMAND SYNTAX PArameter_Custom <line>,<parameter>,<qualifier>[,<qualifier>,...] <line> : = da 1 a 5 <parameter> : = { parametro che definisce il tipo di misura} <qualifier> : = definisce quali grandezze usare per quella data elaborazione. 190 Misura di ESR Ogni comando deve essere inviato con i terminatori <NL> <EOI> (New Line e End Or Identify, vedi anche appendiceA “Interfaccia GPIB”), ma per trasmettere le stringhe di comando utilizzeremo LTCLXXXX WriteInstrumentData.vi che aggiunge automaticamente in coda i due terminatori. Costruiremo allora il seguente block diagram che genererà gradualmente il comando da inviare: Figura 10-9 Block Diagram relativo all'invio di comandi SCPI Per formare la stringa di comando vengono utilizzate le funzioni Labview Format Value.vi e Pick Line.vi. Procedendo nel block diagram da sinistra verso destra, vediamo che costruiamo la prima parte del comando utilizzando Format Value.vi : questo modulo converte un numero in una stringa in accordo con un preciso formato e la appende all’altra stringa in ingresso. Nel nostro caso appenderemo in coda alla stringa PACU l’informazione della linea del display sulla quale visualizzeremo la misura. Procedendo nella costruzione del comando, ora nel block diagram utilizzeremo Pick Line.v questo vi appende in coda alla nostra stringa una stringa fra quelle presenti nel scrollbar ad esso collegato in base alla scelta del controllore numerico; in altre parole, appenderemo in coda una stringa fra apwr, pf, rpwr alla parte di comando precedentemente creata per definire il tipo di misura. rpwr imposta una misura di potenza attiva, pf esegue il rapporto della misura rpwr e apwr. Fare molto attenzione che nel Lecroy rpwr non corrisponde alla potenza reattiva Q=Imag(VI* ), ma nell’oscilloscopio corrisponde solamente al prodotto IrmsVrms ! Continuando con l’analisi del block diagram creato, arriviamo alla struttura case che completa la costruzione del comando in base al tipo di misura da effettuare. Il frame 0 corrisponde alla selezione ” NoParameter” e tramite il comando PADL elimina la linea selezionata. 191 Misura di ESR Il frame1 corrisponde alla misura “ApparentPower” sull’oscilloscopio; in questo caso definiamo nella nostra stringa su quali canali reperire la tensione e la corrente con altri due Pick Line.vi e due controllori (C1..C4, TA..TB). Infine inviamo il comando utilizzando il driver lcltxxxx Write Instrument Data.vi. La struttura dei rimanenti frame del case è analoga a questa. 10.4.2 LTDSO Parameter Value.vi Connector Pane Questo è un driver che permette una generica lettura dell’oscilloscopio. Nel nostro caso definiremo soltanto in Parameter la “linea di display” corrispondente alla nostra misura impostata nel precedente subVI, quindi reperiremo tale valore dalla variabile d’uscita Value. 10.5 Misura di ESR al variare della temperatura Dato che non è possibile inserire direttamente nella cella termica il condensatore con le sonde dell’oscilloscopio attaccate, saranno necessari dei fili di collegamenti esterni. Ovviamente ciò comporterà tutta una serie di inconvenienti tipo: -si introduce una resistenza parassita -si introducono capacità e induttanze parassite -gli stessi cavi possono comportarsi come antenne e quindi ricevere disturbi 192 Misura di ESR Si è scelto di utilizzare un cavo in rame di lunghezza 1 metro e sezione 2.5 mmq. Poiché le nostre misure devono essere eseguite fino a 10 Khz, si è scelto di trascurare gli effetti capacitivi-induttivi del capo, d’altra parte noi misuriamo una potenza attiva. Eventuale rumore potrebbe un po’ cambiare il valore di corrente per quella data tensione di ingresso a quella frequenza: ma poi noi andiamo a misurare con l’oscilloscopio il valore rms di entrambe le grandezze elettriche, valori che vengono utilizzati dall’algoritmo interno all’oscilloscopio per la misura di potenza attiva: quindi in P=RI2 sia I che P avranno una componente dovuta al rumore, ma ciò non influisce per il calcolo di R. Un problema si incontra nel determinare la resistenza parassita che introduco con il cavo: è noto che al crescere della frequenza la corrente tende ed addensarsi sulla superficie esterna a causa del fenomeno noto col nome di effetto pelle. Si può pensare che la corrente sia concentrata a ridosso della superficie esterna del conduttore per uno spessore pari al fattore di penetrazione (nel caso in cui tale valore risulti inferiore al raggio del conduttore). Definito il fattore di penetrazione come: 1 δ = , con f frequenza d’esercizio, µ permeabilità , ε costante dielettrica e πf µεσ σ conducibilità del mezzo, approssimiamo in questo modo la resistenza del conduttore (L = lunghezza, r = raggio cavo): L Rcavo ≅ se r << δ σπr 2 L Rcavo ≅ se r >> δ 2σπr δ Con queste approssimazioni, otteniamo a 10 Hz una Rcavo = 6,897 mΩ e a 10 KHz Rcavo = 4,655 mΩ : i due valori sono molto piccoli e prossimi, e alla fine noi daremo comunque una approssimazione per eccesso del valore di ESR in quanto no teniamo conto della resistenza delle varie connessioni in gioco. La resistenza del cavo viene calcolata all’interno della libreria di ESR con questa modifica: Si fa cioè uso della funzione Labview Formula Node che grazie ad un breve programma in C implementiamo il calcolo della resistenza del cavo al variare della frequenza. 193 Misura di ESR Ora questa libreria verrà semplicemente inclusa nella libreria che controlla la cella termica, ottenendo così il test di ESR al variare della temperatura. 10.6 Elaborazione automatica della misura di ESR Per l’elaborazione automatica delle misure di ESR vengono effettuate le modifiche riportate nel paragrafo 9.8 relativo all’elaborazione automatica della misura di PSRR. 10.7 Utilizzo della libreria Per la misura di ESR vengono create due librerie: SimpleESR.vi : esegue la misura di ESR a temperatura ambiente e quindi non si necessita del cavo di collegamento esterno fra condensatore e generatore di funzioni. ESRwith_oven : esegue il test di ESR al variare della temperatura e frequenza e necessita del cavo di collegamento esterno fra condensatore e generatore di funzioni. Da tener presente che per eseguire correttamente il test nei condensatori elettrolitici è richiesta una corretta polarizzazione della tensione, quindi bisogna impostare opportunamente il valore di offset e amplitude dell’onda da generare. 10.8 SOMMARIO In questo capitolo si è visto per gradi lo sviluppo di una libreria che consentisse di dare una stima del valore della resistenza equivalente serie di un condensatore, al variare della frequenza e della temperatura con gli strumenti a disposizione, in particolare utilizzando un oscilloscopio ed un generatore di funzioni. Abbiamo inoltre visto come il valore di ESR sia importante per la stabilità del dispositivo e come a questo riguardo venga definito un range di ESR entro cui è assicurato il corretto funzionamento. 194 11 Caratterizzazione di un BJT multicollettore 11.1 INTRODUZIONE In questo capitolo verrà affrontato lo sviluppo di una libreria Labview in grado di caratterizzare il comportamento di un particolare BJT. Essendo una misura “custom” in cui di volta in volta vengono apportate delle modifiche, il test non sarà completamente automatizzato ma ne saranno invece automatizzati gli aspetti principali. 11.2 Definizione del problema Il problema da affrontare consiste nel caratterizzare attraverso una serie di test il pass-device comune alla maggior parte dei regolatori lineari Infineon, utilizzando i dati sperimentali raccolti per modificare e correggere i parametri dei programmi di simulazione usati. Esistono vari tipi di pass-device utilizzati nei regolatori di tensioni (vedi pag 31), ma il pass-device che andremo a testare può essere modellizzato come un transistor bjt. In realtà, dato che la maggior parte della potenza dissipata in un regolatore è sul pass-transistor, in realtà egli viene realizzato da un “matrice” di bjt pnp, per offrire una maggiore superficie alla dissipazione termica : infatti in un regolatore metà del layout è occupato dal pass-device. Il dispositivo da esaminare presenta queste connessioni: Sono presenti: - un piedino B che corrisponde alla base di ogni transistor; un piedino 2C che corrisponde a due collettori di due bjt di una stessa colonna collegati assieme; 15 piedini sense collector ognuno del quale individua complessivamente i collettori dei transistors di una stessa colonna; 195 - un piedino C che corrisponde al collettore vero e proprio del pass-transistors complessivo; un piedino E che corrisponde all’emettitore comune di tutti i transistors e quindi a quello del pass-transistor. Nel corso dei test verranno fatte misure con vari tipi di configurazioni del chip, per esempio connettendo a diodo determinati transistors, accompagnate da opportuni accorgimenti, ma quello che dovremo sviluppare è una libreria che consenta di automatizzare gli aspetti più salienti e comuni in ogni misura. Durante i test ad ogni sense collector è collegata una resistenza di 10Ω, quindi nota la tensione si può risalire alla corrispondente corrente di sense collector. Un bjt si può caratterizzare, per una data temperatura, quando è nota β=Ic/Ib e il suo comportamento al variare della sua Vce. Abbiamo pensato quindi di realizzare una libreria in grado di variare la corrente di base Ib, e ad ogni step di Ib eseguire uno sweep diVc e quindi della corrente di collettore; rimane poi all’operatore il compito di estrarre dai dati raccolti le informazioni che gli sono necessarie (a questo riguardo verranno create apposite funzioni VBA). Per realizzare i due sweep utilizzeremo uno stile simile a quello riportato nel capitolo relativo alla misura di dropout, ossia nel block diagram che piloterà i due strumenti non avrà un aspetto “gerarchico”, bensì utilizzeremo in un unico subVI tutti i moduli necessari, ponendo opportunamente dentro ai cicli while solo quelli che devono essere aggiornati. Essendo ad ogni sense collettore collegata una resistenza di 10Ω, possiamo risalire al corrispondente valore di corrente eseguendo una misura di tensione su questi pin. Per misurare le 15 tensioni utilizzeremo il multimetro Keithley2700. Il Ke2700 dispone di una card sul pannello posteriore che consente di leggere sequenzialmente la tensione presente su 20 canali individuati dall’indirizzo 101…120, mentre il 121 ed il 122 sono due canali appositi per una lettura di corrente. Creeremo allora un block diagram in cui andremo a leggere sequenzialmente le 15 tensioni di sense collector e lo completeremo inserendolo opportunamente nel VI di pag in cui controllo i due source-meter ke2400, salvando ad ogni step tutte le grandezze rilevate. In più utilizzeremo altri due multimetro per leggere la tensione e la corrente sul piedino E, che corrisponde all’emettitore del pass-transistors complessivo. 196 11.3 Test_chip_Sweep_Ib_Vb_Sweep_Vc.vi Come è stato precedentemente introdotto, questa libreria risulta molto articolata. Il suo principio di funzionamento può essere meglio capito col seguente flow-chart: Si può riconoscere un ciclo while che controlla il source-meter che fornisce la corrente di base nel piedino B; all’interno vi è un altro ciclo while in cui definisco la tensione Vc per impostare uno sweep di corrente di collettore; a sua volta, all’interno di questo ciclo misurerò la tensione presente sui 15 sense collector tramite il multimetro Ke2700 e poi la tensione e la corrente sul piedino E di emettitore. Come anticipato nel paragrafo precedente, creeremo il block diagram per i nostri scopi modificando opportunamente quello riportato a pag. , in particolare inserendo i subVI che permettono il controllo del multimetro Ke2700 per la lettura dei 15 canali. Il diagramma che si ottiene è riportato a pagina e risulta piuttosto complicato a causa della mole di misure da fare e dal numero di misure. Innanzitutto si possono notare i due cicli while e la sequence come già anticipato. I due cicli vngono controllati dai vi dei due source-meter Ke2400 con la stessa struttura riportata a pag : nel ciclo più esterno imposto in un source-meter la corrente di base Ib, mentre nell’altro più interno imposto la tensione di collettore Vc. 197 All’interno di questo ciclo vi è una sequence con sette frame con cui nell’ordine eseguo queste operazioni: - frame0: abilito la corrente di baseIb; frame1: abilito la tensione di collettore Vc; frame2: misuro la tensione di base Vb; frame3: misuro la corrente di collettore Ic frame4: misuro le tensioni sui 15 sense collector; frame5: misuro la corrente di emettitore Ie; frame6: misuro la tensione di emettitore Ve: I frame 0, 1, 2, 3 utilizzano per il controllo dei source-meter gli stessi subVI visti in alcuni capitoli precedenti che quindi non riporto nel particolare, ossia: - Ke24xx Configure Source Volt/Cur Level.vi - Ke24xx Enable/Disable Source Output.vi - Ke24xx Enable/Disable Concurrent Meas..vi - Ke24xx Read.vi Inoltre nelle due strutture di controllo dei source meter verrà sempre utilizzata l’opzione 4wires. Nel frame4 per eseguire la lettura sequenziale dei 15 canali utilizzo opportuni VI di controllo del Ke2700 : i VI utilizzati per questo multimetro, diversi da quelli visti per i multimetri Ke2000, verranno visti nei successivi sottoparagrafi. Nei frame 4 e 5 utilizzo invece i subVI dei multimetro Ke2000 nello stesso modo visto nel capitolo 5. Riassumendo, andremo a testare il nostro dispositivo seguendo questo schema di collegamento: 198 199 Complessivamente si ottiene il seguente front panel: In questa figura si possono notare tutti i controllori e gli indicatori visti più volte per il controllo degli strumenti. Inoltre analogamente ad ogni libreria vista nei vari capitoli precedenti, è presente un pulsante di stop per interrompere l’esecuzione del programma,che può essere pure interrotta in caso di eventuali errori senza perdere i dati fin lì acquisiti. 200 11.3.1 KE2700 Set Channel List.vi Connector Pane Questo subVI specifica attraverso la variabile di ingresso channel list i canali della card posta sul pannello posteriore del multimetro Ke2700. 11.3.2 KE2700 Configure Multi-Point.vi Connector Pane Questo subVI configura i parametri per la lettura “miltichannel”. Le variabili che utilizza sono le seguenti: Controls and Indicators instrument handle questo controllo accetta in ingresso l’ Instrument Handle rirornato dal modulo Initialize .vi trigger count Definisce il numero di eventi di trigger da aspettare. sample count Definisce il numero di misure da effettuare ad ogni evento di trigger sample trigger Definisce il tipo di trigger da usare, nel nostro caso immediato sample interval (sec) Definisce il delay fra una lettura ed una successiva error in (no error) controllore tipo error cluster instrument handle out questo indicatore verrà usato in ingresso in ogni successiva funzione error out indicatore tipo cluster che segnale eventuali errori in uscita allo strumento. 11.3.3 KE2700 Read Multi-Point.vi Connector Pane Questo subVI esegue una lettura sequenziale dei canali. 201 La variabile actual number of points corrisponde al numero di grandeze da leggere, nel nostro caso 15, mentre maximum time (ms) rappresenta il tempo massimo lasciato al multimetro per compiere la lettura, nel nostro caso sarà il valore di default 5000ms. 11.4 Elaborazione dei dati del “testchip” Come è già stato spiegato nel primo paragrafo, essendo questa non una singola misura, ma un insieme di misure specifiche, si sono voluti automatizzare solo gli aspetti più comuni e più ripetitivi. Con la precedente libreria vengono acquisite tutte le tensioni e le correnti accessibili esternamente al chip; è opportuno allora elaborare i dati con due tipi di grafici: nel primo visualizzerò in uno stesso grafico l’andamento delle 15 tensioni di sense collector in funzione della tensione Vce per una data corrente di base Ib e temperatura, in un altro in cui visualizzo in funzione di Vce e di Ib la tensione su un singolo canale di sense. Il primo script VBA che è stato scritto è il seguente: Sub Vcsx() Charts.Add ActiveChart.ChartType = xlLineMarkers ‘Seleziono il tipo di grafico da plottare ActiveChart.SetSourceData Source:=Sheets("Vcsx -40°C 2C-C 0,25CGND").Range("D60"), PlotBy _ ‘Definisco su quale foglio reperire i dati :=xlRows ‘Visualizzo i dati per righe ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).Values = "='Vcsx -40°C'!R3C5:R3C19" ActiveChart.SeriesCollection(1).Name = "=""Ib=-1mA Vce=-0,30V""" ActiveChart.SeriesCollection(2).Values = "='Vcsx -40°C'!R4C5:R4C19" ActiveChart.SeriesCollection(2).Name = "=""Ib=-1mA Vce=-0,25V""" ActiveChart.SeriesCollection(3).Values = "='Vcsx -40°C'!R5C5:R5C19" ActiveChart.SeriesCollection(3).Name = "=""Ib=-1mA Vce=-0,20V""" ActiveChart.SeriesCollection(4).Values = "='Vcsx -40°C'!R6C5:R6C19" ActiveChart.SeriesCollection(4).Name = "=""Ib=-1mA Vce=-0,15V""" ActiveChart.SeriesCollection(5).Values = "='Vcsx -40°C'!R7C5:R7C19" ActiveChart.SeriesCollection(5).Name = "=""Ib=-1mA Vce=-0,10V""" ActiveChart.Location Where:=xlLocationAsObject, Name:="Vcsx -40°C 2C-C 0,25CGND" With ActiveChart .HasTitle = True .ChartTitle.Characters.Text = "Vcsx -40°C 2C-C 0,25C-GND" ‘Titolo del grafico .Axes(xlCategory, xlPrimary).HasTitle = False .Axes(xlValue, xlPrimary).HasTitle = False End With End Sub 202 Vcsx -40°C 2C-C 0,25C-GND 0,003 0,0025 0,002 Ib=-4mA Vce=-0,30V Ib=-4mA Vce=-0,25V 0,0015 Ib=-4mA Vce=-0,20V Ib=-4mA Vce=-0,15V Ib=-4mA Vce=-0,10V 0,001 0,0005 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Il risultato di un’esecuzione di questo script è riportato a fianco. L’operatore per riutilizzare questo script dovrà semplicemente cambiare le label e i dati sorgenti quando necessario: esempio R7C5:R7C19 seleziona la colonna che individua le celle E7…E19 (R=riga, C=Colonna), per riutilizzare questo script basterà cambiare queti valori. L’altro script utilizzato è il seguente: Sub SingleChannel() Charts.Add ActiveChart.ChartType = xlXYScatterSmooth ‘Seleziono il tipo di grafico da plottare ActiveChart.SetSourceData Source:=Sheets("Vcs7 -40°C 0,25C-GND").Range("J3") _ , PlotBy:=xlColumns ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).XValues = "='Vcs7 -40°C 0,25C-GND'!R3C7:R22C7" ‘Valori inX ActiveChart.SeriesCollection(1).Values = "='Vcs7 -40°C 0,25C-GND'!R3C8:R22C8" ‘Valori in Y ActiveChart.SeriesCollection(1).Name = "=""Ib = -1 mA""" ActiveChart.SeriesCollection(2).XValues = "='Vcs7 -40°C 0,25C-GND'!R25C7:R44C7" ActiveChart.SeriesCollection(2).Values = "='Vcs7 -40°C 0,25C-GND'!R25C8:R44C8" ActiveChart.SeriesCollection(2).Name = "=""Ib = -2 mA""" ActiveChart.SeriesCollection(3).XValues = "='Vcs7 -40°C 0,25C-GND'!R47C7:R66C7" ActiveChart.SeriesCollection(3).Values = "='Vcs7 -40°C 0,25C-GND'!R47C8:R66C8" ActiveChart.SeriesCollection(3).Name = "=""Ib = -3 mA""" ActiveChart.SeriesCollection(4).XValues = "='Vcs7 -40°C 0,25C-GND'!R69C7:R88C7" ActiveChart.SeriesCollection(4).Values = "='Vcs7 -40°C 0,25C-GND'!R69C8:R88C8" ActiveChart.SeriesCollection(4).Name = "=""Ib = -4 mA""" ActiveChart.SeriesCollection(5).XValues = _ "='Vcs7 -40°C 0,25C-GND'!R91C7:R109C7" ActiveChart.SeriesCollection(5).Values = "='Vcs7 -40°C 0,25C-GND'!R91C8:R109C8" ActiveChart.SeriesCollection(5).Name = "=""Ib = -5 mA""" ActiveChart.Location Where:=xlLocationAsObject, Name:= _ "Vcs7 -40°C 0,25C-GND" With ActiveChart .HasTitle = True .ChartTitle.Characters.Text = "Vcs7 -40°C 0.25-GND" .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Vce" .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "V1" End With 203 End Sub Il risultato di un uso di questo script è il seguente: Vcs7 -40°C 0.25-GND 0,003 0,0025 0,002 V1 0,0015 0,001 0,0005 0 -1,5 -1 Ib = -1 mA Ib = -2 mA Ib = -3 mA Come per l’altro tipo di grafico, l’operatore per riutilizzare questo script dovrà semplicemente cambiare le labels e i dati sorgenti quando necessario. Ib = -4 mA Ib = -5 mA -0,5 -0,0005 0 Vce 11.5 SOMMARIO In questo ultimo capitolo è stata realizzata una libreria Labview in grado di automatizzare gli aspetti più comuni e ripetitivi di un particolare dispositivo, un “bjt multicollettore”. È stata vista la costruzione del block diagram facendo riferimento a quelle già sviluppate nei precedenti capitoli, salvo specificare come è stato realizzato il controllo di un nuovo strumento, il Keithley2700. Sono stati creati due script che consentissero all’operatore l’elaborazione dei dati stessi, in particolare con la creazione in automatico di due tipi di grafici comuni nelle varie misure. 204 CONCLUSIONI In questa tesi si è studiata e sviluppata una metodologia ed un programma che consente di effettuare in modo del tutto automatico una serie di test e misure sui regolatori di tensione. In un primo tempo si sono visti e confrontati le due categorie di regolatori di tensione, gli switching converter ed i linear regulator; sono state poi viste le caratteristiche principali del software che ho utilizzato per l’implementazione automatica dei test, ossia Labview: questo linguaggio è diventato negli ultimi anni il più utilizzato e versatile per il controllo remoto degli strumenti di misura. Inoltre è stata sfruttata la possibilità di iterazione di questo linguaggio con altri software: in particolare, sono stati sviluppati dei programmi in Visual Basic per Microsoft Excel che, eseguiti automaticamente al termine dell’acquisizione delle misure, completino l’automazione dei test, rendendo così automatica la realizzazione di report. Quindi è stato presentato per gradi lo sviluppo di ogni libreria, partendo dalla creazione di subVI che implementano particolari funzioni sugli strumenti di misura, fino alla creazione degli script Visual Basic per Microsoft Excel che completano l’automazione dei test stessi. Sono state sviluppate librerie in grado di testare le caratteristiche principali dei regolatori di tensione: abbiamo creato librerie che ne verificano il comportamento in seguito a variazioni del carico o dell’alimentazione (Load, Line Regulation e Dropout) o nella simulazione di imprevisti nel modo di funzionamento (Termal shutdown e Current limiting); è stata poi sviluppata una libreria per i test in automatico della tensione di bandgap il cui valore viene preso come riferimento in tutta la circuiteria interna al dispositivo, ed una libreria che analizza come un eventuale disturbo in ingresso al regolatore si ripercuote in uscita (Power Supply Rejection Ratio). Infine sono state sviluppate due librerie utili per la progettazione e la simulazione di questi dispositivi: una libreria è in grado di misurare, al variare della frequenza e temperatura, la “resistenza equivalente serie” di un condensatore (ESR), valore importane ai fini della stabilità, mentre l’ultima libreria esegue il test del componete comune in tutti i regolatori lineari, il pass-transistor. Ricordiamo che la maggior parte dei test presentati richiedono alcune ore di esecuzione in quanto comprendono tutta una serie di misure che devono essere ripetute all’interno di un ciclo termico (-40 +150 °C), ma grazie al grado di automazione che queste librerie offrono, all’operatore non resta che collegare il circuito al banco di prova ed impostare opportunamente la librerie: al termine dell’esecuzione del programma Labview, i dati acquisiti saranno già elaborati e salvati con il software Excel. In più, se durante l’esecuzione del programma si verificassero errori nella comunicazione o sugli strumenti di misura, all’interno delle librerie sono previsti dei controlli che interrompono il test, rendendo comunque disponibili i dati fin lì raccolti. In conclusione, riteniamo che l’insieme di quanto visto e sviluppato all’interno di questa tesi rappresenti un valido strumento per condurre automaticamente test pure su altri e futuri dispositivi, sfruttando la versatilità che un linguaggio come Labview ci offre. 205 206 Interfaccia GPIB Appendice A: interfaccia GPIB A.1 Introduzione Sviluppata come interfaccia per strumentazione da una delle maggiori Case costruttrici di apparecchiature di misura che la denominò HP-IB (Hewlett-Packard Interface Bus), è stata successivamente approvata dall’ IEEE (Institute of Electrical and Electronic Engineers) con la denominazione IEEE-488. Questo standard è oggi applicato ad un grande numero di sistemi digitali diversi, quali memorie di massa, stampanti, plotter, elaboratori oltre a strumenti di misura, tanto che esso è sovente indicato con l'acronimo GPIB (General Purpose Interface Bus). A.2 Struttura L'interfaccia IEEE-488 prevede 16 linee che costituiscono il bus: ad esso possono essere collegate N apparecchiature (device) anche diverse purché compatibili con questo standard. Lo scambio dei dati, codificati di solito in codice ASCII e trasferiti in formato bit parallelo byte seriale, avviene secondo un protocollo rigidamente definito (handshake) che stabilisce la sequenzialità e le modalità del colloquio fra i vari dispositivi collegati. Nella seguente figura è illustrato un esempio di sistema comprendente più apparecchiature predisposte con interfaccia IEEE-488. 207 Interfaccia GPIB Il sistema di comunicazione definisce gerarchicamente le apparecchiature collegate in base alle funzioni svolte in quell’istante, che sono essenzialmente le seguenti: • Talker ,riferita ad un dispositivo predisposto per inviare messaggi sul bus; • Listener, riferita ad un'apparecchiatura predisposta per ricevere messaggi; • Controller, riferita all'apparecchiatura designata per inizializzare o variare la configurazione del sistema. Ad esempio, un multimetro si comporta da Listener nella fase di setup, mentre da Talker quando ritorna i dati, così spesso è individuato come Talker/ Listener. Nella fase di inizializzazione tutto il sistema è gestito dal controller, esso indica alle varie apparecchiature la funzione che debbono svolgere fissando così le modalità di accesso al bus. In fase di trasmissione dati, il colloquio avviene solo fra il talker attivo e i listener mentre il controller può intervenire solo per modificare le funzioni svolte da ciascuna apparecchiatura. 208 Interfaccia GPIB Il bus di interfaccia (vedi figura) comprende il bus dati di tipo bidirezionale, a 8 linee individuate dalle sigle D10l, D102,..., D108; su di esso viaggiano sia i byte che costituiscono i dati, che interessano il dispositivo talker e i dispositivi listener attivi, sia i messaggi di comando, che possono riguardare l'intero sistema o solo alcuni suoi elementi. Altre linee sono destinate all'invio dei segnali di handshake che controllano il trasferimento dei dati; la linea DAV (Data Valid) segnala ad esempio la validità di un dato posto sul bus e la linea NRFD (Not Ready For Data) indica, quando è attiva, la non disponibilità di uno o più dispositivi listener ad accettare un dato. Sono infine previste cinque linee di controllo utilizzate per funzioni di tipo generale quali il reset del sistema prima di procedere ad una riconfigurazione di esso (IFC: Interface Clear) o la richiesta di servizio (SRQ: Service Request) da parte di un'apparecchiatura che viene a trovarsi in uno stato anomalo o ha dati da trasferire. Un'apparecchiatura non deve necessariamente essere collegata a tutte le linee: sono indispensabili solo quelle dei dati e quelle di handshake, mentre per le linee di controllo la scelta spetta al progettista che decide in base alla struttura del sistema, alle esigenze previste e alle potenzialità di ciascuna apparecchiatura. Per effettuare l'inizializzazione e la programmazione delle apparecchiature collegate con l’interfaccia IEEE488 o per inviare comandi ad esse è prevista una serie di messaggi codice. Essi vengono inviati sul bus dati e contemporaneamente viene attivata la linea controllo ATN (Attention); con ciò il messaggio è correttamente interpretato come un comando. Ad esempio, il codice 00111111 (3F) presente sul bus, quando la linea ATN è bassa disattiva tutti i listener definiti. Il codice 00XXXXX viene invece utilizzato per inizializzare un dispositivo, identificato dall'indirizzo XXXXX, alla funzione di listener, poiché i bit indirizzo sono cinque, si possono indirizzare 31 apparecchiature (l'indirizzo 11111 è riservai per eventuali espansioni). Per quanto riguarda le specifiche elettriche relative allo standard IEEE-488 si può osservare che la corrispondenza fra stati logici e livelli elettrici è definita in logica negativa e che i livelli di tensione e corrente sono quelli TTL. Pertanto allo stato logico 0 corrisponde una tensione compresa fra 2 e 5 V mentre lo stato logico 1 è rappresentato da una tensione inferiore a 0,8 V. I line driver utilizzati sono generalmente di tipo tri state; fanno eccezion alcune linee che per la loro specifica funzionalità devono essere connesse in OR-cablato e presentano pertanto l'uscita a 209 Interfaccia GPIB collettore aperto. I line receiver infine sono di solito realizzai con ingresso a trigger di Schmitt al fine di ottenere una maggiore immunità ai disturbi. La velocità di trasmissione massima consentita (data rate) dipende, oltre che dai line driver utilizzati, anche dalla lunghezza del cavo di collegamento e dalle distanze relative delle varie apparecchiature collegate. Il massimo data rate ammesso di 1 Mbyte/s richiede ad esempio che il cavo sia di lunghezza inferiore a 15 metri con un carico ogni metro e che tutte le apparecchiature collegate siano accese. I cavi di collegamento sono tipo Amphenol Champ oppure Cinch Series 57 Micro Ribbon. A.3 Polling C’è una linea, SRQ (service request) che se attivata deve interrompere tutte le attività in corso: ad esempio questo succede quando manca la carta in una stampante o quando uno strumento presenta un errore (overload, overrange…). Perciò quando la linea SRQ è bassa, il controller deve essere in grado di identificare la causa dell’interrupt e questo processo è chiamato polling. Il controller può realizzare il polling in due diferenti modi: parallel polling e serial polling. Parallel polling può essere implementato al massimo con otto strumenti poiché ogni strumento ritorna un status bit in una delle otto linee dati. Il controller inizializza un parallel polling ponendo a livello basso le linee ATN e EOI, e gli strumenti rispondono col il bit-status permettendo così l’identificazione. Il serial polling è un più flessibile rispetto al parallel polling ma ma richiede più tempo per essere completato. In questo sistema il controller invia ad ogni dispositivo un comando di serial poll ed ogni strumento risponde con otto bit di informazione di stato; quando il controller ha comunicato con tutti gli strumenti, ripristina il bus e gli strumenti stessi in normal mode. Confrontando i due metodi, si può notare come il serial polling sia più flessibile del Parallel polling poiché per ogni strumento si ricevono otto bit di informazione di stato, ma, come ovvio, a scapito della velocità poiché devono essere passati tutti gli strumenti per scoprire chi ha attivato la linea di SRQ. A.4 Sommario L’ interfaccia GPIB è ormai disponibile da oltre trent’anni ma a dispetto dell’età, è ancora un valido strumento nelle applicazioni industriali. Tale bus è stato subito impiegato nella connessione tra computer e strumenti anche non HP, per la sua elevata velocità massima nel trasferimento dei dati (fino a 1Mbyte/sec), lo standard successivamente è stato ridefinito con il nome “IEEE 488.1” (per brevità, “488.1”). Esso stabilisce le caratteristiche fisiche del bus di collegamento e descrive una serie di funzioni di interfaccia che i costruttori devono implementare sui dispositivi perché questi possano utilizzare il bus nella trasmissione dei dati. La documentazione corrispondente elenca quindi tutti i comandi utilizzabili 210 Interfaccia GPIB sul bus per il controllo del sistema di interfaccia e la gestione della trasmissione dei dati. Nello standard 488.1 le funzioni di interfaccia sono chiaramente distinte dalle funzioni svolte dai dispositivi; i costruttori sono liberi di implementare queste ultime a loro discrezione utilizzando, per il comando dei dispositivi, opportune istruzioni inviate sul bus, le quali possono variare a seconda del dispositivo specifico. Una successiva revisione dello standard ha avuto come risultato una nuova versione dello stesso, denominata IEEE 488.2. In tale nuovo insieme di norme, sono definiti anche i protocolli per la comunicazione tra i dispositivi e l’host, il formato della trasmissione dei dati sul bus ed infine sono fornite utili linee guida alla programmazione dei dispositivi. A tale proposito si ricorda la presenza delle indicazioni fornite dal consorzio SCPI (Standard Commands for Programmable Instruments), le quali sono perfettamente compatibili con le norme dello standard 488.2. Le indicazioni fornite da SCPI riguardano la sintassi e il significato associato ai comandi scambiati tra host strumenti. Lo standard GPIB resta quindi il più diffuso per la comunicazione pcstrumenti e data la sua versatilità e convenienza resterà ancora in uso per molti anni. 211 Appendice B: Interfaccia seriale RS-232 B.1 INTRODUZIONE La porta seriale è il più diffuso mezzo di comunicazione fra un computer ed una periferica, ad esempio uno strumento oppure un altro computer. Dato che la porta seriale consente di trasmettere e ricevere dati un bit alla volta, vi è solo una linea a disposizione per la trasmissione dati,ed è largamente usata quando la velocità non è un parametro importante. L’uso della porta seriale è così diffuso poiché ogni computer ne ha almeno una e quindi non è necessario installare ulteriore hardware per comunicare con alcune periferiche. I parametri in una porta seriale sono: q q q q il Baud rate della trasmissione, i bit dato (trasmessi dal LSB al MSB), il bit di parità, il bit di start, stop (1 o 2 bit). Verranno presentate le caratteristiche principali della porta seriali RS-232 che è stata utilizzata per interfacciare il pc al microcontrollore della cellla termica. B.2 Caratteristiche dell’interfaccia seriale RS-232 R-S232 è lo standard per la trasmissione seriale definito dall’ EIA nel 1969 che caratterizza l’interfaccia per l’interconnessione tra un dispositivo digitale (computer o terminale), identificato dalla sigla DTE (Data Terminal Equipment), e il dispositivo per l’accesso alla rete telefonica (modem), associato alla sigla DCE (Data Communication Equipment). Questo standard supporta la trasmissione asincrona su linee dedicate, affittate, commutate o private, in configurazione punto punto o multipunto, su due o quattro fili, con modalità simplex, half duplex, full fuplex tra apparecchiature che hanno un collegamento comune a massa. La velocità massima consentita è 115000 bps (Bit Per Secondo). Il cavo di collegamento DTE-DCE non può superare i 15 metri. L’aumento di lunghezza è consentito a patto che la capacità complessiva per circuito rimanga al di sotto dei 2500 pF, pena la riduzione della velocità di trasmissione. L’interfaccia fisica è costituita da un connettore del tipo DB25 generalmente maschio. Per particolari applicazioni su PC, collegamenti di mouse o di microterminali, sono stati disposti connettori di dimensioni ridotte, a 9 poli (DB9). Secondo lo standard, il connettore femmina deve essere disposto sulla porta del DCE mentre il connettore maschio deve essere posto sul DTE. B.2.1 Pinout DB25 • • • • • • • • • • • MASSA, pin 1, massa di protezione TXD, pin 2, (Trasmission Data), trasmissione dati dal DTE al DCE RXD, pin3, (Recieve Data), ricezione dati dal DCE al DTE RTS, pin 4, (Request to Send), disponibilità a trasmettere dal DTE al DCE CTS, pin 5, (Clear to Send), consenso alla trasmissione dal DCE al DTE DSR, pin 6, (Data Set Ready), indica che il DCE ha terminato la fase di test ed è pronto a ricevere I dati dal DCE al DTE GND, pin 7, schermatura cavo CD, pin 8, (Carrier Detect), il DCE riceve correttamente la portante dalla linea Pin 9…15, non collegati DTR, pin 20, (Data Terminal Ready), indica che il DTE è pronto sia per ricevere che trasmettere dati dal DTE al DCE RI, pin 22, (Ring Indicator), indica la presenza sulla linea del segnale di chiamata B.2.2 Pinout DB9 • • • • • CD, pin 1, (Carrier Detect), il DCE riceve correttamente la portante dalla linea RXD, pin2, (Recieve Data), ricezione dati dal DCE al DTE TXD, pin 3, (Trasmission Data), trasmissione dati dal DTE al DCE DTR, pin 4, (Data Terminal Ready), indica che il DTE è pronto sia per ricevere che trasmettere dati dal DTE al DCE GND, pin 5, schermatura cavo 213 Interfaccia RS232 • • • • DSR, pin 6, (Data Set Ready), indica che il DCE ha terminato la fase di test ed è pronto a ricevere I dati dal DCE al DTE RTS, pin 7, (Request to Send), disponibilità a trasmettere dal DTE al DCE CTS, pin 8, (Clear to Send), consenso alla trasmissione dal DCE al DTE RI, pin 9, (Ring Indicator), indica la presenza sulla linea del segnale di chiamata Le caratteristiche elettriche dell’interfaccia RS232 sono riferiti a massa comune, e fanno riferimento al punto di interfaccia. Le grandezze significative sono riportate di seguito: • • • • • • • VO: tensione del driver a vuoto; RO: resistenza del driver a vuoto; CO: capacità equivalente del driver misurata al punto di interfaccia; VI: tensione al punto di interfaccia; CL: capacità equivalente del ricevitore misurata al punto di interfaccia; RL: resistenza di carico del ricevitore; EL: tensione del ricevitore a circuito aperto. Un generico segnale può trovarsi in due condizioni, “mark” e “space”. Le tensioni corrispondenti sono comprese tra –3V e –15V equivalenti a 0V di GND in un livello TTL per la prima; tra +3V e +15V equivalenti ai 5V di Vcc in un livello TTL per la seconda. L’intervallo compreso tra –3V e +3V rappresenta una zona di incertezza. Per le linee di dati la condizione mark va intesa come “1” logico, quella di “space” come “0” logico. Per gli altri segnali di temporizzazione e controllo, la condizione “mark” viene definita come non attiva (OFF), quella space come attiva (ON). Il driver è in grado di sopportare sia un circuito aperto che un cortocircuito con qualsiasi altro segnale, compresa la massa. Il DCE deve sopportare tensioni in entrata con un massimo di 25V. La resistenza interna del DCE può variare tra 3KΩ e 7KΩper una tensione al punto di interfaccia tra 3V e 25 V. La capacità equivalente del ricevitore (DTE) CL non deve superare 2500pF. L’impedenza complessiva del ricevitore non deve avere componenti induttivi.La tensione a vuoto di polarizzazione del ricevitore, EL, deve essere compresa tra –2V e +2V.La resistenza d’uscita RO del driver non deve superare i 300Ω mentre la sua tensione deve risultare minore o uguale a 25V. Lo standard RS232 supporta due tipi di trasmissioni, sincrona e asincrona. Quest’ ultima è la più usata perché più economica e supportata dalla maggior parte dei PC.A differenza della trasmissione sincrona, la trasmissione asincrona non necessita di particolari accorgimenti per sincronizzare i due dispositivi collegati, per questo è anche meno costosa è però meno veloce infatti il flusso di dati non è continuo a causa della presenza dei bit di controllo. Analizziamo cosa avviene quando si deve trasferire un byte da un DTE ad un DCE. In assenza di trasmissione la tensione sulla linea è di –12V che corrisponde ad un livello logico “1”.Per avvisare il DCE che sta per avvenire la trasmissione, il DTE porta la tensione della linea a +12V (livello logico “0”) per un tempo t pari all’inverso della velocità di trasmissione (1/bps). A questo punto il DCE è pronto a 214 ricevere gli 8 bit del byte che vogliamo trasmettere, partendo da quello meno significativo al più significativo. Alla fine della trasmissione, dal DTE viene inviato il bit di stop. Quest’ultimo ha un livello di tensione di -12V ed una durata di circa 1,5 – 2 volte il bit di start questa differenza è necessaria per far in modo che il DCE o ricevitore non confonda questo bit con quelli dei dati precedentemente trasmessi. Nel grafico il bit di START ha una durata di 1/9600 = 0.104 ms questo perché viene presa una velocità di trasmissione di 9600bps. Le impostazioni da effettuare via software sono: Baud rate, Numero di BIT, Parità, Bit di stop. L'impostazione Baud rate serve per indicare la velocità di trasmissione dei bits. La velocità minima consentita è di 300 bps fino ad un massimo di 115.000bps.L'impostazione Numero di BIT consente di scegliere se inviare tutti gli 8 bit del carattere da trasmettere, o escludere l'ultimo inviando quindi solo 7 bit. Se si adopera quest'ultima modalità, non potranno essere inviati caratteri con valore superiore a 127 (7Fh). Se si tenta di inviare caratteri con valore superiore a 127 usando la modalità a 7 bit, il bit più significativo non verrà inviato. Con l'opzione Parità, è possibile aggiungere ad ogni invio di carattere un bit che indica se il numero di bit a 1 del carattere è pari o dispari. Questa soluzione consente di individuare eventuali errori di trasmissione dovuti a disturbi di linea. L'impostazione Bit di stop serve per indicare il numero di bit di Stop da inserire in coda ad ogni invio di carattere. Questi servono per marcare la fine del treno di bit del carattere. Le possibili opzioni di scelta sono: 1 - 2 - 1,5. 215 Appendice C : Camera Termostatica “Angelantoni CH60T” C.1 Caratteristiche tecniche Volume utile Campo di temperatura Precisione (± °C) Alimentazione Assorb. elettrico nominale Potenza nominale Potenza impegnata Gas refrigerante Dimensioni esterne Dimensioni interne utili Peso Grado di rumorosità massima Massima velocità di variazione di temperatura da –40 a +180 °C Massima velocità di variazione di temperatura da +180 a –40 °C 60 litri -40 / +180 °C 0,3 °C 230V 50 Hz 6,3 A 1,4 Kw 2,3 Kw R404A 550 X 875 X 1150 mm 350 X 340 X 500 mm 180 Kg 60 dB 2,5 °C/min 1,0 °C/min C.2 Struttura dei registri del microcontrollore MEAS: ARRAY OF 32 SINGLES CTRL: ARRAY OF 16 INTEGER 216 CNTC: ARRAY OF 48 INTEGER WRCSET: ARRAY OF 6 SINGLES WRCSLP: ARRAY OF 6 SINGLES WRCTRL: ARRAY OF 16 INTEGER WRCNTC: ARRAY OF 48 INTEGER 217 ALARM: ARRAY OF 96 INTEGER PRGM: ARRAY OF 120 INTEGER 218 Appendice D: regolatore di tensione TLE 4270 219 220 221 222 223 224 225 226 227 228 229 BIBLIOGRAFI A [1] P.R. Gray and R.G. Meyer, Analysis and design of Analog Integrated Circuits .......... 8 [2] Bob Widlar, New Developments in IC Voltage Regulator, IEEE Journal of Solid State Circuits, Vol. SC-6, Ferbruary, 1971 ................................................................. 135 [3] Pal Brokaw, A Simple Three-Terminal IC Voltage Regulators, IEEE Journal of Solid State Circuits, Vol. SC-9 December, 1974 ........................................................ 137 [4] J.Millman and A. Grabel, Microelectronics ................................................................ 26 [5] A.Grebene, Bipolar and Mos Analog Integrated Circuit Design .............................. 147 231