Forum: Mikrocontroller und Digitale Elektronik Die genaue Uhrzeit


von tobias p. (topat)


Lesenswert?

Hallo,
ich habe mich ein bisschen hier im Forum umgesehen. Habe ich richtig 
verstanden,dass es drei verschiedene Möglichkeiten gibt, einen genauen 
Sekundentakt zu erzeugen?? Einmal mit einem externen QUarz (RTC-Chip), 
mit dem Timer vom uC aus jeder X-beliebigen Quarzfrequenz und 
schließlich durch ein DCF77 Modul. Worin liegen die Vorteile?

Was würdet ihr mir für eine Propelleruhr empfehlen. RTC mit 
Knopfbatterie, falls Stromausfall o.Ä. passiert :)

Eine andere Frage ist, gibt es einen Algorithmus mit dem ich auch Sommer 
und Winterzeit "berechnen" kann?

Soweit ich weiß ist Umstellung von Winterzeit auf Sommerzeit:
Am letzten Sonntagmorgen im März werden die Uhren von 02:00 auf 03:00
Uhr vorgestellt. Man verliert eine Stunde.

Und die Umstellung von Sommerzeit auf Winterzeit:
Am letzten Sonntagmorgen im Oktober werden die Uhren von 03:00 auf
02:00 Uhr zurückgestellt. Man gewinnt eine Stunde.

Könnte man doch einfach immer auf einen Sonntag prüfen oder?

von Christian B. (casandro)


Lesenswert?

tobias p. schrieb:

> Eine andere Frage ist, gibt es einen Algorithmus mit dem ich auch Sommer
> und Winterzeit "berechnen" kann?

Streng genommen nicht, da das nicht vorhersehbar ist und jederzeit 
abgeschafft oder sich ändern kann. Schau mal im Wikipediaartikel zur 
Sommerzeit nach.

Sinnvoller als da irgendwie wild Uhren umzustellen ist es das so zu 
machen wie es jeder macht. Du hast eine interne Uhr, die jede Sekunde um 
eins hoch zählt, und Du rechnest daraus die lokale Zeit aus.

Das machst Du am Besten in 2 Stufen, einmal setzt Du die interne Zeit in 
die lokale Zeitzone um. Das ist im einfachsten Falle ein simples Offset, 
im schwierigeren Fall (mit Sommerzeit) ein Offset der von der Zeit 
abhängt. Beides ist aber relativ einfach machbar. Aus der lokalen 
Zeitzone kannst du per Modulo das Datum und die Uhrzeit bestimmen.

Ohne größeren Aufwand wirst Du aber so oder so keinen RTC finden der 
genau genug geht, dass Du ihn nicht sowieso alle paar Wochen neu stellen 
müsstest.

von vn nn (Gast)


Lesenswert?

DCF77.

tobias p. schrieb:
> RTC mit
> Knopfbatterie, falls Stromausfall o.Ä. passiert :)

Aktuelle Zeit über DCF77 holen.

tobias p. schrieb:
> Eine andere Frage ist, gibt es einen Algorithmus mit dem ich auch Sommer
> und Winterzeit "berechnen" kann?

Ist inkludiert.

von tobias p. (topat)


Lesenswert?

> Das machst Du am Besten in 2 Stufen, einmal setzt Du die interne Zeit in
> die lokale Zeitzone um. Das ist im einfachsten Falle ein simples Offset,
> im schwierigeren Fall (mit Sommerzeit) ein Offset der von der Zeit
> abhängt. Beides ist aber relativ einfach machbar. Aus der lokalen
> Zeitzone kannst du per Modulo das Datum und die Uhrzeit bestimmen.

sorry, das habe ich nicht so ganz verstanden kannst du das genauer 
erklären oder ein beispiel code zeigen?

> Ohne größeren Aufwand wirst Du aber so oder so keinen RTC finden der
> genau genug geht, dass Du ihn nicht sowieso alle paar Wochen neu stellen
> müsstest.

würde RTC8083 nicht reichen?

von tobias p. (topat)


Lesenswert?

> DCF77.

Problem natürlich ist, wo soll ich das Modul bzw die Antenne auf der 
Propellerplatine unterbringen? Ich könnte höchstens das Modul extern 
irgendwo unterbringen und die daten z.B. per Bluetooth an den Propeller 
senden?

von tobias p. (topat)


Lesenswert?

Noch eine Frage, wenn ich dass mit einer internen Uhr mache, bei 
Stromausfall muss diese dann neu gestellt werden oder?

von Christian B. (casandro)


Lesenswert?

Naja, nehmen wir mal das Beispiel Unix.
Da hast Du die Unixzeit, das sind einfach die Sekunden seit dem 1. 
Januar 1970 00:00:00 UTC.

Sprich im Moment haben wir 1368095381 als Unixzeit. Das ist eine ganz 
normale Ganzzahl, die Du in C und Assembler trivial einfach verarbeiten 
kannst.

Was Du zum Beispiel hier machen kannst ist erst mal zu schauen, um 
welches Jahr es sich handelt. Dazu machst Du im Prinzip so was:

z=zeit
jahr=1970
solange z>=jahrsekunden(jahr)
   jahr=jahr+1
   z=z-jahrsekunden(jahr)

Die Funktion jahrsekunden bestimmt die Anzahl der Sekunden im Jahr. Im 
Prinzip gibt das für normale Jahre 31536000 zurück, für Schaltjahre 
31622400.
In z ist die Sekunde des Jahres.
Jetzt kannst Du zum Beispiel für alle Jahre eine Tabelle anlegen, in der 
drin steht wann auf die Sommerzeit umgeschaltet wird, und wann wieder 
zurück geschaltet wird, oder du kannst probieren diese Zeitpunkte zu 
berechnen. Den Wochentag kriegst Du einfach dadurch raus, in dem die 
Zeit durch einen Tag teilst, und dann das Ergebnis durch 7 teilst und 
den Rest nimmst.
Sprich: Wochentag=(zeit/(24*3600))%7

Du weißt jetzt ob gerade Sommerzeit oder Winterzeit ist. Bei Winterzeit 
eilt die Ortszeit um eine Stunde (3600 Sekunden) vorraus, bei der 
Sommerzeit um 2 Stunden. (7200 Sekunden)

Das addierst Du einfach zur Unixzeit, und rechnest Dir die Stunden 
Minuten und Sekunden aus.

Wenn Du 2 Funktionen hast wie Sommerzeitanfang und Sommerzeitende, 
könnte das so aussehen:


falls z>Sommerzeitanfang(jahr) und z<Sommerzeitende(jahr)
  dann lokalzeit=zeit+7200
  sonst lokalzeit=zeit+3600

Tageszeit=lokalzeit%(24*3600)
Stunden=Tageszeit/3600
Minuten=(Tageszeit/60)%60
Sekunden=Tageszeit%60

Wenn Du die Sommerzeiten als Array wo speicherst, kannst Du das ganze 
Programm in unter 20 Zeilen kriegen.

von B. S. (bestucki)


Lesenswert?

Christian Berger schrieb:
> Ohne größeren Aufwand wirst Du aber so oder so keinen RTC finden der
> genau genug geht, dass Du ihn nicht sowieso alle paar Wochen neu stellen
> müsstest.

Musst du dein Handy, PC, Backofen usw. auch alle paar Wochen neu 
stellen? Hab hier nen DS1307 mit externem Uhrenquarz und nach 4 Jahren 
Dauerbetrieb geht der ca. 5 Sekunden vor.

von tobias p. (topat)


Lesenswert?

hallo christian,
vielen dank du hast mir sehr geholfen!!

von tobias p. (topat)


Lesenswert?

> Musst du dein Handy, PC, Backofen usw. auch alle paar Wochen neu
> stellen? Hab hier nen DS1307 mit externem Uhrenquarz und nach 4 Jahren
> Dauerbetrieb geht der ca. 5 Sekunden vor.

Also würdest du mir den DS1307 empfehlen? wie sieht es mit dem PCF8583 
aus?

von ich (Gast)


Lesenswert?

Christian Berger schrieb:
> Im
> Prinzip gibt das für normale Jahre 31536000 zurück, für Schaltjahre
> 31622400.

Und was ist mit den Schaltsekunden?

von Christian B. (casandro)


Lesenswert?

be stucki schrieb:
> Musst du dein Handy, PC, Backofen usw. auch alle paar Wochen neu
> stellen? Hab hier nen DS1307 mit externem Uhrenquarz und nach 4 Jahren
> Dauerbetrieb geht der ca. 5 Sekunden vor.

Handy ist bei mir ein Android, das nutzt vermutlich NTP, ich beobachte 
nicht ob die Uhrzeit da stimmt. Der PC kriegt seine Zeit vom 
Videorekorder und der kriegt ein PPS-Signal vom GPS-Empfänger mein 
Backofen hat keine Uhr und selbst wenn würde der sich wohl an der 
Netzfrequenz synchronisieren.

Ich hab bei mir ein paar Geräte die sich nicht synchonisieren, und die 
haben total falsche Zeiten.

von B. S. (bestucki)


Lesenswert?

tobias p. schrieb:
> Also würdest du mir den DS1307 empfehlen? wie sieht es mit dem PCF8583
> aus?

Der ist momentan bei mir im Einsatz (mehrfach) und funktioniert 
einwandfrei. Es gibt aber noch zig andere, die genau so gut sind (und 
günstiger).

von B. S. (bestucki)


Lesenswert?

Christian Berger schrieb:
> Ich hab bei mir ein paar Geräte die sich nicht synchonisieren, und die
> haben total falsche Zeiten.

Hab da andere Erfahrungen gemacht:
- Handy (ohne Internet) seit 2 Jahren: Keine Probleme
- PC (ohne Internet) seit 4 Jahren: Keine Probleme
- Stereoanlage (kein Internet, evt. RTC mit Netzfrequenz): Keine 
Probleme
- Mein DS1307 hab ich schon genannt

von ich (Gast)


Lesenswert?

Christian Berger schrieb:
> Der PC kriegt seine Zeit vom
> Videorekorder und der kriegt ein PPS-Signal vom GPS-Empfänger mein

Gehts noch umständlicher?

von Christian B. (casandro)


Lesenswert?

Ich hab ADSL, darüber die Zeit einzustellen wäre noch aufwändiger, denn 
da ist die Latenz in beiden Richtungen unterschiedlich und ziemlich 
groß. (Und die ändert sich auch noch mit der Auslastung, etc)

Natürlich kann man RTCs bauen, die man nicht alle paar Wochen neu 
einstellen muss, aber der Aufwand dafür wird schon gigantisch. 2 Wochen 
sind grob eine Million Sekunden. Wenn man hier jetzt einen Fehler von 
einer Sekunde zulässt, so braucht man schon Uhren die besser als 10⁻⁶ 
Fehler haben. Das ist ein ppm. Übliche RTCs haben 10 ppm.

Sprich so ein 10ppm macht im Halbjahr schon fast 160 Sekunden Fehler! 
Das sind fast 3 Minuten. Da braucht man sich wirklich nicht mehr um das 
automatische Umstellen von Sommer- auf Winterzeit kümmern, da das Teil 
eh total falsch läuft.

von Harald W. (wilhelms)


Lesenswert?

Christian Berger schrieb:

> Wenn man hier jetzt einen Fehler von
> einer Sekunde zulässt, so braucht man schon Uhren die besser als 10⁻⁶
> Fehler haben.

RTCs mit solchen geringen Fehlern kann man kaufen. Ich habe schon
entsprechende Werbung gesehen, kann Dir aber momentan da keinen
Link geben.
Gruss
Harald

von tobias p. (topat)


Lesenswert?

Also würdest du mir von einem RTC abraten, wenn ich eine Uhr realisieren 
möchte die 100% richtig läuft? Um das zu realisieren was christian 
vorgeschlagen hat wird also nur ein uC benötigt? Kann ich trotzdem eine 
Knopfzelle benutzen falls es einen Stromausfall gibt?

von Karl H. (kbuchegg)


Lesenswert?

tobias p. schrieb:
> Also würdest du mir von einem RTC abraten, wenn ich eine Uhr realisieren
> möchte die 100% richtig läuft?

100% richtig, ohne externe Referenz - sprich DCF77 - kannst du dir nicht 
leisten.

RTC ist ein guter Weg.
DCF wäre noch einfacher, wenn du am Aufstellungsort guten Empfang hast.

> Um das zu realisieren was christian
> vorgeschlagen hat

vergiss es. viel zu kompliziert.

> wird also nur ein uC benötigt?

Nein.
Du liest nicht, was er geschrieben hat. Er hat einen Computer, den er 
vom Videorekorder mit der Zeit versorgt, die dieser wiederrum von einem 
GPS Empfänger hat.

Um µC kommst du sowieso nicht rum.

> Das sind fast 3 Minuten im halben Jahr

Oh mein Gott. 6 Minuten im Jahr! Wir werden alle sterben!
Manchmal fragt man sich schon, wie die Menschheit durch die Jahrtausende 
gekommen ist.

von tobias p. (topat)


Lesenswert?

Also was würdest du mir jetzt konkret für eine Propelleruhr raten die 
dann halbwegs (auf die 6 minuten kommt es nicht an) richtig läuft. Ein 
"Schutz" vor einem Stromausfall wäre auch nicht schlecht 
(Knopfbatterie).

von tobias p. (topat)


Lesenswert?

>> Um das zu realisieren was christian
>> vorgeschlagen hat
>
> vergiss es. viel zu kompliziert.

was würdest du mir raten?

von B. S. (bestucki)


Lesenswert?

tobias p. schrieb:
> Also was würdest du mir jetzt konkret für eine Propelleruhr raten die
> dann halbwegs (auf die 6 minuten kommt es nicht an) richtig läuft. Ein
> "Schutz" vor einem Stromausfall wäre auch nicht schlecht
> (Knopfbatterie).

Am einfachsten ist es, ein fertiger RTC mit Knopfzelle und Uhrenquarz zu 
verwenden. Irgendwas mit SPI oder I2C. Wenn der RTC auf dem Propeller 
ist, könnte es mit der Batterie jedoch schwierig werden, wegen der 
Unwucht. Benötigst einfach ein Gegengewicht, oder du platzierst sie in 
der Mitte. Wie sich ein Quarz verhält, wenn er sich so schnell dreht, 
bzw. beschleunigt wird, kann ich nicht sagen.

Nachtrag:
Oder ein uC, der bereits ein Hardware-RTC eingebaut hat, der ein 
"normaler" uC mit Knopfzelle, dann mit Timer und Sleep-Modus.

von Karl H. (kbuchegg)


Lesenswert?

tobias p. schrieb:
> Also was würdest du mir jetzt konkret für eine Propelleruhr raten die
> dann halbwegs (auf die 6 minuten kommt es nicht an) richtig läuft. Ein
> "Schutz" vor einem Stromausfall wäre auch nicht schlecht
> (Knopfbatterie).

Wie gesagt: wenn du guten Empfang hast, wäre DCF überlegenswert, weil da 
die Sommerzeit/Winterzeit Problematik schon weg ist und sich das Teil 
nach einem Stromausfall selbst neu synchronisiert (wenn das Programm für 
die Auswertung korrekt ist, selbstverständlich)

Ansonsten eine RTC. Kostet nicht die Welt, und ist für den Hausgebrauch 
genau genug. Dei eingebaute Batterie ist für die nächsten 10 Jahre mehr 
als ausreichend.


Wie siehts mit deinen Programmierfähigkeiten aus?
Kommt mir ein wenig komisch vor, wenn jemand erst mal lang und breit 
fragen muss, der in der Lage ist eine Propelleruhr zu bauen und zu 
programmieren. Denn der hätte schon längst einfach mal mit dem normalen 
QUarz sich eine Uhr aufgebaut und nachgesehen ob er mit den paar 
Sekunden Abweichung, die er im Monat nach Abgleich erzielen kann, leben 
kann.

von tobias p. (topat)


Lesenswert?

Karl Heinz Buchegger schrieb

> Wie siehts mit deinen Programmierfähigkeiten aus?
> Kommt mir ein wenig komisch vor, wenn jemand erst mal lang und breit
> fragen muss, der in der Lage ist eine Propelleruhr zu bauen und zu
> programmieren.

Hatte mich bis jetzt mit dem Thema noch nicht auseinander gesetzt. Hast 
du vielleicht einen Tipp wie ich mittels RTC auch auf Sommerzeit und 
Winterzeit schließen kann?

von Karl H. (kbuchegg)


Lesenswert?

tobias p. schrieb:
> Karl Heinz Buchegger schrieb
>
>> Wie siehts mit deinen Programmierfähigkeiten aus?
>> Kommt mir ein wenig komisch vor, wenn jemand erst mal lang und breit
>> fragen muss, der in der Lage ist eine Propelleruhr zu bauen und zu
>> programmieren.
>
> Hatte mich bis jetzt mit dem Thema noch nicht auseinander gesetzt. Hast
> du vielleicht einen Tipp wie ich mittels RTC auch auf Sommerzeit und
> Winterzeit schließen kann?

Die Regeln rausfinden, (deine Regelsammlung da oben scheint sich mit 
meiner zu decken - ich hab mich allerdings nie genauer damit 
beschäftigt, an welchen Tagen die Umstellung vorgenommen wird) und 
ausprogrammieren.

Lass deine interne Uhr (wenn du in diese Richtung gehen willst) ständig 
auf Winterzeit laufen und für die Anzeige korrigierst du die Uhrzeit je 
nach vorliegendem Zeitmodell.

von M. K. (sylaina)


Lesenswert?

tobias p. schrieb:
> Hallo,
> ich habe mich ein bisschen hier im Forum umgesehen. Habe ich richtig
> verstanden,dass es drei verschiedene Möglichkeiten gibt, einen genauen
> Sekundentakt zu erzeugen?? Einmal mit einem externen QUarz (RTC-Chip),
> mit dem Timer vom uC aus jeder X-beliebigen Quarzfrequenz und
> schließlich durch ein DCF77 Modul.

Na mit einem DCF77-Modul mit Sicherheit kein Sekundentakt. Das 
DCF77-Signal wird Minutenweise nur ausgestrahlt und besitzt keine 
Sekundeninformationen ;)

von tobias p. (topat)


Lesenswert?

ich versteht das nicht so ganz wie ich mit RTC die genaue Uhrzeit 
darstellen kann. ich muss doch quasi eine vorgabe machen ab der meine 
RTC Uhr dann weiterläuft oder nicht? quasi das was christian schon 
geschrieben hat

von fonsana (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Lass deine interne Uhr (wenn du in diese Richtung gehen willst) ständig
> auf Winterzeit laufen und für die Anzeige korrigierst du die Uhrzeit je
> nach vorliegendem Zeitmodell.

Ich wuerde da sogar noch weiter gehen:

Lass die interne Uhr auf UTC laufen und korrigiere nach der Zeitzone.


fonsana

von qwertz (Gast)


Lesenswert?

Christian Berger schrieb:
> Ich hab ADSL, darüber die Zeit einzustellen wäre noch aufwändiger, denn
> da ist die Latenz in beiden Richtungen unterschiedlich und ziemlich
> groß. (Und die ändert sich auch noch mit der Auslastung, etc)

Kommt es auf die Mikrosekunde an? Meine Rechneruhr (Ubuntu, aber das 
dürfte egal sein) geht immer Sekundengenau und um Sommer- oder 
Winterzeit muss ich mich auch nicht kümmern.

von tobias p. (topat)


Lesenswert?

Gibt es einen Algorightmus mit dessen Hilfe ich aus der Unixzeit die 
jetzige Zeit gewinnen kann?

von fonsana (Gast)


Lesenswert?

tobias p. schrieb:
> Gibt es einen Algorightmus mit dessen Hilfe ich aus der Unixzeit die
> jetzige Zeit gewinnen kann?

Natuerlich.

fonsana

von tobias p. (topat)


Lesenswert?

hast du vielleicht einen link am start? mit dem algorithmus + meiner RTC 
uhr könnte ich doch eigentlich eine relativ genaue Uhr realisieren oder?

von 900ss (900ss)


Lesenswert?

Christian Berger schrieb:
> tobias p. schrieb:
>
>> Eine andere Frage ist, gibt es einen Algorithmus mit dem ich auch Sommer
>> und Winterzeit "berechnen" kann?
>
> Streng genommen nicht, da das nicht vorhersehbar ist

Was ist denn nicht vorhersehbar?

> und jederzeit abgeschafft oder sich ändern kann.

Das wiederum ist wahr. Aber dann kann er seine Uhr ja auch ändern. Ein 
paar Jahre wird das sicher noch so bleiben (leider).

von (prx) A. K. (prx)


Lesenswert?

Christian Berger schrieb:
> Ich hab ADSL, darüber die Zeit einzustellen wäre noch aufwändiger, denn
> da ist die Latenz in beiden Richtungen unterschiedlich und ziemlich
> groß. (Und die ändert sich auch noch mit der Auslastung, etc)

Da Latenzen in der Netzkommunikation völlig normal sind werden sie im 
NTP Protokoll auch berücksichtigt. Zumindest die dauerhafte Variante, 
mit NTP-Daemon statt einfachem ntpdate, kommt auch mit Schwankungen gut 
zurecht, wenn man einige NTP-Server mit möglichst verschiedenen Pfaden 
verwendet.

Allerdings ist der Internet-Ansatz für eine Propelleruhr wohl leicht 
übertrieben.

von (prx) A. K. (prx)


Lesenswert?

900ss D. schrieb:
>> Streng genommen nicht, da das nicht vorhersehbar ist
>
> Was ist denn nicht vorhersehbar?

Zukünftige politische Änderungen des Umschaltzeitpunkts, oder eine 
völlige Abschaffung, sind schlecht vorhersehbar. Wenn man dann nach 
einem Jahrzehnt und ein paar zwischenzeitlich verblichenen Rechnern noch 
nach dem alten Programm und der dazu passenden Entwicklungsumgebung 
suchen muss...

von Reinhard Kern (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Die Regeln rausfinden

Es gibt einfach keine - wann umgestellt wird, ist ein 
Regierungsbeschluss, inzwischen Beschluss der EU, und meines Wissens 
sogar befristet. Das kann man beim besten Willen nicht als Regel 
bezeichnen, es könnte ja sogar passieren dass in einem Anfall von 
Vernunft die Umstellung ganz abgeschafft wird. Allerdings wird es da 
einige Widerstände gegen Veränderungen geben, weil mit einer Änderung 
Abermilliarden an Uhrenchips nicht mehr korrekt funktionieren würden.

Aber voraussehen was passiert kann niemand.

Gruss Reinhard

von tobias p. (topat)


Lesenswert?

hab ich das jetzt richtig verstanden, ich kann mit dem unixzeitstempel 
mir die aktuelle uhrzeit berechnen. so nun habe ich ja eine RTC mit der 
ich eine echte Sekunde realisiere. ich berechne also die aktuelle 
uhrzeit einmal und lass sie dann mit der RTC weiterlaufen? ist das 
korrekt?

von (prx) A. K. (prx)


Lesenswert?

Wer freilich mehr solche Basteleien vor hat, der kann sich ja einen 
eigenen von DCF77 oder Rechner inspirierten 433/866 MHz Zeitsender ins 
Haus stellen. Die Empfänger dazu sind viel kleiner und leichter als 
DCF77 Empfänger.

von MaWin (Gast)


Lesenswert?

> Einmal mit einem externen QUarz (RTC-Chip),
> mit dem Timer vom uC aus jeder X-beliebigen Quarzfrequenz und
> schließlich durch ein DCF77 Modul. Worin liegen die Vorteile?

Du brauchst sowieso den schnellen Hauptquartz um deinen Propeller zu 
bedienen, die ist also kostenlos.
Ein externer 32kHz Quarzt braucht weniger Strom als der beliebig
schnelle Haupzquartz, man könnte dann also versuchen bei Stromausfall 
auf Akkupufferung umzuschalten: Haupttakt aus, Propeller aus, LEDs aus, 
nur interne Uhr zählt weiter. Eine externe RTC kann man aus Batterien 
versorgen, geeignete Modelle haben dafür schon einen Anschluss, das 
spart Arbeit, ist aber die teuerste Lösung.

> Was würdet ihr mir für eine Propelleruhr empfehlen. RTC mit
> Knopfbatterie, falls Stromausfall o.Ä. passiert :)

Kann man machen.

> Eine andere Frage ist, gibt es einen Algorithmus mit dem ich auch Sommer
> und Winterzeit "berechnen" kann?

Nein, die ist politisch festgelegt und ändert sich je nach Regierung.
Natürlich kannst du so weitermachen wie bisher, dann muss man eben 
doppelt so oft stellen wenn sich mal die Grenzen verändern.

von Reinhard Kern (Gast)


Lesenswert?

tobias p. schrieb:
> ich berechne also die aktuelle
> uhrzeit einmal und lass sie dann mit der RTC weiterlaufen?

Das kannst du machen wie du willst: du kannst die Uhr auf Weltzeit 
einstellen und für die Anzeige lokal umrechnen, im Internet und modernen 
Betriebssystemen wird sowieso UTC gezählt und jeweils lokalisiert 
angezeigt, sonst hätten deine in der Cloud in USA gespeicherten Dateien 
eine falsche Uhrzeit. Du kannst aber auch die Lokalzeit in der RTC 
zählen, das ist einfacher, aber dann ergibt sich das Problem eben beim 
Verlassen der Zeitzone.

Hast du einen Spezial-RTC-Chip, so ist das Zeit- und Datumsformat 
normalerweise vorgegeben, ein Register für die Sekunde usw. Lässt du in 
einem allgemeinverwendbaren MComputer die Zeit mitlaufen, kannst du 
natürlich auch Unix-Sekunden zählen und bei Abfrage umwandeln. I.A. sind 
spezielle Chips optimiert auf Batteriebetrieb, brauchen weniger Strom 
als ein normaler µC (die meisten kommen deshalb schon garnicht in Frage) 
und laufen daher länger mit einer Knopfzelle.

Gruss Reinhard

von tobias p. (topat)


Lesenswert?

ich versteh nicht wie ich das programmiertechnisch hinbekommen soll 
sorry

von Frank (Gast)


Lesenswert?

Es gibt keine "Winterzeit". Während die Sommerzeit um eine Stunde 
verschoben ist, ist die "Winterzeit" die ganz normale, richtige MEZ.

von Reinhard Kern (Gast)


Lesenswert?

tobias p. schrieb:
> ich versteh nicht wie ich das programmiertechnisch hinbekommen soll

In dem Fall würde ich zu einem externen RTC-Chip raten, die muss man 
zwar auch richtig ansprechen, aber du setzt einmal die korrekte Zeit und 
gibst den Chip frei, dann läuft er von selbst wie deine Armbanduhr, 
notfalls jahrelang, und wenn du es brauchst fragst du den aktuellen 
Zählerstand ab. Einen µC so zu progammieren, dass er die Zeit auch ohne 
Stromversorgung korrekt weiterzählt dürfte für deine Kenntnisse nicht 
realisierbar sein.

Gruss Reinhard

von tobias p. (topat)


Lesenswert?

ahh ok, vielen dank reinhard. und wie bekomm ich das problem mit der 
sommerzeit hin?

von (prx) A. K. (prx)


Lesenswert?

Aus den bisherigen Fragen schliessend würde ich sagen: 2x im Jahr.

von Eumel (Gast)


Lesenswert?

tobias p. schrieb:
> ahh ok, vielen dank reinhard. und wie bekomm ich das problem mit der
> sommerzeit hin?

Indem du mal selber was machst und dir entsprechende Chips anschaust. 
Dann wirst du die Antwort finden. Im Datenblatt.

von Christian B. (casandro)


Lesenswert?

tobias p. schrieb:
> Gibt es einen Algorightmus mit dessen Hilfe ich aus der Unixzeit die
> jetzige Zeit gewinnen kann?

Ja, siehe den 2. Post hier.

Was eventuell noch eine Möglichkeit wäre, wäre es einen Synchronmotor zu 
verwenden, bei dem die Drehzahl Netzsynchron ist. Da Du eh die Position 
irgendwie bestimmen musst, kriegst Du so auch die Netzfrequenz mit. Die 
Netzfrequenz ist im Mittel genau 50 Hz, die maximale Phasenabweichung 
liegt bei +-20 Sekunden oder so.

von Karl H. (kbuchegg)


Lesenswert?

tobias

Hast du eigentlich schon mal irgendein Programm geschrieben?
Wenn nicht, dann leg momentan deine Propelleruhr ad acta und fang erst 
mal damit an programmieren zu lernen. Denn so hat das momentan keinen 
Sinn.
Etwas bauen zu wollen, ist zu wenig.

von Christian B. (casandro)


Lesenswert?

qwertz schrieb:
> Kommt es auf die Mikrosekunde an? Meine Rechneruhr (Ubuntu, aber das
> dürfte egal sein) geht immer Sekundengenau und um Sommer- oder
> Winterzeit muss ich mich auch nicht kümmern.

Naja, wenn mein ADSL 5ms im Downstream und 15ms im Upstream hat, dann 
kann NTP das nur als eine Laufzeit von 20 ms sehen, und stellt sich die 
Uhr um 5 ms falsch ein. NTP geht immer von symmetrischen Laufzeiten aus.

Der GPS-Empfänger ist übrigens im Moment abgebaut, weil ich umziehen 
muss, aber als der lief hatte ich die Zeit grob auf eine Mikrosekunde 
genau, das reicht für praktische Anwendungen. :)

von Michael (Gast)


Lesenswert?

tobias p. schrieb:
> Hast du vielleicht einen Tipp wie ich mittels RTC auch auf Sommerzeit und
> Winterzeit schließen kann?

Wie soll man mittels RTC auf Sommer- oder Winterzeit schließen können. 
Die Zeitpunkte für die Umstellung sind nicht mal in einem Gesetz 
geregelt. Wenn irgend ein Hansel in Berlin auf die Idee kommt, dass die 
Verordnung zum Umstellzeitpunkt mal wieder geändert werden soll, steht 
deine RTC im Dunkeln.

von Roland (Gast)


Lesenswert?

Michael Köhler schrieb:
>
>
> Na mit einem DCF77-Modul mit Sicherheit kein Sekundentakt. Das
> DCF77-Signal wird Minutenweise nur ausgestrahlt und besitzt keine
> Sekundeninformationen ;)

Stimmt nicht. Alle 60 Sekunden kommt die Information, dass dies die 60. 
Sekunde ist. Damit (und mit einem billigen Quarz) bekommt man eine 
Abweichung <1s hin.

von Christian B. (casandro)


Lesenswert?

Der Aufwand der Zeitumstellung lohnt sich für einen RTC auch nicht, weil 
man die Zeit eh viel öfter nachstellen müsste.
Da solche Propeller-Uhren eh keine wirklich praxistauglichen Geräte 
sind, würde ich einfach vorstellen die Uhrzeit über eine Art DDS zu 
bestimmen.

Sprich man hat eine 64 oder 128 Bit Zahl die man jede Sekunde erhöht. 
Die zählt dann bis auf einen Tag hoch und wird dann um den Tag 
verringert. Daraus berechnet man die Stunden Minuten und Sekunden.

Der große Vorteil daran ist, dass man den Wert um den man die Zahl 
erhöht sehr leicht einstellen kann und somit den Fehler des Quarzes mit 
wenig Aufwand ausgleichen kann. (dann hat man immer noch Drift und so 
was, dafür ist es halt billg)

Im Code wäre das dann ungefähr so:

Konstanten:
Minutendauer=Sekundendauer*60
Stundendauer=Minutendauer*60
Tagesdauer=Stundendauer*24

ISR vom Timer aufgerufen (z.Bsp. einmal pro Sekunde)
zeit=zeit+(Sekundendauer+Korrektur)
falls zeit>=Tagesdauer
  dann zeit=zeit-Tagesdauer
stunden=(zeit/Stundendauer) modulo 24
minuten=(zeit/Minutendauer) modulo 60
sekunden=(zeit/Sekundendauer) modulo 60

Sekundendauer sollte so gewählt werden, dass die Tagesdauer noch im 
Wertebereich der Variable zeit liegt.

Den Korrekturfaktor bestimmst du wie folgt. Du stellst den erst mal 
Korrektur auf 0, stellst dann die Uhr ein. Dann lässt Du die eine Zeit 
lang laufen, bis der Zeitfehler leicht messbar ist, Du bestimmst den, 
und teilst den durch die Zeit die Du gewartet hast. Das multiplizierst 
du mit Sekundendauer und schon hast du den Korrekturwert.

Wenn Du das mit Batterie betreiben willst, dann schau einfach regelmäßig 
nach ob der Motor läuft, wenn nein, dann lässt du alle LEDs aus und 
zählst einfach die Zeit weiter. Wenn Du nur den Timer laufen lässt und 
Dich in der Hauptschleife einfach nur immer schlafen legst läuft das 
Teil auch ziemlich lang mit Batterie.

von Christian B. (casandro)


Lesenswert?

Roland schrieb:
> Michael Köhler schrieb:
>> Na mit einem DCF77-Modul mit Sicherheit kein Sekundentakt. Das
>> DCF77-Signal ---besitzt keine
>> Sekundeninformationen ;)
>
> Stimmt nicht. Alle 60 Sekunden kommt die Information, dass dies die 60.
> Sekunde ist. Damit (und mit einem billigen Quarz) bekommt man eine
> Abweichung <1s hin.

Nein, das DCF-77 Signal überträgt ein Bit and Daten pro Sekunde. Zum 
einen über die Amplitudenmodulation (Unsicherheit so grob 10 ms) bei der 
die Amplitude zum Anfang jeder Sekunde verringert wird, und dann zu 
einem datenabhängigen Zeitpunkt wieder erhöht wird.
Zum anderen über das phasenmodulierte Signal, das sich jede Sekunde 
wiederholt und das meines Wissens nach einmal positiv und einmal negativ 
übertragen wird.

In beiden Fällen kann man den Sekundenanfang bestimmen weil der bei 
jeder Sekunde übertragen wird. Die Ausnahme ist die Sekunde 60/0 bei der 
der Impuls in der Amplitudenmodulation ausgelassen wird. (was die 
Phasenmodulation da macht weiß ich nicht)

von Michael (Gast)


Lesenswert?

Das Rad bzw. die µC Uhr muss doch nicht jedes Mal neu erfunden werden
Beitrag "Die genaue Sekunde / RTC"

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.