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?
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!
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
Dein Hinweis mit der fehlenden Erdung ist spannend. Hast du eine Idee, wie ich das überprüfen bzw. korrigieren kann?
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
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:
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!
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.
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..
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.
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.
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.
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