Sommario:

Orologio a barre Nixie: 6 passi (con immagini)
Orologio a barre Nixie: 6 passi (con immagini)

Video: Orologio a barre Nixie: 6 passi (con immagini)

Video: Orologio a barre Nixie: 6 passi (con immagini)
Video: Ho comprato un altro orologio NIXIE TUBE: NON DOVEVO! 2024, Luglio
Anonim
Orologio Nixie Bargraph
Orologio Nixie Bargraph
Orologio Nixie Bargraph
Orologio Nixie Bargraph

Modifica 11/09/17 Con l'aiuto di Kickstarter ho rilasciato un kit per questo kit orologio! Include una scheda driver e 2 tubi Nixie IN-9. Tutto ciò che devi aggiungere è il tuo Arduino/Raspberry Pi/altro. Il kit lo trovate ma cliccando su questo link!

Quindi ho visto molti orologi Nixie online e ho pensato che fossero fantastici, tuttavia non volevo spendere $ 100+ su un orologio che non include nemmeno i tubi! Quindi con un po' di conoscenza dell'elettronica ho cercato tra i vari tubi nixie e circuiti. Volevo fare qualcosa di leggermente diverso dalla vasta gamma di orologi nixie dall'aspetto generalmente abbastanza simile. Alla fine ho optato per l'utilizzo di tubi per grafici a barre Nixie IN-9. Questi sono tubi lunghi e sottili e l'altezza del plasma incandescente dipende dalla corrente attraverso i tubi. Il tubo a sinistra è in incrementi di un'ora e il tubo a destra è in minuti. Hanno solo due conduttori e quindi rendono la costruzione di un circuito più semplice. In questo progetto, c'è un tubo dell'ora e un minuto, con le altezze del plasma in ogni tubo che rappresentano l'ora corrente. Il tempo viene mantenuto utilizzando un microcontrollore Adafruit Trinket e un orologio in tempo reale (RTC).

Passaggio 1: assemblaggio delle parti

Assemblaggio delle parti
Assemblaggio delle parti

Ci sono due sezioni, prima l'elettronica e in secondo luogo il montaggio e la finitura. I componenti elettronici richiesti sono: Adafruit Trinket 5V - $7.95 (www.adafruit.com/products/1501) Adafruit RTC - $9 (www.adafruit.com/products/264) 2x Nixie IN-9 bargraph ~ $3 per tubo su eBay 1x Alimentatore Nixie 140v ~ $ 12 su eBay 4 condensatori elettrolitici da 47 uF 4 resistenze da 3,9 kOhm 2 potenziometro da 1 kOhm 2 transistor MJE340 NPN ad alta tensione ~ 1 $ ciascuno 1 regolatore 5 v LM7805 ~ 1 1 presa da 2,1 mm ~ 1 1 scatola di progetto con pcb ~ 5 $ 1 x Alimentatore 12v DC (ne ho trovato uno vecchio da un gadget dimenticato da tempo) Saldatura, cavo di collegamento, ecc. Montaggio: Ho deciso di montare l'elettronica in una piccola scatola di plastica nera, quindi montare i tubi su un movimento antico dell'orologio. Per segnare l'ora ei minuti ho usato del filo di rame avvolto intorno ai tubi. Parti di montaggio: movimento dell'orologio antico - $ 10 eBay Filo di rame - $ 3 eBay Pistola per colla a caldo

Passaggio 2: circuito

Circuito
Circuito
Circuito
Circuito
Circuito
Circuito
Circuito
Circuito

Il primo passo è costruire l'alimentatore Nixie. Questo è arrivato come un piccolo kit da eBay, incluso un piccolo PCB e aveva solo bisogno che i componenti fossero saldati alla scheda. Questa particolare alimentazione è variabile tra 110-180v, controllabile con un piccolo potenziometro sulla scheda. Usando un piccolo cacciavite regolare l'uscita a ~140v. Prima di andare fino in fondo volevo testare i miei tubi Nixie, per fare questo ho costruito un semplice circuito di prova usando un tubo, un transistor e un potenziometro da 10k che avevo in giro. Come si può vedere nella prima figura, l'alimentazione a 140v è collegata all'anodo del tubo (gamba destra). Il catodo (gamba sinistra) viene quindi collegato alla gamba del collettore del transistor MJE340. Un'alimentazione da 5 V è collegata a un potenziometro da 10k che si divide a terra nella base del transistor. Infine l'emettitore a transistor è collegato a massa tramite un resistore limitatore di corrente da 300 ohm. Se non hai familiarità con i transistor e l'elettronica non importa, basta collegarlo e modificare l'altezza del plasma con la manopola del potenziometro! Una volta che funziona, possiamo guardare a fare il nostro orologio. Il circuito di clock completo può essere visto nel secondo schema elettrico. Dopo alcune ricerche ho trovato un tutorial perfetto sul sito Web di apprendimento di Adafruit che fa quasi esattamente quello che volevo fare. Il tutorial può essere trovato qui: https://learn.adafruit.com/trinket-powered-analog-m… Questo tutorial utilizza un controller Trinket e un RTC per controllare due amperometri analogici. Utilizzo della modulazione di larghezza di impulso (PWM) per controllare la deflessione dell'ago. La bobina dell'amperometro calcola la media del PWM in un segnale CC effettivo. Tuttavia, se usiamo il PWM direttamente per pilotare i tubi, la modulazione ad alta frequenza significa che la barra del plasma non rimarrà "bloccata" alla base del tubo e avrai una barra in bilico. Per evitare ciò ho mediato il PWM utilizzando un filtro passa basso con una costante di tempo lunga per ottenere un segnale quasi cc. Questo ha una frequenza di taglio di 0,8 Hz, questo va bene poiché aggiorniamo l'ora dell'orologio solo ogni 5 secondi. Inoltre, poiché i grafici a barre hanno una durata limitata e potrebbero dover essere sostituiti e non tutti i tubi sono esattamente uguali, ho incluso un potenziometro da 1k dopo il tubo. Ciò consente di modificare l'altezza del plasma per i due tubi. Per collegare il trinket all'orologio in tempo reale (RCT), collegare il pin 0 del trinket all'RTC-SDA, il pin 2 del trinket all'RTC-SCL e il trinket-5v all'RTC-5v e il Trinket GND alla massa dell'RTC. Per questa parte può essere utile visualizzare le istruzioni dell'orologio di Adafruit, https://learn.adafruit.com/trinket-powered-analog-…. Una volta che Trinket e RTC sono cablati correttamente, cablare i tubi nixie, i transistor, i filtri ecc. su una breadboard seguendo attentamente lo schema del circuito.

Per far parlare RTC e Trinket devi prima scaricare le librerie corrette da Adafruit Github. Hai bisogno di TinyWireM.h e TInyRTClib.h. Per prima cosa vogliamo calibrare i tubi, caricare lo schizzo di calibrazione alla fine di questa istruzione. Se nessuno degli schizzi alla fine funziona, prova lo schizzo dell'orologio di Adafruit. Ho modificato lo schizzo dell'orologio di Adafruit per funzionare in modo più efficace con i tubi nixie, ma lo schizzo di Adafruit funzionerà bene.

Passaggio 3: calibrazione

Calibrazione
Calibrazione

Una volta caricato lo schizzo di calibrazione, è necessario contrassegnare le graduazioni.

Ci sono tre modalità per la calibrazione, la prima imposta entrambi i tubi nixie alla massima potenza. Usalo per regolare il vaso in modo che l'altezza del plasma in entrambi i tubi sia la stessa e che sia leggermente al di sotto dell'altezza massima. Ciò garantisce che la risposta sia lineare sull'intero intervallo di clock.

La seconda impostazione calibra il tubo dei minuti. Cambia tra 0, 15, 30, 45 e 60 minuti ogni 5 secondi.

L'ultima impostazione lo ripete per ogni incremento di ora. A differenza dell'orologio Adafruit, l'indicatore delle ore si sposta con incrementi fissi una volta ogni ora. Era difficile ottenere una risposta lineare per ogni ora quando si utilizzava un misuratore analogico.

Una volta regolato il vaso, carica lo schizzo da calibrare per minuti. Prendi il filo di rame sottile e taglia un pezzo corto. Avvolgere questo intorno al tubo e attorcigliare le due estremità insieme. Fai scorrere questo nella posizione corretta e usando una pistola per colla a caldo posiziona una piccola goccia di colla da tenere nel posto giusto. Ripetere questa operazione per ogni incremento di minuto e ora.

Ho dimenticato di scattare qualsiasi foto di questo processo, ma puoi vedere dalle foto come è collegato il filo. Anche se ho usato molta meno colla solo per attaccare il filo.

Passaggio 4: montaggio e finitura

Montaggio e Finitura
Montaggio e Finitura
Montaggio e Finitura
Montaggio e Finitura
Montaggio e Finitura
Montaggio e Finitura

Una volta che i tubi sono tutti calibrati e funzionanti, è ora il momento di realizzare il circuito in modo permanente e montarlo su una qualche forma di base. Ho scelto un movimento dell'orologio antico perché mi piaceva il mix di antico, anni '60 e tecnologia moderna. Quando si trasferisce dalla breadboard alla strip board, sii molto attento e prenditi il tuo tempo assicurandoti che tutti i collegamenti siano effettuati. La scatola che ho comprato era un po' piccola ma con un po' di attenzione nel posizionamento e un po' di forzatura sono riuscita a farla stare tutta. Ho praticato un foro laterale per l'alimentatore e un altro per i cavi nixie. Ho coperto i fili nixie con un termoretraibile per evitare cortocircuiti. Quando l'elettronica è montata nella scatola, incollala sul retro del movimento dell'orologio. Per montare i tubi ho usato della colla a caldo e ho incollato le punte di filo ritorto al metallo, facendo attenzione che fossero dritte. Probabilmente ho usato troppa colla ma non si nota molto. Potrebbe essere qualcosa che può essere migliorato in futuro. Quando è tutto montato, carica lo schizzo dell'orologio Nixie alla fine di questo tutorial e ammira il tuo adorabile nuovo orologio!

Passaggio 5: Arduino Sketch - Calibrazione

#define HOUR_PIN 1 // Visualizzazione dell'ora tramite PWM su Trinket GPIO #1

#define MINUTE_PIN 4 // Visualizzazione minuti tramite PWM su Trinket GPIO #4 (tramite chiamate Timer 1)

int ore = 57;int minuti = 57; //imposta pwm minimo

void setup () { pinMode(HOUR_PIN, OUTPUT); pinMode(MINUTE_PIN, OUTPUT); PWM4_init(); //imposta le uscite PWM

}

void loop () { // Usalo per modificare i nixie pots per assicurarti che l'altezza massima del tubo corrisponda ad analogWrite(HOUR_PIN, 255); analogWrite4(255); // Usalo per calibrare gli incrementi dei minuti

/*

analogWrite4(57); // minuto 0 di ritardo(5000); analogWrite4(107); // minuto 15 di ritardo(5000); analogWrite4(156); // minuto 30 di ritardo(5000); analogWrite4(206); // minuto 45 di ritardo (5000); analogWrite4(255); // minuto 60 di ritardo (5000);

*/

// Usalo per calibrare gli incrementi orari /*

analogWrite(HOUR_PIN, 57); // 57 è l'uscita minima e corrisponde a 1am/pm delay (4000); //ritardo di 4 secondi analogWrite(HOUR_PIN, 75); // 75 è l'uscita che corrisponde a 2am/pm delay(4000); analogWrite(HOUR_PIN, 93); // 93 è l'uscita che corrisponde a 3am/pm delay(4000); analogWrite(HOUR_PIN, 111); // 111 è l'uscita che corrisponde a 4am/pm delay(4000); analogWrite(HOUR_PIN, 129); // 129 è l'uscita che corrisponde a 5am/pm delay(4000); analogWrite(HOUR_PIN, 147); // 147 è l'uscita che corrisponde a 6am/pm delay(4000); analogWrite(HOUR_PIN, 165); // 165 è l'uscita che corrisponde a 7am/pm delay(4000); analogWrite(HOUR_PIN, 183); // 183 è l'uscita che corrisponde a 8am/pm delay(4000); analogWrite(HOUR_PIN, 201); // 201 è l'uscita che corrisponde a 9am/pm delay(4000); analogWrite(HOUR_PIN, 219); // 219 è l'uscita che corrisponde a 10am/pm delay(4000); analogWrite(HOUR_PIN, 237); // 237 è l'uscita che corrisponde a 11am/pm delay(4000); analogWrite(HOUR_PIN, 255); // 255 è l'uscita che corrisponde a 12am/pm

*/

}

void PWM4_init() { // Imposta PWM su Trinket GPIO #4 (PB4, pin 3) usando Timer 1 TCCR1 = _BV (CS10); // nessun prescaler GTCCR = _BV (COM1B1) | _BV (PWM1B); // cancella OC1B al confronto OCR1B = 127; // inizializzazione del ciclo di lavoro al 50% OCR1C = 255; // frequenza }

// Funzione per consentire analogWrite su Trinket GPIO #4 void analogWrite4(uint8_t duty_value) { OCR1B = duty_value; // il dovere può essere da 0 a 255 (da 0 a 100%) }

Passaggio 6: schizzo Arduino - Orologio

// Orologio analogico del misuratore di Adafruit Trinket

// Funzioni di data e ora utilizzando un RTC DS1307 connesso tramite I2C e TinyWireM lib

// Scarica queste librerie dal repository Github di Adafruit e // installa nella directory delle librerie di Arduino #include #include

// Per il debug, decommenta il codice seriale, usa un amico FTDI con il suo pin RX collegato al Pin 3 // Avrai bisogno di un programma terminale (come il freeware PuTTY per Windows) impostato sulla // porta USB dell'amico FTDI a 9600 baud. Decommenta i comandi seriali per vedere cosa succede //#define HOUR_PIN 1 // Visualizzazione delle ore tramite PWM su Trinket GPIO #1 #define MINUTE_PIN 4 // Visualizzazione dei minuti tramite PWM su Trinket GPIO #4 (tramite chiamate Timer 1) //SendOnlySoftwareSerial Serial (3); // Trasmissione seriale su Trinket Pin 3 RTC_DS1307 rtc; // Imposta l'orologio in tempo reale

void setup () { pinMode(HOUR_PIN, OUTPUT); // definisce i pin del misuratore PWM come output pinMode(MINUTE_PIN, OUTPUT); PWM4_init(); // Imposta il timer 1 in modo che funzioni PWM su Trinket Pin 4 TinyWireM.begin(); // Inizia I2C rtc.begin(); // Avvia l'orologio in tempo reale DS1307 //Serial.begin(9600); // Avvia Serial Monitor a 9600 baud if (! rtc.isrunning()) { //Serial.println("RTC NON è in esecuzione!"); // la riga seguente imposta l'RTC sulla data e l'ora in cui questo sketch è stato compilato rtc.adjust(DateTime(_DATE_, _TIME_)); }}

void loop() { uint8_t valoreora,valoreminuto; uint8_t oravoltaggio, minuto voltaggio;

DateTime now = rtc.now(); // Ottieni le informazioni sull'RTC hourvalue = now.hour(); // Ottieni l'ora if(hourvalue > 12) hourvalue -= 12; // Questo orologio è di 12 ore minutevalue = now.minute(); // Prendi i minuti

minutevoltage = map(minutevalue, 1, 60, 57, 255); // Converti minuti in duty cycle PWM

if(hourvalue == 1){ analogWrite(HOUR_PIN, 57); } if(hourvalue == 2){ analogWrite(HOUR_PIN, 75); // ogni ora corrisponde a +18 } if(hourvalue == 3){ analogWrite(HOUR_PIN, 91); }

if(hourvalue == 4){ analogWrite(HOUR_PIN, 111); } if(hourvalue == 5){ analogWrite(HOUR_PIN, 126); } if(hourvalue ==6){ analogWrite(HOUR_PIN, 147); } if(hourvalue == 7){ analogWrite(HOUR_PIN, 165); } if(hourvalue == 8){ analogWrite(HOUR_PIN, 183); } if(hourvalue == 9){ analogWrite(HOUR_PIN, 201); } if(hourvalue == 10){ analogWrite(HOUR_PIN, 215); } if(hourvalue == 11){ analogWrite(HOUR_PIN, 237); } if(hourvalue == 12){ analogWrite(HOUR_PIN, 255); }

analogWrite4 (minuto voltaggio); // minuto analogwrite può rimanere lo stesso mentre la mappatura funziona // il codice per mettere il processore in sospensione potrebbe essere preferibile - ritarderemo il ritardo (5000); // controlla il tempo ogni 5 secondi. Puoi cambiare questo. }

void PWM4_init() { // Imposta PWM su Trinket GPIO #4 (PB4, pin 3) usando Timer 1 TCCR1 = _BV (CS10); // nessun prescaler GTCCR = _BV (COM1B1) | _BV (PWM1B); // cancella OC1B al confronto OCR1B = 127; // inizializzazione del ciclo di lavoro al 50% OCR1C = 255; // frequenza }

// Funzione per consentire analogWrite su Trinket GPIO #4 void analogWrite4(uint8_t duty_value) { OCR1B = duty_value; // il dovere può essere da 0 a 255 (da 0 a 100%) }

Consigliato: