PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Auswertung des DCF77 SIgnals



Slader
17.07.2012, 16:38
Hallo Leute,
ich habe bezüglich des DCF77 -empfängers von conrad, reichelt etc eine Frage. Ich habe am Ausgang des Empfängers(DATA Leitung) einen Impedanzwandler eingebaut und würde bevor ich die Schaltung fräsen lasse, gerne wissen was für eine Ausgangspannung/Ausgangssignal das DCF 77 Empfangsmodul liefert.

Außerdem habe ich noch eine prinzipielle Frage zum programmieren. WIe habt ihr das "Problem" gelöst das bei jedem Takt(neuen Bit) das Signal z.B. in ein ARRAy gespeichert wird? Habt ihr hierfür ein Interrupt auslösen lassen und dann die 59 Bits eingelesen oder wie seid ihr vorgegangen?

LG

JonnyBischof
17.07.2012, 17:02
--> http://www.produktinfo.conrad.com/datenblaetter/625000-649999/641138-sp-02-de-DCF_Empfaengerplatine.pdf

Das Ausgangssignal ist ein Open Collector (OC) Output. Kann mir deshalb nicht vorstellen, wozu du einen Impedanzwandler brauchen würdest...
Der OC Ausgang liefert indes auch keine Spannung, sondern du kannst damit eine beliebige Spannung deiner Wahl schalten.

Siehe http://www.elektronik-kompendium.de/sites/slt/1206121.htm für weitere Details zu OC.

Bezüglich Einlesen: Da das DCF Signal für einen uC extrem langsam ist (1 Hz) würde ich Interrupts auf die positive und die negative Flanke auslösen lassen. Dazwischen kannst du problemlos weitere Aufgaben ausführen...

Slader
17.07.2012, 18:04
ich habe folgenden DCF Empfänger
http://www.pollin.de/shop/dt/NTQ5OTgxOTk-/Bausaetze_Module/Module/DCF_Empfangsmodul_DCF1.html

Ich wusste nicht das dieser ein OC besitzt. Ein Freund von mir meinte das bei diesem DCF Empfänger das Ausganssignal nicht großartig belastet werden kann(Selbst mit einem µC nicht) Deshalb habe ich einen Impedanzandler nachgeschaltet...

Aber danke schon einmal für deine Hilfe

Klebwax
18.07.2012, 02:22
Bezüglich Einlesen: Da das DCF Signal für einen uC extrem langsam ist (1 Hz) würde ich Interrupts auf die positive und die negative Flanke auslösen lassen. Dazwischen kannst du problemlos weitere Aufgaben ausführen...

Das mit dem Interrupt ist keine gute Strategie. Jede kurze Störung, jede Nadel im Signal, löst einen Interrupt aus, und bringt die Auswertung aus dem Tritt. Besser ist es, das Signal im Timerinterrupt einzulesen, so alle 10 bis 20ms. So lassen sich leicht die 100 und 200ms unterscheiden.

MfG Klebwax

Kampi
18.07.2012, 05:57
Du kannst den DCF Empfänger auch nur zum synchronisieren (jede Stune, 1x am Tag nutzen).
So würde ich persönlich es eher machen.
Ne RTC rein und die Uhr 1x am Tag mittels DCF synchronisieren. Dazu dann das Modul per Transistor einschalten, bisl warten bis es was empfängt und dann per Interrupt die Impulse einlesen. Wenn du dann durch Störungen mehr Bits hast als du haben solltest, kannst du die Messung wiederholen.
Anschließend die Uhrzeit in die RTC schreiben.
Aber selbst wenn der DCF Empfänger keinen OC Pin hat, kannst du ihn direkt an den µC anschließen.
Ein Eingang eines Controllers ist recht hochohmig, sodass selbst ohne Impedanzwandler der Empfänger nicht stark belastet wird.

wkrug
18.07.2012, 08:22
Bei meinem letzten DCF Projekt, DCF77 Mutteruhr, hab ich eine andere Strategie verfolgt.
In dieser Uhr läuft die Anzeige mit dem internen Controller Takt.
Die von der DCF Zeit gelieferte Information wird in Variablen abgespeichert, wenn das paritäts Bit stimmt.
Ein Counter berechnet die Uhrzeit, die in der aktuellen Zeitinformation übertragen werden müsste.
Nach der vollen Minute wird die erwartete Zeitinformation mit der gelieferten verglichen.
Bei jedem erfolgreichen Vergleich wird ein Counter hochgezählt bis er den Wert 6 erreicht hat.
Sind beide Werte gleich und der Counter ist >5 wird die interne Uhr ebenfalls verglichen und die Uhrzeit übernommen.
Tritt ein Fehler auf, aber die paritäts Bits stimmen wird der Counter auf 0 gesetzt und der Vergleichszähler mit der neuen Uhrzeit geladen.
Das passiert z.B. bei der Umstellung von Sommer auf Winterzeit.
Wird danach wieder 6 mal ein gültiges Signal empfangen wird diese Uhrzeit wieder in die interne Uhr übernommen.

Einen Schönheitsfehler hat dieses System. Die angezeigt Uhrzeit kann um max. ~ +/- 1 Minute nicht stimmen.
Das könnte man verhindern, wenn man beim 30en DCF Empfangsimpuls den Sekundenzähler der internen Uhr auf 30 stellt. - Das hab ich aber bei mir nicht implementiert.

Das mit dem RTC Chip ist sicher auch ne gute Strategie, erfordert aber zusätzliche Bauteile und man muss sich was überlegen um die Umstellung von Sommer auf Winterzeit einigermassen zeitgerecht hin zu kriegen. Es gibt sehr gute RTC's die maximal 3 Sekunden pro Jahr abweichen.

Die DCF Library hab ich mir aus dem I-Net gezogen und für meine Bedürfnisse angepasst.
Sie besteht hauptsächlich aus einer Empfangsroutine die eine 1 oder eine 0 detektiert und einer Switch - Case Anweisung die die einzelnen Bits wieder zusammenfügt.

JonnyBischof
18.07.2012, 11:58
ich habe folgenden DCF Empfänger
http://www.pollin.de/shop/dt/NTQ5OTgxOTk-/Bausaetze_Module/Module/DCF_Empfangsmodul_DCF1.html

Ich wusste nicht das dieser ein OC besitzt. Ein Freund von mir meinte das bei diesem DCF Empfänger das Ausganssignal nicht großartig belastet werden kann(Selbst mit einem µC nicht) Deshalb habe ich einen Impedanzandler nachgeschaltet...

Aber danke schon einmal für deine Hilfe

Das ist ein anderes Modul, und im grottigen Datenblatt steht nicht explizit, was der Ausgang nun genau ist.
Die "wichtigen Hinweise" sind wohl nicht von einem Sachverständigen geschrieben worden, jedenfalls hatte der keine Ahnung was er da geschrieben hat...
Ich würde aber trotzdem auf OC tippen, am einfachsten probierst du das aber aus:

Wenn du einen Widerstand, z.B. 10k Ohm zwischen Data und GND anschliesst und die Spannung daran mit einem Multimeter misst, dann wirst du vermutlich keine Spannung messen -> OC. Wenn du jedoch die Versorgungsspannung des Moduls messen kannst, dann handelt es sich um einen "normalen" Digitalausgang.

Du könntest natürlich auch einfach nach der Antwort googeln, diese Frage hat bestimmt auch schon jemand gestellt...

wkrug
18.07.2012, 15:47
Die DCF Module von Pollin, Conrad und Reichelt sind unterschiedlich.
Ich bevorzuge das von Conrad, Best.Nr.:641138 weil die Ausgänge mit Transistoren gepuffert sind und ein DCF sowie ein !DCF Signal vorhanden ist.
Lediglich die Stromzuführung sollte über eine Drossel geführt werden, damit über die Versorgungsspannung keine Takt Artifakte des Microcontrollers eingespeist werden.