Joachim B. schrieb: > Aber ich nutze viel aus dem Netz, Fleury Dannegger (Danke an diese) > und lerne davon auch mal mehr mal weniger. > > Erste Versuche selbst DCF77 entschlüsseln am PC, später nutze ich nur > noch den genialen Code von PeDa. Hast du / hat jemand evt. einen Link zu diesem Code, bitte? Meine Suchmaschine findet ungefähr eine Zillion DCF-Dekoder, aber welcher ist der geniale?
eagle user schrieb: > Joachim B. schrieb: > >> Aber ich nutze viel aus dem Netz, Fleury Dannegger (Danke an diese) >> und lerne davon auch mal mehr mal weniger. >> >> Erste Versuche selbst DCF77 entschlüsseln am PC, später nutze ich nur >> noch den genialen Code von PeDa. > > Hast du / hat jemand evt. einen Link zu diesem Code, bitte? Meine > Suchmaschine findet ungefähr eine Zillion DCF-Dekoder, aber welcher ist > der geniale? Warte nur ein Weilchen, dann kommt der höchst geniale Schöpfer selbst, um sein Werk zu loben.
eagle user schrieb: > Hast du / hat jemand evt. einen Link zu diesem Code, bitte? Falls Du Peter Danegger meinst, frag ihn doch selbst. Er ist regelmäßiger Besucher dieses Forums.
Beitrag "DCF77 Uhr in C mit ATtiny26" lese den ganzen Thread! Korrekturen könnten noch drin sein: Beitrag "Re: DCF77 Uhr in C mit ATtiny26" ich lese die in der ISR mit der Tastenentprellroutine alle 10ms bullet proof von Dannegger ein, dann ergibt sich 6-12 Impulse für 0 Bit und 17-25 Impulse für 1 Bit in die scan Routine bis alle Bits gesammelt sind
Danke für die prompte Antwort! Mir scheint, dieser Dekoder ist für seine Größe ziemlich zuverlässig, so weit, so gut. Dafür braucht er aber einen ziemlich guten Empfang. Ich suche eigentlich einen, der nur alle paar Sekunden mal ein richtiges Bit braucht. Erstens sollte er auch zerstückelte Impulse erkennen, zum Beispiel ist (90ms = 1, 10ms = 0, 80ms = 1) ziemlich sicher eine 1. Dann müsste man irgendwie die extrem hohe Redundanz in den Daten nutzen. Ungefähr die Hälfte aller Bits ändert sich ja nur alle 60 Minuten. Es kommt noch schlimmer: die eigene Uhr wird ja höchstens um wenige Minuten falsch gehen (sonst ist sie kaputt). Man kennt also alle Bits bis auf die Minuten-Bits und ca. 14 am Anfang schon, bevor man sie empfangen hat. Selbst die Minuten-Bits kennt man ungefähr. Wenn man ±3 Minuten Uhren-Fehler zulässt, gibt es nur 7 gültige Bitkombinationen. Damit müsste doch auch bei schlechtem Empfang noch was gehen. Gute RTC-Chips speichern den Zeitpunkt des Stromausfalls. Damit könnte man den max. Fehler von der Dauer der stromlosen Zeit abhängig machen. Jetzt aber nichts wie weg hier...
Welches Problem willst du eigentlich lösen? Wenn der Funkempfang schlecht ist, dann macht man was anderes. Für eine gewöhnliche Uhr genügt es doch locker, wenn sie einmal pro Woche die Zeit synchronisieren kann. Wenn dein Empfang so schlecht ist, dass nicht einmal dies ohne großartige Tricks gelingt, dann lass es besser ganz bleiben. Es gibt auch andere Methoden, langzeit-stabile Uhren zu bauen. Nur um ein Beispiel zu nennen: Du kannst die Netzfrequenz aus der Steckdose als Taktgeber verwenden.
Stefan U. schrieb : > Welches Problem willst du eigentlich lösen? Halbwegs genaue Uhrzeit ohne NTP (es gibt keine Verbindung nach außen) und GPS (vernünftiger Blitzschutz für die Außenantenne ist zu aufwendig). > Für eine gewöhnliche Uhr genügt es doch locker, wenn sie einmal pro > Woche die Zeit synchronisieren kann. Eben, immer dann, wenn der Empfang nicht ganz so schlecht ist. > Wenn dein Empfang so schlecht ist, dass nicht einmal dies ohne > großartige Tricks gelingt, dann lass es besser ganz bleiben. Nachdem das nur Software-Tricks sind, kann man die doch ruhig spendieren. > Es gibt auch andere Methoden, langzeit-stabile Uhren zu bauen. Nur um > ein Beispiel zu nennen: Du kannst die Netzfrequenz aus der Steckdose als > Taktgeber verwenden. Im Prinzip ja, aber * addieren sich die Fehler durch Netzausfälle * braucht es ziemlich gute Filter gegen Störungen * braucht es Filter mit Zeitkonstanten von Tagen gegen die täglichen Schwankungen der Netzfrequenz. Und selbst dann bleibt schon mal ein Fehler von 16 Sekunden. Benutzer haben sich schon mal an einem Fehler von 2 Sekunden gestört. http://www.netzfrequenz.info/allgemein/abweichungen-der-netzfrequenz-2.html
eagle user schrieb: > Ich suche eigentlich einen, der nur alle paar Sekunden mal ein richtiges > Bit braucht. Dann sollte es reichen, wenn Du die fehlende 59 Sekunde sicher erkennst. Meine Erfahrung mit den standard Empfängern ist, daß der Unterschied zwischen gestörtem Empfang und totalem Chaos sehr gering ist. D.h. man kann einen riesen Aufwand treiben, ohne eine merkbare Empfangsverbesserung. Am besten synchronisiert man nachts zwischen 2.00-4.00 Uhr und ein LCD/TV in der Nähe sollte tunlichst aus oder in Standby sein.
:
Bearbeitet durch User
> Meine Erfahrung mit den standard Empfängern ist, daß der Unterschied > zwischen gestörtem Empfang und totalem Chaos sehr gering ist. Meine auch. Wenn der Empfang nicht ausreicht, brauchst du eine ganz andere Lösung. Schonmal daran gedacht, eine erheblich größere Antenne zu verwenden? Zum Beispiel eine Luftspule statt eine mit Ferritkern. http://forum.db3om.de/ftopic8801.html https://sophisticatedcircuits.wordpress.com/category/empfangerbasteln-dcf77/
Ich zittiere mal von der zweiten Seite: "Das DCF77-Signal zu empfangen ist nicht schwer, weil bereits eine einfache kleine Ferritspule etwa 1mV Empfangsspannung macht. Mit einer großen Luftspule bekommt man locker 5mV. Ich habe 100m Draht so aufgewickelt, dass sich ein Durchmesser von ca. 16cm ergab. Damit hat man dann auch eine gute Richtwirkung, man dreht die Antenne so, dass die Empfangsspannung maximal oder eventuelle Störungen minimal werden."
Ist schon niedlich, was da für Hoffnungen in die Software eines "genialen Codes" gesetzt werden, wenn es keinen vernünftigen Empfang gibt. Im Endeffekt kommt immer noch der 80...100 Jahre alte Amateurfunkerspruch zum Tragen: Der beste Verstärker ist eine gute Antenne. Wobei DCF in Deutschland und den Nachbarländern nun wirklich keine hohen Antennen-Ansprüche stellt! Die Ferritantenne aus dem billigsten Supermarkt-DCF-Wecker kann man über zig Meter Kabel IRGENDWIE außerhalb eines geschirmten, oder störverseuchten Gebäudes anbringen. Schon gehts. Schau dir doch einfach mal auf dem Oszilloskop ein DCF- Empfängersignal im gut abschwächenden Stahlbetonbau mit einem Dauerstörer und einigen Breitband-Pulsstörungen an. Der Dauerstörer kehrt ab und zu die Puls-Polarität um, Die Breitbandstörer fügen "Füllimpulse" ein... Die geniale Lösung wird dann genialste Korrelationsrechnungen über Stunden erfordern. Wobei die Korrelation sich schon auf eine GUTE Zeitbasis verlassen muss...
Oldie schrieb: > Ist schon niedlich, was da für Hoffnungen in die Software > eines "genialen Codes" gesetzt werden, wenn es keinen > vernünftigen Empfang gibt. Das ist Unsinn. Natürlich kann man mit einem guten Code die reichlich vorhandene temporale Redundanz des DCF77-Signals sehr wohl vorteilhaft verwenden, weit jenseits der üblichen Implementierungen, die nur ein Telegramm auswerten und dabei oft nichtmal für dieses eine Telegramm alle möglichen Plausibilitäts-Checks durchführen (also nichtmal die gesamte implizite Redundanz nutzen). > Im Endeffekt kommt immer noch der 80...100 Jahre alte > Amateurfunkerspruch zum Tragen: > Der beste Verstärker ist eine gute Antenne. Das ist wohl wahr. Aber: das eine schliesst doch das andere nicht aus. Was spricht deiner Meinung nach dagegen, sowohl eine gute Antenne als auch guten Code zu verwenden? > Wobei DCF in Deutschland und den Nachbarländern nun wirklich > keine hohen Antennen-Ansprüche stellt! Eben. Das Problem hier sind vor allem Störungen aus dem Nahfeld, gegen die man außer der Ausnutzung der Richteigenschaften der Antenne hardwaremäßig leider nur relativ wenig tun kann. Gerade hier wird eine sinnvolle Implementierung des Decoders umso wichtiger. > Die Ferritantenne aus dem billigsten Supermarkt-DCF-Wecker kann > man über zig Meter Kabel IRGENDWIE außerhalb eines geschirmten, > oder störverseuchten Gebäudes anbringen. Schon gehts. Wenn die Störung z.B. nicht gerade vom Telekom-Schaltkasten vor dem Gebäude kommt... > Die geniale Lösung wird dann genialste Korrelationsrechnungen > über Stunden erfordern. Wobei die Korrelation sich schon auf > eine GUTE Zeitbasis verlassen muss... Ach watt, das ist doch Unsinn. Die lokale Zeitbasis darf über den Empfangszeitraum nicht mehr als eine Minute abweichen. Wenn man also z.B. 8 Telegramme als Basis nehmen will, muss der Fehler der lokalen Zeitbasis nur kleiner als 1/8=12,5% sein. Das ist nichtmal für die werksseitig nur mäßig vorkalibrierten RC-Oszillatoren der ollen AVRs ein ernsthaftes Problem. Und die ausführliche "Korrelationsanalyse" über 8 Telegramme dauert auf 'nem AVR8 irgendwas in der Größenordnung von 10.000 Takten. Bei 8Mhz Systemtakt sind das 1,25ms. Das ist sehr weit weg von den Stunden, die du hier behauptest.
Oldie schrieb: > Im Endeffekt kommt immer noch der 80...100 Jahre alte > Amateurfunkerspruch zum Tragen: > Der beste Verstärker ist eine gute Antenne. Ich will die Störungen aber nicht verstärken ;) > Schau dir doch einfach mal auf dem Oszilloskop ein DCF- > Empfängersignal im gut abschwächenden Stahlbetonbau mit einem > Dauerstörer und einigen Breitband-Pulsstörungen an. > > Der Dauerstörer kehrt ab und zu die Puls-Polarität um, > Die Breitbandstörer fügen "Füllimpulse" ein... So sieht es im wirklichen Leben wohl aus. > Die geniale Lösung wird dann genialste Korrelationsrechnungen > über Stunden erfordern. Wobei die Korrelation sich schon auf > eine GUTE Zeitbasis verlassen muss... Wo wäre das Problem? 1Hz mit max. 5ppm kommt aus dem RTC-Chip für 2.95 Euro und solange es nur Stunden dauert -- wir haben doch Zeit. Im Wirklichkeit sollte es natürlich kontinuierlich laufen. Übrigens will man die lokale Uhr garnicht stellen, sondern nur langsam nachziehen. Das geht schon, sobald man das Vorzeichen des Fehlers einigermaßen sicher erkennen kann. c-hater schrieb: > Ein aufwendiger Dekoder könnte bessere Ergebnisse liefern. Das hört sich gut an, danke. Schade, das es nur in Assembler geht ;)
c-hater schrieb: > Und die ausführliche "Korrelationsanalyse" über 8 Telegramme dauert auf > 'nem AVR8 irgendwas in der Größenordnung von 10.000 Takten. Bei 8Mhz > Systemtakt sind das 1,25ms. Das ist sehr weit weg von den Stunden, die > du hier behauptest. Eine vertrauenswürdige Standardlösung wartet auf 2 komplette Telegramme, die auf Fehlerfreiheit UND Plausibilität der aufeinanderfolgenden Zeitangaben geprüft wurden, bevor es eine Uhr nachstellt. Dauert schon mal 2...3 Minuten. Mag ja sein, dass das Auswerten von 8 leicht gestörten Telegrammsequenzen in 1,25 ms erledigt ist und zum Erfolg führt. Insgesamt hast du aber 8 Minuten (+ 1,25 ms) gebraucht! Nützt aber nix, wenn es schwer verstümmelte Signale sind. Da musst du über Stunden nach Regelmäßigkeiten suchen, die dir im Vergleich mit möglichen (!) Telegrammsequenzen eine ausreichende Wahrscheinlichkeit liefern. Für die Auswertung ALLER Signalflanken über eine Stunde brauchst du eine Zeitbasis, die nach 3600 s noch deutlich besser, als 100 ms (1/36000 = 28 ppm) ist, also vielleicht 3 ppm. Und ne Menge SRAM. Das meinte ich mit "genialste Korrelationsrechnungen".
>> Ein aufwendiger Dekoder könnte bessere Ergebnisse liefern. > >Das hört sich gut an, danke. Schade, das es nur in Assembler geht ;) Wie kommst du zu dieser schwachsinnigen Erkenntnis?
Wenn es dir egal ist, dass der code ca 2k ist, dann Kann ich den code posten.
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.