Voglio raccontare la storia che mi ha portato a realizzare una lampada segna passo, una lampada notturna di tipo crepuscolare; niente di innovativo, idea per nulla originale. E allora perché raccontarla? Beh, perché è stata realizzata partendo da alcuni componenti che avevo in casa, uno in particolare è ricavato da una lampadina a basso consumo che ha deciso di smettere di funzionare. Inoltre (e forse questa è la vera ragione) è un pretesto per mostrare cosa si può fare con un PIC Micro, un LED ed una fotoresistenza, creando un articolo per la rassegna "Lo hai mai realizzato con un PIC?".
Indice |
L'antefatto
Un paio di anni fa ho sostituito una lampada a basso consumo a causa della cessazione del suo funzionamento. Svitata dal portalampada e inserita al suo posto una nuova e perfettamente funzionante, mi è venuta l'idea di aprirla e di vedere come era fatta.
Con un po' di attenzione ho svitato la lampada e mi sono accorto che l'involucro era costituito da due parti: il contatto elettrico a vite (tipo E...) e la boccia satinata bianca. Purtroppo il guasto era di quelli seri: si era rotto il tubo in vetro all'interno della boccia, pertanto ho rimosso il tutto (compresa la scheda elettronica di alimentazione) e, dopo aver fatto un po' di pulizia, mi sono ritrovato con una lampada completamente svuotata. Per due anni il simpatico gadget è rimasto infilato in un portapenne: ogni tanto lo spolveravo per poi riporlo dove lo avevo preso chiedendomi spesso cosa ne avrei potuto fare. Finché un giorno...
L'idea
Sistemando la mia (perennemente) disordinata scrivania, mi è balzata in mano una comune fotoresistenza, una di quelle che avevo acquistato tempo fa e che, come per magia, era scomparsa, inghiottita dal marasma di cose che stazionano sul mio tavolo di lavoro. Neanche a dirlo, ho subito smesso di riordinare la scrivania ed ho subito intravisto una possibilità per utilizzare il contenitore della lampada a basso consumo: realizzare una lampada segna passo, una lampada notturna ad attivazione crepuscolare con l'intensità regolata automaticamente in modo proporzionale alla luce presente nella stanza. Lo schema elettrico che ho stilato è quello che segue (nella sezione DOWNLOAD è disponibile il download del file PDF):
Il progetto si poggia su di un PIC12F683 di Microchip Technology; ho scelto quel micro in quanto dispone di due periferiche che mi permettono di mettere in pratica quanto è stato proposto negli articoli sulla configurazione A/D e sul PWM.
Come si nota, sulla scheda è presente un LED che, se alimentato in PWM, può facilmente variare la sua luminosità. La fotoresistenza è connessa al pin GP4 del PIC, pin deputato alla conversione A/D.
Una nota la merita il dimensionamento delle resistenze R3 ed R4. La scelta di R4 è in funzione del tipo di LED (semplice od ad alta luminosità) che si decide di adottare. La resistenza R3, invece, determina il partitore con la fotoresistenza. L'esperienza sul campo mi ha portato a scegliere il valore 10k, ma questo è dipeso dal tipo di sensore adottato.
Le realizzazioni
Dopo aver realizzato una Sibilla ho pensato di costruirne un'altra, che ho regalato. Le due realizzazioni si distinguono per alcuni semplici dettagli: il connettore dell'alimentazione esterno e l'assenza del connettore montato su scheda in uno dei due casi. Nelle immagini che seguono ci sono le due Sibille a confronto.
Due righe di codice
Il firmware che è stato scritto in linguaggio C è veramente semplice. Lascio al lettore la possibilità di approfondirlo, andando a scaricare il progetto al link indicato (vedi paragrafo DOWNLOAD). Come descritto, il codice C non fa altro che leggere il valore analogico in uscita dal partitore costituito dalla resistenza R3 e la fotoresistenza e lo utilizza per il pilotaggio del PWM. Si noti che è stato scelto di eseguire un calcolo che vada a mediare 30 letture consecutive, per dare un minimo di stabilità al valore acquisito.
void main(void) { InitPic(); while(1) { uiADaverage = 0; for (chAverageCounter = 0;chAverageCounter < 30;chAverageCounter++) { ADCON0.ADON = ON; ADCON0.GO_DONE = ON; while (ADCON0.GO_DONE == 1); uiAdcRes = ADRESH<<8; uiAdcRes += ADRESL; uiAdcRes = uiAdcRes >> 6; uiADaverage = uiADaverage + uiAdcRes; } uiAdcRes = uiADaverage/30; MySetDuty(); } }
Dettagli video
Ed eccola qui, la Sibilla!
Download
Il progetto è reso disponibile scaricandolo dal sito PICExperience, facendo click qui. Oltre al firmware è disponibile anche lo schema elettrico.
Corpo dell'articolo assente
Riferimenti
- Ambiente di sviluppo MPLAB: http://www.microchip.com/mplab
- Datasheet PIC12F683: http://ww1.microchip.com/downloads/en/DeviceDoc/41211D_.pdf
- Sito web PicExperience
- Collana "LO HAI MAI REALIZZATO CON UN PIC?":
- Pillole di microcontrollori PIC: