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.