ScopeClock mit D7-16 und Atmel-Controller

von Sascha Ittner
[Titelfoto]
Oszi-Röhren haben mich schon immer fasziniert. Beim Stöbern in der Röhrenbude bin ich dann irgendwann auf die Nixie-Clocks gestoßen und über verschiedene Links auf einer Seite mit der Beschreibung einer Scope-Clock gelandet. Jetzt war klar: So ein Ding muß ich auch haben. Allerdings sollte sie ein schönes analoges Zifferblatt haben. Nix gefunden, also selber machen:

Allgemeines

Schaltplan, Bestückungsplan, Stückliste und Layout hab ich als PDF-Datei abgelegt. Zusätzlich gibts ein ZIP-File mit diesen Daten im Postscript- und Eagle-Format. Hier ist auch der Sourcecode für den Controller enthalten. Ein paar nette Bilder stehen in der Galerie.

Die Uhr ist netzsynchronisiert (Zeittakt und Displaysteuerung) und auf 50 Hz abgestimmt. Durch die Synchronisierung der Displaysteuerung kann die magnetische Abschirmung der Röhre entfallen, was besonders vorteilhaft ist, wenn die Uhr z.B. in ein Plexiglasgehäuse eingebaut wird. Die Refresh-Rate liegt bei 25 Hz.

Zum Einstellen der Uhrzeit dienen zwei Taster (Minuten / Stunden) mit verzögerter Wiederholfunktion. Alternativ dazu besteht die Möglichkeit, die Uhr als Funkuhr zu betreiben. Dazu kann das im PC-Bereich weit verbreitete RPC-Modul oder ein Standardempfänger mit TTL-Ausgang verwendet werden. Nach jedem Empfang eines fehlerfreien DCF-Pakets (also normalerweise jede Minute) wird die Uhrzeit neu gestellt. Je nach "Zeitquelle" werden im Display verschiedene Symbole angezeigt:

Symbol
Beschreibung

Uhr läuft netzsynchronisiert.
Kein DCF-Empfang
oder kein Empfänger angeschlossen.

DCF-Impulse festgestellt aber fehlerhaftes
Paket empfangen oder noch nicht
synchronisiert (nach dem Einschalten)

Korrektes Zeitsignal empfangen
und Uhr synchronisiert

Hardware

Röhre

Als Röhrentyp wollte ich ursprünglich die gute alte DG7-32 einsetzen. Als ich bei Jan Wüsten nachfragte sagte er mir, sie sei leider nicht lieferbar, er könne mir aber eine D7-16 (Datenblatt) mit ähnlichen Daten anbieten. Diese kam dann einige Zeit später bei mir an, und ich war begeistert. Ein schönes, kompaktes Teil. Nur das Sockelprobem wollte gelöst werden, doch dazu gleich mehr. Andere Typen sollten an der Schaltung auch laufen, ggf. müssen hierzu jedoch einige Anpassungen am Spannungsteiler für die Röhrenspannungen vorgenommen werden (R50-R58).

Die Röhre ist wie folgt mit der Platine verbunden:

Röhrensockel
Röhrenpin
Signal
Beschreibung
Pin  Platinenstecker CON3
[Röhrensockel] 1
FIL1
Heizung 6,3 VAC
10
2
FIL2
Heizung 6,3 VAC 9
3
G1
Strahlstrom
8
4
K
Kathode
7
5
G3
Fokus
6
6
DX2
X-Ablenkung
3
7
DX1
X-Ablenkung 4
8
A
Anode
5
9
DY1
Y-Ablenkung
2
10
DY2
Y-Ablenkung 1
11
nc
-
-

Da ich keinen passenden Sockel gefunden habe (zugegeben, ich hab auch nicht lange gesucht), habe ich die FAS901 Einzelkontakte von Jan verwendet und eine passende Platine gebaut. Das Resultat ist hier zu sehen (mit einem schönen vorkonfektionierten Platinenstecker, gibts z.B. bei Conrad oder Reichelt).

Netzteil

Zum Netzteil ist nicht viel zu sagen. Es besteht aus einem Niederspannungs- und Hochspannungsteil. Ersteres benutzt die üblichen Linearregler um die +5V, +12V und -12V zu erzeugen. Ich hab hier mit Sicherheits-Dioden nicht gegeizt, vielleicht etwas paranoid, aber ich fühl mich so einfach besser; kostet ja auch nicht die Welt ;-).

Der Hochspannungsteil arbeitet für den +250V-Zweig mit Einweggleichrichtung und Z-Dioden Stabilisierung (für die Ablenkverstärker). Die -600V werden über einen Spannungsverdoppler erzeugt.

Ablenkverstärker (X/Y-Amp)

Um eine symmetrische Ansteuerung der Röhre zu erlauben werden Differenzverstärker mit den Hochspannungstransistoren BF459 verwendet. Ein Eingang dient hierbei der Einstellung des Nullpunkts, der andere der Steuerung durch den D/A-Wandler. Da dieser Eingang über Widerstände vorgespannt ist, um bei 0V Eingangsspannung etwa in der Mitte das Arbeitsbereichs zu landen, ist hier eine niederohmige Ansteuerung wichtig. Die Transistorpärchen sind jeweils thermisch miteinander zu koppeln, indem sie miteinander verschraubt werden (Wärmeleitpaste nicht vergessen).

Austastverstärker (Z-Amp)

Um den Strahl während der Positionierung auf ein neues Bildobjekt austasten zu können, wird mit T7 über den Koppelkondensator C12 die Gitterspannung an G1 unter die Sperrpannung abgesenkt. R60 und D6 dienen dazu, C12 in den Hellphasen schneller aufzuladen, als er in den Dunkelphasen entladen wird. Dies ist in diesem Anwendungsfall nicht unbedingt erforderlich, da die Dunkelphasen verhältnismäßig kurz sind, aber mal sehen, wozu sich die Schaltung noch so alles verwenden läßt. Vielleicht mag ja jemand Fehrnseh schauen ... :-).

uController + D/A-Konverter

OK, nun zu "The Brain". Ich habe hier den 89C4051 von Atmel verwendet, da er schön klein ist, genügend Speicher und I/O-Ports bietet, 8031-kompatibel ist (ist halt Geschmackssache) und mit 24MHz auch ausreichend schnell arbeitet (OK, sind intern zwar nur 2 MHz, reicht aber trotzdem). Der Chip erzeugt die Daten für den D/A-Wandler, fragt die Tasten zum Stellen der Uhrzeit ab, wertet die Netzsync-Impulse aus und decodiert das DCF-Signal. Jede Menge zu tun also.

Der Controller gibt die X/Y-Werte für die Strahlpositionen an Port 1 aus und wählt mit P3.5 den entsprechenden Wandler im TLC7528 aus (dieser Chip beinhaltet zwei 8-Bit DACs).  Die Beschaltung mit den OpAmps ist im Grunde die Stadardapplikation aus dem Datenblatt mit der zusätzlichen Möglichkeit, die Amplitude und damit die Bildgröße einstellen zu können. Die Ausgänge der OpAmps steuern direkt die Ablenkverstärker an. Über P3.7 des Controllers wird der Austastverstärker gesteuert.

Zur Netzsynchronisierung wird über die Impulsformerstufe um T2 der Eingang P3.2 des Controllers angesteuert, um pro Vollwelle einen Interrupt für die Software auszulösen.

Die DCF77-Impulse (positiv, d.h. kurz HI, lang LOW) gelangen über den Impulsformer um T1 an den Eingang P3.3 des Controllers. CON2 ist so beschaltet, daß er direkt mit einem 9-poligen SUBD-Flachbandstecker verbunden werden kann und dieser dann zu dem Eingangs erwähnten RPC-Empfangsmodulen passt. Wichtig ist hierbei, das PIN1 am Pfostenstecker unbelegt bleibt. Andere Module können dank des +5V-Pins und des TTL-kompatibelen DCF-Eingangs ebenfalls verwendet werden. Hier zur Übersicht die Pinbelegung des SUBD- und Pfostensteckers:

SUBD-Stecker
Steckerpin
Signal
Pin an CON3
[RS232 Pinout]
1
nc
2
2
DCF Eingang
4
3
+5V
6
4
-12V
8
5
GND
10
6
nc
3
7
+12V
5
8
nc
7
9
nc
9

CON1 bietet schließlich noch die Möglichkeit, Stunden- (zwischen Pin 1+2) und Minutentaster (zwischen Pin 3+4) zum manuellen Stellen der Uhr anzuschließen.

Software

Die Software besteht aus einem kleinen C-Programm zum Erzeugen der Display-Daten und dem eigentlichen Controllerprogramm in 8031-Assembler, daß die errechneten Daten quasi "abspielt". Das C-Programm errechnet die absoluten Start- und Endpunkte der Linien für Zeiger, Zifferblatt, Zahlen und Symbole und erzeugt daraus eine Datei, die dem Assembler-Sourcecode zugefügt und mit ihm zusammen assembliert wird.

Das 8031-Programm liest diese Werte nun aus (über Pointer-Tabellen, damit die Objekte dynamisch ausgetauscht werden können), errechnet per Bresenhem-Algorithmus die fehlenden Zwischenpunkte und führt diese Daten den D/A-Wandlern zu.

Zusätzlich existiert eine Interrupt-Routine, die jede Netzvollwelle angesprungen wird. Hier werden die Zähler für die Uhrzeit gepflegt, die DCF-Zeit ausgewertet, die Taster abgefragt und die Pointer-Tabelle für die Anzeige der Objekte aufgebaut.

Wer mehr wissen mag: "Use the source, Luke" :-)

Als Build-System hab ich ein Linux-System mit Paul's 8031 Assembler und GNU-C benutzt. Durch Aufruf von "make" wird das HEX-File zum Programmieren des Controllers erzeugt. Das Makefile enthält zusätzliche Hilfsfunktionen zum Upload und Verify der Daten zum/im Controller (ist natürlich vom Programmer abhängig). Dies ist wirklich praktisch beim Entwickeln. Das ganze sollte mit Cygwin übrigens auch unter Windows laufen.

Inbetriebnahme und Abgleich

Für den Fall, daß jemand das Teil nachbauen möchte, hier die Vorgehensweise, die sich bewährt hat:

Zuerst sollte man ohne ICs und Röhre die Spannungen des Netzteils prüfen (jeweils gegen Masse):
Abgleich:
Bleibt mir nur noch viel Spaß mit den Bildern zu wünschen und evtl. beim Nachbauen :-).

Schöne Grüße,
Sascha

Ein wichtiger Tip: Die Platinen können, in bester Industriequalität (grüner Stopplack, verzinnte Lötpunkte) zum Selbstkostenpreis bei Sven bestellt werden, seine Mailadresse ist: platinen@gmx.net.

Galerie

Zur Vergrößerung einfach auf die Bilder klicken. Der Trafo auf den Bildern ist nur ein Versuchstrafo. Als entgültige Version werde ich einen kleinen 24VA-Trafo verwenden.


Laufende Uhr von vorne

Laufende Uhr von oben

Gruppenfoto mit Trafo

Platinenansicht

Sockel für D7-16

D7-16

RPC DCF-77 Empfänger

Kurzes Video (AVI)


Archiv

ZIP-File mit Source-Code, Eagle-Dateien und Layouts im Postscript-Format
PDF-File mit Schaltplan, Bestückungsplan, Stückliste und Layouts
HEX-File zum programmieren des Controllers

Links

Andere Scope-Clocks im Web

Cathode Corner
Nixie- und Scope-Clocks aus Amiland. Coole Technik. Benutzt analog erzeugte Kreise, Kreissegmente und Linien um die Bilddarstellung zu realisieren. Daher absolut pixelfrei. Leider kommerziell, also: Keine Pläne, kein Sourcecode. Schade.

Homemade Scope Clock DG7 tube and PIC16F876
Diese Seite inspirierte mich zum Bau meiner Uhr :-). Danke!

Bilder einer anderen Version der obigen Uhr.

Datenblätter


How to use a Third Overtone Crystal with a 80C51 Family Application Note
AT89C4051 microcontroller
TLC7528 D/A converter
NE5532 dual operational amplifier
DCF-77 Referenz
D7-16GJ

Tools

Paul's 8051 Tools, Projects and Free Code
Hier gibt es u.a. den freien 8031-Assembler as32.

www.electronic-kits.de
Das ist der Atmel-Programmierer den ich verwendet habe (ATMEL 89xxxx Programmer)

Bauteile

Frag Jan zuerst
Gute Quelle für vieles (auch für die D7-16)

Wir, Sascha Ittner und ich, Marcus Mattern haben vor einiger Zeit das ScopeClock Projekt von Sascha bei SourceForge als Projekt angelegt, damit Verbesserungen und änderungen an einem Punkt zusammenfließen können. Hier ist der Link auf die URL: http://sourceforge.net/projects/openscopeclock/
Hier können sich auch andere an dem Projekt beteiligen, wenn sie wollen.