|
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:
- 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
- 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)
- 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.
|