Forum: Mikrocontroller und Digitale Elektronik DCF77


von Eder (Gast)


Lesenswert?

Hallo,

kennt sich wer mir dem DCF77 aus bzw. ich hab diesen mit Spg versorgt
und bekomme einen schwankenden Wert zwischen 616 und 4153 heraus. Kann
mir wer sagen, was das für Zahlenwerte sind bzw. kann mir wer Tipps
geben, wie ich die Uhrzeit herausbekomme.
Vielen Dank.
lg
Eder

von AVRFan (Gast)


Lesenswert?


von Hannes Albert (Gast)


Lesenswert?

Hallo,

ich hätte auch noch eine Frage zum DCF77. Wie kann ich im Programm
feststellen, wann ich zu lesen anfangen soll bzw. wann beginnt das
Signal und wie lange dauert die Übertragung der 59 Bits.
Danke.
lg
Albert

von thkais (Gast)


Lesenswert?

@Hannes:
http://de.wikipedia.org/wiki/DCF77 schon gelesen?

von Michael U. (Gast)


Lesenswert?

Hallo,

indem Du wartest, bis die Pause zwischen 2 Impulsen länger als 1,5s
ist. Dann ist das nächste Bit der Beginn der neuen Minute.

So schlecht ist die Beschreibung im oben geposteten Wiki-Link ja nun
auch nicht...
Nein, ich lese Dir diese nicht vor. ;)

Gruß aus Berlin
Michael

von inoffizieller WM-Rahul (Gast)


Lesenswert?

>Nein, ich lese Dir diese nicht vor. ;)

Gibt es das Wikipedia noch nicht als Hörbuch?

von Hannes Albert (Gast)


Lesenswert?

JA hab ich und noch vieles mehr, nur wie kann ich es in C feststellen,
dass der Träger abfällt? ICh will ja nur die Daten daraus. Was fang ich
mit dem Träger an? und muss ich, wenn ich den Anfang erkannt habe, im
Sekundentakt die Bits einlesen?
Vielen Dank
lg
Albert

von Hannes Albert (Gast)


Lesenswert?

muss ich, wenn ich den Anfang erkannt habe, im
Sekundentakt die Bits einlesen oder wie kann ich das in einem C-
PRogramm realisieren, dass ich keinen Bits verliere?
Vielen Dank -> ich hab mit sowas noch nicht gearbeitet. Vielen Dank für
Euer Verständnis und Eure Antworten.

lg
Albert

von Michael U. (Gast)


Lesenswert?

Hallo,

ich gehe mal davon aus, Du hast einen DCF-Empfänger dran.
Den selber bauen ist eine andere Baustelle. ;)

Da kommen die Impulse bereits als Logikpegel raus.
Also alle Sekunde (außer der 59.) ein Impuls mit 100ms oder 200ms
Breite, normalerweise als L-Impuls.

Um die mußt Du Dich kümmern. Beispiele für DCF77-Uhren gibt es wirklich
wie Sand am Meer, für wohl alle MCs in allen Spreachen.
Such Dir einen oder mehrere C-Codes oder ASM oder was Dir liegt, und
versuche sie nachzuvollziehen.

Ansätze, wie man es löst, gibt es mehrere. Prinzipiell vielleicht mal
so:

Auf fallende Flanke vom DCF-Empfänger warten.
Auf die nächste fallende Flanke warten und dabei die Zeit mitzählen.
Weniger als 1,5s ? War nicht der erste Impuls, also von vorn.
Ab ersten Impuls - Impulsbreite messen. < 150ms ? eine 0, > 150ms eine
1. Da kommen also nacheinander jetzt 59 Bits, die einsammeln und anhand
der Tabelle von Wiki auswerten.

Am Ende kontrollieren, ob es wirklich 59 waren, ob die dann erwartete
2s - Pause kommt usw.

Wenn es nicht 59 bis zur Pause waren - wegwerfen
Wenn ja, Parity berechenen, wenn falsch - wegwerfen

usw. usw.

Gruß aus Berlin
Michael

von Hannes Albert (Gast)


Lesenswert?

Vielen Dank Michael, Das hat mir jetzt sehr geholfen!!!.
lg
Hannes

von Hannes Albert (Gast)


Lesenswert?

eine Frage hätte ich trotzdem noch zu

>Da kommen die Impulse bereits als Logikpegel raus.

ich bekomme einen Integer Wert vom DCF77, der schwankt zwischen ca. 624
und ca. 29573. Wie bekomme ich da den einen Wert pro Sekunde raus.

lg
Hannes

von Karl heinz B. (kbucheg)


Lesenswert?

Ihr redet dauern davon, dass da 'ein Wert herauskommt'.
Wo kommt der raus? Wie lest ihr das Signal ein?

Hinweis: Das Signal kann man nicht einfach nur so 'einlesen'.
Das Signal ist ein Bitstrom, wobei bestimmte Bits eine
bestimmte Bedeutung haben. Das muss ein Programm schon
selbst dekodieren. Einfach nur die Bits in einen Integer
hineinspielen und hoffen, dass da was sinvolles rauskommt
ist vergebliche Liebesmühe.

von Hannes Albert (Gast)


Lesenswert?

ich hab leider nur einen analogen Input, welcher nur integer- Werte als
Variable akzeptiert. ICh muss also aus diesem Integer- Wert die
benötigten Bits herausbekommen.
Vielleicht weiss jemand wie das geht.
Wenn ich die integer- Werte binär anzeigen lasse, weiß ich eben nicht,
was gerade vom DCF gesendet wurde.
Vielen Dank.

lg
Hannes

von inoffizieller WM-Rahul (Gast)


Lesenswert?

@Hannes:
Könntest du ein paar Angaben mehr zu deinem Aufbau machen?
Mit einem Analogeingang kann man aus dem DCF77-Signal keine Analoguhr
machen...

von AVRFan (Gast)


Lesenswert?

>ich bekomme einen Integer Wert vom DCF77, der schwankt zwischen
>ca. 624 und ca. 29573.

Erklär mal ganz genau, was Du da aufgebaut/gemessen/programmiert hast
und wie der "Integer Wert" da rauskommt.

von Karl heinz B. (kbucheg)


Lesenswert?

> ich hab leider nur einen analogen Input

OK. Also spiegelt der Wert am Input das Signal wieder.

> 624 und ca. 29573

d.h. du nimmst dir einen Grenzwert.
Alles was unter diesem Grenzwert ist, ist ein Low-Pegel
alles was über diesem Grenzwert ist, ist High-Pegel.

Das sind aber noch nicht deine 0/1 Bits!

Ob da jetzt eine logische 0 oder eine logische 1 übertragen
wird, definiert sich über die Zeitdauer wie lange das Signal
low oder high ist!

Was isn das für ein Prozessor, der nur einen analogen Input
hat? Das ist mit einerseits mit Kanonen auf Spatzen geschossen,
andererseits keine so gute Idee weil ja auch der ADC eine
gewisse Zeit zum wandeln braucht.

von Karl heinz B. (kbucheg)


Lesenswert?

> Ob da jetzt eine logische 0 oder eine logische 1 übertragen
> wird, definiert sich über die Zeitdauer wie lange das Signal
> low oder high ist!

Das hängt davon ab, wie die Empfangsschaltung die Spannung
liefert. Lässt sich aber leicht feststellen: Häng doch mal
eine Led an den Ausgang der Empfangsschaltung. Es gibt
3 Möglichkeiten:
1) Entweder ist die Led die meiste Zeit dunkel und blitzt
   im Sekundenrythmus kurz auf
2) Oder die Led leuchtet dauerhaft und wird im Sekundenrythmus
   kurz dunkel
3) Oder es tut sich gar nichts.

Im Falle 3 liefert das Empfangsmodul nicht genug Strom zum Betrieb
einer Led -> Einen Transistor zur Verstärkung einsetzen

In den anderen Fällen: Das Aufblitzen bzw. kurzzeitige Verlöschen,
das sind die Bits. Wenn du ein gutes Zeitgefühl hast, wird dir
vielleicht auffallen, das das Aufblitzen bzw. Verlöschen nicht
immer gleich lang ist. Einmal ist es nur 1/10 Sekunde lang
ein anderes mal ist es 2/10 Sekunden lang. Genau das ist der
Unterschied zwischen 0 und 1. Ist das Zeugs nur 1/10 Sekunde
lang, dann ist das eine logische 0, ist es 2/10 Sekunden lang,
dann ist das eine logische 1

von Hannes Albert (Gast)


Lesenswert?

Danke Karl Heinz, bin am werken und ich glaub es schaut gut aus.
Vielen Dank.
lg
Hannes

von Hannes Albert (Gast)


Lesenswert?

Hallo,

Ich hab jetzt ein Programm geschrieben, welches die Pausen auswertet. 
Ich hab eine Grenze bei 2000 gesetzt, um die am analogen Eingang 
anliegende INT Werte in BOOL umzuwandeln.
Leider wird bei mir die falsche Zeit angezeigt. Ich habe vermutet, dass 
das Eingangssignal irgendwie falsch ist (wie auch immer), daher hab ich 
mich mit dem Oszi an den Ausganb des DCF77 Empfängers gehängt und musste 
feststellen, dass da irgendwelche 0 und 1 Folgen rauskommen, nur nicht 
das, was rauskommen soll (ein Signal mit Pausen von 100ms oder 200ms). 
Da kann natürlich nicht die richtige Uhrzeit angezeigt werden.
Kann sich das jemand erklären.
Vielen Dank für Eure Antworten.
lg
Hannes

von Michael U. (Gast)


Lesenswert?

Hallo,

was hast Du da überhaupt für einen DCF77-Empfänger?

Ein übliches DCF77-Modul, also kleine Leiterplatte mit Ferritantenne und 
einem IC drauf und 3-4 Anschlüssen (GND, UB, Ausgang) oder was ganz 
anderes?

Gruß aus Berlin
Michael

von Sonic (Gast)


Lesenswert?

Die Impulse sind 100ms für eine '0' und 200ms für eine '1'. Evtl. ist 
dein Signal invertiert. Ich hab' dir mal den Aufbau der Zeitinformation 
gepostet.

von Sonic (Gast)


Angehängte Dateien:

Lesenswert?

Nanu? Wo ist der Anhang?

von Florian (Gast)


Lesenswert?


von Hannes Albert (Gast)


Lesenswert?

ich hab einen vom Conrad -> kleine Platine mit Ferritantenne, den mit 
der Bestellnummer 641138. Ich bekomm am Oszi schon eine Bitfolge 
dargestellt und hab dieses Signal auch schon invertiert aber es is bei 
weitem nicht das, was ich erwartet hätte, ca. 1,2s high (mit rauschen) 
und dann eben Pausen (negative Flanke bis pos. Flanke) von 100ms und 
200ms). Gibts im Netz irgendwo ein OsziBild vom Ausgang eines DCF77 
Empfängers. Wenn nämlich die in den bei mir hereinkommenden analogen 
Eingang (AI) hereinkommenden Bits nicht passen, kann ja die richtige 
Zeich auch nicht angezeigt werden. Gibts das auch, das ich keinen 
Empfang habe und daher irgendwas empfange. Wo ich sitze, hab ich 
zumindest beim Handy keinen Empfang -> ich ziehe jetzt schon alles in 
bedracht.

Meiner meinung nach müsste das Signal so ausschauen:

   ____   _____    _____   __
...     |_|     |__|     |_|    .....
      0       1        0

Vielen Dank für eure Unterstützung.
lg
Hannes

von Rahul D. (rahul)


Lesenswert?

>dann eben Pausen (negative Flanke bis pos. Flanke) von 100ms und
>200ms

Falls du dir die Spezifikation des DCF77-Signals mal angeguckt hättest, 
würdest du feststellen, dass deine "Pausen" das Nutzsignal sind.

von Hannes Albert (Gast)


Lesenswert?

Das ist mir schon klar, aber wenn das Signal nicht passt, dass vom DCF77 
daherkommt, brauch ich gar nicht die Pausen zu betrachten. ICh weiß 
schon, dass nicht high und low meine Daten sind sondern die Pausen. ICh 
hab die Spezifikation gelesen!!

lg
Hannes

von Hannes Albert (Gast)


Lesenswert?

Hallo noch mal,
Ich hab das Ausgangssignal noch mal gemessen und es kommen irgendwelche 
Bitfolgen daher auber wesentlich schneller als im ca. Sekundenrüthmus 
(Pausen). Ich kann das nicht nachvollziehen.
Hat jemand das Signal schon mal gemessen oder weiß wer, was diese 
Bitfolgen darstellen.
Ich hab den DCF77 richtig angeschlossen (mit Pullup -Wid) aber irgendwie 
mag er nicht. Kann es sein, dass ich keinen Empfang habe?
Vielen Dank.

lg
Hannes

von Sonic (Gast)


Lesenswert?

Ich hab' dir doch oben den Aufbau der Zeitinformation gepostet, das ein 
Quasi-BCD-Code mit Paritäts-Prüfbits dazwischen. Aus der Grafik kannste 
fast alles 'rauslesen!

von Karl heinz B. (kbucheg)


Lesenswert?

> ca. 1,2s high (mit rauschen)
> und dann eben Pausen (negative Flanke bis pos. Flanke) von 100ms und
> 200ms).

Mach doch mal ein Photo vom Signal und poste das. Oszi Massstab
nicht vergessen.

von Hannes Albert (Gast)


Lesenswert?

ich hab das Teil jetzt wo anders ausprobiert und siehe da, es kommt 
heraus was herauskommen soll. Ich hatte also tatsächlich keinen Empfang. 
Ich möchte mich sehr herzlich für Eure Untestützung bedanken. Dieses 
Projekt ist abgeschlossen aber das nächste wartet schon und ich 
befürchte mit wieder sehr vielen Fragen.
Also Danke nochmals.

lg aus dem Empfangsbereich
Hannes

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.