Sketch funktioniert nur mit aktivem Serial Monitor / DCF 77 Arduino Uno

Hallo zusammen,

zum Auslesen der aktuellen Uhrzeit nutze ich einen DCF77-Empfänger von Pollin und einen Sketch von arduinoclub.de (Danke an dieser Stelle!). Der Sketch ist angehängt.

Prinzipiell funktioniert auch alles wunderbar:

  • Arduino Uno mit externer Stromversorgung, um Interferenzen mit DCF77-Empfänger zu verhindern
  • USB-Verbindung zum Serial-Output auslesen
  • LED leuchtet + Serial Output, sobald ein Zeitsignal vorhanden ist

Nach ca. 2-3 Minuten erhalte ich regelmäßig ein Zeitsignal, die LED leuchtet ab diesem Zeitpunkt, im Serial Monitor erscheint die aktuelle Zeit.

Wenn ich diese Schaltung aber dann teste, ohne eine USB-Verbindung herzustellen (= nur mit externer Stromversorgung), erhalte ich offenbar kein Signal mehr (=die LED leuchtet nicht mehr), auch nach längerer Zeit und mehreren Versuchen nicht. Kontrollversuche mit USB-Verbindung funktionieren dann wieder...

Hat jemand eine Idee, wie dieses Problem zustande kommt, und wie es sich lösen lässt?

Vielen Dank..!

LG Matthias

dcf77test.ino (1.78 KB)

Da der Sketch scheinbar funktioniert, sollte es nicht daran liegen.
Zeig uns dein Schaltbild, wie du alles verdrahtet hast.

Hallo,

vielen Dank für deine schnelle Antwort!

Ich habe meine Schaltung kurz in Fritzing nachgezeichnet, ist hier angehängt. Ebenso noch ein Foto dazu.
Ich bin wirklich ratlos...vielen Dank für Deine / Eure Hilfe!

LG Matthias

LED dürfen NICHT direkt (ohne Vorwiderstand) an den Ausgängen des Arduino betrieben werden.

DCF77 ist sehr Störungsempfindlich. Die fehlende Erdung, durch die Masse des USB-Kabels und PCs kann schult dieses Effekts sein.

Grüße Uwe

Hallo,

vielen Dank auch für deine schnelle Antwort.
Danke für den Hinweis bzgl. der LED. Die LED hängt derzeit am Arduino Pin 13, welcher ja einen eingebauten Widerstand hat. Ausserdem ist das Ziel natürlich, ganz auf die LED zu verzichten, sobald die Uhrzeit korrekt ausgelesen wird :slight_smile:

Dein Hinweis mit der fehlenden Erdung ist spannend. Hast du eine Idee, wie ich das überprüfen bzw. korrigieren kann?

Beste Grüße,
Matthias

mbaum:
Die LED hängt derzeit am Arduino Pin 13, welcher ja einen eingebauten Widerstand hat.

Uhh, schnell wieder vergessen - warum sollte Pin 13 einen eingebauten Widerstand haben?
Du kannst die LED aber weglassen, eine LED an Pin 13 ist ja auf dem Board drauf. Und die hat auch den passenden Widerstand :slight_smile:

Ich tippe mal auf gruselige Stromversorgung - welches Netzteil hast Du da dran, was kommt da raus? Vermutlich nix Gescheites fürchte ich.

Noch was: die langen Strippen sind auch nicht gut - das Breadboard ist überflüssig.

mbaum:
Danke für den Hinweis bzgl. der LED. Die LED hängt derzeit am Arduino Pin 13, welcher ja einen eingebauten Widerstand hat.

Hatte, vor ewigen Zeiten. Die Arduinos mit serieller Schnittstelle hatten einen Widerstand. USB-Arduinos hatten nie einen.

Dein Hinweis mit der fehlenden Erdung ist spannend. Hast du eine Idee, wie ich das überprüfen bzw. korrigieren kann?

Kannst Ja mal versuchsweise die Masse des Arduino mit der Erdung verbinden.

Grüße Uwe

Hallo zusammen,

danke für die Aufklärung zum Pin 13.. ups :slight_smile:

Habe tatsächlich ein sehr simples Netzteil, für wenige Euros auf Amazon geschossen...(https://www.amazon.de/gp/product/B00PADO6VQ)

Kannst Ja mal versuchsweise die Masse des Arduino mit der Erdung verbinden.

Uwe, sorry für die blöde Frage...aber wie?

LG

mbaum:
Die LED hängt derzeit am Arduino Pin 13, welcher ja einen eingebauten Widerstand hat.

Pin 13 hat eine eingebaute LED. Aber der Ausgang selbst ist mit einem Operationsverstärker entkoppelt. Für eine externe LED braucht man also wieder einen Widerstand.

Ich habe mir vor kurzem das gleiche Modul von Pollin gekauft.
Das Teil ist sehr empfindlich, weil der Ausgang zu "schwach" ist. Mit INPUT_PULLUP funktioniert gar nichts mehr.
Ich habe einen NPN-Transistor (Emitter an GND, Basis über 100kOhm an DATA und Kollektor an den Arduino) dazugeschaltet. Jetzt kann das Modul auch den internen PULLUP-Widerstand schalten.
Das läuft jetzt sehr stabil! :slight_smile:

mbaum:
Habe tatsächlich ein sehr simples Netzteil, für wenige Euros auf Amazon geschossen...(https://www.amazon.de/gp/product/B00PADO6VQ)

Uwe, sorry für die blöde Frage...aber wie?

Das Netzteil ist ok, sollte also nicht das Problem sein.

Mit "GND an Masse" meint Uwe vermutlich eine Verbindung zur Masse des PC oder wenn vorhanden an einen Heizkörper.

Serenifly:
Pin 13 hat eine eingebaute LED. Aber der Ausgang selbst ist mit einem Operationsverstärker entkoppelt. Für eine externe LED braucht man also wieder einen Widerstand.

Fast, oder interpretiere ich das nur falsch?
Die on-board LED ist mittels Optokoppler vom Pin 13 entkoppelt, dh sie belastet den Pin nicht. Die LED wirkt nicht wie ein Pullupwiderstand.
Der Pin 13 geht, wie alle anderen Pins, direkt auf den ATmega.

Grüße Uwe

Das Netzteil kann auch, weil es ein Switchingnetzteil ist, den DCF77 Empfänger stören.

Kannst Ja mal versuchsweise die Masse des Arduino mit der Erdung verbinden.

Uwe, sorry für die blöde Frage...aber wie?

Kabel zwischen Erdungskontakte einer Steckdose (Äußere Kontakte der Schukosteckdose) und GND des Arduino.

Grüße Uwe

Hallo,

vielen Dank für Eure Kommentare und Sorry für die späte Rückmeldung. Leider war ich in der Zwischenzeit beruflich sehr eingespannt, so dass ich heute erst (auch dank dem Wetter) wieder etwas Zeit finden konnte, mich um meine Schaltung zu kümmern.

...allerdings ohne großen Erfolg. Auch eine Erdung führt zu keinem verlässlichen Signal.
Da ich die Uhr später verschenken möchte, habe ich zudem nur noch bedingten Einfluss auf den Aufstellort und die Signalqualität.

Das bringt mich zu meiner aktualisierten Frage: Gibt es eine andere Möglichkeit, die aktuelle Uhrzeit auf dem Arduino verfügbar zu machen? Erste Gedanken waren, die Schaltung um WLAN zu erweitern, um die Zeit einfach online abzufragen..

Über Ideen würde ich mich sehr freuen.

VG Matthias

  1. Zeig uns doch mal Deine Signalqualität. Z.B. indem Du damit: DCF77 Scope | Blinkenlight ein paar Minuten aufzeichnest und uns dann den Log zur Verfügung stellst.

  2. Wenn Du bei DCF77 mit Rauschproblemen zu tun hast, dann nimm meine Library Releases · udoklein/dcf77 · GitHub. Wenn's damit nicht klappt kannst Du es komplett vergessen. Einziger Haken: Du brauchst einen Arduino mit Quarz. Der Uno mit seinem Resonator ist für sowas nicht wirklich zu gebrauchen.

Hallo zusammen,

nach langem Suchen (und dank dem langen Wochenende) konnte ich nun eine gangbare Lösung finden.
@ Udo Klein: Danke für den Tipp mit deiner Library und dem Quartz. Das war mit ausschlaggebend.

Für alle mit ähnlichem Problem:

Ich habe die Schaltung um ein Real Time Module (RTC DS3231) erweitert. Damit genügt es, auch über einen längeren Zeitraum nur ein einziges verwertbares DCF-Signal zu erhalten. Dieses eine Signal wird an das Real Time Modul übermittelt, welches dank Quartz und Temperatursensor extrem genau und ohne weitere Justierung (bis zum nächsten Signal, irgendwann mal) funktioniert.

Danke an alle für die Hilfe!

mbaum:
Ich habe die Schaltung um ein Real Time Module (RTC DS3231) erweitert. Damit genügt es, auch über einen längeren Zeitraum nur ein einziges verwertbares DCF-Signal zu erhalten. Dieses eine Signal wird an das Real Time Modul übermittelt, welches dank Quartz und Temperatursensor extrem genau und ohne weitere Justierung (bis zum nächsten Signal, irgendwann mal) funktioniert.

Das ist natürlich die beste Lösung. ine synchronisierte RTC.

Zur vollständigkeit: genaue Zeitquellen sind: NTP-Server im Internet (da brauchst Du aber irgendeinen Internetzugang) , ein GPS Empfänger, einen Radiosender mit RDS (was aber in Zukunft nicht mehr funktionieren wird weil der Rundfunk auf digital umgestellt werden wird) oder eben DCF77.
Grüße Uwe