Zeitzeichenempfang mit DCF 77 - Empfänger

Fragen zur Zeit sind in Deutschland im Gesetz über die Zeitbestimmung (ZeitG) geregelt. Damit die Zeit für jedermann erreichbar ist, wird sie von der Physikalisch Technischen Bundesanstalt (PTB) dargestellt und über den Zeitzeichensender DCF-77 verbreitet. Die Aussendung der Zeitzeichen wird in diesem Dokument ausführlich beschrieben

Zeitzeichenempfänger gibt es in den verschiedensten Preisklassen.
Hier wurde eine low-cost-Lösung realisiert.

Im Jahr 2005 gab es bei der Kundenbindungsaktion einer Tankstellenkette für eine Sammelkarte und 3 Euro Zuzahlung einen Funkwecker aus chinesischer Produktion.
Im folgenden wird beschrieben, wie der Empfänger des Funkweckers ausgebaut und separat betrieben wird um über eine Stromschleife das Zeitsignal an einen Rechner (PC oder Microcontroller) weitergeben zu können.

Die verbleibende "empfängerlose Uhr" kann als reines Anzeigegerät (Tochteruhr) in die Stromschleife geschaltet werden.

Aktuell: Synchronisationsprobleme

Seit Ende 2006 werden in den ersten 15 bit des Zeittelegramms codierte Wetterinformationen gesendet. Seit dem synchronisiert die Uhr nur noch selten. Offensichtlich wird der Dekodieralgorithmus durch die Wetterinformationen beeinträchtigt.

Das Innenleben der Uhr

Nach dem Aufschrauben des Funkweckers fallen die Seitenabdeckungen und einige lose Tastenknöpfe heraus. Die Antenne befindet auf der Gehäuserückseite. Die Antennenabdeckung kann mit einem Messer abgehoben werden.

Von der Antenne führt eine verdrillte Leitung zum Empfänger. Die Empfängerbaugruppe ist in einen Schlitz der Uhrenleiterplatte eingelötet.

Empfänger und Antenne werden nun ausgebaut. Dazu wird zuerst die Antenne abgelötet und rückseitig aus dem Gehäuse genommen. Der Deckel wird wieder aufgeschnappt. Dann werden die beiden Batterieleitungen ausgelötet und die Hauptplatine abgeschraubt und vorsichtig aus dem Gehäuse genommen. Vorsicht!, die Folienverbindung zum Displayglas ist sehr empfindlich und kann leicht beschädigt werden.

Die an vier Lötstellen gehaltene Empfängerbaugruppe wird nun ausgelötet. Es bietet sich an, auch den Beeper auszulöten, da dieser bei der Verwendung als Tochteruhr nicht mehr gebraucht wird. Anschließend werden die Uhrenplatine mit Display wieder ins Gehäuse geschraubt, die Tasten und Seitenwände eingesetzt und das Gehäuse geschlossen.

Der Langwellenempfänger

Der Langwellenempfänger besteht aus einer Leiterplatte mit einem gebondeten Chip, einigen Kleinteilen und einer Ferritstabantenne. Der Empfänger wird mit 3,3V versorgt, die über einen Spannungsregler aus der Stromschleife gewonnen werden. Der Prozessor der Uhr war mit dem Empfänger über zwei Leitungen verbunden. Eine dient zum Einschalten des Empfängers (ON) und auf der Anderen liefert der Empfänger das DCF77-Signal (Signal). Der Empfänger wird auf Dauerbetrieb gestellt, indem die ON-Leitung auf GND gelegt wird. Das Ausgangssignal des Empfängers schaltet über einen Transistor eine rote Leuchtdiode, die den Stromfluß auf etwa 2,8 mA erhöht.

Die Verbindung zwischen Empfänger und Dekoder mit einer Stromschleife

Um Störungen des Datenempfangs zu vermeiden ist es wichtig den Empfänger am optimalen Empfangsort, möglichst weit entfernt von Störquellen, aufzustellen. Die Leitungen zur Signalübertragung und zur Energieversorgung des Empfängers dürfen keine Störungen zum Empfänger übertragen. Da die Frequenzanteile im Zeitzeichensignal unter 100 Hz liegen, reicht zur Verbindung zwischen Empfänger und Rechner eine zweiadrige verdrillte Leitung aus (Stromschleife). Damit kann der Betriebsstrom zum Empfänger geführt, das Signal zum Rechner übertragen, eine hohe Störunempfindlichkeit erreicht und die Leitungslänge bis in den km-Bereich ausgedehnt werden. Gleichtaktstörungen auf der Leitung können mit einer Ferritperle gemindert werden. Der Empfänger benötigt keine separate Stromversorgung.

Die Auslegung der Stromschleife

Die Stromschleife führt abhängig vom empfangenen Signal zwei verschiedene Ströme. Bei 100% der Trägeramplitude fließen nur der Betriebsstrom des Empfängers und der Ruhestrom des Spannungsreglers in Höhe von zusammen 90 µA. Bei der Trägerabsenkung wird ein Lastwiderstand zugeschaltet, der den Strom auf 2,8 mA erhöht. Das Stromverhältnis liegt damit bei etwa 1:30 und läßt eine Rückführung in ein Logiksignal mit hohem Störabstand zu. Durch das IC zur Betriebsspannungsstabilisierung des Empfängers wird die maximale Betriebsspannung des Emfängers auf 30 V begrenzt. Die minimale Betriebsspannung des Empfängers beträgt 3,8V. Durch Vorschalten eines Brückengleichrichters kann die Empfängerzuleitung polungsunabhängig ausgeführt werden, der Spannungsfall am Empfänger erhöht sich jedoch um zwei Diodendurchlaßspannungen. Die Stromschleife kann mit einer ungeregelten, gesiebten Gleichspannung versorgt werden.

Die Versorgung der Stromschleife und die Anschaltung des Microcontrollers

Am Microcontroller ATmega32 steht zur Auswertung des Signals der Analogeingang PA 7 zur Verfügung, mit dem die Spannung an einem Stromfühlerwiderstand gemessen wird. Der Analog-Digital Wandler wird dazu mit der Betriebsspannung als Referenz für den 8 Bit Betrieb konfiguriert. Der Widerstand 27 kOhm dient als Schutzwiderstand, um den Eingangsstrom auf 1 mA zu begrenzen. Bei einer Dimensionierung des Strommeß-Widerstands mit 330 Ohm ergibt sich für den "1"-Pegel eine Spannung von
2,8 mA * 330 Ohm = 0,92 V
und für den "0"- Pegel eine Spannung von
90 µA * 330 Ohm = 0,03 V.
Die zugehörigen Zählerstände sind 47 und 7. Die Schaltschwelle zur Erkennung, ob eine "0" oder eine "1" vorliegt, wird auf den Mittelwert gesetzt (47+7)/2 = 27. Mit der gemessenen Spannung könnten auch die Signale "Schleife unterbrochen" (Zählerstand=0) und "Empfänger kurzgeschlossen" (Zählerstand=255) ermittelt werden. Bei dieser Dimensionierung ist es möglich, die Stromschleife mit 5 V zu versorgen, wenn nur der Empfänger in die Stromschleife geschaltet wird. Nach Verändern der Schaltschwelle auf 127 kann an den Eingang des Controllers auch ein Logiksignal (high/low) angeschlossen werden.

Weitere Anzeigegeräte in der Stromschleife

Zur Signalanzeige kann im einfachsten Fall eine Leuchtdiode benutzt werden, die dazu in die Stromschleife geschaltet wird und die Sekundenimpulse des Empfangssignals durch eine Helligkeitsänderung anzeigt. An einer roten Leuchtdiode fallen dann etwa 1,5 V ab.

Die Uhr, aus der der Empfänger entnommen wurde, kann als reines Anzeigegerät (Tochteruhr) in die Stromschleife geschaltet werden. Dazu muß der Beeper aus der Uhr entnommen werden, weil er beim Reset-Beep durch den hohen Strombedarf einen Kurzschluß erzeugt. Die Betriebsspannung der Tochteruhr wird durch den aus zwei roten Leuchtdioden bestehenden Parallelregler gewonnen. Damit sich durch die Stromänderung von 90 µA auf 2,8 mA die Betriebsspannung der Uhr und dadurch der Kontrast der Anzeige nicht allzusehr ändern, kann der Arbeitswiderstand so angepaßt werden, daß er etwa 2,7 mA aufnimmt und so die Betriebsspannungsänderung gering hält. Das Datensignal wird mit einem Fühlerwiderstand 470R aus der Stromhöhe abgeleitet. Im nebenstehenden Beispiel hat das Datensignal an der Uhr die gleiche Polarität wie im Empfänger.

Die Dekodierungssoftware

Die Dekodiersoftware wurde als Modul realisiert und sollte möglichst wenig Resourccen binden. Die Integration in ein komplexes System sollte einfach möglich sein. Um Interruptkonflikte zu vermeiden wird das Empfangssignal abgetastet. Eine Abtastfrequenz von 10 Hz erfüllt bei dem gegebenen Signal bereits die Nyquistbedingungen. Um die Genauigkeit bei der Erfassung des Sekundenanfangs zu erhöhen, werden die Abtastzeitpunkte auf 10 ms genau vorgegeben. Die tatsächliche Zeit wird mit dem freilaufenden 16-bit-Zähler aus dem Systemtakt abgeleitet. Die Dekodiersoftware wird zu Beginn initialisiert und sollte dann etwa alle 10 ms aufgerufen werden. Der Aufruf kann "gelegentlich" erfolgen. Ein häufigeres Aufrufen des Programms ist unschädlich. Je nach Zeitpunkt, kann es bei Lücken von 40 ms bereits zu Fehldekodierungen kommen, während eine Pause von 500 ms zu einer anderen Zeit auch unschädlich sein kann. Im ungünstigsten Fall kommt es zu einem Dekodierungsfehler. Das Risiko, dass dadurch die Uhrzeit verstellt wird, ist wegen der umfangreichen Prüfung der Daten jedoch gering.

Die Störsicherheit des Empfangs

Die über das DCF-Signal bekannten Daten werden zur Erhöhung der Störsicherheit eingesetzt. Sobald ein Sekundenimpuls empfangen wurde, kann der Zeitpunkt zu dem der nächste Sekundenimpuls zu erwarten ist, genau bestimmt werden. Um Toleranzen auszugleichen, wird der nächste Sekundenanfang in einem Zeitfenster von 100 ms gesucht. Mit dem Sekundenanfang kann der optimale Abtastzeitpunkt für das Datenbit, 150 ms nach dem Sekundenanfang, bestimmt werden. Das synchronisierte System beginnt mit der Signalabtastung 50 ms vor dem erwarteten Sekundenbeginn. 50 ms nach dem errechneten Zeitpunkt wird ein Timeout festgestellt. Störungen in der übrigen Zeit bleiben ohne Einfluß. Dieses Verfahren wurde von Mitarbeitern der PTB in Hardware realisiert und in der Funkschau, Heft 19/1974 veröffentlicht.

Das Schaltungsprinzip wurde von mir für ein Z80-System in Software nachgebildet und in Funkschau 22/1984, Seite 67 ff. veröffentlicht. Die Funkschau hat freundlicherweise ihre Erlaubnis zur Veröffentlichung des Artikels im Internet erteilt.

Die Polung des Signals

In der Regel verlangen die Dekoder nach einem korrekt "gepolten" Datensignal. Der Trägerabsenkung muß dabei ein fester Logikpegel zugeordnet werden. Die Polungsbezeichnungen normal und invertiert sind jedoch nicht eindeutig. Eine an der Sekundenmarke orientierte Signalbezeichnung würde den "1"-Pegel für die Sekundenmarke als normal festlegen. Bei einer von der Modulationshüllkurve ausgehenden Bezeichnung wäre das gleiche Signal als invertiert zu bezeichnen. Der hier realisierte Dekoder arbeitet unabhängig von der Polarität des Datensignals. Der Dekoder arbeitet mit einer Zustandsmaschine, die 5 Zustände (0..4) kennt:
Zustand Beschreibung
0 Signalpegel feststellen und als Pegel des ausgetasteten Signals ("Datenbit-Pegel") annehmen. Anschließend zum Zustand 1.
1 Auf die erste Signaländerung (Flanke) warten und den Zeitpunkt festhalten (=Zählerstand des freilaufenden Zählers). Anschließend zum Zustand 2.
2 Bis zur nächsten Flanke in diesem Zustand verbleiben.
Nach erkennen der Flanke wird die Pulsdauer berechnet. Wenn die Pulsdauer größer als 250 ms ist, liegt jetzt ein Sekundenbeginn vor. Nach 150 ms geht es weiter mit Zustand 3.
Wenn die Pulsdauer kleiner als 250 ms ist, befinden wir uns am Ende eines Datenbits. Unsere Annahme zum Signalpegel war falsch, deshalb wird die Zuordnung des Signalpegels nun umgekehrt. Außerdem wird der Zeitpunkt festgehalten. Weiter mit Zustand 2.
3 Der Zustand 3 wird 150 ms nach einem Sekundenbeginn erreicht. Hier wird das Signal in der Bitmitte abgetastet. Das Ergebnis wird in ein 64 Bit langes Schieberegister geschoben. Anschließend wird auf den nächsten Sekundenbeginn gewartet. Der ideale Zeitpunkt ist in 850 ms. Wir wählen jedoch ein Abtastfenster von +/- 50 ms und fangen deshalb in 800 ms mit der Abtastung an. Der nächste Zustand ist Nr. 4.
4 Dieser Zustand wird bis zu 10 mal aufgerufen. Es wird das Signal abgetastet. Wenn der Sekundenbeginn gefunden wurde, wird in 150 ms Zustand 3 ausgeführt.
Wenn 50 ms nach dem erwarteten Sekundenanfang kein Signal vorliegt (d.h. es wurde 10 mal erfolglos abgetastet), befinden wir uns in der 59. Sekunde. Wenn genügend Datenbits (38) gelesen wurden, wird das Signal dekodiert.
Nach 900 ms wird das Signal wieder abgetastet, um den Minutenbeginn zu finden (im Zustand 4 bleiben).
Wenn zu wenige Datenbits vorliegen, wird der Empfänger neu synchronisiert (Zustand 1).

Die Speicherung der Daten

Die empfangenen Bits werden in einem Schieberegister abgelegt. Zur 59. Sekunde liegen dann alle empfangenen Datenbits in der richtigen Position vor. Die Daten sind auswertbar, wenn mindestens die letzten 38 Datenbits einer Minute empfangen wurden. Die Initialisierungszeit liegt damit zwischen 40 und 99 Sekunden (im Mittel bei ca. 70 s).

Dekodieralgorithmen, die erst ein komplettes Telegramm mit einer Dauer von einer Minute empfangen müssen, benötigen 60 bis 119 Sekunden bis zur ersten Dekodierung. (mittlere Initialisierungszeit ca. 90 s)

Darüber hinaus besteht die Möglichkeit, die Zeitinformation aus zwei aufeinander folgenden Telegrammen zusammenzusetzen. Die Initialisierungszeit liegt dann zwischen 40 und 60 Sekunden. (mittlere Initialisierungszeit ca. 50 s) Der Programmieraufwand ist jedoch höher.

Fehlererkennung mittels Paritätsbit und Plausibilitätsprüfung

Zur Übertragungssicherung wird im Sendesignal die Minuteninformation mit dem Prüfbit P1 auf gerade Parität ergänzt. Die Stunde wird mit dem Prüfbit P2 und die Datumsinformationen werden mit P3 abgesichert. Doppelbitfehler lassen sich mit dem Paritätsbit jedoch nicht erkennen.
Da bei schwachem Empfang Doppelbitfehler nicht zu vermeiden sind, wird das Telegramm zusätzlich auf Plausibilität geprüft. Dazu wird der zulässige Bereich der Ziffern (0..9) und der Zahlen (00..59 Minuten, 00..23 Stunden, 1..31 Tage und 1..12 Monate) überwacht. Weitere Prüfungen am Einzeltelegramm werden unverhältnismäßig aufwendig. So könnte z. B. geprüft werden, ob der Tag zum Monat gehört ("31. Februar") oder ob der Wochentag zum Kalenderdatum gehört und ob die Zeitzonenbits zueinander (MEZ <> MESZ) und zum Datum passen.
Eine noch höhere Sicherheit könnte auf Kosten der Dekodierzeit erreicht werden, wenn die korrekte Folge zweier aufeinanderfolgender Telegramme geprüft wird.
zurück