Nixie-Uhr mit Arduino | Einfachstes Design
Komponenten und Verbrauchsmaterialien
![]() |
| × | 1 | |||
![]() |
| × | 1 |
Über dieses Projekt
Nach einem langen Arbeitstag habe ich es endlich geschafft, eine Nixie-Uhr mit Arduino und einem Opto-Isolations-Chip herzustellen, ohne dass ein Nixie-Treiber erforderlich ist, der schwer zu kaufen ist.
Sehen Sie sich das Video an, um eine vollständige Anleitung zu erhalten:
Teileliste für das Projekt:
1. Arduino UNO https://amzn.to/2P58O7s
2. Nixie-Röhre 6 Stück https://amzn.to/3aHyJvX
3. Optokoppler-Chip TLP627
4. DC-Aufwärtsmodul von 12VDC auf 390VDC https://amzn.to/30kpdK9
5. Steckbrett https://amzn.to/2uCrnsW
6. Echtzeituhrmodul DS3231 https://amzn.to/2SIyEzI
Kaufen Sie elektronische Komponenten auf utsource.net
Schritt 1. Schaltungsdesign

Die Schaltung verwendet einen Opto-Isolations-Chip, um die Nixie-Röhre (mit 150 VDC) von Arduino (mit 5 VDC) zu steuern. Durch die Matrixverbindung benötigen wir also nur 16 Ausgänge von Arduino, um 60 Lichter von 6 Nixie-Röhren zu steuern. Das Echtzeituhrmodul DS3231 wird verwendet, um die Zeit zu halten (sogar Strom abzuschalten), es wird mit Arduino über das I2C-Netzwerk kommuniziert. Arduino liest in Echtzeit und schaltet dann die Nixie-Lichter nacheinander in hoher Frequenz ein / aus, damit das menschliche Auge 6 Zahlen als dauerhaft sieht.
Schritt 2. Arduino-Code
//Youtube-Kanal:Engineer2you
#include
#include "DS3231.h"
RTClib RTC;
DS3231 Clock;
int Stunde;
int Minute;
int Sekunde;
const int nixie_0 =2;
const int nixie_1 =3;
const int nixie_2 =4;
const int nixie_3 =5;
konst int nixie_4 =6;
konst int nixie_5 =7;
konst int nixie_6 =8;
konst int nixie_7 =9;
konst int nixie_8 =10;
const int nixie_9 =11;
const int row_1 =0;
const int row_2 =1;
const int row_3 =14;
const int row_4 =15;
const int row_5 =16;
const int row_6 =17;
const int time_on =2;
void setup() {
pinMode(nixie_0, OUTPUT);
pinMode(nixie_1, OUTPUT);
pinMode(nixie_2, OUTPUT);
pinMode(nixie_3, OUTPUT);
pinMode(nixie_4, OUTPUT);
pinMode( nixie_5, AUSGANG);
pinMode(nixie_6, AUSGANG);
pinMode(nixie_7, AUSGANG);
pinMode(nixie_8, AUSGANG);
pinMode(nixie_9, AUSGANG);
pinMode(row_1, OUTPUT);
pinMode(row_2, OUTPUT);
pinMode(row_3, OUTPUT);
pinMode(row_4, OUTPUT);
pinMode(row_5 , AUSGANG);
pinMode(row_6, AUSGANG);
//Serial.begin(9600); // sollte KEIN serales println verwenden, es wirkt sich auf die Ausgabe von Pin D0 &D1 aus
Wire.begin();
}
void loop() {
//--- ----Uhrwert abrufen----------------------------------------
DateTime now =RTC.now();
Stunde =now.hour();
Minute =now.minute();
second =now.second();
/ /---------Uhrnummer anzeigen ----------------------
int J; //zweite Zahl von rechts
int k; //erste Zahl von rechts
j =second/10;
k =second%10;
//-----------zeige die erste Zahl der zweiten
off_all();
on_number(0,k+2);
delay(time_on);
//-----------zeige die zweite Sekundenzahl an
off_all();
on_number(1,j+2);
delay(time_on);
j =Minute/10;
k =minute%10;
//-----------erste Minutenzahl anzeigen
off_all();
on_number(14,k+2);
delay(time_on);
//-----------zeigt die zweite Minutenzahl an
off_all();
on_number(15,j+2 );
delay(time_on);
j =Stunde/10;
k =Stunde%10;
//-----------zuerst anzeigen Stundenanzahl
off_all();
on_number(16,k+2);
delay(time_on);
//-----------zeige die zweite Stundenzahl an
off_all();
on_number(17,j+2 );
delay(time_on);
}
void on_number(int row, int nixie){
digitalWrite(row, HIGH);
digitalWrite(nixie, HIGH );
}
void off_all(){
digitalWrite(row_1, LOW);
digitalWrite(row_2, LOW);
digitalWrite(row_3, LOW);
digitalWrite(row_4, LOW);
digitalWrite(row_5, LOW);
digitalWrite(row_6, LOW);
digitalWrite(nixie_0, LOW);
digitalWrite(nixie_1 , LOW);
digitalWrite(nixie_2, LOW);
digitalWrite(nixie_3, LOW);
digitalWrite(nixie_4, LOW);
digitalWrite(nixie_5, LOW);
digitalWrite(nixie_6, LOW);
digitalWrite(nixie_7, LOW);
digitalWrite(nixie_8, LOW);
digitalWrite(nixie_9, LOW);
delayMikrosekunden(400); // um den "Geistereffekt" auf andere Röhren zu verhindern
}
Grundsätzlich wird der Code vom Modul DS3231 in Echtzeit empfangen und über den Opto-Isolations-Chip an 6 Nixie-Röhren angezeigt.
Schritt 3. Bauen Sie die Schaltung auf





Dies ist nur ein Experiment, also habe ich alles im Steckbrett gemacht. Glücklicherweise funktioniert es beim ersten Mal, kein Problem
Im nächsten Schritt werde ich versuchen, eine Nixie-Uhr in einem MDF-Gehäuse mit guter Dekoration herzustellen, damit ich sie in meinem Zimmer aufstellen kann.
Code
- Code-Snippet Nr. 1
Code-Snippet Nr. 1Nur-Text
//Youtube-Kanal:Engineer2you#include#include "DS3231.h"RTClib RTC;DS3231 Clock;int Stunde;int Minute;int Sekunde;const int nixie_0 =2;const int nixie_1 =3; const int nixie_2 =4;const int nixie_3 =5; const int nixie_4 =6;const int nixie_5 =7;const int nixie_6 =8;const int nixie_7 =9;const int nixie_8 =10;const int nixie_9 =11;const int reihe_1 =0;konst int reihe_2 =1; row_3 =14;const int row_4 =15;const int row_5 =16;const int row_6 =17;const int time_on =2;void setup() { pinMode(nixie_0, OUTPUT); pinMode (nixie_1, AUSGANG); pinMode (nixie_2, AUSGANG); pinMode (nixie_3, AUSGANG); pinMode (nixie_4, AUSGANG); pinMode (nixie_5, AUSGANG); pinMode (nixie_6, AUSGANG); pinMode (nixie_7, AUSGANG); pinMode (nixie_8, AUSGANG); pinMode (nixie_9, AUSGANG); pinMode (Zeile_1, AUSGANG); pinMode (Reihe_2, AUSGANG); pinMode (Reihe_3, AUSGANG); pinMode (Reihe_4, AUSGANG); pinMode (row_5, AUSGANG); pinMode (row_6, AUSGANG); //Seriell.begin(9600); // sollte KEIN serales println verwenden, es wirkt sich auf die Ausgabe von Pin D0 &D1 aus Wire.begin ();}void loop () { //------------------ Uhrwert abrufen --------------------------- DateTime now =RTC.now(); Stunde =jetzt.Stunde (); Minute =jetzt.Minute(); zweite =jetzt.zweite(); //------------------ Uhrnummer anzeigen ---------------------- int j; // zweite Zahl von rechts int k; // erste Zahl von rechts j =zweite/10; k =zweiter%10; //-----------Erste Zahl von Zweitem anzeigen off_all(); on_number(0,k+2); Verzögerung (Zeit_ein); //-----------Zweite Nummer der Sekunde anzeigen off_all(); on_number(1,j+2); Verzögerung (Zeit_ein); j =Minute/10; k =Minute%10; //-----------erste Minutenzahl anzeigen off_all(); on_number(14,k+2); Verzögerung (Zeit_ein); //-----------Zeigt die zweite Minutenzahl off_all(); on_number(15,j+2); Verzögerung (Zeit_ein); j =Stunde/10; k =Stunde%10; //-----------erste Stundenzahl anzeigen off_all(); on_number(16,k+2); Verzögerung (Zeit_ein); //-----------Zweite Stundenzahl anzeigen off_all(); on_number(17,j+2); delay(time_on);}void on_number(int row, int nixie){ digitalWrite(row, HIGH); digitalWrite (nixie, HIGH);}void off_all () { digitalWrite (row_1, LOW); digitalWrite (row_2, LOW); digitalWrite (row_3, LOW); digitalWrite (row_4, LOW); digitalWrite (row_5, LOW); digitalWrite (row_6, LOW); digitalWrite (nixie_0, LOW); digitalWrite (nixie_1, LOW); digitalWrite (nixie_2, LOW); digitalWrite (nixie_3, LOW); digitalWrite (nixie_4, LOW); digitalWrite (nixie_5, LOW); digitalWrite (nixie_6, LOW); digitalWrite (nixie_7, LOW); digitalWrite (nixie_8, LOW); digitalWrite (nixie_9, LOW); VerzögerungMikrosekunden (400); // um "Geister"-Effekt auf andere Röhren zu verhindern}
Herstellungsprozess
- Arduino-Pov-Vision-Uhr
- DIY einfachste IV9 Numitron-Uhr mit Arduino
- Geschirrdesign mit E3.series
- Einfache Wordclock (Arduino)
- Arduino-Uhr mit islamischen Gebetszeiten
- Hauptuhr
- Münzprüfer mit Arduino steuern
- Arduino-Temp. Monitor und Echtzeituhr mit 3.2 Display
- Arduino mit Bluetooth zur Steuerung einer LED!
- Einfacher Wecker mit DS1302 RTC