Nachdem ich die Ganggenauigkeit der Binäruhr zuletzt mit einem Uhrenquarz erhöht habe, hatte sie nur noch einen Fehler von ca. 1 Sekunde pro 24 Stunden. Das ist im Vergleich zu vorher schon fast nichts mehr. Aber für eine Uhr irgendwie doch zuviel... deswegen habe ich jetzt ein Funkmodul von Reichelt angeschlossen, mit dem sich der AVR über das DCF77-Signal auf Normzeit einstellen kann. :)
Aber bis es soweit war, gab es noch einige Probleme:
-
Die Spannung war für das Funkmodul nicht stabil genug und musste stabilisiert werden.
-
Das dürftige "Handbuch" des Funkmoduls musste verstanden werden
-
und zu guter Letzt ist natürlich auch noch die Antenne des Modules abgerissen, so dass ich sie auch erstmal wieder anlöten musste
In dem Handbuch zum Funkmodul wird - in Worten - erklärt, wie das Modul zu beschalten ist. Leider ist ein nicht ganz unwichtiger Punkt aber etwas schwammig formuliert: Das Modul lässt sich anscheinend in eine Art Schlafmodus versetzen. Dazu muss einer der vier Anschlüsse auf hohes Potential gelegt werden. Zum Einschalten soll er auf GND liegen. Soweit die Theorie. In der Praxis hat sich jetzt gezeigt, dass dieser Anschluss wohl intern bereits auf GND liegt und eine externe Beschaltung Probleme bereitet. Jedenfalls habe ich diesen Anschluss jetzt unbeschaltet gelassen und so scheint es zu funktionieren. Die anderen Anschlüsse sind +5V, GND und DCF. An DCF liegt das (invertierte) Signal an, das das Modul empfängt.
Normalerweise besteht das DCF77-Signal aus einem High-Pegel, der zu Beginn jeder Sekunde auf 25% der Leistung abgesenkt wird. 100ms für eine logische 0 und 200ms für eine logische 1. (Weitere Details gibt es hier.) Die Inversion bewirkt jetzt, dass das Signal an DCF grundsätzlich auf niedrigem Potential liegt und zu Beginn jeder Sekunde für 100 bzw. 200ms auf +5V gezogen wird.
Für einen "sauberen" Betrieb des Funkmoduls wird eine Spannung zwischen 1,2 und 5V benötigt, die im Betrieb allerdings um weniger als 0,1V schwanken darf. Bisher konnte ich meine Schaltungen einfach mit einem 5V Netzteil betreiben ohne Probleme zu kriegen. Aber für das Modul schien das nicht mehr zu reichen, so dass ich einen 7805-Baustein zusammen mit 3 Kondensatoren (2x100nF KerKo, 1x10µF ELKO) einbauen musste. Dieser erzeugt nun aus 7V Eingangsspannung eine stabilisierte Spannung von 5V, die auch dem mäkeligen Funkmodul genügt. ;)
Bei dem nun folgenden häufigen Programmieren und damit verbundenem Bewegen der Schaltung, habe ich wohl die Antenne etwas zu viel und falsch bewegt, so dass sie sich schließlich vom Funkmodul gelöst hat. Mit etwas Arbeit ließ sie sich aber wieder anlöten, was sich aber schon recht schwierig gestaltet hat, da die dünnen Anschlusskabel die Wärme des Lötzinns nicht richtig ableiten konnten und so der Zinn nicht abkühlen konnte um zu erstarren... naja, schließlich und endlich hat es aber geklappt.
Den Code für die Auswertung des DCF-Signals habe ich von dieser Seite teilweise übernommen und angepasst. Meinen Code gibt's dann auch hier. Die Funktionalität wurde nur um die DCF77-Routinen erweitert.
Auch das neue Schaltbild gibt es natürlich:
Hier sind auch alle Neuerungen eingetragen. Ich musste die Anschlüsse für die Stundenanzeige verändern, da ich den Pin für den externen Interrupt vorher belegt hatte.
Für die Zukunft steht jetzt noch ein Summer/Lautsprecher an, mit dem dann eine Weckfunktionalität hinzukommen kann. Ich werde mal ein wenig experimentieren, was sich da so machen lässt. Ein Gehäuse habe ich mittlerweile auch, allerdings werde ich die Uhr vorerst da noch nicht einbauen.
Im Moment scheint der Anschluss des DCF-Moduls einen Wackelkontakt zu haben, denn ab und zu empfängt die Uhr die aktuelle Zeit nicht :( Eventuell befestige ich das Modul und die Antenne noch auf einem starren Stückchen Pappe oder so um zusätzliche Bewegung und somit Belastung für die eh schon schlechte Verbindung zu vermeiden...