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

  1. Disinserire l'alimentazione.

  2. Eseguire un ponticello tra i +5 volt e l'uscita corrispondente alla funzione da programmare.
    (Vedere la tabella sottostante).

  3. Inserire l'alimentazione.

  4. Dopo circa tre secondi verificare il lampeggio delle uscite corrispondenti alla funzione programmata. Questo significa che il circuito si è configurato.
    (Vedere la tabella sottostante)

  5. Togliere l'alimentazione.

  6. 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.
Scarica il file in formato ZIP
Versione 1
Scarica il file in formato ZIP
Versione 2 (nuova)
 

 


Torna all'indice della sezione Tecniche
 


 

Visite dal 27/05/2008
Ultimo aggiornamento pagina: 01-02-2009