Oggi ho lavorato ad un prototipo per comprendere come utilizzare Arduino per “comandare” una nixie. L’obiettivo è stato scrivere uno sketch per visualizzare le cifre da 0 a 9 in sequenza.
Schema elettrico
Iniziamo ad analizzare lo schema del prototipo:
Come spiegato nel precedente post, la nixie presenta un terminale (anodo) che va collegato tramite una resistenza da 10Kohm all’alimentatore ad alta tensione (circa 170V). Gli altri terminali (catodi) sono collegati ai rispettivi PIN dell’integrato 74141 (oppure K155ID1). Questo integrato è un BCD to decimal driver: in base al valore BCD (binary-coded decimal) presente sui 4 PIN A-B-C-D, attiva la corrispondente uscita.
Il datasheet dell’integrato riporta la tabella di verità, ovvero quale uscita è attiva per ogni combinazione di ingressi:
Ad esempio, se abbiamo lo stato (D,C,B,A) = (0,0,1,1) l’uscita attiva sarà la 3 e quindi 3 sarà la cifra visualizzata dalla nixie.
Ho utilizzato un Arduino Pro Micro e collegato i PIN 2,3,4,5 ai PIN A,B,C,D del driver. Ho infine collegato alimentazione (5V) e massa di Arduino e driver all’uscita a bassa tensione fornita sempre dal modulo di alimentazione.
Sketch
Lo sketch (disponibile nel mio repository Github), definisce come matrice la tabella di verità sopra riportata:
byte bcd[10][4] = { {0,0,0,0}, // 0 {0,0,0,1}, // 1 {0,0,1,0}, // 2 {0,0,1,1}, // 3 {0,1,0,0}, // 4 {0,1,0,1}, // 5 {0,1,1,0}, // 6 {0,1,1,1}, // 7 {1,0,0,0}, // 8 {1,0,0,1}, // 9 }; |
All’interno del setup(), configuro tutti e 4 i PIN collegati al driver come output:
for(int i = 0; i < 4; i++) pinMode(nixiePins[i], OUTPUT); |
mentre nel loop() semplicemente ciclo continuamente tra i valori 0…9, accedo alla relativa posizione della matrice e invio sui PIN di output la codifica BCD corrispondente:
for(int j = 0; j < 10; j++) { for(int i = 0; i < 4; i++) digitalWrite(nixiePins[i], bcd[j][i]); delay(500); } |
Prototipo
Ho realizzato il prototipo su una basetta millefori, effettuando tutti i collegamenti tramite kynar wire:
Demo
Ecco un breve filmato del prototipo in funzione: