DCF Nixie Clock

Als Einsteigerprojekt in die Welt der Mikrocontroller wollte ich schon immer eine Funkuhr aufbauen, jedoch suchte ich lange nach einer guten Idee, denn eine gewöhnliche Uhr mit z.B. LCD-Anzeige bekommt man heute ja schon beim Aldi mit jeder Packung Vollkorn-Semmeln nachgeschmissen. Eines Tages entdeckte ich dann im Internet eine Seite, die sich mit sogenannten "Nixie-Röhren" befasste. Und nach einigen Bildern, die auf dieser Seite zu sehen waren, wusste ich: Das ist es! So eine Uhr will ich bauen.

Was ist das: "Nixie-Röhre"??

Bevor es die modernen LED-Siebensegmentanzeigen gab, wurden Ziffern und teilweise auch Sonderzeichen (+, - etc.) mit Hilfe von Nixie-Röhren dargestellt. Vom Prinzip her sind Nixie-Röhren größere Glimmlampen, also gasgefüllte Glasröhren, in denen durch Anlegen einer Hochspannung eine Glimmentladung erzeugt wird. Die Anode besteht aus einem dünnen Drahtgitter, die mehrfach vorhandenen Kathoden bilden die Ziffern von 0-9 (bzw. allgemein die darzustellenden Zeichen), wie die folgende Abbildung (Quelle: Jogi's Röhrenbude) schematisch zeigt:

Schema einer Nixie-Röhre

Es leuchten also nur die Ziffern oder Symbole auf, deren Kathoden an Spannung gelegt sind. Dadurch gehören die Nixies zu den Kaltkathodenröhren, nicht zu verwechseln mit den "normalen" Röhren, die ja zur Elektronenemission einen Glühfaden beinhalten und sich sehr wohl aufheizen. Nixie-Röhren bleiben im Betrieb kalt oder werden nur leicht warm.

"Nixie" steht übrigens für "Numeric Indicator eXperimental No. 1", naja, oder so ähnlich ;-)

Warum eine Uhr mit so alten Anzeigen bauen?

Nixie-Röhren werden seit ca. 30 Jahren, also seit es Leuchtdioden gibt, nicht mehr hergestellt. Warum also nicht einfach moderne Leuchtdioden hernehmen, die noch dazu weniger Energie verbrauchen und viel einfacher anzusteuern sind ? Es ist die Faszination, die diese Röhren ausstrahlen. LED- oder LC-Anzeigen sind in gewissem Sinne kalt, Nixie-Röhren strahlen eine "ästhetische Wärme" aus, und wer einmal das orangefarbene Leuchten der Röhren gesehen hat, wird in ihren Bann gezogen :-) Insofern ist eine solche Uhr etwas ganz Besonderes, und das nicht nur aufgrund ihrer absoluten Seltenheit.

Welche Röhren soll man nehmen?

Zunächst stellte sich die Frage, welche Röhren für den Bau der Uhr verwendet werden sollen, und wo diese beschafft werden können. Als Bezugsquelle fand ich bald die Webseite von Jan Wüsten, auf der aus einem recht üppigen Angebot an Röhren ausgewählt werden kann. Nach einiger Überlegung entschied ich mich für die russische IN-14, eine schlanke Röhre mit einer Ziffernhöhe von 18mm, einem Durchmesser von 19mm und einer Gesamthöhe von 55mm. Sie besitzt neben den Ziffern 0-9 zwei Dezimalpunkte (links und rechts) und kann dank der 35mm langen Anschlussdrähte direkt in die Schaltung eingelötet werden, eine Röhrenfassung ist nicht erforderlich.

Als ich daraufhin 8 Stück bestellte, war ich natürlich gespannt, wie die Röhren in echt aussehen werden. Ordentlich verpackt kamen sie bereits wenige Tage später an. Und so sehen sie aus:

Die russische IN-14

Das Pflichtenheft

Jetzt musste natürlich um die Röhren herum noch der "Rest" gebaut werden. Auch hier gibt es im Internet viele Anlaufstellen, von wo man sich Ideen holen kann. Aus den vielen dort vorgestellten Uhren wurden die Highlights herausgepickt und in das Pflichtenheft meiner Uhr übernommen. Und so sehen die Spezifikationen aus:

Mit diesen Spezifikationen ging es an den nächsten Arbeitsschritt, das Entwerfen der Schaltung.

Funkuhr-Software

Die fertige Software - enthalten in einem einzigen C-File, was ich heute wohl so auch nicht mehr machen würde - kann hier heruntergeladen werden. Mit im Zip-Archiv ist auch das Makefile sowie ein Projekt für Programmer's Notepad 2.

Entgegen der sonst üblichen Prozedur habe ich ausnahmsweise mit der Software begonnen, da ich das Schreiben der Software für die Funkuhr als schwierige Herausforderung sah. Zur Entwicklung wurde noch ein 2x16-Zeichen-LCD als Anzeige verwendet, das dank fertiger Routinen von Peter Fleury schnell und einfach angesteuert werden kann.

Zentraler Baustein ist ein ATmega8 von Atmel, der das Signal der DCF-Funkuhr empfängt und dekodiert. Nach einem erfolgreichen Empfang soll eine interne Quarzuhr synchronisiert werden und alleine weiterlaufen, der DCF-Empfänger wird dann ausgeschaltet. Da ja auch ein Quarz nicht immer ganz genau geht, soll die Uhr - neben der Synchronisation beim Einschalten - einmal am Tag, um 4 Uhr nachts, synchronisiert werden.

Um Empfangsprobleme und unkorrekte Daten (z.B. 37 Uhr 68) auszuschließen, führt die Software zwei Tests durch. Zum Einen wird die Parität der Daten anhand der vom DCF-Sender mitgeschickten Parity-Bits überprüft, und zum Zweiten findet ein Folge-Check statt, d.h. es müssen zwei aufeinander folgende Datensätze empfangen werden, damit die Software diese als korrekt annimmt. Die Wahrscheinlichkeit, dass zwei Datensätze die Fehler genau dort haben, wo die Daten wieder als aufeinanderfolgend gelten, ist schon sehr gering. Nur wenn beide Tests erfolgreich sind, wird die Uhrzeit übernommen.

Da es wirklich eines meiner allerersten Mikrocontroller-Projekte war (die Uhr ist 2004 entstanden!), hatte ich anfangs den Ehrgeiz, alles in Assembler zu schreiben ... Naja, der Ehrgeiz war nach der ersten Woche recht schnell verflogen *würg*. Schnell ging ich dann auf WinAVR und den AVR-GCC über und schrieb die Software in C, womit ich auch deutlich schneller zum Erfolg kam, wie nachfolgendes Bild zeigt (die DCF-Antenne wurde natürlich nur für's Bild auf das Entwicklungsboard gelegt, sie ist was den Empfang angeht ansonsten schon ein klein wenig heikel und mag kein Metall in der Nähe...):

Die russische IN-14

Eine Anpassung auf die Anforderungen in der Nixie-Uhr war dann nicht mehr schwierig, da ja nur die Displayroutine und die Abfrage eines Tasters noch geändert und hinzugefügt werden mussten.

Hardware

Hier könnt ihr euch den Schaltplan der DCF Nixie Clock als PDF herunterladen, während es schräg gegenüber das komplette Target3001-Projekt als Download gibt (erstellt mit der kostenfreien PCB Pool-Version).

Display-Ansteuerung

Im Laufe der Arbeit an der Hardware hat sich gezeigt, dass zwei Platinen für die Uhr benötigt werden, da eine alleine zu groß und zu gedrungen ausfallen würde. Die Röhren finden mitsamt ihrer Ansteuerelektronik auf der oberen Platine Platz, während Netzteil und Prozessor auf der unteren sitzen. Beide Platinen haben eine Größe von 210 x 80 mm und sind über die Leisten K1/K4 und K2/K6 miteinander verbunden. Für die Displayplatine wurden - nicht zuletzt auch aus optischen Gründen - einige Bauteile in SMD-Ausführung gewählt.

Um mit 16 Verbindungen auszukommen, wurden drei 8 Bit-Latches verwendet, die die Anzeigeinformation für jeweils 2 Röhren speichern (die Ziffern 0-9 werden durch ihre BCD-Codes dargestellt, die jeweils 4 Bit benötigen; mit 8 Bit können demnach 2 Röhren versorgt werden). Die Übertragung erfolgt, indem zuerst der Code auf die Portleitungen des Controllers gegeben und anschließend das Latch durch einen kurzen HIGH-Impuls am Pin ENL aktiviert wird. Übrigens können einzelne Röhren dunkelgeschaltet werden, indem einfach ein BCD-Code größer 10, also beispielsweise 0xF, an die entsprechende Stelle geschrieben wird.

Es sind nicht alle Treiberstufen für sämtliche Zahlen implementiert, da bei der ganz linken Stelle (Zehnerstelle Stunde/Tag) nur die Ziffern 0, 1, 2 und für die Datumsanzeige noch die 3 benötigt werden, bei der 3. Stelle (Zehnerstelle Minute/Monat) nur die Ziffern 0 bis 5. Die Latches IC7 bis IC9 vom Typ 74HC573 speichern die Daten für die jeweiligen Anzeigen und geben diese auf die BCD- nach Dezimal-Dekoder IC1-6 vom Typ CD4028. Die Dekoder steuern über Basisvorwiderstände die Hochvolt-Treibertransistoren vom Typ SMBTA42 an, die eine Kollektor-Emitterspannung von bis zu 300 Volt vertragen. An die Kollektoren sind direkt die Kathoden der Nixies angeschlossen, deren Anoden über einen Vorwiderstand von 33 Kiloohm an der Betriebsspannung in Höhe von 200V liegen. Diese Dimensionierung ergibt einen Betriebsstrom für die Nixies von etwa 2 Milliampere.

Zusätzlich kann der Controller über R16 und T10 direkt die (rechtsseitigen) Dezimalpunkte aller Einer-Stellen aktivieren. Dieses Feature wird für die Datumsanzeige benutzt, während der Anzeige der Uhrzeit sind die Dezimalpunkte ausgeschaltet.

Die LED D1 wird zur Anzeige des DCF-Signals verwendet, um optisch den Empfang zu kontrollieren und den Empfänger ausrichten zu können, so dass ein sauberes Signal erhalten wird.

Mikrocontroller

IC11 ist der Controller der Uhr, der sämtliche Funktionen steuert. Es handelt sich um einen ATmega8 von Atmel. Um den Controller zum Programmieren nicht aus der Schaltung nehmen zu müssen, ist als ISP-Schnittstelle die 6polige Stiftleiste K5 vorgesehen, die an der Rückseite der Uhr zugänglich ist. So kann jederzeit eine eventuell neue oder veränderte Software aufgespielt werden. Q1 ist ein 4MHz-Quarz, der den Systemtakt für den Prozessor festlegt. Mit den Werten von C12 und C13 muss eventuell ein wenig experimentiert werden, bis die (interne Quarz-)Uhr richtig läuft und nicht mehr falsch geht. Ich habe mit Werten von 27pF gute Erfahrungen gemacht, meine Uhr läuft damit über Stunden hinweg exakt synchron zu einer zweiten Funkuhr.

Die Ports PB0 bis PB2 schalten die Latches auf der Displayplatine, PC2 aktiviert die Dezimalpunkte. Die BCD-Daten für das Display werden an Port D angelegt. An die 3polige Mini-DIN-Buchse K3 wird der abgesetzte DCF-Empfänger angeschlossen, der seine Betriebsspannung über den Transistor T52 vom Typ BC558 an Pin 3 der Buchse erhält. Masse liegt an Pin 5 und am Schirm. Ist PC0 auf LOW-Pegel, schaltet T52 durch und der Empfänger ist aktiviert. Nach der Synchronisation wird der Empfänger durch ein HIGH an PC0 ausgeschaltet, damit die Empfangs-LED nicht ständig weiterblinkt.

R59 ist der Pull-Up-Widerstand für den Open-Collector-Ausgang (an Pin 7) des DCF-Empfangsmoduls, der auch nur bei eingeschaltetem Empfänger aktiv ist. Das DCF-Signal gelangt dann über den Schutzwiderstand R63 an PC1 des Controllers und gleichzeitig über R62 an die Basis von T53, welcher die LED zur Empfangskontrolle (auf der Displayplatine) schaltet.

Schließlich ist an PC3 noch der Taster angeschlossen, über den die Datumsanzeige aktiviert wird. Bei nicht gedrücktem Taster ist PC3 über R70 auf LOW-Pegel, wird der Taster gedrückt, wird der Portpin auf HIGH gezogen. Die Kombination aus R70 und C18 dient zur Entprellung des Tasters, eine weitere Softwareentprellung ist nicht vorgesehen, da der Taster sowieso nur einen 5 Sekunden-Timer auslösen soll und nicht für Zählvorgänge etc. benutzt wird.

Netzteil

Das Netzteil muss zum Einen eine möglichst saubere 5 Volt-Betriebsspannung für die Logik und den Controller bereitstellen, andererseits aber auch die zum Betrieb der Röhren notwendigen 200 Volt mittels eines Step-Up-Wandlers generieren. Die Eingangsspannung der Schaltung gelangt zunächst auf eine 500mA-Sicherung zum Schutz bei eventuellen Defekten. Anschließend folgt der Spannungsregler vom Typ 7805, der eine Spannung von 5 Volt erzeugt. Mit den zahlreichen Kondensatoren und Elkos werden diese 5 Volt stabilisiert (die 100nF-Kondensatoren sind auf der Platine verstreut bei den ICs angeordnet).

Um den störträchtigen Step-Up-Wandler von den empfindlichen 5 Volt möglichst gut abzuschotten, wurde die Drossel L1 vorgesehen, die zusammen mit C11 und C15 einen LC-Tiefpass darstellt. Der darauf folgende Schaltungsteil um IC12, dem universellen Schaltregler-IC MC34063, ist der einzige Schaltungsteil, welcher nicht selbst erdacht und entwickelt wurde. Er ist der Homepage von Stefan Kneller entnommen und generiert eine Hochspannung von 200V, die mit dem Spannungsteiler R65, R66 und R67 heruntergeteilt und dem IC zurückgemeldet wird. Das IC schaltet periodisch den MOSFET T56 ein, woraufhin sich ein Strom durch L2 aufbaut. Beim Ausschalten von T56 versucht dann L2 durch eine Spannungsspitze, den Stromfluss aufrecht zu erhalten. Diese Spannungsspitze lädt über D2 den Hochvolt-Elko C19. Jener wird solange gepumpt, bis die 200V erreicht sind. R71 schließlich dient als Stromfühler, um bei zu hohem Stromfluss (z.B. durch Kurzschluss) den Wandler auszuschalten. T56 wird über die Treibertransistoren T54 und T55 angesteuert, welche wiederum durch IC12 über den Spannungsteiler R68/R69 gesteuert werden.

Die Platinen

Da die Uhr ja in ein transparentes Gehäuse eingebaut werden soll, muss das Innenleben schon ein wenig was hermachen. Ein Aufbau auf Lochraster kommt also nicht in Frage (zumal die Röhren nicht im Standard-Rastermaß sind). Für meine Uhr habe ich deshalb ein Layout auf zwei doppelseitigen Platinen mit Hilfe von Target3001! entworfen und im PCB-Pool fertigen lassen. Der Überzug mit Lötstoplack macht mächtig was her, wie das folgende Foto der beiden Platinen zeigt:

Platinen der DCF Nixie Clock

Die obere Platine ist die Displayplatine. Die vorderen, im Kreis angeordneten Lötpunkte dienen zur Aufnahme der 6 Röhren, dahinter sind einige Plätze für die SMD-ICs zu erkennen. Die untere Platine ist die Netzteilplatine, hier auf der Lötseite dargestellt. Sie besitzt eine große Massefläche, die jedoch im Bereich des Step-Up-Wandlers ausgespart ist. Auch die Displayplatine besitzt eine große Massefläche, die jedoch im Foto nicht zu erkennen ist, da sie sich auf der Lötseite befindet. Elektrisch werden die beiden Platinen über 16 Drahtabschnitte verbunden, mechanisch über vier M4-Schrauben mit Distanzröllchen jeweils an den Ecken.

Da die Platinen nicht direkt als preiswert zu bezeichnen sind, war es schon ein flaues Gefühl im Magen, als ich die Bestellung abgeschickt habe. Wusste ich doch nicht, ob sich nicht doch ein Fehler eingeschlichen hatte und die Platinen wertlos machte.

Umso gespannter war ich, als ich zunächst die Displayplatine bestückte und testete. Bis auf ein paar schlechte Lötstellen bei den SMD-Transistoren (die Lötflächen des SOT-Gehäuses sind wohl ein bißchen klein geraten) funktionierte sie jedoch tadellos ! Nach der Bestückung der Prozessorplatine konnte dann die Uhr bereits zusammengebaut und in Betrieb genommen werden. Nach dem Programmieren mit der vorbereiteten Software lief die Uhr los, und die Freude war groß, als sie nach etwa zweieinhalb Minuten mit der Atomuhr in Braunschweig synchronisierte.

Nach dem Bau des Gehäuses und der Montage war sie fertig -- meine DCF Nixie Clock !


Bildergalerie

Zum Abschluss ein paar Bilder der fertigen Uhr. Blick auf die Displayplatine:

DCF Nixie Clock 1

Detailansicht zweier IN-14-Nixies; gut zu erkennen sind auch die um die Röhren angeordneten SMD-Treibertransistoren.

DCF Nixie Clock 2

Seitenansicht der fertigen Uhr.

DCF Nixie Clock 3

Die Uhr in Betrieb. Links ist der abgesetzte DCF-Empfänger im schwarzen Kästchen zu sehen.

DCF Nixie Clock 4

Von vorne: Zeitanzeige ...

DCF Nixie Clock 5

... und Datumsanzeige.

DCF Nixie Clock 6


Nachbauten

Die Uhr wurde inzwischen auch von anderen nachgebaut. Hier einige Fotos der Uhr von Peter, er hat statt der IN-14 die nach oben leuchtenden IN-12B verwendet, als Treiber-ICs setzt er den russischen 74141 ein.

Nachbau von Peter 1
Nachbau von Peter 2
Nachbau von Peter 3

Die im Folgenden gezeigte Uhr von Henning trägt blaue LEDs unter den Röhren und eigene IN-3 als Trennzeichen. Eagle-Layout-Files hierzu gebe ich auf Anfrage gerne weiter.

Nachbau von Henning 1
Nachbau von Henning 2
Nachbau von Henning 3