DCF77 - der Zeitzeichensender

DCF77 ist ein Langwellensender, er steht bei Mainflingen in der nähe von Frankfurt. Er sendet Tag und Nacht Zeitzeichen, die im Umkreis von bis zu 2000 km empfangen werden können.
Die Sendefrequenz beträgt 77,5 kHz. Es wird ein ununterbrochenes Trägersignal gesendet, dessen Amplitude immer genau zu Beginn einer Sekunde für 100 oder 200 Millisekunden auf 25% abgesenkt wird. Kurze Impulse bedeuten logisch Null, lange eins. So wird in den Sekundenimpulsen die genaue Zeit der jeweils folgenden Minute verschlüsselt. Der 59. Impuls einer Minute fällt aus, der Beginn des nächsten Impulses kennzeichnet den Anfang der Minute.

Das genaue Zeittelegramm

Sekunde
 00      : immer 0
 01 - 14 : verschlüsselte Wettervorhersage
 15      : R 0=normale 1=Reserveantenne
 16      : Ankündigung des Wechsels von Sommer/Winterzeit
           eine Stunde lang vorher=1 sonst 0
 17 - 18 : Offset zu UTC,
           man kann auch sagen bei Sommerzeit ist Bit 17=1 im Winter Bit 18=1
 19      : Ankündigung einer Schaltsekunde
           eine Stunde lang vorher=1 sonst 0
 20      : Startbit, immer 1
 21 - 27 : Minuten BCD-codiert, Bit 21 ist LSB
 28      : Paritätsbit für Minuten
 29 - 34 : Stunden BCD-codiert, Bit 29 ist LSB
 35      : Paritätsbit für Stunden
 36 - 41 : Tag im Monat, BCD-codiert
 42 - 44 : Wochentag. 1=Montag 2=Dienstag .. 7=Sonntag
 45 - 49 : Monat, BCD-codiert
 50 - 57 : Jahr BCD-codiert, letzte zwei Stellen (ohne Jahrhundert)
 58      : Paritätsbit für Bit 36-57
 59      : kein Impuls, beim nächsten fängt eine neue Minute an

DCF77 zum basteln

Der Selbstbau einer Funkuhr ist heutzutage eigentlich nicht mehr rentabel, da es die Dinger für 7,95 EUR oder so beim Bäcker gibt. Dafür kann man es nicht selbst machen.
Trotzdem macht es Spass, sowas selbst zu bauen...

DCF77-Dekoder mit PIC

Das erste hier vorgestellte Projekt zeigt Uhrzeit und Datum auf einem alphanumerischen LC-Display mit zwei Zeilen an:

Versuchsaufbau Versuchsaufbau auf einem Steckbrett.
Die Uhr ist noch nicht synchronisiert.
Der 'Antennenturm' ist innen weiss.
Die 'Wellen' blinken im Takt des DCF-Signals.

Im wesentlichen habe ich mit dieser Schaltung meine Software getestet.
Als DCF Empfänger ist ein fertiges Modul vorgesehen (z.B. Conrad 641138). Für dieses Modul ist der Transistorpuffer nicht erforderlich, es braucht jedoch einen Pull-Up Widerstand gegen +5V. Die Sekunden-Impulse müssen als logische Eins rauskommen. Der Puffer ist für andere Module mit einem schwachen Open-Collector Ausgang vorgesehen, aber meist nicht notwendig. Die Signalpolarität kann im Programm umgedreht werden.

Software

Die Software hat im laufe der Zeit ein Eigenleben entwickelt, verschiedene Anzeigeformate und Sprachen sind realisiert. In der aktuellen Version läuft sie auch auf dem leistungsfähigerem und trotzdem preiswerteren PIC16F627/628, nicht nur auf dem alten PIC16F84.
Ein grosser Vorteil des 16F628 ist der universelle Timer 1, den der 16F84 nicht hat. Es ist damit möglich, den Prozessor mit 4MHz laufen zu lassen, der 3,2768MHz-Quarz der alten Version ist wohl nicht immer leicht zu bekommen.
Anzeigenformate und Taktfrequenz lassen sich im Quelltext per #define einstellen.
Geschrieben ist das Programm in Assembler für Microchip MPLAB.

Die aktuelle Uhrzeit wird auch über eine serielle Schnittstelle mit 9600 Bit/s 8n1 ausgegeben:

095127,190305,6<cr><lf>

bedeutet zum Beispiel: 'Samstag 19.03.05 09:51:27'.

Eigentlich ist das Ganze eine Quartzuhr, die ständig mit dem DCF77-Signal abgeglichen wird. Es werden immer zwei aufeinanderfolgende empfangene Minuten verglichen. Ist die neue um eine Minute grösser als die alte, wird die Zeit in die interne Uhr übernommen. Ansonsten wird einfach die interne Zeit weitergezählt und angezeigt. Das geht so lange, bis zwei aufeinanderfolgende Zeittelegramme zueinander passen.

Dieses Verfahren bringt eine recht gute Fehlererkennung mit sich, ohne die Paritätsbits zu verwenden.

Uhrzeit Jetzt ist die Uhr synchronisiert.

Inzwischen beherrscht die interne Quartzuhr auch die automatische Sommer/Winterzeit-Umstellung. Dadurch hat die Uhr auch dann keinen 'Schluckauf' mehr, wie in alten Versionen der Software.

Nixie Uhr 1

Seit Jahren liegt in meinem Keller eine Platine mit sechs Nixieröhren und den dazugehörigen Treibern. Sie stammt aus einer alten CNC-Steuerung, noch aus DDR-Zeiten. Die Nixie's sind von Tesla, die Treiber-IC's haben einen russischen Aufdruck, sind aber Nachbauten des 74141 von Ti.
Daraus soll jetzt eine DCF77 Uhr werden...

Jede Stelle der Anzeige wird binär angesteuert, benötigt also 4 Portleitungen. Will man nur die Uhrzeit anzeigen, braucht man nur 2 Bit für die Stunden-Zehner und jeweils 3 für die Minuten- und Sekunden Zehner, kommt also mit 20 Leitungen aus.
Dafür ist der PIC16F84 zu klein, zusätzliche Schieberegister können die Zahl der Ausgangsleitungen erweitern, ich habe mich jedoch entschieden einen grösseren Prozessor, den 16F873, zu nehmen, der im 28-poligen Gehäuse 22 Portleitungen zu Verfügung stellt.

Nixie Uhr 2

Irgendwie habe ich die obige Version bis heute nicht gebaut... Laufen tut allerdings ein Prototyp, der mit vier gemultiplexten Nixies arbeitet. Das Multiplexen führt zwar zu einem Flimmern des Displays, auch die Helligkeit ist etwas geringer, aber eigentlich stört das kaum. Als Controller verwende ich wieder einen PIC16F84, die Kathoden der Nixies werden über einen SN74141 angesteuert, die Anoden über Transistoren.

gemultiplexte Nixie-Uhr

Ein etwas wilder Aufbau auf Lochraster. Die Röhren sind mangels Sockeln direkt angelötet. Die Nixies sind russische IN1, die es mal billig bei Pollin gab. Die Hochspannung wird mit zwei 9 Volt Trafos erzeugt, der zweite transformiert wieder hoch, damit ist die Schaltung galvanisch vom Netz getrennt. Die Software basiert auf der LCD-Version, das Interrupt-Timing und die Quarz-Frequenz wurde geändert, damit schneller gemultiplext werden kann.
Hier ist der Schaltplan, eine Platine gibt es derzeit nicht. Das Programm steht als MPLAB-Projekt zum Download zur Verfügung.

Hauptuhr

Nebenuhr Eine Nebenuhr aus der Tschecheslowakei.

über ebay habe ich mir diese Nebenuhr gekauft. Sie enthält einen einfachen Elektromagnet, den man jede Minute umpolen muss, dann springt der Minutenzeiger weiter.
An diesem Exemplar kann man durch überbrücken eines Widerstands eine Steuerspannung von 60V oder 24V auswählen, sie läuft aber auch mit 15V. Der Strom beträgt dabei nur wenige Milliampere.
Damit diese Uhr tickt, braucht man eine Hauptuhr...

Uhrwek Das Uhrwerk der Nebenuhr

Zur Ansteuerung habe ich mein LCD-Programm von oben erweitert. Wenn man das

#define MUTTERUHR

aktiviert, wechselt eine Portleitung jede Minute ihre Polarität. Die Ausgangsspannung für die Uhr erzeugen zwei als Komparator geschaltete Oprationsverstärker vom Typ NE5532. Der kommt mit 24V klar und liefert auch ausreichend Strom.
Will man jedoch mehrere Nebenuhren an diese Hauptuhr anschliessen, oder ist die Nebenuhr über eine lange Leitung angeschlossen, sollte man sich eine kräftigere Ansteuerung überlegen.
Es reicht übrigens, nur zu den Schaltzeiten kurz Strom auszugeben. Mit zwei Portleitungen und getrennter Ansteuerung der Komparatoren könnte man das machen. Ich war faul und habe einfach einen bipolaren Elko mit 220μF in Reihe zur Uhr geschaltet. Das hat den gleichen Effekt.
Sommer/Winterzeit-Umstellung sollte auch funktionieren, das Zurückstellen dauert jedoch über 10 Minuten...

Hauptuhr mit PIC12F629

Ein Leser des vorhergehenden Abschnitts hatte da noch einen PIC12F629 und eine Nebenuhr. So entstand diese Sparversion ohne Display. Damit man wenigstens erkennen kann, ob die Uhr synchronisiert, ist eine LED angeschlossen. Wenn die Uhr nicht synchronisiert ist leuchtet die LED im Takt des Empfangssignals auf. Ist sie synchron, dann leuchtet sie dauernd und geht im Sekundentakt aus.
Der Taster dient zum Stellen. Wird er gedrückt, dann läuft die Uhr im Sekundentakt.

Mini-Hauptuhr Auf das Bild klicken zum vergrößern

DCF-Empfänger

Kann man einen DCF-Empfänger selbst bauen? Diese Frage tauchte vor einiger Zeit im Forum von www.mikrocontroller.net auf. Eine Hauptfrage war, ob man das auch mit Operationsverstärkern machen kann und das bei einer Versorgungsspannung von 5 Volt. Dabei gibt es mit Feldeffekttransistoren offenbar Probleme bei der Arbeitspunkteinstellung. Meine Version möchte ich hier zeigen. Es handelt sich um eine Designstudie, ein Versuchsaufbau funktioniert bei mir (nur 85km vom Sender entfernt) sehr gut. Inzwischen war ein Test 250km vom Sender entfernt erfolgreich, wenn auch hier die Störempfindlichkeit deutlich höher ist.

klicken zum vergrößern

Das Bild zeigt den Schaltplan von LTspice, einem Tool zur Schaltungssimulation. Das Programm kann man bei Linear Technology kostenlos herunterladen.

Die Schalterpaare sind in Wirklichkeit mit einem Multiplexer CD4053 aufgebaut, angesteuert werden sie mit einem Takt von 78125 Hz. Zwischen beiden Ansteuersignalen liegt eine Phasendifferenz von 90°. Die beiden Takte werden bei mir in einem PIC12F629 erzeugt, der mit 5MHz getaktet wird.

Die Ferritantenne wird durch die Spannungsquelle V2 simuliert. Im Versuch verwende ich einen etwa 10cm langen Ferritstab, der mit 70 Windungen Draht bewickelt ist. Parallel dazu ein Kondensator mit 10nF. Dieser Schwingkreis muss auf Resonanz abgestimmt werden!

Mit R9 gleicht man den Phasenschieber um U3 so ab, dass er bei 625Hz genau um 90° schiebt.

Mit R12 stellt man die Mittenfrequenz des Bandpassfilters um U4 auf 625 Hz ein. Am Ausgang erscheint also eine Frequenz von 625Hz, die mit den DCF-Signalen Amplitudenmoduliert ist.

Fehlen tut noch der eigentliche Demodulator, den man mit zwei Dioden und Kondensatoren als Einweg-Gleichrichter, sowie einem Komparator aufbauen kann.

Die Schaltung funktioniert auch mit einem TLC274, ein LM324 geht deutlich schlechter. Seltsamerweise ist die Kapazität von C2 von Bedeutung! Mit einem Funktionsgenerator durchgemessen, zeigt sich, dass die Eingangsschaltung statt der erwarteten Hochpasscharakteristik ein deutliches Verstärkungsmaximum hat. Sie verhält sich also eher wie ein Bandpass. Mit C2=1nF ergibt sich praktischerweise ein Maximum der Verstärkung bei etwa 77500Hz!

Zur Funktion:
Ich benutze die Multiplexer als Multiplizierer. Am Ausgang von U1 liegt, sagen wir U. U2 invertiert das, also kommt -U heraus. Der Multiplexer schaltet nun zwischen U und -U hin und her. Betrachtet man das digitale Schaltsignal mal als -1 und +1 findet eine Multiplikation statt. Das Produkt ist Summe und Differenz der Eingangssignale, also vom Antennensignal und vom Digitalsignal (jedenfalls was die Frequenzen angeht).

Mich interessiert die Differenzfrequenz von 77,5KHz und 78,125kHz, das sind 625Hz, die filtert der Bandpas um U4. Jedoch ergibt auch 78750Hz-78125Hz=625Hz. Sollte sich also ein Signal auf 78750Hz an der Antenne einfinden, kommt es auch durch das Filter zum Ausgang. Der Trick ist nun der: Die Phasendifferenz an den Multiplexerausgängen beträgt bei 77500Hz -90° und bei 78750Hz +90° (oder andersrum, je nach Anschluss und Betrachtungsweise). Schiebe ich eins der beiden Signale um +90° ergibt sich eine Phasendifferenz von 0° bzw 180°. Die beiden Signale werden addiert und schon ist das mit 180° Differenz verschwunden, das andere doppelt so stark.

xhtml

© 1999-2008 by Uwe Nagel, letzte Änderung am 05.09.2008