Termometro Nixie – conteggio…

luca 11/01/2016 0
Lo sviluppo di questo progetto è descritto in dieci articoli: per l’elenco in ordine cronologico segui questo link

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:

nixie-18

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:

nixie-19

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:

nixie-14 nixie-15

nixie-16 nixie-17

Demo

Ecco un breve filmato del prototipo in funzione:

Leave A Response »

Questo sito usa i cookie per poterti offrire una migliore esperienza di navigazione maggiori informazioni

Questo sito utilizza i cookie per fonire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo.

Chiudi