Hallo, wie bekommt/behaltet/verarbeitet ihr eine Uhrzeit auf einem Mikrocontroller? Es muss ja initial eine Uhrzeit übergeben werden. Oder per DCF-Empfänger? Wenn ihr Strom weg nimmt, wie behaltet ihr eure Uhrzeit? Wie macht ihr es, wenn ihr auch Datum haben wollt?
Meine Glaskugel ist gerade beim Kundendienst... Kommt bisschen auf die Aufgabe an, Wenn du einen uC hast der ewig im Sleep mode ist, kurz aufwacht und evtl Daten loggt o. ä und dannach wieder weiter schläft wäre ein DCF77 bisschen Suboptimal. Beim 3231 ist die Zeit sofort verfügbar. Dafür muss man eben alle heiligen Zeiten das Ding mal nachstellen Auch von den Kosten her, in der Bucht gibt's fertige Ds3231 oder deren Brüder für wenig Geld. DCF77 sind etwas teurer...
Ich mach das per NTP und PCF2127. Den PCF (mit internen XTal) bekommt man in weniger als 8 Stunden auf +/- 2 Sekunden / Monat Abweichung. Nur mit NTP und etwas Software (hauptsächlich serverseitig).
Nach dem Einschalten holt sich der Mikrocontroller Datum und Uhrzeit von einem DFC77-Emfänger und stellt damit sein eigene Uhr. Danach wird der DCF-Empfänger abgeschaltet, da der Takt von einem 12,8Mhz-TCXO geliefert wird. Strom weg, Uhrzeit und Datum weg. Uhrzeit, Datum und Winter/Sommerzeit berechnet das Uhrenprogramm selbst.
Alex D. schrieb: > Winter/Sommerzeit berechnet das Uhrenprogramm selbst. Abgesehen davon, dass es keine Winterzeit gibt, ist es auch fraglich wie lange es noch eine Sommerzeit gint. Man soll sich also sehr gut überlegen um man local time verwendet und nicht doch lieber UTC. Letzteres insb., wenn die Daten an einen Server gehen.
Jens schrieb: > wie bekommt/behaltet/verarbeitet ihr eine Uhrzeit auf einem > Mikrocontroller? Verschieden. Je nachdem, wie die Umgebung aussieht. Ohne Anspruch auf Vollständigkeit: - gepufferte Echtzeituhr - DCF77-Empfänger - GPS-Empfänger - Netzwerkverbindung zu NTP-Server - den Nutzer nach der Zeit fragen ;)
Nick M. schrieb: > Abgesehen davon, dass es keine Winterzeit gibt, ist es auch fraglich wie > lange es noch eine Sommerzeit gint. Da ich das Uhrenprogramm selbst geschrieben habe, ist eine Anpassung kein Problem. Nick M. schrieb: > Man soll sich also sehr gut überlegen um man local time verwendet und > nicht doch lieber UTC. Letzteres insb., wenn die Daten an einen Server > gehen Was hilft mir im täglichen Leben UTC, wenn alle anderen sich nach der lokalen Uhrzeit richten?
Nick M. schrieb: > Abgesehen davon, dass es keine Winterzeit gibt, ist es auch fraglich wie > lange es noch eine Sommerzeit gint. Woher dieser Optimismus. Die Aktivität unserer gewählten Volksvertreter hält sich diesbezüglich in sehr engen Grenzen.
Kauf dir in China ein DCF-77 Empfänger mit 2032 Schacht. Dann lebt die Uhr bis die Batterie leer ist. https://www.ebay.de/itm/Echtzeituhr-DS1302-serial-Real-Time-Clock-RTC-Clock-Modul-Arduino/283837128557 So was z.b. Da ist wie man sieht der Halter für die Batterie schon drin. Aber ich weiß nicht ob die ein Arduino starten kann. Hab ich nie benötigt. Ich frage das Modul nur ab, um die aktuelle saubere Zeit zu haben.
Schlaumaier schrieb: > Kauf dir in China ein DCF-77 Empfänger mit 2032 Schacht. Dann lebt > die Uhr bis die Batterie leer ist. > > Ebay-Artikel Nr. 283837128557 In welchem Universum ist das ein DCF77-Empfänger?
Einfache Antworten gibt es (wie immer, wenn man keinem Marktschreier aufsitzen will) nicht! Mach dir eine Bewertungsliste! - Wie genau muss die Zeit-/Datumsangabe sein? - Wieviel Strom steht zur Verfügung? - Wie schnell muss die die Zeit-/Datumsangabe mit welcher Genauigkeit zur Verfügung stehen. - Wie schnell / wie oft kannst du korrigierend eingreifen? Extremfälle sind die Energieverbrauchsklassen "ZZZ" und "AAA": ZZZ: Jederzeit (zur Not mit USV) verfügbar, Versorgung vom Netz, DCF, GPS oder NTP für die Synchronisation und eine RTC (z.B. DS3231) mit Backup-Batterie für Stromausfall (oder Transport). AAA: Nur ganz selten von Hand eingeschaltet, Batteriebetrieb. Dann müssen aber etwa 5 Minuten DCF-Empfang (0,1 mA * 1/12 h = 0,8 mAh), oder 20 Minuten GPS-Empfang (z.B. 40 mA * 1/3 h = 13,3 mAh) abgewartet werden, bis Datum und Zeit (bei gutem Empfang) exakt zur Verfügung stehen. Irgendwo dazwischen liegt DEINE optimale Lösung, die du dir aber leider SELBST berechnen musst.
Und für die SUPERSCHLAUEN Halbwissen-Verbreiter noch diese Anmerkungen: In den Sekunden 17 (LSB) und 18 (MSB) wird jede Minute (!) der Abstand zwischen dcf-Zeit und utc (in Stunden) übermittelt. Bei GPS hat man Wartezeiten im 12,5 Minuten-Raster, bis die Zeitangabe alle Schaltsekunden seit Erstellung der Firmware des GPS-Receivers berücksichtigt... Im Extremfall hat man 12,5 Minuten lang eine Uhr, die etliche Sekunden (auf < 1µs genau) "daneben" liegt.
Alex D. schrieb: > Nick M. schrieb: >> Man soll sich also sehr gut überlegen um man local time verwendet und >> nicht doch lieber UTC. Letzteres insb., wenn die Daten an einen Server >> gehen > > Was hilft mir im täglichen Leben UTC, wenn alle anderen sich nach der > lokalen Uhrzeit richten? UTC, vor allem als reiner Sekundenzähler, ist einfach viel einfacher. Entscheidend ist, man muss eine UTC-Uhr niemals stellen. Wenn jemand im Sommer eine andere Zeit sehen möchte als im Winter, wird das einfach so ausgerechnet wie der Benutzer das mag. Dass DCF die gesetzliche Zeit liefert, ist kein Problem. Man ignoriert einfach Datum, Wochentag und Stunde. Minuten und Sekunden alleine reichen ja, um die eigene RTC zu korrigieren. Wenn die erstmal eine halbe Stunde falsch geht, hat es sowieso keinen Zweck mehr. Überhaupt sollte man der eigenen RTC immer mehr vertrauen, als DCF- oder GPS-Empfängern (wegen der Differenz zwischen der GPS-Zeit und UTC). Profis trauen auch der NTP-Zeit nicht. Auch wenn die RTC den Kalender kennt, kann sie genauso gut UTC zählen. Wie gesagt, man will sie nicht stellen. Sehr nützlich ist eine RTC, die man trimmen kann. Die muss man wirklich nie stellen, nur schneller oder langsamer laufen lassen. Wenn jemand meint, er brauchte keine RTC mit Batterie, dann ist das ein anderes Thema. Entweder die Anwendung braucht die Uhrzeit oder nicht. Oder kann man irgendwo Minuten bis Stunden warten, bis alles funktioniert? Selbst mit NTP kann das passieren. Selbst mit einer guten GPS-Antenner auf dem Dach muss man eine Viertelstunde einkalkulieren. Ich werde nie verstehen, warum heute noch jemand einen RTC-Chip mit externem Quarz einsetzt. Der PCF2129T kostet bei Mouser einzeln 2.79€, inklusive Quarz, Temperaturkompensation und ist fertig abgeglichen. Aus der Schweiz kommen ähnliche Chips, die gibt's sogar bei Reichelt. Wer nicht weiß, wohin mit dem Geld, kann natürlich auch Dallas kaufen, die sind sogar ein klein wenig genauer.
> ein klein wenig genauer
Wenn man es ein wenig ungenauer sein darf, kann man ueber die
Tage den Helligkeitsverlauf messen, und sich darauf synchronisieren.
Dann hat man quasi die lokale Sonnenzeit :-).
Funktioniert garantiert ohne NTP, GPS, Glonass, DCF oder
anderen Kram.
Moko schrieb: > DS3231 mit Übergabe als Modul mit EEPROM für die Speicherung, DCF77 als Ergänzung wo möglich. Noch besser, mit ESP32/8266 und NTP Alex D. schrieb: > Da ich das Uhrenprogramm selbst geschrieben habe, ist eine Anpassung > kein Problem. Tasten zum Stellen wenn der Strom weg war, habe ich auch eingebaut!
:
Bearbeitet durch User
Bauform B. schrieb: > Man ignoriert > einfach Datum, Wochentag und Stunde. Minuten und Sekunden alleine > reichen ja, um die eigene RTC zu korrigieren Und wie nimmt man sie beim ersten mal in Betrieb, ohne das Datum zu kennen? Georg
Georg schrieb: > Und wie nimmt man sie beim ersten mal in Betrieb, ohne das Datum zu > kennen? wer hat je eine alte Aufzieharmbanduhr in Betrieb genommen ohne die aktuelle Uhrzeit zu kennen? Wer die Zeit nicht kennt braucht keine!
Georg schrieb: > Bauform B. schrieb: >> Man ignoriert >> einfach Datum, Wochentag und Stunde. Minuten und Sekunden alleine >> reichen ja, um die eigene RTC zu korrigieren > > Und wie nimmt man sie beim ersten mal in Betrieb, ohne das Datum zu > kennen? In einer Anwendung hängt sowieso ein PC dran und der kennt sowieso die genaue Zeit. Man muss es nur anklicken. Dabei ist die Unix-Zeit der gesetzlichen Zeit 6-fach überlegen: der PC muss nur eine Zahl senden ;) Auf einer anderen Platine gibt es tatsächlich einen freien Taster. Den könnte man als jetzt-bitte-die-Uhr-nach-GPS-stellen (oder so) definieren (falls ich das jemals brauchen sollte). Der Vorteil vom Taster ist, man hat einen Schuldigen, wenn die Zeit danach nicht stimmt ;) Momentan darf das Programm auch alleine stellen. Es weiß ja, wenn die RTC keinen Strom hatte (Oszillator-Stop-Flag). Dann muss es die Daten vom Funk "nur" besonders gewissenhaft prüfen.
Ich nutze dafür einen DS1307 im 8pol-DIL. Dann braucht man nur noch einen Uhrenquarz und eine 2032 mit Lötpins sowie einen 10k Pullup für den I2C-Bus. Uhr wird einmalig per Software über USB gestellt durch die Uhr vom Rechner. Nachdem die Uhr gestellt wurde, kommt dann erst das Programm auf den MC. Ist nicht hypergenau, aber für Schaltaufgaben reicht es.
Hallo zusammen. @ svensson > Uhr wird einmalig per Software über USB gestellt durch die Uhr vom > Rechner. Und wie machst du das? Für etwas mehr Info wäre ich dir dankbar. 73 Wilhelm
svensson schrieb: > Uhr wird einmalig per Software über USB gestellt durch die Uhr vom > Rechner Und die läuft dann jahrzehntelang ohne Nachstellen genau? Sehr optimistisch. Georg
Georg schrieb: > svensson schrieb: >> Uhr wird einmalig per Software über USB gestellt durch die Uhr vom >> Rechner > > Und die läuft dann jahrzehntelang ohne Nachstellen genau? Hat 1. keiner behauptet. Und 2. hat jeder eine andere Vorstellung davon, wie "genau" die Uhrzeit sein muß.
Georg schrieb: > Und die läuft dann jahrzehntelang ohne Nachstellen genau? Sehr > optimistisch. Die Frage ist wie hoch ist die Abweichung. Das kann man mein Hersteller des Chips nachlesen. Was das stellen angeht. Da alle meine Projekte ein Display haben (2 x 16 am i2c) und auch einige Taster, ist es einfach eine kleine Programmroutine zu schreiben, mit der man die Uhr stellen kann. Ich brauche nicht einmal die Sekundenanzeige da es Projekt bedingt völlig unwichtig ist. Davon abgesehen. Wenn es wirklich auf so feinste Zeitmessungen ankommen würde würde ich das nicht mit einen China-Clone für 2 Euro lösen.
svensson schrieb: > Ich nutze dafür einen DS1307 im 8pol-DIL. Dann braucht man nur noch > einen Uhrenquarz und eine 2032 mit Lötpins sowie einen 10k Pullup für > den I2C-Bus. Mit dem habe ich auch mal angefangen, der ist aber so ungenau und müsste ständig nachgestellt werden, der DS3231 ist viel genauer und kann mit seiner internen Temperaturmessung sogar kalibriert werden!
Hallo zusammen, ihr streitet euch darüber, ob die Genauigkeit ausreicht. Auf meine Frage habe ich bis jetzt keine plausible Antwort erhalten. Frage: > Und wie machst du das? Für etwas mehr Info wäre ich dir dankbar. Antwort: > Durch ein kleines Programm. @ svensson Ich bin nicht davon ausgegangen, dass du irgend etwas mit Hammer und Meissel in dieses Uhrenteil geschmiedet hast, es wird wohl ein Programm gewesen sein. Darf am mehr darüber erfahren oder ist das geheim? Hast du wohlmöglich die eierlegende Wollmilchsau bezgl. Einstellung DS1307-Uhr gefunden? 73 Wilhelm
Hier ein Programm um die DS1307 zu stellen:
1 | rcall TWI_init |
2 | |
3 | ldi temp1, 0b11010000 ;Slave address+Write |
4 | rcall TWI_address_send |
5 | |
6 | ldi temp1, 0 ;Adress-Byte senden |
7 | rcall TWI_byte_send |
8 | |
9 | mov temp1, zeit_s |
10 | rcall BIN_to_BCD |
11 | rcall TWI_byte_send |
12 | |
13 | mov temp1, zeit_m |
14 | rcall BIN_to_BCD |
15 | rcall TWI_byte_send |
16 | |
17 | mov temp1, zeit_h |
18 | rcall BIN_to_BCD |
19 | rcall TWI_byte_send |
20 | |
21 | mov temp1, zeit_d |
22 | rcall TWI_byte_send |
23 | |
24 | lds temp1, Tag_Adress |
25 | rcall BIN_to_BCD |
26 | rcall TWI_byte_send |
27 | |
28 | lds temp1, Monat_Adress |
29 | rcall BIN_to_BCD |
30 | rcall TWI_byte_send |
31 | |
32 | lds temp1, Jahr_Adress |
33 | rcall BIN_to_BCD |
34 | rcall TWI_byte_send |
35 | |
36 | rcall TWI_stop |
37 | clr temp1 |
38 | sts TWCR, temp1 |
39 | ret |
Funktioniert seit 10 Jahren super!
Wie man sieht: "Jens (Gast)" ist nicht mehr interessiert, weil alle brauchbaren Vorschläge eigene Überlegungen zu Betriebsweise und erforderlicher Genauigkeit bededeuten. SELBST DENKEN? - TSCHÜÜÜÜÜÜÜS....
Wilhelm S. schrieb: > @ svensson > >> Uhr wird einmalig per Software über USB gestellt durch die Uhr vom >> Rechner. > > Und wie machst du das? Für etwas mehr Info wäre ich dir dankbar. > > 73 > Wilhelm ich bin es zwar nicht aber kann antworten. Nutzt natürlich nur mit RTC und eigener Batterie erstmalig bei compile.
1 | char c_str[20]; |
2 | uint8_t mo=0, ta=0, hh=0, mm=0, ss=0; |
3 | uint16_t jjjj=0; |
4 | const char monthnames[]PROGMEM ="JanFebMarAprMayJunJulAugSepOctNovDec"; |
5 | jjjj=atoi(__DATE__+7); |
6 | ta=atoi(strLeft((char*)((unsigned long)__DATE__ + 4UL),2)); |
7 | if(jjjj) |
8 | if(mo=(1+((unsigned long)strstr(monthnames, strLeft((char*)__DATE__, 3)) - (unsigned long)(monthnames))/3)) |
9 | if(ta) |
10 | {
|
11 | hh = atoi(__TIME__); |
12 | mm = atoi(__TIME__+3); |
13 | ss = atoi(__TIME__+6); |
14 | sprintf((char *)c_str,"%04d/%02d/%02d_%02d:%02d:%02d", jjjj, mo, ta, hh, mm, ss); |
15 | |
16 | RTC.fillByHMS( atoi(strMid(c_str,12,2)), atoi(strMid(c_str,15,2)), atoi(strRight(c_str,2)) ); |
17 | RTC.fillByYMD( atoi(strLeft(c_str,4)), atoi(strMid(c_str,6,2)), atoi(strMid(c_str,9,2)) ); |
18 | RTC.setTime(); |
19 | DEBUG_PRINTLN(F(" DS3231 RTC ist gestellt")); |
20 | }
|
:
Bearbeitet durch User
Witzige Idee! Etwas genauer wird es, wenn die Zeit zum Linken und Flashen addiert wird: im Makefile:
1 | UTC := $(shell date +%s) |
2 | LDFLAGS += -Wl,-defsym=BUILD_TIME=$(UTC) |
und dann
1 | extern uint32_t BUILD_TIME; |
2 | struct tm *ymdhms; |
3 | uint32_t build_time = &BUILD_TIME; |
4 | |
5 | build_time += 3; // 1 Sekunde linken, 2 Sekunden flashen |
6 | ymdhms = gmtime (&build_time); |
7 | RTC.fillByYMD (ymdhms->tm_year % 100, ymdhms->mon + 1, ymdhms->mday); |
8 | RTC.fillByHMS (ymdhms->tm_hour, ymdhms->tm_min, ymdhms->sec); |
9 | RTC.setTime (); |
Bauform B. schrieb: > Witzige Idee! Etwas genauer wird es, wenn die Zeit zum Linken und > Flashen addiert wird: hatte ich auch mal mit Korrektur, dazu noch eine Speicherung im EEPROM Uhrzeit gesetzt, damit beim nächsten NeuStart nachgesehen werden kann ob die Uhr schon gestellt ist. Der Vergleich, aktuelle Zeit > CompileZeit, vermutlich OK! wenn nicht: Uhr auf Compile Zeit setzten oder Hilfe rufen oder ins Stellmenü mit Tasten gehen. Nach Wunsch kann man fast alles programmieren
> Genauigkeit Angeblich soll das Ding auf 20 ppm genau sein. Das scheint aber nicht unbedingt zu stimmen, denn ich habe eine Abweichung von ca. 1 Minute pro Monat festgestellt. Georg schrieb: > Und die läuft dann jahrzehntelang ohne Nachstellen genau? Nach etwa drei Jahren wird wohl die Knopfzelle erschöpft sein. Beim Wechsel muß dann natürlich neu gestellt werden. Wilhelm S. schrieb: > @ svensson > Ich bin nicht davon ausgegangen, dass du irgend etwas mit Hammer und > Meissel in dieses Uhrenteil geschmiedet hast, es wird wohl ein Programm > gewesen sein. > Darf am mehr darüber erfahren oder ist das geheim? Hast du wohlmöglich > die eierlegende Wollmilchsau bezgl. Einstellung DS1307-Uhr gefunden? Nun, ich habe es mir sehr einfach gemacht und die DS1307-Library für den Arduino verwendet. Da ist folgendes Beispiel dabei, das man leicht etwas an die eigenen Bedürfnisse anpassen kann:
1 | #include <Wire.h> |
2 | #include <TimeLib.h> |
3 | #include <DS1307RTC.h> |
4 | |
5 | const char *monthName[12] = { |
6 | "Jan", "Feb", "Mar", "Apr", "May", "Jun", |
7 | "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" |
8 | }; |
9 | |
10 | tmElements_t tm; |
11 | |
12 | void setup() { |
13 | bool parse=false; |
14 | bool config=false; |
15 | |
16 | // get the date and time the compiler was run |
17 | if (getDate(__DATE__) && getTime(__TIME__)) { |
18 | parse = true; |
19 | // and configure the RTC with this info |
20 | if (RTC.write(tm)) { |
21 | config = true; |
22 | } |
23 | } |
24 | |
25 | Serial.begin(9600); |
26 | while (!Serial) ; // wait for Arduino Serial Monitor |
27 | delay(200); |
28 | if (parse && config) { |
29 | Serial.print("DS1307 configured Time="); |
30 | Serial.print(__TIME__); |
31 | Serial.print(", Date="); |
32 | Serial.println(__DATE__); |
33 | } else if (parse) { |
34 | Serial.println("DS1307 Communication Error :-{"); |
35 | Serial.println("Please check your circuitry"); |
36 | } else { |
37 | Serial.print("Could not parse info from the compiler, Time=\""); |
38 | Serial.print(__TIME__); |
39 | Serial.print("\", Date=\""); |
40 | Serial.print(__DATE__); |
41 | Serial.println("\""); |
42 | } |
43 | } |
44 | |
45 | void loop() { |
46 | } |
47 | |
48 | bool getTime(const char *str) |
49 | { |
50 | int Hour, Min, Sec; |
51 | |
52 | if (sscanf(str, "%d:%d:%d", &Hour, &Min, &Sec) != 3) return false; |
53 | tm.Hour = Hour; |
54 | tm.Minute = Min; |
55 | tm.Second = Sec; |
56 | return true; |
57 | } |
58 | |
59 | bool getDate(const char *str) |
60 | { |
61 | char Month[12]; |
62 | int Day, Year; |
63 | uint8_t monthIndex; |
64 | |
65 | if (sscanf(str, "%s %d %d", Month, &Day, &Year) != 3) return false; |
66 | for (monthIndex = 0; monthIndex < 12; monthIndex++) { |
67 | if (strcmp(Month, monthName[monthIndex]) == 0) break; |
68 | } |
69 | if (monthIndex >= 12) return false; |
70 | tm.Day = Day; |
71 | tm.Month = monthIndex + 1; |
72 | tm.Year = CalendarYrToTm(Year); |
73 | return true; |
74 | } |
Poco Domäne schrieb: > Ich dachte Arduino Code wäre verständlich? Wozu, er wird doch sowieso nur kopiert? Georg
svensson schrieb: >> Genauigkeit > Angeblich soll das Ding auf 20 ppm genau sein. Das scheint aber nicht > unbedingt zu stimmen, denn ich habe eine Abweichung von ca. 1 Minute pro > Monat festgestellt. Eine Minute pro Monat entspricht 23 PPM.
svensson schrieb: > Nach etwa drei Jahren wird wohl die Knopfzelle erschöpft sein. Beim > Wechsel muß dann natürlich neu gestellt werden. Bei einer Minute/Monat geht die Uhr dann 36 Minuten falsch. Das ist nicht meine Vorstellung von einer Uhr, aber das muss jeder selbst wissen. Für Tag/Nacht-Steuerung einer Heizung reicht es. Georg
Georg schrieb: > Bei einer Minute/Monat geht die Uhr dann 36 Minuten falsch. Das ist > nicht meine Vorstellung von einer Uhr, aber das muss jeder selbst > wissen. Das ist die Genauigkeit, mit der man rechnen muss wenn das kauft, was gerade handelsüblich ist. Das ist der Standard. Natürlich gibt es bessere Produkte. Schlechtere würde ich allerdings als Schrott bezeichnen.
Stefan ⛄ F. schrieb: > Das ist die Genauigkeit, mit der man rechnen muss wenn das kauft, was > gerade handelsüblich ist. Das ist der Standard. Das ist der Standard 32kHz-Stimmgabelquarz, egal, welchen RTC-Chip man dahinter hängt. Den DS1307 würde ich eher nicht als "gerade handelsüblich" bezeichnen. Der war doch schon im letzten Jahrtausend veraltet. Natürlich braucht man ihn noch für zertifizierte Platinen aus der Zeit. Aber warum baut man den heute noch freiwillig irgendwo ein? Für genau das gleiche Geld bekommt man z.B. den PCF2129T/2 mit internem Quarz, TCXO, Trimmregister, diversen Überwachungsflags, 3.3V, Timer, Alarm... Ein Grund könnte so ein seltsames Teil wie im Bild sein, aber das ginge auch mit einem modernen Chip. Damit kommt auch ein externer Quarz auf 1ppm. Warum hab' ich das hier im Forum noch nie gesehen? Setzt jemand so Teil ein?
Bauform B. schrieb: > Setzt jemand so Teil ein? Habe ich früher gerne verwendet, da intuitiv anwendbar. Bei Bedarf würde ich es heute wieder so machen.
Ich sags nochmal: Es gibt von NXP RTCCs mit eingebauten Quartz und Temperaturkompensation. Die bringt man auf unter 2 Sekunden pro Monat. Die angebliche Abweichung lt. Datenblatt ohne Abstimmung hab ich nie hinbekommen. Hat die der Bestücker durch den Hähnchengrill gelassen? Jedenfalls kann man die innerhalt etwa 6 Stunden so genau abgleichen. Dazu braucht man einen Rechner der mit der Platine verbunden ist, auf der Platine etwas Zusatzcode und auf dem Rechner eine Software die immer wieder die Zeit abfrägt (1/100 Sek Auflösung), 1000ende Messungen mittelt, die RTCC korrigiert und nochmal probiert. Ich hab das über Ethernet gemacht, den Server hab ich in Tcl/Tk geschrieben.
Bauform B. schrieb: > DS1307. Aber warum baut man den heute noch freiwillig irgendwo ein? Also, ich habe ihn gewählt, weil der eine DIL Bauform hat und damit gute auf eine Lochrasterplatine zu löten ist, weil er I2C als Bus benutzt und weil er nur einen Quarz und eine Knopfzelle benötigt. Die 5V Versorgungsspannung sind ebenfalls sehr praktisch für den ATmega. Und für die Beleuchtung eines Aquariums dürfte die Genauigkeit ausreichend sein. ABER, wenn jemand eine bessere Alternative (mit obigen Anforderungen) kennt, dann nur heraus damit, ich lerne gerne hinzu.
Nur die Anfrage des TO (Jens) und seit 4 Tagen verbale Selbstbefriedigung hier. Geil :-)!!! Typisch. Ich werfe noch: -> Netzfrequenz -> Datum ausrechnen. in den Eimer, fertig. Auch eine Möglichkeit wenn die Möglichkeit besteht. Gruß M.
svensson schrieb: > Also, ich habe ihn gewählt, weil der eine DIL Bauform hat und damit gute > auf eine Lochrasterplatine zu löten ist svensson schrieb: > ABER, wenn jemand eine bessere Alternative (mit obigen Anforderungen) > kennt, dann nur heraus damit, ich lerne gerne hinzu. das gilt auch für die DS3231 Module mit LiR (mit Ladeschaltung! -> 5V-Betrieb) oder CR (ohne Ladeschaltung! -> auch für 3,3V geeignet) aus China, da ist auch noch ein EEPROM dabei und wenn das am Ende seiner Programmiercyclen ist tauscht man es aus ohne den µC mit dem Programm tauschen zu müssen.
:
Bearbeitet durch User
Hallo Maddin (Gast), mir fiel die Selbstbeschäftigung mit diesem Trivialthema, wo auch zum Glück keine Mindestanforderungen genannt sind, schon vor 3 Tagen auf... Nehmen wir mal das Beste an: Statt Viren zu verbreiten, sitzen die 'Helfer' zu Hause und suchen sich einen Zeitvertreib mit überschaubarer Schwierigkeit. Damit ist doch ALLES GUT! Mein Vorschlag - ich hoffe, er bietet einiges Diskussionspotential: Uhrenkorrektur auf den mittleren Sonnentag per LDR! ;-)
Jacko schrieb: > Mein Vorschlag - ich hoffe, er bietet einiges Diskussionspotential: > Uhrenkorrektur auf den mittleren Sonnentag per LDR! ;-) Profi-Wetterstationen messen "Globalstrahlung" u.ä.. Die Sensoren taugen nicht für eine Uhr, aber Messwerte (aus der Vergangenheit) sollten irgendwo im Internet zu finden sein. Damit könnte man schon mal ein Filter konstruieren...
Joachim B. schrieb: > das gilt auch für die DS3231 Module mit LiR (mit Ladeschaltung! -> > 5V-Betrieb) oder CR (ohne Ladeschaltung! -> auch für 3,3V geeignet) aus > China, Ich habe bei solchen Modulen die CR entfernt und einen 1F Goldcap eingebaut. Das hält jedenfalls für eine Reihe von Tagen, möglicherweise von Wochen, ich habe es nicht ausprobiert ...
HildeK schrieb: > Ich habe bei solchen Modulen die CR entfernt und einen 1F Goldcap > eingebaut. auf jeden Fall sinnvoll im Hinterkopf zu behalten, dummerweise auch nur wenn das Modul mit CR & Ladeschaltung Diode R ausgeliefert wird. Aber wie auch immer, Ein Modul mit Ladeschaltung und CR ist doof, ein Modul wo man die LiR nachbstellen muss ist auch doof und teuer, genau wer den Goldcap nachkaufen muss oder will. Ich hatte mal den nackten DS3231 an Ubat mit 0,5F gepuffert, reicht auf jeden Fall für den Batteriewechsel an VCC. Da auch LiR nur begrenzte Ladecyclen aushalten ist Goldcap evtl. besser.
Joachim B. schrieb: > Aber wie auch immer, Ein Modul mit Ladeschaltung und CR ist doof, ein > Modul wo man die LiR nachbstellen muss ist auch doof und teuer, genau > wer den Goldcap nachkaufen muss oder will. Ja, man erlebt einiges. Das Modul wurde mit CR ausgeliefert, die Ladeschaltung war bestückt. 😀 Leider weiß ich nicht, wie viel 'Ladestrom' eine CR unbeschadet übersteht, zumal das Modul auch mit 5V betrieben werden kann und dann schon rund 5mA fließen (200Ω + Diode). Goldcaps hatte ich mal einige irgendwo recycled, daher kein Problem. Ja, neu will man für 1F schon mal zwei fuffzig. > Ich hatte mal den nackten DS3231 an Ubat mit 0,5F gepuffert, reicht auf > jeden Fall für den Batteriewechsel an VCC. Ja, auch 0.5F halten mehrere Tage. Für die Überbrückung eines Batteriewechsels kann man auch für rund 1€ nur 0.1F etwas preisgünstiger einsetzen. Das reicht dann auch noch, um das Modul von A nach B zu tragen, um die Zeit mal wieder nachzustellen ...
Joachim B. schrieb: > Da auch LiR nur begrenzte Ladecyclen aushalten ist Goldcap evtl. besser. Wenn man nicht aufpasst, halten LiR sogar nur einen Zyklus aus. Akkus vertragen keine Tiefentladung. Insofern sind Goldcaps unschlagbar. Die haben auch den Vorteil, dass die RTC daraus nicht allzu lange läuft. Das heißt, solange sie läuft, geht sie auch noch einigermaßen genau und wenn der Goldcap leer ist, hätte sie sowieso gestellt werden müssen. Aber weiß man inzwischen, wie lange aktuelle kleine EDLC leben? In den Datenblättern finde ich immer nur "soviel schlechter nach 1000 Stunden bei 60°C". Selbst wenn man doppelte Lebensdauer pro 10K weniger annimmt, kommt nur ein! Jahr raus. Na gut, sie sind dann nicht kaputt, aber was ist nach 10 Jahren? Eine Lithium-Thionylchlorid-Batterie ist dann noch so gut wie neu.
svensson schrieb: > Ich nutze dafür einen DS1307 im 8pol-DIL > .... > Ist nicht hypergenau, aber für Schaltaufgaben reicht es. Zur Genauigkeit kann ich jetzt nach 3,5 Monaten Testbetrieb nur mit der Knopfzelle sagen, daß eine Abweichung von 2 Minuten festzustellen ist. Für einfache Schaltaufgaben sollte das reichen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.