Mein DCF77-Simulator
Funkuhren sind eine tolle Sache: sie stellen sich selbst, indem sie das DCF77-Signal
empfangen, sie gehen immer genau richtig, und sie stellen sich auch automatisch
auf Sommer- und Winterzeit um.
Was aber, wenn man ins Ausland umzieht? In der Nähe von Deutschland funktionieren
diese Uhren ja noch, aber weiter weg wird es schwierig. Und wenn man sich in einer
anderen Zeitzone aufhält, bekommt man sowieso die falsche Zeit angezeigt.
Um dem abzuhelfen, baute ich mir einen DCF77-Simulator, der zumindest in einigen
Metern Umkreis meine Funkuhr wieder korrekt laufen lässt.
Uhrzeit per GPS
Als Quelle für die Uhrzeit ist das GPS-System bestens geeignet. Bereits für etwa 30 Euro
kann man im Versandhandel Empfängermodule bestellen. Ich besorgte mir das NL-504ETTL
von Navilock, das die Informationen
im NMEA-Protokoll über eine einfache serielle Schnittstelle ausgibt. Dazu darf ich sagen,
dass ich mit diesem Modul sehr zufrieden bin. Selbst mitten in meiner Wohnung bestimmt
es innerhalb von 1 bis 2 Minuten seinen Ort und findet bis zu 12 Satelliten!
Das Herz: eine C-Control
Die Steuerung übernahm eine alte C-Control, die ich einem früheren, inzwischen ausgedienten
Projekt entnahm. Sie kommuniziert ebenso wie das GPS-Modul mit 9600 Baud, bequemer kann
man es nicht haben. Ich musste allerdings den Pegelwandler MAX232 herausnehmen und separat
über Steckkontakte verdrahten, um mit Hilfe von Jumpern verschiedene Kommunikationswege
schalten zu können:
C-Control – Computer (Programmieren und Debuggen)
C-Control – GPS-Modul (Betrieb des Gerätes ohne zwischengeschalteten Pegelwandler)
GPS-Modul – Computer (Testen des Moduls)
Zu beachten waren allerdings die verschiedenen Spannungen. Das 5-Volt-Signal der C-Control
verringerte ich über einen einfachen Spannungsteiler auf 3,3 Volt für das GPS-Modul; für
den umgekehrten Weg waren keine Maßnahmen erforderlich, der C-Control genügen 3,3 Volt
als Signalspannung.
An die C-Control ist ein LCD-Modul angeschlossen, das die Uhrzeit anzeigt und außerdem
weitere Informationen: Zeitzone, Anzahl der Satelliten, Koordinaten etc. Durch Drücken
einer Taste kann man Menüs aufrufen, über die man die Zeitzone und auch die Uhrzeit
manuell einstellen kann. Eine Leuchtdiode blinkt im Takt des DCF77-Signals und zeigt
über verschiedene Farben an, ob gerade Sommerzeit, Winterzeit oder nichts von beiden
aktuell ist.
Nach dem Einschalten schickt die C-Control zuerst mal einen Befehlsstring in das GPS-Modul
und stellt damit ein, dass dieses nur zwei bestimmte Meldungen ausgibt:
$GPGGA für die Uhrzeit und die Anzahl der empfangenen Satelliten
$GPRMC für die Koordinaten des Standortes und das Datum
Auf diese Weise wird Zeit eingespart, denn das Erkennen und Auswerten dieser Informationen,
das Anzeigen der Uhrzeit und das Ausgeben des DCF77-Signals soll ja in einer einzigen
Sekunde stattfinden.
Es stellte sich heraus, das 9600 Baud zu schnell sind, um die Meldungen per C-Control-BASIC
empfangen und auswerten zu können. Diese Funktionen musste ich in Assembler programmieren.
Sobald 1 Satellit gefunden wurde, wird die UTC-Zeit angezeigt. Mit mindestens 4 Satelliten
ist auch der Standort bekannt. Daraus kann die Zeitzone bestimmt werden. Eigentlich wollte
ich die Grenzen von verschiedenen Zeitzonen als Polygone speichern und berechnen, in welchem
Polygon sich das Gerät befindet, aber dazu wären sehr aufwändige Fließkommafunktionen
erforderlich gewesen, während die C-Control nur Ganzzahlenarithmetik mit 16 Bit beherrscht.
Ich beschränkte mich dann auf eine Sammlung einfacher Rechtecke.
Ein großes Rechteck deckt fast ganz Mitteleuropa ab. Etliche kleine Rechtecke sind für Osteuropa
und Westeuropa zuständig, sie stehen hinter dem großen Rechteck und haben dadurch bei der
Auswertung sozusagen das "letzte Wort". Die Standortzuordnung erfolgt durch Vergleichen der
Grenzkoordinaten, das geht schnell und einfach. Dieses System ist natürlich sehr grob, aber ich
gehe davon aus, dass ich dieses Gerät nicht dichter als 50km bei einer Zeitzonengrenze einsetzen werde,
dementsprechend sind die Rechtecke gewählt. Mit Hilfe von
Google Maps habe ich die Rechtecke gezeichnet und ihre Koordinaten bestimmt.
Über die Zeitzone wird die UTC-Zeit aus dem GPS-Modul in die korrekte lokale Zeit
umgerechnet – unter Berücksichtigung der Sommer- und Winterzeit.
Schließlich kodiert die C-Control noch Uhrzeit und Datum als DCF77-Signal und schaltet damit
einen kleinen Langwellensender. Das DCF77-Signal überträgt jedoch immer die Daten für die folgende
Minute, das heißt, ich muss immer jeweils eine Minute in die Zukunft rechnen. Um dabei größere
Umstände (Schaltjahr, Sommerzeit etc.) zu umgehen, schalte ich während der 59. Minute jeder Stunde
einfach das Signal ganz aus.
Der Langwellensender
Zuerst eine wichtige Warnung: dieser Sender darf nicht im Gebiet
der Bundesrepublik Deutschland betrieben werden!
Allerdings gibt es dazu ja auch keinen Grund, denn wer in Deutschland wohnt, benötigt dieses
Gerät ja überhaupt nicht. Wer im Ausland wohnt, ist verpflichtet, sich über die dortige
Gesetzeslage zu informieren!
Da der praktische Aufbau dieses Senders und die Dimensionierung der Bauteile mangels Vorbilder
im Internet nicht gerade trivial ist, möchte ich hier auf einige Besonderheiten eingehen.
Hierzu verweise ich auf den Schaltplan.
Zuerst einmal muss man wissen, dass die Empfänger in Funkuhren sehr schmalbandig sind, daher
muss die Sendefrequenz exakt auf 77,5 kHz liegen, was nur durch einen Quarz erreicht werden
kann. Anders als in gängigen Schaltungen mit Quarzen im MHz-Bereich müssen hier relativ hohe
Widerstände benutzt werden.
Ein 5-Volt-Level auf die Diode unterbricht das Signal. Beim echten DCF77 wird das Signal auf
25 Prozent gedrosselt, aber dies nachzubauen, hielt ich für sinnlose Mühe. Am Rand des
Empfangsbereiches kommen die 25 Prozent sowieso nicht mehr an, also kann man den Sender
auch gleich auf 0 Prozent drosseln, also komplett abschalten.
Der Sender ist einfach aufgebaut. Das Problem steckt in der Antenne. Alle Konstruktionen, die auf der
Wellenlänge basieren (Lambda/4 o.ä.), sind ungeeignet, da die Wellenlänge einfach zu groß
ist. Deshalb habe ich ein Art Rahmenantenne gewählt, wie sie von Funkamateuren im unteren Frequenzbereich
eingesetzt wird. Im Schalplan sind absichtlich keine Werte genannt, weil man hier um Experimentieren nicht
herumkommt. Ich habe im Inneren des Gehäuses etwa 35 Windungen Kupferlackdraht direkt an der
Gehäusewand entlang gewickelt. Diese Spule ist die Rahmenantenne und bildet gleichzeitig mit dem
parallel geschalteten Kondensator einen Schwingkreis, der auf 77,5 kHz abgestimmt sein muss. Dazu setzte
ich anstelle des Quarzgenerators einen frei schwingenden Oszillator ein, der zwischen etwa 10 und 200 kHz
einstellbar war. Die Sinuskurve am Kollektor des Transistors zeigte ich auf einem Oszilloskop an.
Es war deutlich zu sehen, wie die Amplitude bei einer bestimmten Frequenz ein Maximum erreichte.
Durch Austesten verschiedener Kondensatoren im unteren nF-Bereich näherte ich mich der
gewünschten Impulsdauer von knapp 13 Mikrosekunden. Die weitere Justierung erfolgte durch
Abwickeln von einigen Windungen der Rahmenantenne. Wichtig erschien mir auch, dass
Kondensator und Transistor dicht am Gehäuse liegen, damit der Schwingkreis praktisch
gar keine Zuleitungen hat. Nachdem der Sender einigermaßen genau abgestimmt war, ersetzte ich den
frei schwingenden Generator durch die Quarzschaltung.
Auch diese Rahmenantenne bewirkt keine Wunder. Eine größere Reichweite als 10 Meter
konnte ich nicht nachweisen. Sie hängt natürlich auch stark von der Bauweise der Wohnung
und von der Empfindlichkeit der Uhren ab. Wichtig ist jedoch, dass die Rahmenantenne
aufrecht steht, die Richtung zur Empfängeruhr ist dabei egal. Wenn sie flach liegt,
verringert sich die Reichweite deutlich.