Hallo liebes Forum,
ich bin Felix und ich benötige eure Hilfe.
Normalerweise versuche ich alles selber zu machen, aber da für mein Projekt die Zeit drängt und ich im Moment leider fast keine Zeit zum basteln und bauen habe wende ich mich vertrauensvoll an euch.
Worum es geht:
Ich habe eine Nebenuhr und brauche für diese ein "Mutteruhremulator".
Das heisst: Ich benötige eine Polwendendeschaltung die jede Minute für ca. 500-1000ms ein 24V Implus an die Uhr schickt. Das ganze soll möglichst über Batterie laufen um lästige Kabel aus der Uhr raus zu vermeiden und ggf. per Funk abgeglichen werden.
Was ich mir bisher gedacht habe was gebraucht werden könnte:
ein Arduino (habe einen Pro-Mini 3,3V, besorge aber auch gerne einen 5V, die grösse finde ich klasse)
L298N Dual-Bridge - scheint mir in der Lage zu sein den Wechsel zwischen + und - zu realisieren
ein Step Up, MT3608 2A um Spannung vom Arduino auf die von der Uhr benötigen zu wandeln
Ich denke, damit kann man was machen.
Anmerkungen zur Uhr. Scheint mir auch ab 15 V zu gehen. Die Spule hat einen Widerstand von 2,5 kOhm, das heisst bei 24 V zieht sie 9,6 mA bei 15 V dann nur 6 mA, also überschaubar.
Habe mir gedacht, der Arduino sagt der H-Brücke, die über den Step Up direkt ca.15V bekommt, für eine knappe Sekunde, dass diese jede Minute bitte die Polung ändert. Damit das auch genau ist, gleicht der Arduino die Uhrzeit übers DCF-77 Modul ab und bekommt sonst den Takt über das Uhrmodul.
Soweit so gut. Kann das so gehen? Leider habe ich sogut wie keine Erfahrung mit dem Arduino geschweige denn Erfahrung im programmieren noch gerade die nötige Zeit mich da einzufuchsen und auf Gedanken reagiert er nicht:blush: (Ich habe aus Interesse mal Templates auf den Mini geladen und ein Nokia 3310 Display angesteuert und so aus einem Diaprojektor einen Beamer gemacht, zu mehr reichte es noch nicht, aber darum dachte ich, mit dem Arduino ist es bestimmt möglich meinen Wunsch zu realisieren, darum bin ich hier.)
Was ich gerade noch gefunden habe ist ein Pro Mini mit 16MHz Quarzoszillator, könnte mir vorstellen, das dieser in Verbindung mit dem DCF-77 auch ohne das Uhrenmodul hinreichend genau gehen würde? Somit könnte ich ein Modul weg lassen, was das ganze einfacher für mich macht...
Also realisieren wirst Du. Hier gibt es Hilfe zur Selbsthilfe.
DCF77 ist von der Störfestigkeit nicht so ideal.
Hast Du da, wo Du das realisieren willst WLAN?
Dann könntest Du einen WEMOS D1 mini pro nehmen (ESP8266) und die Zeit per NTP aus dem Netz holen.
Das ist auf alle Fälle weniger störanfällig. Eine RTC brauchst Du dabei nicht unbedingt, da der pool 4 Server beinhaltet. Da ist einer immer da. Ein Abgleich pro Stunde ist mehr als ausreichend.
Wenn Du eh auf DCF77 gehst, kannst Du Dir die RTC sparen.
Allerdings soll DCF77 nicht ganz so trivial sein - habe Das aber selber auch noch nicht gemacht!
Eine RTC DS3231 soll eine minimaleste Abweichung haben - wenn Du damit leben kannst, die Uhr nur alle paar Wochen/Monate ggf. ein paar Sekunden anpassen zu müssen, wäre Das mein Weg.
Alternativ per WLan einen NTP-Dienst oder eine nahezu beliebige Seite im WWW aufrufen und im Header die Uhrzeit auslesen (eine 404-Seite sollte Da ebenfalls reichen).
Wo befinden sich die Tochter-Uhren und welche Genauigkeit ist mindestens nötig?
Hallo,
ich danke euch beiden für die Antwort!
Das ganze über WLan zu lösen - daran habe ich noch nicht gedacht. Ja, das wäre prinzipiell möglich. Die Nebenuhr soll in der Küche hängen, auf einer Höhe, in der auch das Nachstellen ca. jeden Monat kein großer Umstand wäre, maximal da die Uhr ca. 50 cm in Durchmesser misst. Elegant wäre natürlich ein Abgleich, gerne auch per WLan (die FritzBox steht quasie auf der anderen Seite der Wand), solange das die Akkulaufzeit nicht drastisch verkürzt.
Wobei ich natürlich auch erst anfangen kann das ganze lediglich mit der RTC zu realisieren und dann nach und nach darauf aufzubauen.
Als Stromversorgung habe ich an eine Powerbank gedacht, lässt sich auch leicht wieder laden.
Grüße
Felix
Eine 3,3V/5V-Versorgung lässt sich auch einfach per Draht realisieren. Funk und Akkubetrieb ist nicht die Glücksheirat. Wobei man evtl. mit den Schlafmodi etwas erreichen kann. Damit habe ich aber noch nicht gearbeitet, da ich versuche Akkubetrieb zu vermeiden.
Gruß Tommy
Edit: Wenn es unbedingt Akku sein soll, wäre der ESP32 wohl die bessere Wahl, was die Stromsparmodi angeht. Bei dem und seinen Stromsparmodi gibt es aber noch nicht so viele Erfahrungen in der Breite - denke ich, ich kann mich da irren.
Danke,
ich denke, ich entferne mich vorerst von dem Gedanken mit der Synchronisation und versuche das mit der RTC aufzubauen. Scheint für mich ohne Kenntnisse realistischer zu sein. Funktioniert das, mache ich mich an den Abgleich. Step by Step. Und ganz entspannt
Somit vereinfacht sich das ganze auf: Arduino bekommt Zeitsignal von der RTC. Jede Minute sendet Arduino ein ca. 1 Sekunden Impuls an die H-Brücke. Das ganze wiederholt sich mit wechselnder Polarität.
Die wechselnde Polarität ist mir noch nicht ganz klar. Heißt das einmal einen +24V-Impuls und einmal einen -24V-Impuls? Wenn ja, wo nimmst Du die -24V her?
ich habe vor einiger Zeit einen Hauptuhr-Emulator gebaut. Eigentlich sollte sie mit Akku-Betrieb laufen, aber als ich den Stromverbrauch hochrechnete, kam ich auf keine akzeptablen Zeiten. Ich habe dann Netzbetrieb gewählt.
Ich hatte einen Pro Mini plus eine DS3231-RTC gewählt. Die beiden waren extrem sparsam. Die RTC weckte den Pro-Mini aus dem Deep-Sleep auf, der dann die Tochter-Uhr stellte. Das Problem war der Strombedarf des Step-Up-Wandlers (0,5mA) und der H-Bridge (20mA). Zwischen den 3,6V des LiPos und 24V liegt der Faktor 6,667. Mit Wandlerverlusten ca. 8. Aus H-Bridge plus Uhr werden so (20mA+10mA(Uhr))*8=240mA. Ein 2400mA Akku bringt 10Std Betriebszeit. Pro Stunde läuft die Uhr ca. 1Minute. Das heißt die Uhr läuft 600Std.. Alle gut 3Wochen muss die Uhr geladen werden.
Da mir Zeit und Lust fehlte um etwas sparsameres zu konstruieren, habe ich mich für ein Steckernetzteil zur Versorgung entschieden.
Die DS3231 hat eine Abweichung von wenigen Sekunden pro Jahr. Deshalb habe ich sie allein eingesetzt. Zum Stellen wird die Tochteruhr fast auf die aktuelle Uhrzeit gestellt. Zum genauen Minutenwechsel wird eine Taste gedrückt, die die Uhr eine Minute vorgestellt und sie so auf die Sekunde synchronisiert. Bei Stromausfällen wird der letzte Minutenimpuls wiederholt, so dass die Uhr bei Störungen unter einer Minute in Sync bleibt.
Hallo,
danke für die Antwort Theseus. Das ist ein guter Einwand gegen Batteriebetrieb. Dein Projekt scheint das zu sein, was ich mir gerade vorstelle.
Um die Akkulaufzeit zu vergrößern könnte man natürlich auch einen Akku nehmen, der den Arduino befeuert und einen 4s Lipo für die Uhr. Die 14,8 V sollten reichen, ansonsten 5s.
@Thommy: schau mal, so funktioniert das "Uhrwerk" klick.
Und das sollte ja die H-Brücke können, den Drehsinn eines Motors zu wechseln kommt ja aufs gleiche hinaus.
Sehr interessantes Thema, aber warum baust du nicht einfach ein DCF Uhrwerk in jede Uhr?
Und, wie sind die Gehäuse der Uhren aufgebaut? Zu viel Metall beeinflusst/verhindert Funkübertragungen.
Ein weiterer Gedanke, andere Uhrwerke verwenden, um von den 24 V weg zu kommen. Natürlich verstehe ich deine Gedanken bei den vorhandenen Uhrwerken zu bleiben, aber es gibt viele verschiedene Zeiger und Uhrwerke mit unterschiedlichen Wellendurchmessern.
Hallo, @MiReu: Danke für die Antwort. Es ist eine alte 50 cm Werkstattuhr von Siemens, ein Bild habe ich gerade nicht, ähnelt aber dieser hier: klick
Es soll das Originale drin bleiben. Weil es original ist. Damit macht der Minutenzeiger auch den typischen Minutensprung, außerdem könnte ich mir vorstellen, das die Metallzeiger viel zu schwer sind. Andere Zeiger und anderes Uhrwerk kann ich mir nicht vorstellen, dann könnte ich auch eine große Plastikuhr vom Baumarkt nehmen.
Ja, das Gehäuse wird den Empfang sehr beeinträchtigen da aus Metall (sowohl vorne als auch an den Seite. Vllt hilft es das meine Wand annähernd nach Frankfurt zeigt...
Aber den Abgleich lasse ich vorerst sowieso weg.
Danke blazkowicz0 für den Link, werde ich mal durcharbeiten, sieht gut aus.
Jetzt werde ich erstmal die Dinge bestellen die ich brauche.
ikaruga:
Hallo,
danke für die Antwort Theseus. Das ist ein guter Einwand gegen Batteriebetrieb. Dein Projekt scheint das zu sein, was ich mir gerade vorstelle.
Um die Akkulaufzeit zu vergrößern könnte man natürlich auch einen Akku nehmen, der den Arduino befeuert und einen 4s Lipo für die Uhr. Die 14,8 V sollten reichen, ansonsten 5s.
Ein Lipo-Akku hat je nach Füllstand 4,2V-3,0V. Von daher würde 5s besser passen. Kann man die Uhr auf 12V umstellen? Manchmal hat man zwei Spulen, die mal in Reihe, mal parallel geschaltet werden. Manchmal gibt es für 24V-Betrieb sogar nur einen Widerstand. Du brauchst für die LiPos eine Unterspannungsschutzschaltung, die bei 3V Zellspannung das Uhrwerk abschaltet, da sonst eine Beschädigung der Akkus durch Tiefentladung droht.
Mein Problem war, dass sich die H-Bridge als ausgesprochen gefräßig entpuppte. Sie verbrauchte wesentlich mehr als das Uhrwerk selber. Dadurch vereitelte sie zusammen mit den Dauerverlusten der Spannungswandler bei mir den Batteriebetrieb.
ein Step Up, MT3608 2A um Spannung vom Arduino auf die von der Uhr benötigen zu wandeln
Du kannst auch eine höhere Versorgungsspannung von beispielsweise 24 V nehmen. Dadurch reduzieren sich die Ströme, was sich positiv für die Akkulaufzeit auswirkt oder den Querschnitt des Kabels vom Netzteil verringert. Dann benötigst Du einen StepDown auf 5V. Bei meiner LED-Uhr mit Netzteil 15V habe ich das so gemacht.
ikaruga: @Thommy: schau mal, so funktioniert das "Uhrwerk" klick.
Und das sollte ja die H-Brücke können, den Drehsinn eines Motors zu wechseln kommt ja aufs gleiche hinaus.
Danke für die Info. Also ist keine Spannung der Ruhezustand. Alles klar.
Ich bastel grade an einer Uhr.
Die Zeit bekomme ich von einer RTC (DS3231), diese wiederum wird laufend über ein DCF77-Modul aktualisiert.
Hier ein Code, der folgendes macht:
RTC-Modul mit der DCF-Zeit stellen, wen das Signal richtig erfasst wurde
Die RTC-Zeit auf einem Display anzeigen lassen
Einen Counter hochzählen wen die Zeit aktualisiert wurde, und diesen Counter ebenfalls auf dem LCD anzeigen
#include <DCF77.h>
#include <Time.h>
#include <TimeLib.h>
#include <DS3231.h>
#include <Wire.h>
#include <LiquidCrystal.h>
#define DCF_PIN 2 // Connection pin to DCF 77 device
#define DCF_INTERRUPT 0 // Interrupt number associated with pin
DS3231 clock;
RTCDateTime dt;
time_t time;
DCF77 DCF = DCF77(DCF_PIN,DCF_INTERRUPT);
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
int count1 = 0;
int RTCStd = 0;
int RTCMin = 0;
int RTCSek = 0;
int DCFStd = 0;
int DCFMin = 0;
int DCFSek = 0;
void setup()
{
lcd.begin (16, 2);
DCF.Start();
clock.begin();
}
void loop()
{
time_t DCFtime = DCF.getTime(); // Check if new DCF77 time is available
if (DCFtime!=0)
{
setTime(DCFtime);
clock.setDateTime (year(), month(), day(), hour(), minute(), second());
count1++;
}
dt = clock.getDateTime();
RTCStd = dt.hour;
RTCMin = dt.minute;
RTCSek = dt.second;
lcd.setCursor (0, 0);
lcd.print ("RTC: ");
if (RTCStd < 10) lcd.print ("0");
lcd.print (RTCStd);
lcd.print (":");
if (RTCMin < 10) lcd.print ("0");
lcd.print (RTCMin);
lcd.print (":");
if (RTCSek < 10) lcd.print ("0");
lcd.print (RTCSek);
lcd.setCursor (0, 1);
lcd.print ("DCF77: ");
lcd.print (count1);
Der Code ist nicht besonders gut beschrieben, und du wirst nur einen kleinen Teil davon brauchen.
Ich hatte ihn aber gerade so gespeichert, und vieleicht hilft er die ja etwas weiter bei dem Problem, die RTC mit der DCF-Zeit abzugleichen.
Moin,
wenn man eine Tochteruhr ansteuert benötigt man auch die Position der Zeiger.
Ansonsten hilft es nicht, wenn die Ansteuerungselektronik Funk- oder Netzwerkgesteuert die Zeiteinstellung bekommt.
Man muss trotzdem die Uhr stellen.