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.
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!
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.
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!