Hallo,
ich hatte letztens schon einmal ein Beitrag geschrieben, wo ich probleme
mit einem DCF77-Empfansmodul von Conrad hatte. Das Modul habe ich an
einem Arduino (Also einem ATmega 328P) verbunden.
GND - GND
5V - 5V
DCF-Ausgang - PD2
Dort hatte ich die Signale über Interrupts auswerten wollen, was gar
nicht funktioniert hat, da der Ausgang des Moduls keine ordentliche
Signale von sich gegeben hat. Dort wurde mir empfohlen mit einem Timer
den Pegel abzufragen. Das habe ich jetzt einmal umgesetzt, doch auch
hierbei kommt es zu keiner auswertung
der Timer1 löst alle 20 Millisekunden aus. Dies funktioniert auch.
Im Timer überprüfe ich den Pegel vom DCF-Modul an PD2. Ist dieser Low,
zähle ich den Zähler dcfTime hoch und setze das Flag dcfFlag. Ist der
Pegel High, hat sich also der Zustand geändert. dcfAnz = dcfTime * 20ms
(die ISR wird nur alle 20 ms aufgerufen). setze dcfTime wieder auf null
und dcfFlag auch, damit beim nächsten aufruf nciht wieder dcfAnz gesetzt
wird. In der whileschleife frage ich dann dcfAnz ab und möchte über uart
eine 0, eine 1 oder ein SYNC und neue Zeile ausgeben (UART funktioniert
auch).
Doch leider bekomme ich über UART gar keine Ausgabe und die LED bleibt
aus.
Was für Module benutzt ihr? Vielleicht sollte ich es mit einem anderen
Modul mal versuchen. Oder hat auch jemand das Modul von Conrad und
bekommt es ausgewertet?
Peter schrieb:> ich hatte letztens schon einmal ein Beitrag geschrieben,
vermutlich Beitrag "DCF-Empfänger löst kein Interrupt aus"> wo ich probleme mit einem DCF77-Empfansmodul von Conrad hatte.
vermutlich das Modul mit der Bestellnr. 641138? Hat Conrad wirklich nur
dieses eine?
> Was für Module benutzt ihr?
Genau dieses.
> Vielleicht sollte ich es mit einem anderen Modul mal versuchen.
Nein, außer, du nimmst einen richtigen Empfänger z.B. von Meinberg.
> Oder hat auch jemand das Modul von Conrad und> bekommt es ausgewertet?
Wir haben über 200 von diesen Modulen im Einsatz. Auch nach meiner
privaten Foren-Jammer-Beitrags-Statistik sind andere Module noch
schlechter.
> Doch leider bekomme ich über UART gar keine Ausgabe und die LED bleibt> aus.
Als erstes würde ich direkt am AVR-Pin messen. Wenn du keinen Oszi hast,
geht zur Not auch ein Digitalvoltmeter. Dann würde ich die
LED-Ansteuerung in main() machen, also so direkt wie möglich den Zustand
vom Eingangs-Pin auf den LED-Pin kopieren.
Schau Dir mal das Signal mit einem Oszilloskop oder Logic Analyzer an.
Ich hatte mal bei einem DCF Modul das Problem, dass die Flanken des
Signals beim Wechsel von Low nach High (und zurück) geprellt haben. Mit
bloßen Auge konnte ich das nicht sehen.
Dort konnte ich das Problem durch einen simplen Kondensator (zum
Entprellen) beheben. Später habe ich das Entprellen dann in Software
gemacht.
Hallo,
wenn meine zum Modul gefundenen Daten nstimmen hat es einen
openCollektor-Ausgang, der maximal mit 1mA belastet werden darf.
Eine aktuelle LED mit 10k Vorwiderstand gegen 5V sollte also noch
erkennbar leuchten bzw. blinken.
Dann erstmal eine Stelle suchen, wo die LED halbwegs stabil im
Sekundentakt der Daten aufblinkt. Dann weiß man wenigstens erstmal, ob
man Empfang hat...
Hier bei mir (Berlin. Altbau, 1.Stock) gibt es höchstens noch 2-3
Stellen in der Wohnung, wo zu üblichen Zeiten mit den üblichen in
Betrieb befindlichen Geräten noch halbwegs brauchbarer Empfang möglich
ist.
Gruß aus Berlin
Michael
(Port + Timer + UART konfigurieren, "sei()", Main leer. Sonst nichts.)
20 Sekunden laufen lassen bringt eine Folge von 1000 Nullen und Einsen
auf Deinen PC (bei Timertakt 20 ms). Dazu stellt sich Dir nur eine
einzige Frage: Kannst Du in dieser Folge das DCF-Signal sauber erkennen?
Solange das nicht sichergestellt ist, brauchst Du über irgendetwas
anderes nicht nachzudenken.
Eine Alternative wäre, mit einer erprobten Software zu testen. Dann kann
man immer noch eigene Verbesserungen einfliessen lassen.
Ich hänge mal eine Jugendsünde hier dran.
Benutze mal einen externen Pullup, 10kOhm für den Signaleingang. Oder
messe mit dem Oszilloskop ob es gut aussieht.
Versorge nur das DCF-Modul aus einer Batterie. Die Module mögen
Störungen garnicht. Sie hören da Flöte husten.
S. Landolt schrieb:>> DDRD |= (1<<DDD2); // Interner Pull-up einschalten>> ?
Na hoppla.
Das ist natürlich nicht so gewollt.
Habe ich verbessert. Jetzt bekomme ich auch Signale. Damit kann ich erst
einmal weitermachen.
Ich bin immer wieder verwundert, dass kaum jemand eine einigermaßen
logisch strukturierte Fehlersuche auf die Reihe bringt :-(
900ss D. schrieb:> Oder messe mit dem Oszilloskop ob es gut aussieht.
Meine Eigenbau-Uhr hat eine akustsiche Anzeige, natürlich schaltbar:
Einen Kleinlautsprecher mit Multivibrator dran bei etwa 2kHz. Gepiept
wird, solange DCF-low ist.
Falls ich mein Pollin-Modul jemals in Betrieb nehmen werde, wird auch da
zu allererst eine akustische Anzeige in Hardware dran kommen, das kann
ich mit z.B. einem CD4093 und einem RC_Glied.
Akustisch kann ich kurze Störungen deutlich besser vernehmen als am
Scope sehen. Wer als Bastler kein Scope hat, ist damit auch ganz vorne.
Manfred schrieb:> Ich bin immer wieder verwundert, dass kaum jemand eine einigermaßen> logisch strukturierte Fehlersuche auf die Reihe bringt :-(
Das liegt an deiner Filterblase.
Leute, die das können, stellen hier nicht solche Fragen.
Leute, die nicht alles wissen, könnten aber auch erst mal die HW testen:
U+, U- und Transistor-Puffer mit Anzeige-LED.
Wenn das nicht gleich geht, kann man fragen, bevor die ganze schöne
µC-Schaltung nicht das tut, was sie soll...
Besonders bei DCF-Modulen stellt sich dann schnell heraus, dass das
ganze Miesmachen der Produkte von CON..., POL... und REI... überflüssig
ist.
Bei mir zu Hause, in 500 km Entfernung habe ich die alle über einen
µC-Eingang mit PullUp zum Laufen bekommen: Man muss sie nur (mit wenig
Aufwand) sachgemäß aufstellen, anschließen und auswerten, um gute
Ergebnisse zu bekommen.
Und natürlich auch mit HW-Interrupt!!!
Jacko schrieb:> Produkte von CON..., POL... und REI...
Du scheinst die Namen nicht zu wissen.
Sie lauten: Conrad, Pollin und Reichelt.
Nur damit du beim nächsten Mal nicht krampfhaft nach Abkürzungen suchen
mußt, okay? :-)