Kurz nach Aschaffenburg wird nördlich der Autobahn A3 das Antennenfeld der Sendeanlage DCF77 sichtbar. Mitte der 2000er Jahre konnte ich die Sendeanlage dort bereits besichtigen. Seit längerem entstand in mir der Wunsch, selbst eine Funkuhr zu bauen. Die Sendeanlage DCF77 in Mainflingen feiert im Jahr 2023 seinen 50. Geburstag. Seit Jahrzehnten ist der Zeitzeichensender wichtig für präzise Zeit in unzähligen Funkuhren. Das Bauprojekt mit DCF77 Ist ideal um Auszubildende und Interessierte an Hardware, Software, HF-Technik und schrittweise Fehlersuche heranzuführen. Durch die zunehmende Digitalisierung sowie Störungen durch billige Elektronik ergeben sich analoge Probleme. Die Suche dieser analogen Probleme wird jedoch in Studium oder Ausbildung oft nicht mehr ausreichend vermittelt. Der Bau einer Funkuhr mit DCF77 ist dafür ideal.
Der Sender DCF77 in Mainflingen bei Frankfurt
Bei der Sendeanlage DCF77 handelt sich um einen Langwellensender auf der Frequenz 77,5kHz mit 50kW Sendeleistung. Das mag in Zeiten teurer Energie hoch erscheinen. Doch es werden damit ca 100 Millionen Menschen zeitgleich und zuverlässig mit dem Zeitsignal versorgt. Im Radius von 500km ist das DCF77-Signal per Bodenwelle sicher empfangbar. Das Sendesignal ist eines der langsamsten Digitalsendungen überhaupt. Pro Sekunde wird in AM lediglich ein Bit übertragen. Binnen einer Minute hat jede Sekunde als Bit eine feste Aufgabe. Auf der Internetseite der ptb ist die Sendeanlage DCF77 sehr gut dokumentiert (link). Neben der Zeit werden zudem Informationen zu Wetter- und Notfallsituationen ausgestrahlt.
Update: Aufgrund einiger Anfragen: Das hier im Beitrag verwendete Display 162B V1.2 weicht in der Belegung von vielen Standard-Displays leicht ab. Wenn Sie Ihr LCD anschließen und keine Funktion vorliegt. Oder das LCD-Display sehr heiß wird, dann prüfen Sie bitte die Verkabelung. Im Bild oben finden Sie die Belegung für das Display, welches für diesen Beitrag verwendet wurde.
Wie sieht das DCF77-Signal aus?
Das Signal aus Mainflingen ist amplitudenmoduliert. Jede Sekunde wird ein Bit übertragen. Der Sender senkt dazu seine Sendeleistung ab. Wenn die Absenkung 100ms dauert (0,1 Sekunde) dann entspricht dies einer logischen 0. Wenn die Absenkung 200ms dauert (0,2 Sekunde) dann entspricht dies einer logischen 1. Über 60 Sekunden ergeben sich so 60 Bit. Fügt man diese Bits zusammen so ergibt sich daraus eine Information über Wetter und Zeit. Wir befassen uns hier mit der Dekodierung der Zeit. Die Dekodierung der Wetterdaten würde den Umfang dieses Projekts übersteigen. Bei Interesse können die Wetterdaten live auf der homepage https://www.dcf77logs.de verfolgt werden. Mit einem Oszilloskop kann man sehr gut sehen, wie das DCF77-Signal aussieht. Das Bild oben zeigt eine Messung über zwei Sekunden mit Signal 0 und 1. Als Messpunkt verwenden wir den Ausgang des DCF-Moduls.
Funkuhr DCF77 selber bauen: Hardware
Nachdem wir den Schaltplan erstellt haben beginnen wir mit dem Projekt. Als Hardware genügt ein Arduino Uno, ein LCD-Display und ein separates DCF77-Modul. Ich verwende das DCF77-Modul von ELV. Es ist zuverlässig und preiswert. Beim DCF-Modul von ELV ist zu beachten, dass es eine negative Logik verwendet. Zudem setze ich ein handelsübliches LC-Display mit 16×2 Zeichen ein. Während der Testphase wurde die Hardware aus dem USB-Port mit 5V versorgt.
Funkuhr DCF77 selber bauen: Software
Nach längerer Recherche fand ich einen passenden Code im Internet (link). Mit leichter Modifikation war der Code schnell an mein LC-Display sowie die negative Logik des DCF77-Moduls angepasst. Als Techniker ist mir die Messung von Signalen wichtig. Daher habe ich in die Startphase meiner selbst gebauten Funkuhr eine Anzeige der empfangenen Signallänge integriert. Je näher die Werte an den Soll-Werten des Senders liegen desto besser ist der Empfang. Mit der richtigen Auswahl der passenden Variablen war auch das zügig erledigt.
Fehlersuche und Entstörung
Der Probeaufbau lief relativ stabil. Daher überführte ich die Hardware rasch auf eine selbst entwickelte Platine, die bereits für unsere CO2-Messgeräte verwendet wird. Wie beim Arduino Uno kommt dort ebenfalls ein Atmega 328 PU zum Einsatz. Gespeist habe ich den selbst gebauten DCF77-Empfänger zuerst über ein beliebiges USB-Netzteil. Damit endete mein schneller Fortschritt. Denn es fand plötzlich keine Synchronisation mehr statt. Bei der Fehlersuche wurde mir klar, dass das USB-Netzteil die Ursache war. Preiswerte Schaltnetzteile erzeugen oft Störungen, die locker bis zur Nutzfrequenz des Zeitzeichensenders auf 77,5kHz reichen. Ich ersetzte das USB-Netzteil gegen ein MeanWell GST18E05-P1J. Nun fand die Baugruppe wieder das Zeitsignal. Aber erst nach langer Wartezeit. Zudem kam es bei meinem Bauprojekt DCF77 zu Gangabweichungen von mehreren Minuten.
Gangabweichung und Synchronisation optimieren
Ich erkannte, dass es zu Problemen mit den internen PullUp-Widerständen kam. Somit schaltete ich am DCF77-Modul einen 1k-Widerstand zwischen Signal und +Ub. Anschließend fügte ich einen 100nF-Kondensator zwischen +Ub und GND ein um die Versorgungsspannung sauber zu halten. Die Leitung zwischen Controller und DCF77-Modul wurde zusätzlich verdrillt. Mit jeder Maßnahme wurde die Gangabweichung besser. Ein Problem in der aktuellen Software ist, dass ohne gültiges Signal die zuletzt gültige Minute als Schleife wiederholt wird. Sehr hilfreich bei Fehlersuche und Ausrichtung der Antenne war die Anzeige der Signallänge im Display. Ist die angezeigte Signallänge wesentlich von 100ms bzw. 200ms entfernt, dann ist das Signal schlecht. Je näher die Signalzeit an der Sollzeit ist desto besser ist das System abgestimmt. Zudem half ein separater Kontrollempfänger, der das Signal auf 77,5kHz hörbar macht. Zu achten ist auf die richtige Polarisation und richtige Ausrichtung der Ferritantenne sowie auf den Abstand zu Störquellen.
-
MeanWell, SGA12E05-USB, USB-Netzteil, Eingang Eurostecker 90V AC bis 264V AC, OUT USB A, 5V DC9,38 €
exkl. 19 % MwSt.
zzgl. Versandkosten
Lieferzeit: 3–5 Tage
-
MeanWell, GST18E05-P1J, Steckernetzteil, Eingang Eurostecker, OUT P1J / 5.5×2.1×11, 3A, 5V DC9,45 €
exkl. 19 % MwSt.
zzgl. Versandkosten
Lieferzeit: 3–5 Tage
-
MeanWell, GSM12E05-USB, USB-Netzteil Medizintechnik, IN Eurostecker OUT USB, 2.4A, 5V DC11,50 €
exkl. 19 % MwSt.
zzgl. Versandkosten
Lieferzeit: 3–5 Tage
Der optische Feinschliff
Zum Finale habe ich die Controller-Platine mit Display in ein Gehäuse gepackt. Besonders die Position der Antenne ist wichtig. Am besten wird sie abgesetzt von digitalen Schaltungen und möglichst hoch montiert. Vorbild waren für mich die alten Mittelwellenradios mit drehbarer Ferrit-Antenne. Nun lässt sich die Ferrit-Antenne gut Richtung Mainflingen ausrichten. Die symmetrische Antennenleitung zum DCF77-Modul wurde sinnvoll gekürzt. Sowohl das DCF77-Modul als auch die Ferrit-Antenne montierte ich sauber aufgeräumt mit etwas Heißkleber in der drehbar montierten Box. Als Netzteil kommt ein MeanWell GST18E05-P1J zum Einsatz.
Fertigstellung und Fazit
Die selbst gebaute DCF77 Funkuhr synchronisiert bei korrektem Aufbau binnen weniger Minuten präzise. Dank der Anzeige der Signalzeit fällt die Fehlersuche und die Ausrichtung der Antenne sehr leicht. Die Gangabweichung beträgt weniger als eine Sekunde. Interessant war, wie wichtig ein gutes, störfreies Netzteil ist. Elektronische Systeme werden immer komplexer und digitaler. Daher ist es sinnvoll regelmäßig auf klassische Techniken und Methoden der Fehlersuche zurückzublicken. So lassen sich fachübergreifend Störungen und Probleme beheben. Der eigene Aufbau einer Funkuhr mit DCF77 eignet sich gut für Einsteiger und zeigt das praktische Zusammenspiel zwischen Hardware, Software und klassischer Funktechnik. Der verwendete Arduino ist mit seiner Aufgabe bei Weitem nicht ausgelastet und bietet somit Raum für weitere Experimente und Erweiterungen. Denkbar sind Zeitschaltfunktionen oder mit zusätzlichem Aufwand sogar ein NTP-Server um für das Computernetzwerk eine exakte Zeit bereitzustellen.
Update Anschluss Display.
In der Realität befindet sich die Leiste für den Anschluss am Display auf der rechten Seite.
Das rechte Lötauge entspricht Datenpin DB7.
Hallo Herr Tafelmeyer,
Vielen Dank für Ihren Artikel im Funkamateur. Der Nachbau war fast kein Problem. Am LCD Modul musste ich nur den R/W PIN mit GND verbinden und für meinen Empfänger musste ich das Signal invertieren. Mein Modul aus einem alten SONY Weckradio liefert positive Impulse welche ich mittels BC547C und zwei 10k Widerständen invertiert habe. Jetzt syncronisiet die Uhr nahezu immer innerhalb von 2 min. Impulslänge wird fast Konstant mit 90 und 180 ms angezeigt.
Mal schauen ob ich noch einen 1Wire Temp Sensor und einige DOT Matrix LED Module ran stricke.
Eine Frage hätte ich da noch, welche Codezeile muss ich ändern wenn ich die Positiven Signale (ohne Transistor) direkt an PIN2 anschließen möchte ?
Guten Tag André,
danke für Deine Nachricht.
Du kannt per Variable oder per IF-Schleife den Logikpegel anpassen.
Die Logik wird invertiert entweder über die IF-Schleife ungefähr bei Zeile 360
#ifdef NEGATIV_LOGIK
DCFSignalState ^= 0x01; // logik umkehren
#endif
Oder noch einfacher per ein- bzw.r auskommentieren der Variable
#define NEGATIV_LOGIK
Sehr geehrter Herr Tafelmayer,ich haben mit großem interesse die Uhr nachgebaut aber leider fonktioniert das Display nicht. Auf der obere Zeile erscheinen alle Punkte auf einmal und in der unteren Zeile tut sich gar nichts.
Das Programm ist auf dem Arduino läuft man sieht auf dem Monitor dan Programmablauf heruntertickern. Die Datennletungen geben auch Signale von sich zum Display.
Ich habe meinem Vorredner zufolge den RW Pin nach Masse gelegt ohne Poti. Da mit Poti das Display ganz aus gebleiben ist.
Ich bin etwas ratlos, habe mich an die Ratschläge gehalten….
Ich wäre über einpaar Tips dankbar
Und verbleibe mit freundlichen Grüßen DG1NFZ Werner Gasser
Hallo OM Werner,
in der Realität befindet sich die Leiste für den Anschluss am Display auf der rechten Seite.
Das rechte Lötauge entspricht Datenpin DB7.
Hallo Matthias, danke für die Infos. Kaum macht man es richtig funktioniert es….
Vielen dank nochmal für die Rückantwort.
Gruß aus Karlstadt DG1NFZ Werner
[…] Dabei muss weiter eine präzise Zeitinformation verfügbar sein. Nach unserem Beitrag über unseren DCF77-Funkuhr zum selber bauen (link) hier nun ein Beitrag zum Thema NTP-Zeitserver mit […]
Hallo
Ein schönes Projekt.
Lediglich der Empfänger von ELV ist nicht so gut.
Funktioniert hat bei mir eine alte Schaltung aus Elrad 7/85, die ein kleiner Superhet Empfänger ist und sich sogar selbst abstimmen lässt.
Mit freundlichen Grüßen
Thomas,