Un progetto di termometro "riciclone". Stavolta a farne le spese è il display a cristalli
liquidi smontato dal Nokia 3310 abbandonato in un cassetto e mai buttato. In rete ci sono diverse pagine sull'utilizzo di
questo tipo di display con processori PIC o ATMEL. In effetti anche questo prende spunto dal progetto di Ivica Novakovic,
dal quale ho preso lo schema elettrico e parte del firmware.
Naturalmente ho voluto metterci del mio, sia per la parte meccanica che nella programmazione.
La mia versione prevede che il display sia connesso all'elettronica vera e propria mediante uno zoccolo e il corrispettivo
connettore a pettine, in modo da poter facillmente utilizzare il display su più progetti. Ho quindi realizzato un circuito
stampato, che si intravede in trasparenza dalla foto, delle stesse dimensioni del lcd e con le piste che, partendo dal
connettore a pettine, convergono verso quello del display.
Lo si può realizzare anche con il solito pennarello con un piccolo stratagemma: si realizza
un rettangolo pieno dal quale partono le otto piste a grandezza "umana", si lascia asciugare bene l'inchiostro, poi con un
utensile a punta si graffia il rettangolo in modo da mettere a nudo il rame che verrà in seguito corroso nella soluzione di
percloruro ferrico, formando le otto piazzole che appoggeranno sulle mollette del display. Con questo accorgimento i
contatti sono portati al passo standard di 100 mils, dunque si può utilizzare la basetta al volo su bread board o mediante
zoccolo nelle realizzazioni definitive. I contatti del display hanno piccole molle dorate, quindi è necessario, dopo aver
verificato con cura l'allineamento, mantenere in qualche modo pressato il display alla basetta. Io ho utilizzato una costina
in plastica utilizzata per rilegare i documenti, la soluzione è accettabile e meccanicamente robusta. L'elettronica, davvero
minimale, necessaria al funzionamento del circuito è montata su una seconda basetta da accoppiare a sandwitch al display. Ho
realizzato anche per questa un piccolo stampato, più che altro per utilizzare lo sfrido di piastra ramata rimasuglio di una
precedente lavorazione. E si vede, dal momento che, vuoi per il percloruro "stanco", vuoi per la basetta graffiata, il
risultato è inguardabile. Meno male che a circuito montato il lato rame è nascosto.
La prima accensione
Vista la semplicità del circuito un controllo triplo di ogni particolare non richiede
troppo tempo, quindi ne vale la pena. Per la prima accensione ho caricato sul PIC il firmware originale ed il termometro ha
funzionato da subito. Certo però...
Quando ho pronunciato queste parole ancora non sapevo in che impresa mi stavo cacciando! In altri progetti ho utilizzato la
sonda ds1820 e avevo bell'e pronta la routine per aquisire la temperatura a 12 bit invece dei 9 standard, cosa che permette
di visualizzare i decimi di grado. La precisione dichiarata è di +/- 5 decimi di grado, ma ormai avevo accettato la sfida.
Il firmware
Ivica ha rilasciato il sorgente del firmware, scritto in pic basic pro, che mi ha permesso di
studiare le funzioni svolte dal programma. A dire il vero mi sono dovuto studiare un po' questo linguaggio, dal momento che
in precedenza avevo più familiarità col CCS C. Fortunatamente le funzioni non sono poi molte quindo dopo un po' ho cominciato
a ragionare sul codice. La lettura della sonda digitale e la trasformazione dei dati in formato numerico occupano poche
righe, il lavoro più pesante è costituito dalle istruzioni necessarie a visualizzare i dati sul display. Nella configurazione
utilizzata, occorre inviare 84 byte di 8 bit ciascuno (quante sono le colonne) per 6 righe (48 bit totali per ciascuna
colonna). Per capire come funziona il firmware originale ed operare una sorta di "reverse engineering" mi sono costruito
questo foglio di calcolo dove, inserendo i dati esadecimali presenti nel listato, vengono
colorate le celle sottostanti a simulare i pixels accesi, così da fornire una rappresentazione grafica di cosa viene
visualizzato. In una successiva cartella si opera il lavoro inverso, ovvero immettendo su una griglia le celle-pixels da
accendere, vengono calcolati i valori esadecimali da immettere nel codice. La prima modifica che ho apportato è stata quella
di sostituire il logo Ke con la scritta "2.0", e fin qui tutto bene. Poi ho implementato la routine per la lettura dei
decimali, che ha funzionato al primo colpo. L'appetito viene mangiando, quindi perchè non personalizzare anche il font?
L'idea era quella di "pulire" la schermata da qualche fronzolo e visualizzare la temperatura con un font più grande e meno
stilizzato in cui ogni cifra doveva essere visualizzata su una matrice di 7 x 13 pixels. Ciò avrebbe comportato la scrittura
di 14 bytes su due righe, un impegno che ho giudicato alla mia portata. A livello di codice significava approntare due
matrici di datii, una per la metà superiore e una per la metà inferiore di ogni cifra, visualizzare la metà superiore di
ciascuna, riposizionare il cursore alla riga inferiore, visualizzare la metà inferiore. Un po' cervellotico, ma abbordabile.
Qualche ora dopo mi sono reso conto di quanto il firmware messo a punto da Ivica fosse ben ottimizzato: veniva infatti usata
praticamente tutta la memoria di programma e quasi tutta la EEPROM, in poche parole non c'era verso di far entrare tutto il
codice nel kilobyte a bordo del 12F675. Ho provato a rimuovere qualche elemento grafico senza risultati, e proprio non volevo
rinunciare al "termometro a mercurio" di fianco alle cifre numeriche. Così ho investito un paio di euro in un PIC 12F683,
che dispone del doppio di memoria di programma e 256 bytes di EEPROM. Una aggiustatina ai registri mi ha permesso di
compilare il sorgente e caricarlo sul micro come
eseguibile (.hex). La nuova veste grafica è
visibile in foto. Non mi sono ancora inventato un logo, quindi per ora il termometro visualizza il "2.0" in alto a sinistra.
Schema elettrico
Lo schema elettrico, è assolutamente fedele al progetto originale, salvo per l'utilizzo del
PIC 12F683. In fase di test ho riscontrato che, utilizzando un filo di qualche metro per collegare la sonda di temperatura
al termometro, la comunicazione col PIC non funzionava a dovere. Per risolvere il problema ho abbassato il valore della
resistenza di pull-up R1 a 3.3 Kohm. L'assorbimento di corrente del circuito aumenta un po', ma si mantiene comunque su 1 mA.
Disposizione componenti
Circuito stampato
Se proprio non sopportiamo le millefori, ecco la traccia del circuito stampato.
Elenco componenti
Tipo/valore
Quantità
Riferimento
10 Kohm
1
R1
0.1uF
1
C2
4,7uF 25V
2
C1, C3
DS 1820
1
P2
PIC 12F683
1
U1
LCD PCD 8544
1
P1
Lavoro ultimato!
Il contenitore utilizzato per racchiudere il termometro, in piena filosofia "riciclona",
è la scatola di un orologio da polso in gomma. Contiene perfettamente il portapile e le due schede elettroniche, in più
la trasparenza della plastica lascia intravedere l'interno. Insegnamento del giorno: la limatura di plastica si elettrizza
elettrostaticamente in un modo tale che è impossibile sbarazzarsene, come si nota da questa foto.
Riferimenti utili
La pagina di Ivica Novakovic ,
autore del progetto originale;
L'articolo su elettronic.altervista.org ,
ovvero passo per passo il lavoro da far svolgere al micro per visualizzare ciò che desideriamo;
Il datasheet del controller
Philips PCD8544 contenuto nel display del Nokia 3310.