Forum: Mikrocontroller und Digitale Elektronik DCF77 Auswertung Attiny24


von Helge (Gast)


Lesenswert?

Hallo,

ich noch nicht sehr lange am Programmieren, bin aber bisher mit 
Entprellung und LCD recht gut zurecht gekommen.
Nun habe ich mir vorgenommen eine DCF77-Uhr auf einem Attiny24 (internes 
20 MHZ-Quarz) zu programmieren.
Ich wollte es soweit es geht selber machen, habe hier schon einiges 
gelesen, bekomme aber die Einzelnen Werte nicht aus dem Signal.

Könnte mir jemand sagen, wie ich dabei am besten vorgehe?
Programmieren würde ich es gerne selber...

LG Helge

von Bernd (Gast)


Lesenswert?

"Einiges" reicht dafür nicht. Den internen 20 MHz Quarz
gibt es schon mal nicht.

von Peter D. (peda)


Lesenswert?

Du programmierst Dir erstmal ne normale Uhr. Die braucht man, damit die 
Zeit weiter läuft bei Störungen (Gewitter, Staubsauger, Fernseher).

Dazu legst Du eine Struct an (Sekunde, Minute, Stunde, Tag usw.) und ein 
Timerinterrupt zählt diese dann hoch.
Ich mache es allerdings so, daß der Timerinterrupt nur ein Flag setzt 
und dann die Mainloop die Zeitzählung aufruft. Das vermeidet ungültige 
Zwischenzeiten.

Das DCF77 verarbeite ich in "harter" Echtzeit, d.h. jedes Bit wird 
sofort an die richtige Stelle in der Struct hinzu addiert. D.h. für 
DCF77 nimmt man eine 2. Struct-Variable. Eine Tabelle enthält dazu für 
jede Impulsnummer den Byte-Index und den Bitwert.

Kommt nun der Synchronimpuls (0. Minute), wird auf Fehler geprüft und 
die DFC77-Struct in die Uhr-Struct kopiert.


Peter

von Ottmar K. (wil1)


Lesenswert?

Hallo Helge,

hier kannst Du einiges zur Kodierung/Dekodierung des Signals nachlesen:
[http://www.bkbocholt-west.de/schueler/arbeitsmaterial/micosa/DCF-77-Ahrens-Dunckhoefner-2009.pdf].
[http://de.wikipedia.org/wiki/DCF_77]

Im Netz gibt es -auch auf deutsch - google einfach mal, eine große 
Auswahl an Infos. Schau auch mal auf die Homepage der 
Phys.Techn.Bundesanstalt.

Zur Programmierung DCF77 an sich: Das ist schon eine Aufgabe für 
Fortgeschrittene! aber dennoch: Du kannst das mit der nötigen 
Ernsthaftigkeit schon schaffen!

mfG Ottmar

von Stefan M. (celmascant)


Lesenswert?

Ich habe für ein Projekt auch eine DCF-77 Auswertung gebraucht.
Auf der Seite von Ulrich Radig (http://www.ulrichradig.de) bin ich, wie 
so oft schon, fündig geworden.
Da du aber selbst programmieren möchtest, kannst du dir einfach mal den 
Code, bzw. die Erläuterungen dazu anschauen. Dort gibt's auch eine 
schöne Graphik um den Signalaufbau besser zu verstehen. Damit ist es 
eigendlich recht gut Möglich, eine eigene Software zu schreiben.

Gruss Stefan

PS: Das mit dem internen 20MHz-Quarz solltest du nochmal überprüfen...

von Paul Baumann (Gast)


Lesenswert?

Wenn Du Dich nicht sehr schinden willst, gibt es in Bascom die 
Anweisung:
CONFIG DCF77

Damit ist es sehr schnell möglich, das DCF77-Signal auszuwerten. 
Allerdings
liegt die Routine dahinter nicht offen, so daß man eine Black-Box vor 
sich
hat.

Hier ist ein Bascom-Programm zu finden, bei dem das Signal "zu Fuß"
dekodiert wird.
http://www.mcselec.com/index.php?option=com_content&task=view&id=86&Itemid=57

Das ist gut nachzuverfolgen, wenn man sich den Aufbau des Signals 
nebenbei
anguckt.

MfG Paul

von Helge (Gast)


Lesenswert?

Vielen Dank für die vielen Ideen.
Ich werde mich erstmal an einer normalen Uhr versuchen und die 
DCF-Auswertung später einbiden.

Mit dem Quarz habt ihr natürlich recht, sorry.
Habe nur schnell aufs Datenblatt geguckt und dort standen die 20MHZ auf 
der ersten Seite :-(

Lg Helge

von Stefan F. (sfrings)


Lesenswert?

Ich hatte ma mit einem 8051 eine hr gebaut, die optional DCF77 kann. 
Auch diese Uhr war zunächst mal eine ganz normale Quartz Uhr. Einen der 
beiden 22pF habe ich durch einen Trimmer (4-100pF) ersetzt, um die 
geschwindigkeit der Uhr justieren zu können (könnte man auch per 
Software tun).

Die Uhr empfängt außerdem das DCF Signal, falls Signal und Empfänger 
vorhanden sind. Die Nullte Sekunde wird ja durch einen Aussetzer 
(fehlender Impuls) markiert. Danach werden alle 59 Bits in Variablen 
eingelesen.

Wenn nach einer Minute die Prüfsumme stimmt, empfängt die Uhr noch eine 
Minute in einer anderen Variable.

Wenn danach beide Variablen passende Werte haben (also genau eine Minute 
Zeitversatz), dann wird die empfangene Uhrzeit in die Uhr übertragen, 
also synchronbisiert.

Diese doppelte Kontrolle war nötig, weil die Uhr sonst mehrmals pro 
Woche eine falsche Zeit angezeigt hatte. Die Prüfsumme alleine reicht 
nicht aus, um sicher sagen zu können, ob das empfangene Signal auch 
valide war.

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.