Nixie-Röhren-Uhr mit Arduino UNO – Schritt-für-Schritt-Anleitung
Komponenten und Zubehör
| Komponente | Menge |
|---|---|
| Arduino UNO | 1 |
| Nixie-Röhren (z. B. IN-12 oder IN-14) | 6 |
| Optokoppler TLP627 | 1 |
| DC-DC Step-Up Modul (12 V → 390 V) | 1 |
| Steckplatine (Breadboard) | 1 |
| Echtzeituhr-Modul DS3231 | 1 |
Elektronische Bauteile auch bei utsource.net erhältlich.
Über dieses Projekt
Nach langer Entwicklungszeit ist es gelungen, eine Nixie-Uhr mit Arduino und Optokoppler zu realisieren – ohne teure, schwer beschaffbare Nixie-Treiberchips.
Schritt 1: Schaltungsdesign
Der Optokoppler TLP627 trennt die Arduino-Logik (5 V) galvanisch von der Hochspannung der Nixie-Röhren (ca. 150–170 V). Durch Matrix-Verdrahtung steuern 16 Arduino-Ausgänge 60 einzelne Ziffernsegmente (6 Röhren × 10 Ziffern). Das DS3231-Modul hält die Zeit über I2C auch bei Stromausfall (Batteriepuffer). Der Arduino liest die Zeit zyklisch aus und multiplexed die Anzeige so schnell, dass das Auge ein flackerfreies Bild wahrnimmt.
Schritt 2: Arduino-Code
// YouTube-Kanal: engineer2you
#include <Wire.h>
#include "DS3231.h"
RTClib RTC;
DS3231 Clock;
int hour, minute, second;
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 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() {
for (int i = 2; i <= 11; i++) pinMode(i, OUTPUT);
pinMode(row_1, OUTPUT); pinMode(row_2, OUTPUT);
pinMode(row_3, OUTPUT); pinMode(row_4, OUTPUT);
pinMode(row_5, OUTPUT); pinMode(row_6, OUTPUT);
// Serial.begin(9600); // NICHT verwenden – belegt D0/D1
Wire.begin();
}
void loop() {
DateTime now = RTC.now();
hour = now.hour(); minute = now.minute(); second = now.second();
// Sekunden (zweistellig)
int j = second / 10; int k = second % 10;
off_all(); on_number(0, k + 2); delay(time_on);
off_all(); on_number(1, j + 2); delay(time_on);
// Minuten
j = minute / 10; k = minute % 10;
off_all(); on_number(14, k + 2); delay(time_on);
off_all(); on_number(15, j + 2); delay(time_on);
// Stunden
j = hour / 10; k = hour % 10;
off_all(); on_number(16, k + 2); delay(time_on);
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);
for (int i = 2; i <= 11; i++) digitalWrite(i, LOW);
delayMicroseconds(400); // Verhindert "Ghosting"
}
Schritt 3: Aufbau
Der Prototyp wurde auf Steckplatine aufgebaut und funktionierte auf Anhieb. Die Bilder zeigen die Verdrahtung der Matrix, des Step-Up-Converters und des DS3231.
Geplant ist ein Gehäuse aus MDF für den dauerhaften Einsatz.
Code
Der vollständige Sketch ist oben eingebettet. Er nutzt die Bibliotheken Wire.h und DS3231.h.
Weiterführende Links
- Video-Anleitung (YouTube: engineer2you)
- Bauteil-Links (Amazon/Affiliate im Original)
Herstellungsprozess
- Arduino POV-Uhr: Persistence-of-Vision LED-Display selbst bauen
- Retro-Numitron-Uhr mit Arduino bauen: Einfach, zuverlässig & energieeffizient
- Elektrokabelbaum-Design mit E3.series effizient gestalten
- DIY Arduino Word Clock – Elegante Wortuhr mit RTC & Schieberegistern
- Arduino Echtzeituhr für islamische Gebetszeiten bauen
- Einen eigenen LED-Master-Clock mit Alarm bauen – aus 12 Metern Entfernung ablesbar
- Smartes Sparschwein: Münzprüfer mit Arduino Nano steuern
- Arduino Temperaturoverwachung & Echtzeituhr mit 3,2″ TFT-Display
- LED per Bluetooth mit Arduino steuern – Einfache DIY-Anleitung
- Zuverlässigen Wecker mit DS1302 RTC und Arduino UNO bauen