Hallo @ll,
Ich programmiere einen µC um einen DCF77 - Empfänger auszulesen.
Um die ankommenden Signale auf Plausibilität zu kontrollieren, wollte
ich die Zeiten mit einer Toleranz von +/-10% überprüfen.
Bei der Darstellung des Signals auf dem Oszi hab ich festgestellt, daß
die Signallängen doch ziemlich stark von den überall angegebenen 100
bzw. 200ms abweichen.
Meine Frage an die DCF77 Experten ist nun, ändert sich diese
Signallänge öfters, oder ist diese Abweichung ok, bzw. gleichbleibend.
(möglicherweise Unterschiede zum "Ersatzsender")
Gruß und Dank von Mike
wie groß ist denn die abweichung?
ich hatte auch so meine probleme damit. auf digital hobby gab es ein
beispiel projekt.
die abweichungen könnte auch vom schlechten empfang kommen.
beispiel hin oder her... am besten hatte es bei mir funktioniert wenn
ich mit dem int vom der uhr einen timer gestartet hab und dann nach
sagen wir 150 ms geguckt hab ob ein high oder low am pin anliegt
Hallo Sebastian,
ähnlich hab ichs auch vor, trotzdem dachte ich an eine etwas
gründlichere Überprüfung, da der letztentliche Einsatz in einer
etwas"verseuchten" Umgebung stattfindet. Da die Signale aber recht
gut aussehen (von der Signalform her), halt nur ca. 10% zu kurz sind
wollt ich mal Langzeiterfahrungen einholen, um die Funktionalität auch
in ein paar Monaten / Jahren noch zu gewährleisten.
Gruß
Deutliche Abweichungen in der Signallänge sind je nach Empfänger leider
normal. Es sollten jedoch zwei deutlich unterscheidbare Längen
vorkommen. Davon den Mittelwert nehmen und auf kürzer oder länger
vergleichen...
Wenn es vom Empfänger abhängt, solls mir auch recht sein, die
Signallänge bleibt dann ja immer gleich. Somit kann ich sehr genau
meine Überprüfung durchführen.
Gruß
Die Abweichungen enstehen warscheinlich durch den Tiefpaß im
Empfängermodul und werden auch von der Signalstärke abhängig sein.
Wichtig ist daher auch die Impulsabstände zu testen und auch die Anzahl
der Pulse je Minute (59).
Denn Störungen sind ja asynchron zum Nutzsignal, d.h. sie erzeugen
zusätzliche Pulse an falscher Stelle oder überdecken Pulse.
Eine sehr zuverlässige Fehlererkennung kannst Du auch in meinem
Codebeispiel finden:
http://home.tiscali.de/peterd/appl/soft/c51/thclock/index.htm
Peter
Hallo Peter,
Ich hab mir dein Programm mal in Ruhe angeschaut, ehrlich gesagt ich es
mir noch etwas zu hoch, da ich zwar meine ersten Gehversuche in C schon
absolviert habe, trotzdem aber vorwiegend in Assembler programmiere,
und zudem noch ziemlich weit am Anfang mit meinen "Künsten" stehe.
Was die Signalabstände betrifft, die sind natürlich schön 1sec. bzw.
einmal 2sec. auseinander, wie`s halt soll. Störungen kann man doch am
besten ausblenden, wenn man das Nutzsignal auf die bestimmten
erwarteten Eigenschaften (z.B.Signallänge) überprüft, oder? Und wenn
die vom jeweiligen DCF - Modul abhängen, dann muß die Programmierung
doch an die einzelnen Module angepasst werden.
Gruß
Gruß
Schau mal in der Codesammlung unter DCF77 und Temperatur. Das war mein
erstes größeres C-Programm. Sicher noch nicht optimal, aber die
Impulslängenüberwachung zum einstellen.
An die Module muß nichts angepaßt werden.
Wenn Du 10ms Abweichung festgestellt hast, dann nimm einfach ein etwas
größeres Toleranzfenster.
Ich taste mit 64Hz (=15,6ms) ab, dadurch ergeben sich in meinem
Programm folgende magische Zahlen:
4: 62ms (min)
20: 312ms (max)
10: 156ms (0/1-Erkennung)
60: 0,94s (min 1s)
70: 1,09s (max 1s)
120: 1,87s (min 2s)
140: 2,18s (max 2s)
Peter
In Zeile 72 wird anhand der MDAYS Tabelle geprüft ob ein
"Kalendertagüberlauf" für das
jeweilige Monat stattgefunden hat. Aber bedeutet das nicht, dass der
jeweilige Grenzwert
(also der 30. bzw. 31 des Monats) gar nicht mehr erreicht wird, sondern
dann sofort
auf den 1. des Monats umgeschaltet wird? Müsste es statt == nicht <=
heissen?
Was in Zeile 57 gemacht wird, verstehe ich auch noch nicht ganz, aber da
muss ich mir
den restlichen Code erst noch etwas angucken :-).
Viele Grüße,
Klaus
Schiebt mal zum Test die Daten längere Zeit in eine Datei.
Bei mir kam da durch Fremdstörungen ziemlicher Müll vom Empfänger.
Statt 11:11 Uhr 11:$$ usw. .... jedenfalls auch Zeichen die todsicher
keine Zahlen waren! Deshalb gut prüfen !