"Acquistate ad una fiera (senza motivo) sei bellissimi display a matrice di 5x7 LED al costo di qualche euro, poi
lasciateli stagionare alcuni anni in attesa della giusta ispirazione per il loro utilizzo pratico..." Questo progetto nasce esattamente con queste
premesse. Approfittando delle ultime festività natalizie mi sono deciso a realizzare qualcosa con i dispositivi ormai "frollati" a dovere, dopo aver
visto nella vetrina di un negozio di oggettistica per la casa un curioso maxi-orologio-calendario che utilizza una tecnologia simile.. Questo tipo di
display si presta ottimamente alla visualizzazione di numeri, lettere e simboli con la possibilità di effetti di scorrimento, lampeggio, dissolvenza...
Tralasciando le sigle con le quali i produttori commercializzano questi componenti, la piedinatura
utilizzata è spesso la stessa, riportata qui sopra. Come per i display a sette segmenti, esistono le tipologie a catodo comune e ad anodo
comune (il mio caso); i punti luminosi creati dai led sono organizzati per righe e colonne; l'accensione avviene applicando le giuste polarità
ai pin esterni. Spesso viene utilizzata la tecnica del multiplexing, ossia in tempi successivi vengono accesi i vari led una colonna -o una riga- alla
volta, risparmiando un gran numero di collegamenti elettrici potendo "riutilizzare" i segnali relativi alle righe/colonne. La persistenza delle immagini
sulla retina dell'occhio ci farà percepire l'informazione completa. Quindi, per comporre una scritta, è sufficiente variare, colonna per colonna, i
segnali applicati alle righe, tutte connesse fra loro, mentre una alla volta vengono accese le colonne; il tutto almeno una trentina di volte al secondo
per assicurare una visione che non "sfarfalli". In pratica occorre considerare che, se la velocità di aggiornamento dei segnali non presenta particolari
problemi tecnici, all'aumentare del numero di colonne "multiplexate" ciascuna di esse rimane accesa per una frazione di tempo via via più piccola, col
risultato che la luminosità complessiva percepita diventa insufficiente. Oltre un certo limite occorre adottare soluzioni che permettono di accendere
più colonne contemporaneamente; il mio approccio al problema, anzichè ricorrere a integrati appositamente studiati o a complessi circuiti digitali
(latch-i e latch-iuoli) consiste nel raddoppiare il bus di dati e attivare due colonne contemporaneamente. L'immagine seguente illustra il principio di
funzionamento.
Il progetto è suddiviso in due sezioni distinte (display e MicroControllerUnit) che ho affrontato separatamente secondo
la filosofia del "divide et impera"
Schema display
La parte superiore dello schema costituisce il sistema di accensione delle colonne ed è formato da una catena di
integrati 74HC164 (Serial In, Parallel Out). I segnali necessari al funzionamento (clock, data, clear) e l'alimentazione a 5 volt sono riportati
su un connettore collegato alla scheda MCU. I due bus dati fanno capo ai connettori P2 e P3; sia questi che le uscite dello shift register sono
bufferati con semplici stadi a transistor; il complesso dei segnali così ottenuti è applicato ai display (D1-D6). L'immagine seguente riporta
lo sbroglio delle piste. Sbroglio è la parola più indicata considerato il numero di componenti... Curiosamente, l'utilizzo di resistenze e transistor
per i buffer delle linee anzichè ricorrere ad array integrati tipo gli ULN200x consente di contenere le dimensioni della piastra, a scapito del
moltiplicarsi di piazzole e saldature.
LATO RAME
DISPOSIZIONE COMPONENTI
Durante la lavorazione mi sono pentito di aver scelto, come sono solito fare per quasi tutti i miei prototipi, il montaggio su
millefori. Se per piccoli circuiti il tempo di lavorazione occorrente è paragonabile a quello di incisione, foratura e montaggio di un circuito
stampato, in questo caso si sono rese necessarie diverse ore e notevole concentrazione. Per dirla come i giocatori di
biliardo, "calma e gesso" (optional: birretta). Di sicuro, un eventuale secondo esemplare sarà su stampato. Ecco la scheda display
montata e collaudata.
LATO RAME
DISPOSIZIONE COMPONENTI
Unità di controllo MCU
La seconda parte del progetto riguarda il circuito di controllo del display ed è realizzata con un microcontroller
PIC tipo 16F877a. Contiene inoltre la sezione di alimentazione dell'insieme, fornita da un alimentatore a muro da 12 volt non stabilizzati, 200 mA.
Nella parte alta dello schema, i connettori P4,P5 e P6 portano i segnali alla scheda display. A sinistra
lo stadio di alimentazione realizzato con un LM317 regolato a 5 volt. Poichè ho previsto una alimentazione di backup a batteria, Q47 e Q48 sono
dedicati alla carica in tampone, con corrente costante di circa 7 mA, di una batteria di elementi ricaricabili Ni-Mh da 7.2 volt nominali,
150-200 mAh. Q46 si occupa di avvisare il micro della mancanza di alimentazione esterna: sulla linea collegata al collettore sarà presente un
livello basso con alimentazione esterna, alto durante il funzionamento a batteria. Q45 attiva o disattiva l'alimentazione del display
comandato da una linea del micro. Il microcontroller scelto ha una generosa disponibilità di porte
input/output. Quelle ancora libere sono state dedicate a due pulsanti, una linea con resistenza di pull-up per un sensore di temperatura Dallas
DS18B20. I segnali necessari alla programmazione in-circuit sono riportati sul connettore P9, a P12 potrà essere collegato un convertitore TTL-RS232
o magari un modulo bluetooth per connettere la scheda a un PC. Il jumper P10 isola la linea B6 e va lasciato aperto durante la programmazione,
chiuso nel funzionamento normale. Per le rimanenti linee inutilizzate ho previsto la sola piazzola sulla scheda, in caso di ulteriori espansioni.
Ecco il lato rame ed il layout lato componenti:
LATO RAME
DISPOSIZIONE COMPONENTI
I connettori P4 e P5 sono saldati sul lato rame, così come P1 e P2 sulla scheda display. In questo modo le due unità vengono accoppiate rame contro rame
risparmiando un po' di cablaggi. Per il secondo bus il collegamento fra P3 e P6 avviene con un cavo flat e connettori SIP. I micropulsanti saldati sulla
scheda sono da utilizzare solo durante le fasi di collaudo, nel montaggio definitivo saranno utilizzati pulsanti esterni, connessi alle piazzole
appositamente previste. Per rendere meccanicamente solido l'assieme, sia sulla scheda display che sulla MCU ho saldato due pezzetti di millefori che a
montaggio ultimato sono fissati fra loro con vite e dado M3. Questa, unita alle torrette in corrispondenza degli angoli esterni, assicura la necessaria
robustezza ed evita sollecitazioni ai connettori.
LATO RAME
DISPOSIZIONE COMPONENTI
E' ora di firmware!
Izz taim tu plei: via saldatore ed utensili, mano a tasiera e mouse. La gestione vera e propria della visualizzazione
è affidata ad una routine che utilizza una matrice di variabili caricata con i valori necessari a comporre l'informazione grafica desiderata. La stessa
routine gestisce il clock dello shift register in maniera tale da sincronizzare il tutto. Ho predisposto questo
foglio di calcolo per generare i valori da caricare nella matrice con il quale è possibile modificare il font e i simboli da visualizzare.
In ogni istante sono accese due colonne, quindi ogni refresh del display si compie in 15 cicli di clock. Ogni colonna rimane accesa per circa mezzo
millisecondo, ne deriva che la frequenza di aggiornamento dell'intero display è intorno ai 130 Hertz. Una seconda routine si vale del timer interno a 16
bit TIMER1 e implementa orologio e calendario. La rimanente parte del firmware può essere dedicata alle funzioni vere e proprie del dispositivo.
Nella attuale stesura del codice ho attinto a piene mani dal precedente progetto YAC con una
ulteriore funzione dedicata alla visualizzazione di una scritta scorrevole e impostabile a piacimento. I pulsanti operano in questo modo:
SW1: cicla fra le seguenti visualizzazioni:
ora-minuti, giorno-mese, temperatura (scorrevole)
ora-minuti (fissa)
minuti-secondi (fissa)
giorno-mese (fissa)
scritta scorrevole personalizzabile
SW2: una pressione breve nelle visualizzazioni 2,3,4,5 riporta alla visualizzazione 1; la pressione lunga consente l'impostazione di ora e data.
Nella visualizzazione 5, la pressione lunga avvia la routine di impostazione del messaggio visualizzabile (max 86 caratteri). Le lettere si
modificano con il tasto SW1, confermandole con il tasto SW2. Il carattere "°c" è assunto come codice di fine messaggio e termina la procedura.
Come accennato nella descrizione dello schema elettrico, lo stato di alimentazione del circuito è monitorato dal PIC e, in caso di mancanza di
alimentazione, si attiva la modalità "basso consumo". Non si tratta di una vera e propria funzione di sleep ma piuttosto di "dormiveglia": il clock del
micro e le routines di aggiornamento relative all'orologio funzionano normalmente, ma viene spento il display e lo shift register. In questo modo
l'assorbimento totale passa da circa 120 mA a una decina, consentendo una buona autonomia in caso di black out. Al momento ho badato soprattutto ad
ottimizzare la visualizzazione e lo scorrimento dei caratteri; trascurando altri aspetti. Non ho implementato l'uso di un collegamento seriale, previsto
in un primo tempo per modificare il messaggio scorrevole, in quanto tutto sommato l'impostazione tramite tasti non è poi così scomoda; anche la gestione
complessiva della RAM disponibile non è certo efficiente. Non ho inserito effetti di lampeggio / dissolvenza, che pure si possono implementare vista la
diponibilità di risorse del micro... frivolezze. Tuttavia il progetto così com'è funziona molto bene e può considerarsi finito a tutti gli effetti. Le
risorse ancora disponibili del PIC sono quasi due terzi con un buon numero di linee di I/O, quindi le possibilità di aggiungere funzioni non mancano di
certo. Qualche idea? Un moduletto mp3 o FM ed ecco una radiosveglia che ti accoglie con uno "SVEGLIA PIGRONE!" o che ti ricorda il tuo compleanno. Meglio
ancora: il compleanno della dolce(!) metà o la scadenza del bollo.. Il tutto, forse, ad una prossima rev 2.0.
Ecco il link del Firmware e due animazioni per dare l'dea del risultato.
Messaggio scorrevole
Orologio-calendario-termometro
Rimane ancora una cosa prima di poter mettere la parola fine: il mobile. Al momento sono indeciso fra due soluzioni, una che consiste nel cannibalizzare
una cassetta in legno tipo quelle utilizzate per il vino pregiato (carteggiata all'infinito e lucidata a cera farebbe un figurone) e l'altra che prevede
una teca in plexiglass, tutto a vista: aspetto volutamente grezzo, per il disinnesco tagliare il filo blu. O era il rosso? Urge ispirazione.......
Troppi anni dopo...
L'ispirazione per la costruzione di un mobile ha richiesto anni. Per un po' ho cercato di recuperare qualcosa di pronto,
poi ho deciso per una realizzazione su misura. Il materiale non è certo nobile, un multistrato recuperato al brico; in compenso il plexiglass rosso ha
un suo perchè.