+ home + il gruppo + attività + corsi + links + tecnico + foto & filmati + contatti    
 

 
SPELEOLOGIA ED ELETTRONICA
HIGH EFFICIENCY SPELEOLED DRIVER

(C) 2006 Flavio Cappelli

Abstract

This document show how to transform your old PETZL bulb light into a very efficient LED lamp. The LEDs are driven by a buck switching converter, built around a Microchip microcontroller PIC12F675. Schematic and PCB are provided in the KICAD format, a very good open-source electronic design tool. An hardware programmer is required to write the MPASM assembler code into the PIC12F675, but many free PIC programmers are available on the Internet.

Introduzione

Questo articolo riporta alcune informazioni su come convertire un vecchio impianto PETZL speleo, con lampada ad incandescenza, in una lampada a LED molto efficiente. Diversi kit di trasformazione sono reperibili per sostituire la lampada con un set di cinque o più LED, quindi perché darsi pena per realizzare un circuito in proprio? Innanzitutto per studio e per divertimento: se così non fosse, non sarebbero giustificate le molteplici ore spese per capire alcuni aspetti teorici, progettare l'hardware ed il software, testare un prototipo, realizzare il circuito definitivo e infine montare il tutto. In secondo luogo per avere in grotta un circuito efficiente e flessibile per il controllo della luminosità dei LED. Le caratteristiche del dispositivo realizzato sono:

  • 10 LED bianchi da 26000mcd;
  • Quattro valori di luminosità impostabili;
  • Controllo della luminosità con microcontrollore;
  • Alimentazione mediante 4 batterie AAA alcaline o NiMH;
  • Mantenimento della luminosità costante fino a completa scarica delle pile;
  • Autospegnimento con celle scariche per prevenire il danneggiamento delle NiMH;
  • Efficienza energetica superiore al 90% e consumo irrisorio a luce spenta;
  • Quattro diverse modalità di flashing;
  • Hardware di dimensioni ridotte;
  • Software aperto e modificabile.

Il circuito progettato sembre funzionare perfettamente, ma sono in corso una serie di test in grotta, allo scopo di verificarne l'affidabilità nelle proibitive condizioni di umidità e fango a cui solitamente uno speleologo si sottopone.

Descrizione del progetto

La comprensione di questo progetto richiede al lettore un minimo di conoscenze di elettronica. Nella descrizione, sono comunque stati mantenuti al minimo gli aspetti teorici. Chi desidera approfondire, dovrebbe consultare almeno i seguenti argomenti: curve di scarica delle batterie alcaline e NiMH, caratteristiche dei LED ad alta efficienza, teoria dei regolatori di corrente lineari e switching, MOSFET di potenza, riduzione del rumore nei circuiti di potenza a commutazione, programmazione del microcontrollore PIC12F675 della Microchip, multitasking cooperativo mediante macchine a stati finiti.

Il progetto trae spunto dall'Application Note AN874 della Microchip, anche se molti altri documenti sono stati consultati (bibliografia e link di approfondimento sono riportati in fondo all'articolo). Si noti che il circuito realizzato presenta diverse variazioni rispetto al'AN874: lo schema elettrico è stato modificato per rendere la realizzazione pratica del dispositivo maggiormente alla portata dell'hobbista, mentre il PCB è stato totalmente riprogettato. Inoltre il codice assembler, seppure somigliante alla versione Microchip in alcune sue parti se ne differenzia totalmente in altre.

NOTA IMPORTANTE: Il progetto e l'articolo possono essere utilizzati per fini hobbistici e di studio, ma non a scopo di lucro. In ogni caso deve essere mantenuto il nome dell'autore (cioè del sottoscritto). Inoltre, se realizzate questo dispositivo, lo fate a vostro rischio e pericolo: io non mi assumo alcuna responsabilità per eventuali danni causati a persone, animali o cose prima durante e dopo l'eventuale realizzazione del circuito, né offro garanzie che il dispositivo funzioni o funzioni senza difetti.

LED e lampade ad incandescenza

Da qualche anno sono disponibili LED a luce bianca, di potenza via via crescente, che si stanno sempre più affermando come sorgenti di luce al posto delle lampadine ad incandescenza. Mentre in tali lampade la luce viene emessa grazie al riscaldamento del filamento, i LED emettono luce fredda, in conseguenza di un processo di ricombinazione lacune-elettroni nella giunzione a semiconduttore (polarizzata direttamente). La maggior parte dei LED sono più efficienti delle lampade ad incandescenza perché il loro spettro di emissione cade principalmente nella regione del visibile, mentre buona parte dell'energia irradiata dalle lampade si localizza nella gamma dell'infrarosso (calore). Inoltre, diversamente dalle comuni lampadine, il cui filamento è caratterizzato da notevole inerzia termica, i LED possono lampeggiare a frequenze molto alte e hanno un'aspettativa di vita di circa 100.000 ore (ben superiore a quella delle lampade a filamento). Infine, un'altra caratteristica positiva dei LED è che il colore della luce emessa è indipendente dalla quantità di potenza applicata al LED; viceversa lo spettro della luce emessa da una lampada ad incandescenza scivola verso il giallo man mano che la potenza elettrica applicata alla lampada viene ridotta. Si noti che nei LED a luce bianca, la luce emessa dal LED è in realtà blu, ma eccita uno strato di fosfori che emette a sua volta luce bianca (la luce complessiva è comunque spostata verso il blu).

Una caratteristica importante dei LED, è che la relazione tra corrente ed efficienza luminosa non è lineare poiché l'efficienza diminuisce all'aumentare della corrente. Per ottenere più luce è quindi preferibile mettere più LED in parallelo piuttosto che aumentare la corrente in un LED solo (ad esempio è preferibile avere 3 LED alimentati a 10 mA piuttosto che 1 solo LED alimentato a 30 mA). Un buon compromesso è dato da 10 LED alimentati ciascuno con una corrente di circa 15 mA. Nel progetto sono stati infatti utilizzati 10 LED simili, selezionati da una stessa partita di LED con luminosità dichiarata di 26000 mcd (millicandele), reperiti su eBay. Si noti che la selezione è opportuna perché ogni LED risulta essere leggermente differente dagli altri (vi è infatti una certa variazione nelle caratteristiche tensione-corrente) e mettere in parallelo LED molto diversi può provocare il sovraccarico di alcuni e lo scarso funzionamento degli altri. In realtà non occorre selezionare LED perfettamente uguali, perché non c'è nessuna garanzia che a parità di corrente la quantità di luce emessa sia la stessa. Inoltre, piccole differenze nell'intensità luminosa non sono avvertite dall'occhio umano. Se i LED sono dello stesso tipo, un procedimento pratico per la selezione è il seguente: si utilizzano un potenziometro, un voltmetro e un amperometro, si misura la caduta di tensione ai capi dei LED quando sono attraversati da una corrente di 15 mA e si scelgono 10 LED che presentano una variazione max di tensione di ±0.2V rispetto alla media.

Ovviamente occorre un supporto su cui saldare i LED. Nel progetto è stata utilizzata una basetta in rame doppia faccia, disponendo i LED a nido d'ape e svasando alternativamente i buchi su una faccia e sull'altra, in modo che tutti gli anodi fossero saldati su un lato della basetta e tutti i catodi sull'altro. Sono stati poi aggiunti due condensatori (100nF ceramico e 2.2uF al tantalio) per ridurre eventuali disturbi irradiati dal circuito di controllo (vedi paragrafo successivo). La basetta è stata quindi incollata in alcuni punti mediante colla a caldo. La foto a fianco mostra il montaggio dei LED nell'alloggiamento dell'impianto PETZL, prima occupato dalla lampadina (cliccare per ingrandire la foto). Si noti che i LED generano calore e che tale calore deve essere dissipato in modo opportuno, poiché provoca una diminuzione dell'efficienza luminosa. In particolare il gruppo di LED dove essere in aria se di potenza superiore ad 1W. Con 10 LED a 15mA aventi ciascuno una caduta di potenziale di 3.25V la potenza dissipata è pari a circa 1/2W. In ogni caso è meglio non porre i LED a diretto contatto della basetta, ma a circa ½ centimetro, in modo che il rame presente sulla vetronite agisca da dissipatore di calore.

È noto che la tensione generata dalle pile (1.5 V per ogni cella alcalina, 1.2 V per ogni cella NiMH) non può essere applicata direttamente al gruppo di LED; inoltre si è visto, che è desiderabile limitare la corrente a 150mA (10 x 15mA). Normalmente i costruttori di lampade a LED pongono un semplice resistore di limitazione, ma questo provoca un consumo inutile di energia, dissipata per effetto Joule. Inoltre, questa semplice soluzione presenta un altro effetto spiacevole: la diminuzione della luminosità dei LED man mano che le batterie si scaricano (con le celle NiMH la variazione di luminosità è meno evidente, perché la tensione erogata varia meno che in quelle alcaline). Per mantenere la luminosità costante, occorre quindi implementare un circuito di controllo più sofisticato, in grado di mantenere costante la corrente che attraversa il gruppo di LED al variare della tensione complessiva delle celle.

Circuiti per il controllo della corrente

Vi sono fondamentalmente due modi per mantenere costante la corrente in un carico: mediante regolatori lineari e mediante regolatori a commutazione (switching). Nei primi un elemento attivo, tipicamente un transistor di potenza, dissipa più o meno parte dell'energia fornita dall'alimentazione, al variare della tensione di alimentazione. In pratica, si utilizza una resistenza il cui scopo è quello di misurare la corrente che attraversa il gruppo di LED (vedi resistenza R1 nel circuito a lato). La tensione ai capi di questa resistenza, proporzionale alla corrente che scorre nel gruppo, va a pilotare un transistor di regolazione (Q1), che a sua volta determina la regione di funzionamento dell'elemento attivo di potenza (Q2). L'opportuna scelta dei componenti assicura una corrente costante al variare della tensione della batteria, almeno fintanto che questa non scende sotto un certo valore. A dispetto della semplicità di realizzazione, di questo tipo di regolatore vi è l'inconveniente che gran parte dell'energia viene dissipata per effetto Joule sull'elemento di potenza. Ciò non è desiderabile nelle applicazioni a batteria dove è essenziale sfruttare al massimo l'energia disponibile.

Nei regolatori a commutazione, la corrente che attraversa il carico (il gruppo di LED) viene misurata mediante un resistore di precisione di basso valore (vedi R1 nel circuito a lato), ai cui capi viene a trovarsi una piccola tensione proporzionale alla corrente che attraversa il gruppo. Questa tensione è prelevata attraverso un circuito passa basso (R2, C1), il cui scopo è quello di eliminare il rumore di commutazione. Un'altra parte del circuito (non mostrata) genera invece una tensione di riferimento (DRIVE LEVEL), che viene confrontata ad intervalli di tempo prestabiliti con la tensione misurata. Se quest'ultima risulta minore della tensione di riferimento, il carico viene alimentato dal MOSFET Q1, attraverso l'induttore L1 il cui scopo è sia quello di immagazzinare energia in questa fase per poi restituirla nella successiva, sia quello di impedire che la corrente nel carico vari in modo istantaneo. Dunque, la corrente nei LED sale, e con essa anche la tensione sul resistore di misura. Dopo un certo tempo, se la tensione di misura risulta maggiore della tensione di riferimento, l'alimentazione verso il carico viene interrotta da Q1. L'induttore diventa allora la sorgente di alimentazione per il gruppo di LED, grazie all'energia immagazzinata in precedenza: la corrente continua a circolare nei LED, passando attraverso la massa e il diodo D1, e diminuendo man mano che l'induttore si scarica. Quando la tensione misurata scende sotto la tensione di riferimento, il ciclo ricomincia. In genere si hanno decine di migliaia o centinaia di migliaia di cicli al secondo, che determinano un andamento quasi triangolare per la corrente, attorno ad un valore medio (l'ampiezza del ripple è uno dei parametri di progetto che va valutato volta per volta). La realizzazione di un regolatore switching è quindi piuttosto complessa, perché oltre che un circuito più sofisticato, vi è la scelta dei parametri di funzionamento e delle componenti di potenza (il MOSFET Q1, l'induttore L1 il diodo D1) che devono lavorare anche a frequenze molto elevate. Il vantaggio è che con un'opportuna progettazione si può raggiungere un efficienza del 95% (cioè solo il 5% dell'energia va dispersa). Per confronto l'efficienza di un regolatore lineare raramente supera il 45%.

Un regolatore switching può essere realizzato mediante componenti discreti o integrati appositi, oppure utilizzando un microcontrollore e facendo svolgere parte del lavoro al software (la parte di potenza è comunque esterna al micro). Quest'ultima implementazione permette di avere una maggiore flessibilità e funzionalità aggiuntive, ma richiede la valutazione del micro più adatto, che deve poter lavorare in un range esteso di tensioni e deve disporre di opportune periferiche interne (almeno un convertitore A/D e un comparatore). In aggiunta, si è quasi sempre obbligati a programmare in una qualche forma di assembler, linguaggio notoriamente “scomodo”, anche per il fatto che ogni microcontrollore ha le sue particolarità a livello di architettura, che si riflettono sulla programmazione. Nondimeno questa è la via che ho seguito e che ha permesso di ridurre al massimo il numero di componenti utilizzati mantenendo al contempo ottima la flessibilità e l'efficienza del dispositivo finale. Ecco quindi lo schema elettrico del circuito:

Il circuito ricalca lo schema visto (buck topology) ma presenta alcune particolarità. La tensione di riferimento (in precedenza indicata come DRIVE LEVEL) è generata dal microcontrollore U1 (PIC12F675) mediante un'onda PWM (Pulse Width Modulation) di dutycycle variabile, in uscita dal pin 2 e filtrata dal gruppo R3,R4,C5 che fornisce il valore medio dell'onda. La tensione così ottenuta, è confrontata mediante un comparatore analogico interno al micro (pin 6 e 7), con la tensione di misura prelevata ai capi di R6 e filtrata tramite R5,C6. Il MOSFET di commutazione è contenuto nell'integrato U2, assieme al diodo veloce di ricircolo. Il diodo D2 permette invece di dedurre la tensione di batteria, mediante il seguente artificio: è noto che un diodo al silicio polarizzato direttamente, presenta ai suoi capi una tensione costante pari a 0.6 V; però il valore numerico della tensione ai capi di D2, misurato dal convertitore A/D (interno al micro) tramite il pin 3, dipende dal valore della tensione di alimentazione (vedere il datasheet del PIC12F675). Mediante un'equazione è possibile ricostruire il valore di riferimento interno e quindi determinare con buona approssimazione la tensione di batteria. Controllando costantemente la tensione di alimentazione, il micro può variare il dutycycle dell'onda PWM in uscita dal pin 2, in modo che il valore medio sia costante nonostante la diminuzione del valore massimo dell'onda causato dalla diminuzione della tensione di alimentazione. Il valore medio di corrente che circola nel gruppo di LED viene quindi mantenuto costante mediante confronto e commutazioni cicliche del MOSFET secondo quanto descritto sopra. La presenza del diodo D1, serve invece a proteggere il circuito contro le inversioni di polarità e permette di utilizzare indifferentemente batterie alcaline e batterie NiMH (con 4 batterie alcaline in serie si ottengono 6V, mentre il PIC16F675 sopporta un'alimentazione massima di 5.5V). Il software, oltre che controllare la generazione dell'onda PWM e la misura della tensione di batteria, decodifica la durata della pressione sul tasto SW1, determinando le transizioni tra le diverse modalità operative (vedere paragrafo relativo all'uso del circuito). NOTA: per mantenere elevata l'efficienza, è fondamentale che i condensatori elettrolitici siano a basso ESR (in particolare C3, la cui funzione è assorbire i veloci picchi di commutazione).

Lo schema e il PCB sono stati realizzati utilizzando KICAD, un ottimo CAD di progettazione elettronica, opensource e disponibile sia in ambiente Windows, sia su piattaforma Linux. Per quanto riguarda la realizzazione fisica del PCB si è stampato il disegno della basetta su lucido con una LASER, trasferendo poi il circuito su basetta presensibilizzata mediante il processo della fotoincisione. Purtroppo, a livello artigianale non si ha la possibilità di realizzare fori metallizzati: ciò costringe ad effettuare lo sbroglio manuale del circuito e alcune saldature su entrambi i lati, ma come si può notare dalle foto, il risultato è più che soddisfacente. Si notino le estese zone di massa presenti nel PCB: queste sono necessarie per ridurre al minimo i disturbi generati dalle correnti di commutazione. Nella foto di sinistra si notano bene, sia il grosso induttore da 220uH, sia il microcontrollore PIC12F675 montato sullo zoccolo (che però deve essere installato solo dopo la sua programmazione, vedi sezione successiva). La foto di destra mostra invece l'integrato U2, che essendo disponibile solo in package SMD, è stato disposto sul retro. Per la sua saldatura è sufficiente un buon saldatore a punta fine e un minimo di attenzione. Infine, per proteggere il circuito dall'umidità presente in grotta sono stati applicati due strati di spray anticorona, che è isolante e resistente all'acqua.

Montaggio finale, programmazione ed uso

Per completare il montaggio del dispositivo non resta che collegare il pulsante di controllo e il pacco batterie. Per fissare il pulsante si è scelto di utilizzare una barra ad L di alluminio forata e fissata sul fondo del vecchio contenitore. Punti di colla plastica a caldo sono stati utilizzati per isolare e proteggere i vari collegamenti dallo stress meccanico e dall'umidità. Il connettore di alimentazione deve essere smussato e piegato a 45 gradi affinché non ecceda le dimensioni del contenitore, mentre per il pulsante di controllo si è preferita la saldatura. Le foto sono abbastanza esplicative.

Come detto in precedenza, affinchè il circuito funzioni, il microcontrollore PIC12F675 deve essere programmato. I sorgenti del programma sono disponibili nella sezione download. Per ottenere il file hex da trasferire nel micro, si può usare l'ambiente MPLAB Microchip, o i tools GPASM opensource. Ovviamente, per il trasferimento del file hex nel micro, occorre un programmatore hardware (ne esistono tantissimi, alcuni commerciali, altri di facile realizzazione, il cui progetto è liberamente disponibile su Internet). Una volta programmato e alimentato, il microcontrollore si pone in modalità SLEEP (a bassissimo consumo). La pressione del tasto riporta il micro al funzionamento normale, che determina per quanto tempo il tasto viene premuto: si hanno quindi le tre condizioni denominate PRESS (tasto premuto per meno di 1.5 secondi), PUSH (tasto premuto per un tempo compreso tra 1.5 e 3 secondi) e HOLD (tasto mantenuto per più di 3 secondi). Ecco come ciascuna condizione agisce nelle diverse modalità operative ON, OFF e FLASHING:

  1. PRESS
    • Con LED OFF -> ignora (ripone il micro in modalità SLEEP)
    • Con LED ON -> decrementa luce -> luce minima - > incrementa luce -> luce massima ->...
    • Con modalità FLASHING -> seleziona la prossima modalità flashing
  2. PUSH
    • Con LED OFF -> ON (con intensità massima)
    • Con LED ON -> OFF (ripone il micro in modalità SLEEP)
    • Con modalità FLASHING -> OFF (ripone il micro in modalità SLEEP)
  3. HOLD
    • Con LED OFF -> FLASHING (con Intensità massima)
    • Con LED ON -> OFF (ripone il micro in modalità SLEEP)
    • Con modalità FLASHING -> OFF (ripone il micro in modalità SLEEP)

Quindi, per far accendere normalmente il gruppo di LED, dopo aver collegato il pacco batterie al circuito, occorre tenere premuto il pulsante per un tempo compreso tra 1.5 e 3 secondi. Il micro disabilita i LED e si pone automaticamente in modalità SLEEP quando la tensione di batteria scende sotto un certo valore. In tal modo viene prevenuto un eventuale danneggiamento delle celle NiMH.

Download

L'intero pacchetto, disponibile qui, comprende lo schema elettrico e il PCB in formato Kicad, e i sorgenti in assembler per programmare il PIC12F675.

Bibliografia e risorse disponibili in rete

SPELEONICS 22 - Volume VI, number 2 - September 2001

Microchip Web Seminars:
1) Intelligent Power Supply Design
2) Driving Lumileds LEDs with Microchip Microcontrollers
3) Techniques that Reduce System Noise in ADC Circuits

Microchip Application Notes:
1) AN216 - DC/DC Converter Controller Using a PICmicro Microcontroller
2) AN701 - Switch Mode Battery Eliminator Based on a PIC16C72A
4) AN874 - Buck Configuration High-Power LED Driver

Microchip PIC Datasheet:
1) PIC12F629, PIC12F675 (41190c)
2) PIC12F629, PIC12F675 Rev. A Silicon Data Sheet Errata (80125F)

Link:
http://it.wikipedia.org/wiki/LED
http://www.resurgentsoftware.com/perfect_led_light.html
http://www.solorb.com/elect/solarcirc/dc2dc8led/index.html
http://home.cogeco.ca/~rpaisley4/xCurrentReg.html
http://members.cox.net/k4gaa/caving.htm
http://www.montage.co.nz/led/

NOTA: Tutti i marchi citati appartengono ai legittimi proprietari.
Associazione Speleologica Romana '86