Hi, ich hab gerade mal eins von den DCF77-Modulen von Reichelt in Betrieb genommen. Als erstes habe ich mal das Signal im uC direkt auf ne LED ausgegeben. Schließlich ist es immer ne gute Idee, wenn man einen Algorithmus zum dekodieren eines Signals schreiben will, sich erstmal ein Bild von der zu erwartenden Signalqualität zu machen ;-) Aber was ich da gesehen habe, was schlimmer, als ich erwartet hab. Man erkennt deutlich den 1 Hz Takt. Aber hin und wieder sind deutlich Störungen zu sehen. Und für die Dekodierung auf eine ganze Minute ohne eine falsche Flanke zu hoffen scheint mir mehr als gewagt. Nun eine Dekoderroutine für ein ideales DCF Signal zu schreiben, dürfte ohne große Probleme gehen. Aber wie könnte ich die Dekodierung etwas robuster gestalten? Welche Filtermaßnahmen könnten sich realisieren lassen? Kommerzielle Funkuhren empfangen schließlich auch eine Zeit in Umgebungen, in denen mein DCF Modul definitiv kein sauberes Signal mehr liefert. Wenn ich nun einfach die Checksummen und Patity-Bits auswerte und ungültige Datensätze verwerfe, könnte es unter umständen ziemlich lange dauern, bis endlich mal ne gültige Zeit empfangen wurde. Zuerst dachte ich daran, für jedes empfangene Bit einen IIR Filter zu implementieren. Also für jedes Bit an einer bestimmten Position den Mittelwert über mehrere Wiederholungen berechnen. Würde 60 Byte RAM kosten, also noch machbar. Aber der Ansatz hat ein großes Problem (abgesehen von dem Problem mit den Spatzen und Kanonen): Nämlich sich erst einmal korrekt auf die Bitpositionen zu synchronisieren. Außerdem wird ja nicht immer das gleiche Signal wiederholt, sondern die Bits verändern sich. Ein Tiefpass wäre also kontraproduktiv, wenn ich wirklich die aktuelle Uhrzeit dekodieren möchte. Hat noch jemand weitere Ideen, was man machen könnte? Wie machen das normale Funkuhren?
Die theoretisch beste Methode dürfte das sein, was Georg Johann auf seiner Seite hat. Mittels einer Art Faltung. http://gjlay.de/software/dcf77/konzept.html
Also mein Eigenbau-DCF-Wecker habe ich folgendermassen programmiert: Bei einer etwas längeren Signalpause wird ein Reset ausgeführt. Dann müssen alle 59 Pulse im Bereich von ca. 0,05 bis 0,25 Sekunden liegen (weiss nicht mehr genau wie eng ich die Grenzen gelegt habe). Liegt auch nur ein einziges ausserhalb von diesem Bereich, wird das ganze Paket verworfen. Waren alle Signale gültig, wird ausgewertet. Zuerst werden die Parity-Bits überprüft und ggf. abgebrochen. Dann wird überprüft, ob die empfangene Zeit genau eine Minute vom letzten empfangenen Wert abweicht. Ist es nicht exakt eine Minute, wird das Paket verworfen. Zusätzlich müssen auch noch 3 aufeinanderfolgende Pakete all diese Kriterien erfüllen. Du siehst, es ist eine extrem strikte Implementation. Ich wollte ganz sicher gehen, dass mich der Wecker niemals zu einer Falschen Zeit weckt :-) Tagsüber siehts mit dem Empfang ziemlich kacke aus, da kann es schonmal vorkommen dass eine Stunde nicht genügt um sich zu synchronisieren. In der Nacht, wenn alle Geräte im näheren Umkreis ausgeschaltet sind, dauert es aber kaum mehr als diese drei notwendigen Minuten, nach 5 Minuten klappts eigentlich immer. Die Change, dass mal einen Tag lang kein gültiges Signal reinkommt, ist praktisch Null. Kommt aber natürlich auch drauf an wie gut du Empfang hast. Ich würde dir aber mal raten, dir das Signal in der Nacht anzuschauen. Übirgens verwende ich den Empfänger von Conrad, aber ich vermute mal das ist in etwa der selbe wie deiner(?).
Urban B. schrieb: > Du siehst, es ist eine extrem strikte Implementation. Ich wollte ganz > sicher gehen, dass mich der Wecker niemals zu einer Falschen Zeit weckt > :-) dafür brauch ich kein dcf77. n halbwegs genau schwingender quarz tut´s auch. mfg
dolf schrieb: > Urban B. schrieb: >> Du siehst, es ist eine extrem strikte Implementation. Ich wollte ganz >> sicher gehen, dass mich der Wecker niemals zu einer Falschen Zeit weckt >> :-) > > dafür brauch ich kein dcf77. > n halbwegs genau schwingender quarz tut´s auch. > mfg Ja, stimmt schon. Aber ich finde DCF einfach genial, man braucht sich nie um die Uhr zu kümmern, die läuft jahrelang immer auf die Sekunde genau und stellt Sommer/Winterzeit automatisch um. Klar kriegt man ohne DCF auch eine relativ genaue Uhr hin, aber ich sehe bei DCF eigentlich nur Vorteile (sofern der Empfang vorhanden ist), also warum nicht? Über den ganzen Tag habe ich den DCF-Empfang übrigens eh deaktiviert weils da nicht viel bringt. Es wird nur Nachts um 3 Uhr kurz synchronisiert, und dann erst nächste Nacht wieder. Deshalb wäre ein einziges falsch empfangenes Signal auch so gravierend, dann würde die Zeit einen ganzen Tag lang falsch laufen :-) Aber man hat da ja relativ viel Spielraum wie man das genau realisieren will. Dem einen genügt es wenn alle paar Wochen mal synchronisiert wird, der andere will kontinuierlicher Empfang haben... mfg
Innerhalb eines Zeitfensters werden Samples genommen und innerhalb eines Gültigkeitsbereichs entschieden, ob eine 0 oder 1 erkannt wurde. Also 10ms Timer, innerhalb eines 300ms Fensters wird gezählt. 5-14 gültige Null, 15-25 gültige Eins, Rest ungültig. Kurze Störimpulse und kurze Aussetzer (<30ms) haben so keinen Einfluss auf die Auswertung. Werden über mehrere Bits nur ungültige Werte empfangen, wird das Fenster neu so synchronisiert, dass die vordere Flanke des Signals auf dem 5. Sample liegt. Wenn das Signal sich nur langsam im Fenster verschiebt (ungenauer Quarz), wird das Fenster durch Auslassen oder hinzufügen eines Samples nachgeführt. Dies kann auch gleichzeitig zum Nachjustieren des Timers benutzt werden, und damit die Genauigkeit der Uhr bei Ausfall des DCF-Signals verbessern. Paritätsprüfung und Plausibilitätsprüfung über zwei Zeittelegramme sorgen für zusätzliche Sicherheit.
Die beste Maßnahme wäre eigentlich, einen Empfänger zu verwenden, der die Phasenmodulation des DCF-Signales auswertet. Die billigen Dinger nutzen nur die AM, und die lässt sich beliebig leicht stören.
om pf schrieb: > Die beste Maßnahme wäre eigentlich, einen Empfänger zu verwenden, der > die Phasenmodulation des DCF-Signales auswertet. Die billigen Dinger > nutzen nur die AM, und die lässt sich beliebig leicht stören. Hast Du da einen passenden Applikationsbericht? Im Prinzip funktioniert die normale AM aber auch bis zu den Kanarischen Inseln (Selbst ausprobiert mit einem käuflichen Wecker). Gruss Harald
Hi, Klaus, nach der Engpassorientierten Strategie: "Wo ist der engste Engpass gegen höhere Qualität der Uhrzeit?" (Ich ergänze: "und gegen eine Normalfrequenz und -zeit am Basteltisch?") 1. Langes Kabel - und die Antenne samt Empfänger unter das Dach schrauben oder an das Geländer Deines Balkons. Oder wo auch immer, nur weit weg von PC, TV, Arbeitsplatz und Netzspannung. 2. Quarzfilter - eher nicht, die Module haben schon ein einfaches Quarzfilter, manche auch zwei in Serie. 3. Ofenoszillator, von DCF77 nachgesteuert: Nachsteuerung in den ruhigen Morgenstunden. Das steht noch auf meiner Agenda. 4. Mit Atmega und Ofenoszillator die 77,5 kHz runtermischen auf 625 Hz, quadraturdemodulieren, Betrag vom Real- und Imaginärteil speichern und über eine Minute akkumulieren - müsste eine dolle Empfindlichkeit ermöglichen. Und wenn es wirklich genau sein soll, dann muss ich vom Ofenoszillator eine 77,5 kHz-Schwingung zum Vergleich erzeugen und in die Ferritantenne einspeisen zum Vergleich. Wegen der temperatuabhängigen Phasenverschiebung der Quarzfilter. Noch Ideen? Ciao Wolfgang Horn
Wolfgang Horn schrieb: > Noch Ideen? Meine Idee war mal zwei RFM12 oder ein RFM01/02 Sender/Empfänger-Duo mit DCF-Modul und µC außerhalb des Hauses zu platzieren und die Zeit dann über Funk zu übertragen. Die Idee kam daher, dass ich im Freien nie Empfangsprobleme hatte. Eine andere Idee wäre, eine RTC mit µC (ggf. direkt als RTC) und DCF-Modul als eine Art eigenständiges DCF-Modul aufzubauen. Der µC wertet die Daten des DCF-Moduls aus und sendet wahlweise die RTC-Zeit oder die Funkgenaue Zeit.
Karl schrieb: > Wolfgang Horn schrieb: >> Noch Ideen? > > Meine Idee war mal zwei RFM12 oder ein RFM01/02 Sender/Empfänger-Duo mit > DCF-Modul und µC außerhalb des Hauses zu platzieren und die Zeit dann > über Funk zu übertragen. Die Idee kam daher, dass ich im Freien nie > Empfangsprobleme hatte. Man hat für solche Zeitzeichensender absichtlich Langwelle genommen, da es da ziemlich egal ist, ob Du draussen oder drinnen bist. Und eine Funklösung durch eine andere abzu- lösen, macht auch keinen Sinn, da diese Funkverbindung ja auch gestört sein kann. Dein Problem ist anscheinend eine extreme Störverseuchung in der Nähe des Standortes Deiner Uhr. Da müsste es reichen, entweder die Antenne irgendwo anders innerhalb Deiner Wohnung zu plazieren oder eine verbesserte Signalauswertung zu verwenden. Vorschläge hats da ja schon genug gegeben. Gruss Harald
Ich würde noch einen Klappferrit über die Zuleitungen schieben, das hat bei mir Wunder gewirkt
Kann man die 77,5kHz eigentlich nicht direkt mit einem Mikrocontroller abtasten? Hmm, einen externen Wandler bräuchte man bei den Meisten Controllern noch, aber sonst müsste das doch funktionieren. Dann kann man mit der >digitalen Keule< auf das Signal losgehen und sich austoben.
Simon K. schrieb: > Kann man die 77,5kHz eigentlich nicht direkt mit einem Mikrocontroller > abtasten? Hmm, einen externen Wandler bräuchte man bei den Meisten > Controllern noch, aber sonst müsste das doch funktionieren. > > Dann kann man mit der >digitalen Keule< auf das Signal losgehen und sich > austoben. Einschliesslich Phasendemodulation? Gruss Harald
Hi, Simon, > Kann man die 77,5kHz eigentlich nicht direkt mit einem Mikrocontroller > abtasten? Klar. Der ADC der Atmegas ist dafür zu langsam. Der ADC eines STM32 ist - im Prinzip - schnell genug für die Vierfachabtastung in Real- und Imaginärteil. Aber - ist der innere RC-Oszillator, dessen 168 MHz von einem 8 MHz-Takt nachgeregelt wird, dafür auch stabil genug? Ciao Wolfgang Horn
Wolfgang Horn schrieb: > Noch Ideen? Mit einem Schaltnetzteil zur Spannungsversorgung fängt man sich schnell die Seuche ein. Keine Ahnung, wie man die wieder los wird... Ich bin kein Profi und hab eher ziellos Drosseln, Filter, Ferrite etc. getestet, aben nix half. Das einzige was geholfen hat war Erdung — nicht wirklich praktikabel. Vielleicht hat ein Profi brauchbare Tipps?
Hallo Klaus (Gast) wie weit bist du von Darmstadt entfernt? Innerhalb von Deutschland dürften deine Probleme A - von einer falsch ausgerichteten Antenne, B - Standort im Stahlskelett-Bau, C - deinem schlecht enstörtem Schaltungsaufbau, D - oder von nahen Störquellen. kommen. Habe schon Con.., Rei.. und Pol.. Module getestet: Ohne A, B, C, oder D funktionieren die üblicherweise auch in 500 km Entfernung und synchronisieren bei pingeligster Empfangsroutine in < 5 Minuten. Test: Packe einen billigen DCF-Wecker daneben! Die meisten funktionieren auch in den Nachbarländern. Aber wahrscheinlich nicht neben deinem Versuchsaufbau.
Hi, Johann, > Mit einem Schaltnetzteil zur Spannungsversorgung fängt man sich schnell > die Seuche ein. Keine Ahnung, wie man die wieder los wird... Steckerschaltnetzteile sind praktisch und billig, aber hätten wir ein Hörvermögen bis 100 kHz, hört ich schon an meinem Arbeitsplatz eine Kakophonie. Nimm zum Testen erstmal eine Bleibatterie. Oder ein Labornetzteil mit Linearregler. Halte Abstand zwischen Antenne und anderem Gerät. Ah ja, dazu bedaure ich den Ausfall meines Pegelmessplatzes mit Wobbelfunktion bis herab zu 10 kHz. Damit könnte ich wenigstens das Spektrum dieser Kakophonie sehen. Messe zu können ist immer besser als Blindheit oder Taubheit. Ciao Wolfgang Horn
Simon K. schrieb: > Die theoretisch beste Methode dürfte das sein, was Georg Johann auf > seiner Seite hat. Mittels einer Art Faltung. > http://gjlay.de/software/dcf77/konzept.html Das ist ja ziemlich genial! Mal sehn, ob ich mal versuche das zu implementieren. Klaus2m5 schrieb: > Innerhalb eines Zeitfensters werden Samples genommen und innerhalb eines > Gültigkeitsbereichs entschieden, ob eine 0 oder 1 erkannt wurde. Also > 10ms Timer, innerhalb eines 300ms Fensters wird gezählt. 5-14 gültige > Null, 15-25 gültige Eins, Rest ungültig. Kurze Störimpulse und kurze > Aussetzer (<30ms) haben so keinen Einfluss auf die Auswertung. Jap, das dürfte die Methode der Wahl sein, um die Bits zu dekodieren. Mit Flankenauswertung kommt man nahzu ohne Zeitverzögerung in Teufels Küche ;-) Johann L. schrieb: > Mit einem Schaltnetzteil zur Spannungsversorgung fängt man sich schnell > die Seuche ein. Keine Ahnung, wie man die wieder los wird... Jap, Schaltnetzteil... Hab ich auch. Ich probier nachher mal ne 9V Batterie aus. Bernd schrieb: > wie weit bist du von Darmstadt entfernt? So weit es in Deutschland möglich ist, Schöne Grüße aus dem hohen Norden ;-) > > Innerhalb von Deutschland dürften deine Probleme > A - von einer falsch ausgerichteten Antenne, Nein, Antenne habe schon ausgerichtet. > B - Standort im Stahlskelett-Bau, Nein, normales Einfamilienhaus und Antenne liegt nahe am Fenster. > C - deinem schlecht enstörtem Schaltungsaufbau, Ja, gut möglich. > D - oder von nahen Störquellen. > kommen. Auch möglich. Aber wenn mein Funkwecker mit den Störungen klar kommt, will ich das auch ;) Mein Aufbau verwendet ein Schaltnetzteil und zur Anzeige der Uhrzeit sitzen da ca. 50 LEDs im PWM Betrieb. Also erstmal schlechte Ausgangsbedingungen. Ich hab jetzt den Empfänger auf eine kleine Extraplatine mit 1 m Kabel dran gepackt. Zusätzlich nen LC-Filter, eigenen Spannungsregler und Pufferkondensatoren am Modul. Am Ausgang hab ich dann noch nen CMOS Buffer hängen um mir auf dem Signal zurück zum uC nicht wieder Störungen einzufangen. Das ist nötig, weil das Modul nur einen verdammt kleinen Strom am Ausgang liefern kann. Ich meine +/- 5 uA irgendwo gelesen zu haben. Das war der erste Schritt. Wie ich die Störabstrahlung meiner LEDs verringern kann, hab ich allerdings bisher keine Ahnung. Der nächste Schritt sind nun die Fehlerkorrekturmaßnahmen auf Softwareebene. Wenn ich auf die Bitpositionen und Minutenstart synchronisiert bin, kann man ne ganze Menge machen. Aber erstmal muss man sich darauf einsynchronisieren. Mal sehn, wie ich das mache. Denn die Minutenmarke kann ja auch gestört sein. Das heißt, wenn ich nicht erfolgreich dekodieren kann, muss ich wieder zurück auf los, und die Minutenmarke suchen.
Klaus schrieb: > Mein Aufbau verwendet ein Schaltnetzteil und zur Anzeige der Uhrzeit > sitzen da ca. 50 LEDs im PWM Betrieb. Also erstmal schlechte > Ausgangsbedingungen. Oooh ja, das ist bestimmt eine ganz schlechte Ausgangslage. Ich habe in meinem Wecker ein 4x16 LCD mit dimmbarer (PWM) Hintergrundbeleuchtung. Ich habe mit Blockbatterie, Stürzkondensatoren, Induktivitäten (planlos) herumexperimentiert und kam auf keinen grünen Zweig. Solang das PWM aktiv war, konnte ich den Empfang vergessen. Schlussendlich habe ich es aufgegeben und während der Synchronisation (die eh nur in der Nacht und nach dem Einschalten stattfindet) die Hintergrundbeleuchtung einfach ganz deaktiviert :-) Das schaltnetzteil (Traco Printnetzteil) verursacht dagegen keine Störungen. Ist aber auch mit einem ca. 1,5m langen Kabel etwas abgeschottet und nicht direkt im Weckergehäuse untergebracht. mfg
Klaus schrieb: > So weit es in Deutschland möglich ist, Schöne Grüße aus dem hohen Norden > ;-) Ich kann nicht klagen, auf Usedom (549,068km) habe ich einwandfreien Empfang mit dem Conrad-Modul. Klaus schrieb: > Mein Aufbau verwendet ein Schaltnetzteil und zur Anzeige der Uhrzeit > sitzen da ca. 50 LEDs im PWM Betrieb. Ich hatte ähnliche Probleme. wenn der Emfänger direkt hinter der Multiplexanzeige sitzt (MAX7219), geht garnichts. Mit 20cm Abstand gehts wieder. Ich wollte aber beides in ein Gehäuse setzen, daher wird der MAX7219 gegen 3:17 für etwa 3min abgeschaltet, bis das Paket gültig ist. Peter
Irgendwie hat man nahe am Salzwasser besseren Empfang. Das habe ich schon mehrfach gehört.
Abdul K. schrieb: > Irgendwie hat man nahe am Salzwasser besseren Empfang. Das habe ich > schon mehrfach gehört. Schälchen mit Salzwasser neben das Empfanfmodul? Muss ich mal testen!
>auf Usedom (549,068km) habe ich einwandfreien Empfang ...
das ist aber eine recht grobe Entfernungsangabe!
MfG
Naja. Vorletztes Jahr war ich auf dem Darß, um mir eine ordentliche Enttäuschung reinzuholen. Von wegen Urwald. Also Usedom ist daneben und nicht sonderlich groß. Wenn man da nach dem wilden Elektronikschrauber fragt, ist man sicherlich schnell beim Richtigen ;-) Da gibts doch tatsächlich noch Laubfrösche. Unglaublich. Wohnst du da? Wir haben da Verwandte.
Hi, Nochmals zurück zum eigentlichen Thema: Bei mir funktioniert DCF77 mit PIC16F628, ca. 200km von Mainflingen entfernt östlich von Stuttgart seit längerer Zeit einwandfrei. Ich hatte damals das Programm im Zuge meiner Einarbeitung in die Assembler-Programmierung des PIC über einige Monate hinweg entwickelt (natürlich habe ich dazu wo ich konnte "gespickelt" z.B. auf er Seite [http://www.stefan-buchgeher.info/elektronik/dcf/dcf.html] Hier die Basisdaten: Pollin-Modul direkt im Uhrgehäuse, ca. 5cm entfernt vom µC eingebaut. Antenne ist ca. Nord-Süd ausgerichtet Uhr-Standort: Fenstersims, ca. 50cm entfernt von meinem Tower-PC Filtermaßnahmen: Low-Bit zulässige Pulsbreite +-20ms also 80 - 120ms High-Bit " " " " 180 - 220ms Synchronisationspause (zwischen Sek. 58 und Sek 0) mindestens 1024ms Dauer Zwischen 2 aufeinanderfolgenden Sync-Pausen müssen in Folge exakt 58 Pulse mit zulässiger Pulsbreite empfangen worden sein. Das empfangene DCF-Telegramm wird als "TAG_Alt", "Monat_Alt" usw.. gespeichert. Das aktuell empfangene, dekodierte DCF-Telegramm wird in der Synchronisationspause mit den "Alt-Daten" verglichen. Die Aktuell- / Alt-Daten müssen bis auf den Unterschied von 1 Minute exakt übereinstimmen. Nur dann wird das Datum übernommen, angezeigt und die frei laufende interne Quarzuhr bei Bedarf sekundengenau nachgestellt. Ich nehme es hin, dass z.B. beim Datumswechsel, welcher ja von 24 nach 00 Uhr erfolgt, die Uhr kurzfristig beim alten Datum verharrt. Vielleicht habe ich noch mal Lust, das Verfahren zu verfeinern. Auf die Auswertung der Paritätsbits habe ich verzichtet. Mit dem o.g. Verfahren synchronisiert meine Uhr ca. 3-4 Minuten nach dem Einschalten mit dem DCF77-Signal. mfg Ottmar
Johann L. schrieb: > Abdul K. schrieb: >> Irgendwie hat man nahe am Salzwasser besseren Empfang. Das habe ich >> schon mehrfach gehört. > > Schälchen mit Salzwasser neben das Empfanfmodul? Muss ich mal testen! Bringt 40dB, wenn du die Schale groß genug machst: DG9WF_Iono_lang.pdf
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.