Di Giacomo Casano |
FLICKER
UN CIRCUITO
PROGRAMMABILE PER PILOTARE 15 USCITE CONFIGURATE PER
SIMULARE LE STELLE, I FUOCHI (CANDELE,
LANTERNE) O LE CASE |
Versione 2.0 -
20/06/2008 |
|
Immagine del prototipo montato
su una breadboard.
|
Qualche tempo fa nel mio presepio si è guastato il
circuito che simula il
tremolio delle stelle.
Non trovando più il software da inserire nel microprocessore ST6 e tantomeno il sorgente del medesimo, ho deciso di riscrivere
nuovamente il firmware usando però un altro micro:
un PIC16F628.
Le ragioni di questa scelta sono diverse:
- Ne avevo diversi nel casseto.
- Questo micro si può configurare in modo da usare il suo
oscillatore interno, risparmiando l'utilizzo del quarzo e
guadagnando così altri due pin da utilizzare come porte di I/O.
Abbiamo così a disposizione un
ingresso e 15 uscite su un totale di 18 piedini !
- Conosco molto bene questa famiglia di
microprocessori.
- Il prezzo
di questa CPU è molto conveniente: dai tre ai quatto
Euro.
Dopo aver riscritto il software da inserire nel mio circuito, ho
notato che rimaneva moltissima memoria libera, per cui ho pensato:
PERCHE' NON AGGIUNGERE
QUALCHE ALTRA FUNZIONE ?
E' nato così Flicker.
Flicker in inglese significa sfarfallio, cioè il tremolio che hanno
le fiammelle delle candele o le stelle.
In effetti, come ho già detto, all'inizio il circuito mi serviva solo
per simulare il
tremolio delle stelle.
|
Poi ho iniziato a chiedermi: |
“Oltre che per
le stelle si potrebbe usare anche per i fuochi o le lanterne...”
“Certamente, con pochi cambiamenti sul software si può
usare pure per generare il tremolio delle lanterne
!”
“Però i fuochi o le lanterne che si accendono
e spengono tutti
insieme sono bruttini...”
“Allora facciamo
in modo che si accendano e spengano in modo pseudocasuale
!”
“Perfetto ! ...E le stelle? Anche le
stelle che si accendono di colpo sono brutte...”
“Aggiungiamo una
dissolvenza in modo che si illuminino e spengano gradualmente.”
“Però... un cielo stellato senza
la luna...”
“Ok, aggiungiamo
pure una uscita per la luna che non tremola ma si accende e spegne
lentamente insieme alle stelle.”
“Benissimo. Va bene
così. Però... visto che abbiamo fatto trenta, facciamo trentuno.”
“Che significa ?”
“Beh, visto che ci
siamo, perché non usarlo pure per accendere e spegnere casualmente
le luci delle case ? Quindici uscite uscite sono molte.”
“Ok... aggiungiamo pure il controllo delle case...”
“Potrebbe andare...
però... secondo me
manca ancora qualcosa....”
“ ! ?? ? ??”
“Durante la fase di
accensione delle case, facciamone spegnere ogni tanto qualcuna in
modo da rendere la cosa più naturale.”
“Ok, ma questa è
l'ultima cosa che ci aggiungo !”
(Versione 2)
“Stavo pensando una cosa: Perché non aggiungiamo una uscita da usare
per comandare i lampioni durante la fase di
accensione delle case ? Sarà sempre la prima ad accendersi e
l'ultima a spegnersi.”
“Uffa !!! Va bene ma questa è
veramente l'ultima cosa che ci aggiungo !”
|
Alla fine di tutte
queste elucubrazioni ho progettato il circuitino che
vi propongo.
A differenza dei circuiti commerciali che si trovano
in vendita che possono simulare una sola funzione
(tipo case o stelle) e hanno otto uscite, il nostro
può comandare simultaneamente la bellezza di
quindici canali indipendenti e può essere
configurato per svolgere la funzione desiderata
eseguendo delle semplicissime operazioni. Se
decidiamo di usarlo per un'altra funzione, basta
eseguire nuovamente la procedura di configurazione.
Non vuole essere un duplicato del 'Controller
Multiuso' presentato in questa sezione, ma
un'alternativa da usare da chi non ha a disposizione
una porta seriale per comandare il controller.
Infatti per pilotare questo circuito basta un
contatto:
Aperto per accendere, chiuso per spegnere. Tutto quì.
La semplicità è sconcertante. Il lavoro lo fa tutto
il microprocessore, quindi i componenti utilizzati
sono pochissimi. L'unico scotto da pagare, per
qualcuno, è il fatto di dover programmare il micro.
Per realizzare le stesse funzioni usando dei
componenti discreti e ottenere lo stesso risultato
ci sarebbero voluti centinaia di componenti e
sarebbe venuto fuori un circuito molto complesso.
Dal punto di vista del risparmio in complessità,
tempo e soldi l'evidenza è palese.
Programmare il micro attualmente si può considerare
un problema come può essere il reperimento dei
componenti.
In Rete si trovano sono moltissimi circuiti per
realizzare un programmatore, dal più semplice tipo
il Ludipipo, al più complesso. Ormai
chiunque si occupa di elettronica ne possiede uno. |
Lo schema generale lo possiamo vedere in
Fig 1.
Come si può vedere è diviso in diverse sezioni ed è possibile montare soltanto i componenti che ci
servono a seconda della configurazione da utilizzare.
Data l'estrema semplicità e la possibilità di usare quello che
abbiamo nel cassetto (bugia, il problema è la mancanza di tempo a
disposizione !), non ho realizzato il circuito stampato, in
quanto è sufficiente usare una basetta mille fori.
Se qualcuno ha il tempo e la voglia di progettare un circuito
stampato, è il benvenuto !
L'algoritmo per generare il tremolio è stato studiato in modo che,
mettendo vicine le lampade o i LED seguendo la numerazione delle
uscite, la differenza di tremolio tra le lampade sia evidente.
Se usiamo dei diodi LED per le stelle o per le lanterne, li possiamo
pilotare direttamente dal micro collegandoli tra l'uscita e il negativo
generale tramite una resistenza da 500 Ohm (Fig. 2).
Personalmente per le lanterne e i fuochi preferisco usare delle
microlampade da 12 volt alimentate a 5 volt perché hanno una
maggiore isteresi, il colore è più caldo e il tremolio risulta più naturale.
Le lampade assorbono più corrente rispetto ai classici diodi led.
Per questa ragione, per non sovraccaricare le uscite del micro e
danneggiarlo, dobbiamo utilizzare dei buffers.
Come buffers di uscita possiamo indifferentemente usare dei transistor
(Fig. 3), dei darlington
tipo ULN 2003 (o ULN2803) oppure dei mosfet (Fig. 4).
Personalmente consiglio l'uso dei darlington ULN2003 o ULN2803.
Nel caso le lampade dovessero assorbire più di 300 mA, meglio pilotarle
tramite un transistor oppure un mosfet
tipo IRF530 o similare.
Per l'uscita della luna, ad esempio, è meglio usare il mosfet.
Generalmente per proiettare la luna si usano lampade abbastanza
potenti (20-50 W) e il mosfet, avendo una bassissima resistenza
interna, dissipa molto meno calore rispetto al transistor.
Ad esempio, nel caso tipico di stelle realizzate con lampade e luna
proiettata, usiamo il mosfet per il canale della luna e colleghiamo
le 14 uscite rimanenti a due darlington ULN2003. Se invece le stelle
sono illuminate con i diodi led, le uscite le possiamo collegare
direttamente al micro.
Il
circuito deve essere alimentato a 5 volt. Non superare questo
valore !
Per alimentare le lampade è conveniente usare un
altro alimentatore, specie se questa tensione è
differente dalla tensione di alimentazione del micro.
Le masse dei due alimentatori devono essere
collegate insieme. |
|
Ecco quindi le funzioni implementate:
-
Circuito per pilotare
le stelle:
- 15 uscite che tremolano in modo indipendente
(Modalità 1).
-
E' possibile usare una uscita per comandare la luna (Modalità
2).
-
Le stelle e la luna si accendono e spengono in modo graduale
con un
tempo di dissolvenza di circa 20 secondi (Modalità 3).
-
Circuito per pilotare fuochi e
lanterne:
- 15 uscite che tremolano in modo indipendente (Modalità 4).
-
Possibilità di farle accendere e spegnere in modo pseudocasuale
(Modalità 5).
-
Circuito per pilotare le case:
- 15 uscite indipendenti che si accendono e spengono in modo
pseudocasuale (Modalità 6).
-
Possibilità di far spegnere casualmente qualche casa anche
durante la fase di accensione.
In questo caso sarà molto difficile avere tutte le case accese e
la situazione sarà più
reale (Modalità 7).
- Ulteriore possibilità di configurare una uscita per pilotare
delle luci da usare come
lampioni. Queste luci saranno le prime ad accendersi e le ultime a
spegnersi.
(Modalità 8. Disponibile sulla versione 2 del firmware).
I tempi tra la
programmazione delle uscite variano casualmente tra
due e otto secondi.
|
Alla prima accensione, il
circuito si predispone automaticamente
nella modalità di
funzionamento 1 (15 uscite tremolanti STELLE senza dissolvenza). |
Per cambiare la modalità di funzionamento dobbiamo agire come
segue:
Procedura di
programmazione della modalità di funzionamento:
-
Disinserire l'alimentazione.
-
Eseguire un ponticello tra i +5 volt e l'uscita
corrispondente alla funzione da programmare.
(Vedere la tabella sottostante).
-
Inserire l'alimentazione.
-
Dopo circa tre secondi verificare il lampeggio
delle uscite corrispondenti alla funzione
programmata. Questo significa che il circuito si
è configurato.
(Vedere la tabella sottostante)
-
Togliere l'alimentazione.
-
Togliere il ponticello precedentemente eseguito.
A
questo punto il circuito è programmato per eseguire
sempre la funzione desiderata.
Per cambiare configurazione, eseguire di nuovo la
procedura di programmazione.
|
TABELLA DI
PROGRAMMAZIONE FUNZIONI
Modalità |
Funzione |
+5 volt Su: |
Uscite lampeggianti |
1 |
Solo Stelle
tremolanti |
Uscita 7 |
9, 10, 11 |
2 |
Stelle (+ Luna) in
dissolvenza (apertura e chiusura) |
Uscita 6 |
9, 10 |
3 |
Stelle (senza Luna) in
dissolvenza (apertura e chiusura) |
Uscita 1 |
9 |
4 |
Fuochi (solo
tremolio) |
Uscita 2 |
10 |
5 |
Fuochi con accensione
casuale |
Uscita 3 |
11 |
6 |
Case con accensione
casuale |
Uscita 4 |
12 |
7 |
Case con accensione e
spegnimento casuale |
Uscita 5 |
9, 12 |
8 |
Modalità Case con uscita
attiva per i Lampioni. |
Uscita 8 |
(12) (9, 12) , 15 |
|
La modalità 8 (Lampioni) viene accettata solo se è
stata precedentemente programmata una delle modalità
di funzionamento Case (6 o 7) altrimenti segnala un
errore facendo lampeggiare velocemente in modo
alternato le uscite da 1 a 8.
La corretta programmazione viene indicata facendo
lampeggiare le uscite relative alla modalità Case
selezionata più l'uscita 15.
E' comunque possibile programmare simultaneamente
una delle modalità Case con l'uscita lampioni
attivata eseguendo in fase di programmazione sia il
ponticello relativo alla modalità Case sia il
ponticello relativo all'attivazione dei Lampioni.
Ogni uscita corrisponde ad un determinato piedino
del microprocessore.
La seguente tabella visualizza la corrispondenza tra
le Uscite, i piedini corrispondenti e i
collegamenti (contrassegnati con le lettere) sullo schema elettrico.
|
CORRISPONDENZA TRA LE
USCITE E I PIEDINI DEL MICROPROCESSORE
N° Uscita |
Piedino del microprocessore |
Collegamento sullo schema |
1 |
6 |
d |
2 |
7 |
e |
3 |
8 |
f |
4 |
9 |
g |
5 |
10 |
h |
6 (*) |
11 |
i |
7 |
12 |
l |
8 |
13 |
m |
9 |
17 |
p |
10 |
18 |
q |
11 |
1 |
a |
12 |
2 |
b |
13 |
3 |
c |
14 |
15 |
n |
15 |
16 |
o |
(*) Usata anche come uscita per la Luna o uscita per i Lampioni |
|
|
|
Spero di essere stato
abbastanza preciso.
Per problemi di natura tecnica e domande relative
all'argomento è stata attivata una discussione
specifica sul nostro Forum. |
N.B.:
Questo circuito NON può essere utilizzato per scopi
commerciali senza l'autorizzazione dell'autore. |
Discussione nel
Forum riservata all'argomento:
CLICCARE QUI' |
|
|
|
|
|
|
Il
circuito proposto simula perfettamente il tremolio
della fiamma della candela. |
|
Fig. 1
Schema elettrico generale |
|
|
|
|
Fig. 2
Schema di base del circuito.
I diodi sono collegati direttamente al micro. |
|
Particolare di due transistor usati come buffers per
pilotare le due microlampade. |
|
|
Fig. 3
Uso dei transistors come buffers di uscita. |
|
|
|
|
Fig. 4
Uso dei darlington ULN2003 come buffers di uscita. |
|
|
Lucerna |
|
|
Il
microcontrollore PIC16F628 usato nel prototipo |
|
|
|
|
Corrente assorbita dal circuito con 2 microlampade e
11 led accesi: 160 mA. |
|
|
|
Tutto il
necessario,
ovvero gli schemi e il file in formato esadecimale (HEX) da inserire
nella CPU.
La vecchia versione del firmware senza l'opzione Lampioni è stata
mantenuta. |
|
Versione 1 |
|
Versione 2 (nuova) |
|
|
|