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.
> 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.htmlhttps://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?