Archiv verlassen und diese Seite im Standarddesign anzeigen : DCF77 kleiner Bösewicht
Import-Script
13.01.2002, 20:40
Hi Leute <BR>Habe ich doch heute mal versucht DCF77 in Zahlen umzusetzen. Bin fast zum Schwein geworden, immer falsche Werte. Nach reichlichem Suchen habe ich doch eine kleine boshaftigkeit des DCF-Signals entdeckt. <BR>Also jetztmal konkret : <BR>59.Sek.= Daten Ende (kein Impuls) <BR>60.Sek.= Sek 0 <BR>21.Sek.= 1.Zeitbit <BR>Wer jetzt die Sek. nach dem Datenendesignal mitzählt und meint bei 21 das <BR>1. Bit einlesen zu müssen, ist auf dem Holzweg! <BR>Der 1. Sekundentakt gehört zur alten Minute! <BR>Also ist bei Takt 22 das erste wichtige Zeitbit zu finden! <BR>Wohl dem der es wuste oder gesehen hat! <BR>Mich hat es jedenfalls locker 2 Stunden gekostet. <BR>Gruß Uwe
Import-Script
14.01.2002, 00:55
Also ich lese ab dem 21. Bit ein, genau wie im Protokoll beschrieben und es funktioniert: <BR> <BR><A HREF="http://www.specs.de/~danni/appl/soft/c51/thclock/dcf77.c51" TARGET="_top">http://www.specs.de/~danni/appl/soft/c51/thclock/dcf77.c51</A> <BR> <BR>Dein Fehler muß also an anderer Stelle liegen. <BR> <BR>Peter
Import-Script
14.01.2002, 01:49
Hi Uwe! <BR> <BR>Du denkst schon daran, dass die Sekunde 0 nicht das 1. Bit ist, sondern die Sekunde 1 das 1. Bit ist? <BR> <BR>Gruß <BR>Andy
Import-Script
14.01.2002, 01:59
Nochmal ich... <BR> <BR>Dieses Schema hat mir bei meiner Funkuhr gut geholfen: <BR> <BR><IMG SRC="http://progshop.com/elektronik/diskussion/messages/6028/2154.jpg" ALT="Schema-DCF"> <BR> <BR>Gruß <BR>Andy
Import-Script
14.01.2002, 12:25
Hi Leute <BR>Danke für eure Anteilnahme. Eigentlich wollte ich nur andere davor warnen. Andy du hast recht Sek 0 ist Takt1, nur ich habe in ASM für AT90S1200 geschrieben und in der 59.Sek den Bitzähler genullt. 1Min hat aber 60 sek bzw. geht bei sek 0 los und das ist halt der 1.Takt der ankommt also habe ich einen Sekundentakt mehr bis zum 1.wichtigen Bit. <BR>Peter, wenn du dir dein Progr. anschaust, nullst du anders. <BR>Glaube ich jedenfalls, denn Takt 59 kommt nicht, du scheinst aber einen zu haben. Leider bin ich eine "C-Null" und kann es noch nicht ganz erklären. <BR>Jedenfalls haut es jetz hin. <BR>Gruß Uwe
Import-Script
14.01.2002, 17:10
Ich denke, ich nulle richtig: <BR> <BR>Wenn ein Impuls kommt und zum vorhergehenden 1,8...2,2 Sekunden vergangen sind, dann nulle ich. <BR>Wenn das auch der 59. Impuls war und alle Paritätsbits stimmen, dann übernehme ich die Zeit. <BR>Der 59. kommt ja nicht, d.h. wenn ich bis 59 gezählt habe, ist es doch schon die 0. Sekunde. <BR> <BR>Warscheinlich hast Du nur einfach das Zeitsignal invertiert und übernimmst dann die Datenbits statt am Ende des Impulses erst am Anfang des nächsten Impulses. <BR> <BR> <BR>Peter
Import-Script
15.01.2002, 19:44
Hollo Peter, <BR>Ich glaube du hast es gerade selbst erklärt, bei 59 (60-1) nullst du und der nächste ist dein 1.Zählimp.,welcher dann natürlich Imp.1 ist. <BR>Ich nulle aber wenn das Signal ausbleibt, übrigens 1,3 sek nach Imp.58, nun kommt Imp.60/0 und inc meinen Zähler. Da steht nun eine 1 drinn wo es doch Sek 0 ist. Ich muß also doch bis 22 zählen. <BR>Gruß Uwe
Import-Script
16.01.2002, 00:37
Dann kannst Du aber DCF77 nicht als Bösewicht bezeichnen, wenn Du Dich nicht nach dem Schema richtest. <BR> <BR>Zeigst Du dann auch die neue Zeit eine Sekunde zu früh an oder ziehst Du dann wieder eine Sekunde ab ? <BR> <BR> <BR>Peter
Import-Script
16.01.2002, 18:34
Hi Peter, <BR>Die Zeit ist schon richtig, gebe sie ja bei Synchronimp. aus, <BR>allerdings ohne Sek. <BR>Ok. Bösewicht war möglicherweise falscher Ausdruck, aber recht wirksam. "Kleiner Hinterhalt" wäre vermutlich besser gewesen weil am Anfang steht unwichtiges Zeug( ist schnell übersehen, glaube es nur). <BR>Übrigens ist DCF77 nicht gerade sehr stabil -> Bitfehler, hätte ich nicht erwartet. Da sollte man wohl doch eine µC-Uhr mitlaufen lassen wenn man es stabil braucht. <BR>Gruß Uwe
Import-Script
16.01.2002, 19:15
Hi! <BR> <BR>Auf jeden fall eine Uhr mitlaufen lassen. Bei mir lese ich 2 min hintereinander ein, mache jeweils die Paritätskontrolle und vergleiche die beiden minuten miteinander (natürlich die erste incrementiert!). Da kann nichts mehr schief gehen. Natürlich gibt's dann z.B. 10.59 nach 11.00 Uhr einen Vergleichsfehler, aber damit kann ich leben... <BR> <BR>Gruß <BR>Andy
Import-Script
16.01.2002, 19:42
Hi Andy, <BR>Das Ding soll eine 2Kanal DCF-Wochenschaltuhr werden, und ich habe jetzt schon nicht mehr viele Register frei, und das nur mit Zeit zusammenbauen , überwachen und an 2x16 LCD ausgeben. Mist, brauch wohl doch Ram, na mal sehen! <BR>Gruß Uwe
Import-Script
16.01.2002, 22:47
Stimmt, <BR> <BR>man programmiert einfach eine normale Digitaluhr und nur, wenn die empfangene Zeit korrekt ist, wird sie synchronisiert. <BR>Langwelle ist zwar sehr weitreichend aber auch sehr störempfindlich. <BR>Wenn der PC oder Fernseher an ist, synchronisiert die Uhr überhaupt nicht. <BR> <BR>Ich benutze den Conrad-Modul. Gibt es auch bessere Empfänger ? <BR>Die man am PC anschließen kann kosten ja gleich mehrere hundert Mark. Sind die auch wirklich besser ? <BR> <BR>Ja der AT90S1200 scheint mir auch ziemlich schwach auf der Brust. <BR> <BR>Hier findest Du mein AVR-Programm: <BR> <BR><A HREF="http://www.specs.de/~danni/avr/soft/dcf77/index.htm" TARGET="_top">http://www.specs.de/~danni/avr/soft/dcf77/index.htm</A> <BR> <BR>Aber kauf bloß nicht den tiny22, der ist immer noch buggy. <BR> <BR> <BR>Peter
Import-Script
17.01.2002, 12:31
Hi Peter, <BR>Habe auch das blöde Conradmodul, aber ganz Tod bringe ich es nur wenn ich den Schlepptop auf 20cm ranbringe (Bildschirm). <BR>Gegen die Störungen habe ich jetzt schwere Filter eingebaut, schaue jetzt nur bei 141ms ob PD2=INT0 H oder L hat und wehe es kommt wärend 141ms <BR>+/-16ms zu einem INT0 dann setze ich für 2 min error und überschreibe Minuten Einer+Zehner mit Fragezeichen. Der nächste Imp. wird erst nach 950ms freigegeben. Es läuft jetzt seit gestern recht ordentlich, aber ich muß es noch ein wenig beobachten. <BR>tiny22 kaufe ich sowiso nicht weil nur schlechte Sprüche. <BR>Gruß Uwe
Import-Script
17.01.2002, 16:34
Du bist wohl ein Pessimist, <BR> <BR>immer diese Negativwertung: "blöde Conradmodul". <BR> <BR>Es reicht doch, wenn einmal am Tag das Signal stimmt. Der Quarz von Deinem Micro ist auch ohne Abgleich genau genug, damit Du keinen Unterschied merkst. <BR> <BR>Um die mitlaufende Uhr kommst Du auch bei allerbestem Empfang nicht herum oder gibts dort, wo du wohnst, keine Gewitter. <BR> <BR> <BR>Ein LCD stört kaum, sondern die Ablenkspulen von Bildröhren (mindestens 2m weit). <BR> <BR> <BR>Peter
Import-Script
18.01.2002, 12:38
Hi Peter, <BR>Du hast Recht, das Conr.Modul ist nicht schlechter wie mein DCF-Wecker!(heute getestet) <BR>An Gewitter hatte ich noch garnicht gedacht. Muß ich wohl doch umschreiben, obwohl momentan recht stabiel.(innerer Schweinehund!) Es ist ja immer die Frage "brauche ich es so genau?". Bei Schaltuhr führ Heizung sind 15 min zwar unschön aber nicht kritisch. <BR>Mal sehen. <BR>Gruß Uwe
hallo, ich muss für mein studium ein projekt mit ein funkuhr machen. Ich muss das Signal von ein DCF empfänger (der von conrad) auslessen mit mein microcontroller und die Sekunde Marke auslessen. Wie kann ich das machen. Ich darf nur die digitale eingänge. es ist ein s12x . Danke.
Was meinst du mit Sekundenmarke? Es gibt jede Sekunde eine Marke, die
sich in der Länge unterscheiden. Einlesen ist einfach, Portpin = 0, aus und
umgekehrt.
Oder meinst du die Minutenmarke? Die erkennt man daran, das in der 59ten
Sekunde keine Marke erscheint. Die folgende Marke kennzeichnet also den
Start der nächsten Minute.
danke fur dein Antwort.
Ich habe mein digitaleingang. portb pin 0. Und jetzt solte ich prufen wie oft ein 0 kommt? Oder wie sollte ich sehen das eine sekunde rum ist. Ich habe so gedacht: Ich abfrage jede 10 ms ob das pin 1 ist. wenn das pin mehr als 180 1 wurde dann habe ich meine 58 secunde. Wenn das pin nur 90 mall 1 war ist eine sekunde.
Ist das genau oder gibt es andere weg.
Danke
(Ich habe keine Deutschetastatur)
So sollte es gehen. Es gibt natürlich noch andere Möglichkeiten, aber so
wie du es vorhast ist sicher die einfachste. Die Polarität des Empfängers
musst du noch kontrollieren, also wann liefert er eine 1 und wann die 0.
Powered by vBulletin® Version 4.1.7 Copyright ©2012 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.