Un orologio a nixie
un modo vintage di leggere l'ora
Introduzione
Le nixie sono state introdotte sul mercato circa a metà degli anni cinquanta del secolo scorso dalla Burroughs. Si tratta in pratica di una lampada a scarica a neon, in cui sono presenti un anodo comune e diversi catodi aventi la forma dei numeri da rappresentare. Alimentando l'anodo ed uno dei catodi con una tensione superiore ad un centinaio di volt, si formerà una scarica attorno al catodo selezionato che ne risulterà illuminato con un colore arancione giallastro.
Smontando un vecchio multimetro digitale fuori uso, sono riuscito ad entrare in possesso di qualcuna di queste valvole (siglate TAF1317A) e con un amico ci siamo messi a studiare un modo di utilizzarle. In Internet si trova tanto materiale su questo tipo di display, che sono caratterizzati da un innegabile fascino "vintage". Abbiamo quindi deciso di realizzare un orologio, che utilizzasse questo insolito display. Per semplificare il più possibile lo schema elettrico del progetto e per fare in modo da avere un circuito di dimensioni ridotte, ho scelto di utilizzare un microcontrollore, in particolare il buon vecchio PIC16F84A. Nonostante sia obsoleto, questo microcontrollore si trova ancora con facilità e me ne servo ancora, dato che dispongo di una piccola scorta in fondo ad un cassetto. All'interno del multimetro digitale da cui ho recuperato le nixie, vi erano anche dei driver tipo 7441, che permettono di semplificare ulteriormente il circuito.
Se questo progetto vi piace, leggete anche la pagina Un orologio a nixie, versione 2.1 su questo stesso sito. Alcuni difetti sono stati corretti ed un circuito stampato è disponibile per facilitare la fabbricazione del circuito.
All'interno del circuito, è presente un piccolo survoltore capace di ottenere la tensione di circa 170V, necessaria per le nixie, a partire da un'alimentazione a bassa tensione in corrente continua di 6V stabilizzati. Questa scelta è stata fatta per evitare di dover utilizzare un trasformatore dedicato e per permettere di avere un circuito più sicuro di alcune realizzazioni che si trovano in giro, le quali suggeriscono di ottenere i 170V a partire dalla tensione di rete raddrizzata (110V alternati negli Stati Uniti). Resta inteso che anche se le correnti in gioco sono piccole, non si tratta di un circuito per principianti: i 170V possono fare male! Non solo, il circuito qui presentato è solo un prototipo e non è a prova di bomba. Il consumo totale del mio prototipo è dell'ordine di 250mA.
Il circuito
Il circuito utilizzato è molto semplice, grazie all'utilizzo di un microcontrollore PIC16F84, che si incarica di eseguire tutte le operazioni di conteggio dell'ora e gestisce la visualizzazione in multiplazione (multiplexing) delle nixie. Ecco la prima versione del circuito:
Un oscillatore ad onda quadra, ottenuto tramite la metà di un normale NE556 (in realtà, basterebbe un NE555, rispettando la piedinatura), forma un semplicissimo circuito step-up, pilotando un transistor di potenza che attiva un induttore. Anche se le correnti in gioco sono sempre inferiori a 5mA, è molto importante che il diodo che viene utilizzato nello step-up sia sufficientemente rapido e possa sopportare le tensioni in gioco. Non va assolutamente bene utilizzare un diodo raddrizzatore perché quest'ultimo non è adatto a lavorare ad alta frequenza. Un semplice artifizio che ho utilizzato è stato quello di mettere tre comuni diodi 1N4148 in serie, di modo da ottenere un diodo rapido e che supportasse le tensioni in gioco. Per l'induttore, ho utilizzato un piccolo avvolgimento su un nucleo toroidale, originariamente adottato in un filtro antidisturbo per un triac. Di sicuro, è possibile fare una scelta ben migliore.
Il microcontrollore pilota le nixie in multiplazione tramite il driver 7441 e gli otto transistor NPN utilizzati per controllare l'alimentazione degli anodi delle quattro nixie. Il compito del software sarà quello di accendere una nixie alla volta, sincronizzando il codice BCD da fornire al driver 7441 con la nixie attivata tramite l'uscita corrispondente del microcontrollore. Consiglio di utilizzare per gli otto transistor collegati agli anodi delle nixie dei modelli capaci di sopportare almeno 200V tra emettitore e collettore, anche se ho cercato di fare in modo, tramite le resistenze da 470 kΩ e 220 kΩ, di ridurre un poco le tensioni massime applicate ad ogni transistor. Nel mio caso, ho utilizzato dei preistorici 2N1990 (fuori produzione ormai da qualche lustro), che pero' svolgono senza problemi quanto a loro richiesto. Il quarzo utilizzato per il clock del PIC è ad una frequenza di 3,2768 MHz. Questo valore è vantaggioso perché permette di ottenere un segnale di riferimento di 1 Hz con delle divisioni relativamente semplici nel codice del PIC.
L'alimentazione del microcontrollore è effettuata tramite un diodo raddrizzatore, a partire dalla linea dei 6V di alimentazione di tutto il sistema. Questo permette di realizzare la programmazione "in circuit", senza che il programmatore collegato al connettore ICSP (In Circuit Serial Programming) si ritrovi ad alimentare tutto il circuito, ma solo il microcontrollore. Inoltre, un condensatore tampone da 1 F (sì, un farad...) viene caricato tramite una resistenza da 100 Ω e provvede, in caso di mancanza di alimentazione, a far funzionare il microcontrollore per qualche decina di minuti. Condensatori come questo si possono trovare da un po' di tempo a questa parte al posto delle batterie tampone su alcune schede madri di elaboratori.
Il connettore ICSP è utilizzato anche per collegare due pulsanti alle linee RB6 e RB7, che permettono (grazie ai pull-up interni del PIC attivati via software) di far avanzare i minuti e le ore e regolare quindi l'ora esatta.
In un primo luogo, avevo previsto di utilizzare le linee RA0, RA1, RA2 e RA3 come uscite per pilotare i transistor che attivano le nixie. Tuttavia, dato che il PIC16F84 che ho utilizzato era reduce da un piccolo incidente, ho dovuto ripiegare sull'uso della line RA4, che però è a collettore aperto. Il tutto si riduce all'uso di una resistenza di pull-up ed ad una banale modifica al software del PIC, in particolare nella routine activatedisplay. Il firmware fornito dopo è comunque previsto per funzionare sulla porta RA2.
La versione di Francesco Nardi
Una critica che si può muovere al survoltore è il fatto che non vi è alcuna forma di controreazione e che quindi la tensione in uscita dipende in gran misura dalla tensione di alimentazione che deve essere stabilizzata a 6V, per esempio con un regolatore tipo LM317. L'utilizzo di un sistema di controreazione permetterebbe di alimentare il survoltore con una tensione non stabilizzata, con un certo vantaggio sul calore dissipato dal regolatore ed un aumento dell'efficienza complessiva del sistema. Ma non solo questo. Nel mio prototipo, ho ritoccato i valori dello schema di modo da ottenere pressappoco la tensione che mi serviva. In assenza di controreazione, una deriva termica, oppure una naturale dispersione dei valori dei componenti potrebbe far sì che la tensione ottenuta sia troppo bassa per accendere le nixie.
Francesco Nardi ha realizzato una versione del mio orologio utilizzando però un convertitore DC-DC migliore.Ecco quindi lo schema elettrico dell'orologio di Francesco, che consiglio senza dubbio di adottare, ed in cui molti aspetti sono stati migliorati:
Nello schema di Francesco, il convertitore DC/DC è stato migliorato con l'aggiunta di una controreazione che permette di mantenere la tensione di alimentazione delle nixie stabile attorno ai 170V. Inoltre, Francesco ha utilizzato una batteria ricaricabile NiCd da 3,6V, che permette di non far perdere l'ora all'orologio anche con un blackout di diverse ore. Nello schema, sono indicate entrambe le possibilità. Il file orologio_nixie_2_0.fcd contiene lo schema elettrico disegnato con FidoCadJ, un programma scritto da me che potete trovare in queste stesse pagine.
Il firmware
Il firmware è abbastanza semplice e tutto quello che deve fare è:
- occuparsi della gestione delle nixie in multiplazione
- dividere in maniera opportuna il clock di sistema per ottenere un conteggio in secondi, minuti ed ore
- mantenere aggiornata la visualizzazione dei minuti e delle ore sulle nixie
- gestire una limitata interfaccia utente per permettere di regolare l'ora esatta con due pulsanti
Le prime tre operazioni sono eseguite tramite un'interruzione, la quale viene richiamata periodicamente grazie al prescaler interno al PIC ad una frequenza di 200Hz. Ad ogni chiamata, il programma si occupa di fare un refresh delle nixie e di aggiornare i contatori. Se la frequenza di refresh è sufficientemente elevata, la persistenza della retina farà in modo che le quattro nixie appariranno accese nello stesso tempo. Nel nostro caso, un refresh completo delle quattro nixie avviene a 50Hz. Ho adottato la stessa tecnica (sia pure con un circuito di gestione leggermente diverso) nell'orologio con PIC16F84 e PCF8573, presentato nel mio sito.
La gestione dei due pulsanti viene invece trattata nel loop principale. Si tratta semplicemente di richiedere che i pulsanti rimangano schiacciati per un certo tempo, di modo da evitare i rimbalzi, e poi incrementare i contatori dei minuti e delle ore.
Scarica qui il sorgente assembly del firmware, da compilare (con gpasm, per esempio) e caricare sul PIC.
Ed ecco il file hex compilato, pronto da caricare sul microcontrollore: NixieClock.hex
Altre realizzazioni
Francesco mi ha inviato qualche foto del suo orologio, che pubblico qui con grande piacere.
Alex ha invece utilizzato la foto di apertura di questo articolo per realizzare un orologio "virtuale" fatto in flash. Ecco la sua pagina: http://www.alexoleron.com/alexoleron_services/horlogenixie.php
Conclusione
Il circuitino è stato realizzato quasi interamente con componenti di recupero. Ciò si traduce nel fatto che alcune scelte non sono ottimali. In primo luogo, l'uso di un induttore più adatto rispetto a quello realizzato su un toroide in materiale 26 potrebbe aumentare l'efficienza del convertitore, così come l'uso di un mosfet al posto del transistor bipolare. Francesco ha ottenuto risultati migliori nel suo circuito. In secondo luogo, il microcontrollore PIC16F84 è ormai obsoleto e dei modelli più recenti sono disponibili a prezzo più basso. Credo che il circuito possa essere adattato ad un PIC16F628 con sostanzialmente poco sforzo.
--------
Copyright (C) 2007-2008 Davide Bucci davbucciPleasenospamherE@tiscali.it
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.