Forum: Mikrocontroller und Digitale Elektronik DCF 77 Uhr Binary Clock


von Daniel S. (danielsun)


Angehängte Dateien:

Lesenswert?

Hallo Leute

poste hier mal eins meiner ersten Projekte.

Habe mir U. Radig seinen Code genommen die Uart entfernt und
versucht eine Binary Clock zu bauen.

Ulrich Radig möge mir vergeben aber meine C-Kenntnisse sind noch sehr
gering. Will dein Programm nicht verunstallten.

Nach einigen kleinen Problemen dem DCF Empfang und die
Spannungsversorgung denke ich sollte es vom Aufbau her passen.

Den DCF Empfänger habe ich vom Pollin und funktioniert soweit auch
Sekundensignal ist da und aktiviert wird das Modul über ein RC-Glied.
(so getestet: http://www.b-redemann.de/dcf77.shtml)

Kurz zum Aufbau:
Empfänger Pollin (hatten wir ja schon)
Signal am INT0
Sekunden, Minuten und Stunden werden an PORT C, A und B
Atmega 16 mit ner Taqtfrequenz von 16 MHz


Ein Problem das mir noch den letzten nerv kostet habe.
Die Funkruhr synchronisiert sich nicht immer bzw sie empfängt die zeit 
eher nicht als das sie sie empfängt.
Schaltung anschalten Zeit wird empfangen und angezeigt ich mache eine 
Reset und die Zeit kommt nicht die Schaltung kann ne Stunde oder zwei 
laufen interessiert se aber net habe dabei das Steckbrett nicht von der 
Stelle bewegt.
Es gibt Tage da klappt der Empfang ohne Probs und dann klappts wieder 
drei Tage garnicht :-(
Ah nochwas habe jetzt gerade ein DCF Modul vom grossen C dran sieht 
genauso aus

Wenn jemand eine Idee hat würd ich micht echt über eure Vorschläge
freuen.

Aber bitte nicht vergessen ich bin Änfänger also zieht nicht über mich
her das ist mein erstes richtiges Projekt.

Gruß
Daniel

von Andreas Klepmeir (Gast)


Lesenswert?

Das die Uhr keinen Empfang hat kann an ihr selbst liegen, ich habe die 
Erfahrung gemacht das sich diese Empfänger sehr leicht stören lassen.
Zum Beispiel von einer gemultiplexten Anzeige, einem Netzteil oder 
Metallteilen, auch von der Platine oder dem AVR selbst. Daher das Modul 
am besten so weit wie möglich von anderen Teilen anbringen.
Nachts ist der Empfang übrigens bedeutend besser als Tagsüber.


Am Rande noch was zur DCF-77-Bibliothek von Ulrich Radig:
Vorweg, die ließ sich hervorragend Integrieren, nichts was man erst 
kompliziert in den Eigenen Quellcode verschachteln müsste.

Aber da war noch ein interessantes Problem, wenn der Funkuhrempfänger 
Murks empfängt lässt sich diese Uhr leicht aus der Fassung bringen.
Die Bibliothek zählt Sekundenweise, wenn aber aus welchem Grund auch 
immer, ein falsches Signal empfangen wird wird die Sekunde, die er grade 
runterzählt, vorzeigig abgebrochen und von vorne begonnen. Das ist gut 
wenn man die Sekunden auch synchron nach dem DCF-77-Signal beginnen 
will, aber sehr schlecht wenn der Empfang gestört ist.
Zum Beispiel von einer großen, PWM-gedimmten 7-Segment-Anzeige.
So kommt man pro Stunde schnell auf fünf Minuten Gangfehler, sollte das 
Signal nicht für eine korrekte Synchronisation reichen.
Ich hab damals die Uhr in einen extra Timer gepackt und die Bibliothek 
nur dazu benutzt die Aktuelle Uhrzeit aus dem DCF-77-Signal zu 
dekodieren.

von Robert W. (rweber)


Lesenswert?

Servus,

wieso meinen die Leute eigentlich immer, den DCF an einen Interrupt 
Eingang haengen zu muessen? Das ist murks. So versaut wie das Signal ist 
kann man nicht vernunftig darauf triggern.

Man tastet das Signal in einem Timerinterrupt ab und gut ist. Schau mal 
in die Codesammlung. Da gibt es einen schoenen Code vom Peter.

von Sumynona (Gast)


Lesenswert?

Voll deiner Meinung, Robert Weber! Samplen statt Triggern!
Wer anderer Meinung ist, sollte das DCF-Signal einfach über einen 
anderen Portpin ausgeben und dort eine LED dran hängen, alle Empfänger 
die ich bisher hatte kommen ab und zu ganz schön ins flackern ;-)

von Andreas Klepmeir (Gast)


Lesenswert?

>Wer anderer Meinung ist, sollte das DCF-Signal einfach über einen
>anderen Portpin ausgeben und dort eine LED dran hängen

Hab ich auch schon gemacht, aber nur um den Empfänger nicht per Oszi auf 
die Finger schauen zu müssen. Ergebnis war, das bei schlechtem Empfang, 
das Modul beim Abgesenkt-Pegel maximal 1-2 kurze Schlenker reinreisst. 
Der Abgesenkte-Pegel dauert aber nie länger als 0,2 Sekunden, der 
Nicht-abgesenkte Pegel bleibt praktischerweise Clean.
Ich bleib auch dabei, das der Interrupt dafür gut geeignet ist.
Steigende Flanke löst den Interrupt aus und setzt den Startpunkt, 
fallende Flanke löst erneut aus und notiert die Impulslänge.
Jetzt kann man in aller Ruhe in der Main-Routine die Zeit auswerten und 
das Bit übernehmen/verwerfen.
Das alles spielt sich in maximal 0,2 Sekunden ab, die restlichen 0,8 
Sekunden wartet man ja aufs nächste Bit.
Die Zeit kann man den ganzen Controller bis auf den Uhrentimer auch 
gleich schlafen schicken, aufwecken dank Interrupt ja kein Problem.

von Robert W. (rweber)


Lesenswert?

Andreas Klepmeir wrote:
> Ich bleib auch dabei, das der Interrupt dafür gut geeignet ist.

Genau. Deshalb gibts auch pro Woche mind. einen Thread wo jemand 
Probleme mit DCF oder auch Schaltern oder Tastern am IRQ Pin hat.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.