Hallo Forum!
Ich hatte mir bei Ali ein paar RTCs bestellt.
Auf dem Uno Rev.4 läuft auch schön die Laufschrift und die Uhrzeit wird
korrekt angezeigt.
Allerdings läuft die Uhr nicht weiter, wenn nur noch über die Knopfzelle
Strom kommt. Am DS3231 kommt 3.3V an (Pin 13 u. 14 gemessen).
Den Widerstand für die Ladeschaltung habe ich entfernt.
Statt Knopfzelle hatte ich auch das Labornetzteil dran.
Wenn ich mir mit "Serial.println(0xE);" das Register anzeigen lasse,
bekomme ich "14" angezeigt.
Was ist dann dort eingestellt? Vorher wurde dort 20 angezeigt.
Wenn ich das zum umrechnen in einen Rechner eingebe, dann bleibt das MSB
immer 1.
Erstmal wüsste ich gerne was diese "14" für ein Wert ist und kann man
den auch binär ausgeben?
Und weiter wüsste ich gerne, wie ich das auf 0 (Null) einstellen kann?
Alles was ich im Netz gefunden habe, führte nicht zum Ziel.
Seit gestern Abend hatte ich mich damit befasst und wirklich lange
gesucht.
Frank O. schrieb:> Wenn ich mir mit "Serial.println(0xE);" das Register anzeigen lasse,> bekomme ich "14" angezeigt.
Serial.println(0xE) zeigt dir nicht den Registerinhalt an sondern die
Dezimaldarstellung der Hexadezimalzahl "0xE" . Und das ist Dezimal 14.
Nils S. schrieb:> Serial.println(0xE) zeigt dir nicht den Registerinhalt an sondern die> Dezimaldarstellung der Hexadezimalzahl "0xE" . Und das ist Dezimal 14.
Danke erstmal dafür! So einfach konnte ich mir das auch nicht
vorstellen.
Weißt du denn wie man das Register ausliest?
Was ich oben schon an Code eingefügt habe, hatte ich jetzt noch einmal
in binär geschrieben und die 0, für schreiben, angehängt.
Keine Fehlermeldung, aber die Uhr bleibt weiter stehen, sobald die
Spannung weg ist.
Das liest man ganz oft, wenn man nach diesem Thema sucht. Leider liest
man keine anderen Lösungen, als die, die ich schon ausprobiert habe.
Ist aber auch nicht so wichtig.
Habe da eh schon eine Menge Zeit mit verschwendet.
Danke!
Falk, vielleicht magst du ja mal drauf schauen.
Jeder andere selbstverständlich auch.
Das ist im Grunde eine Spielerei mit dem Uno R4 Bord.
Da zeigt die Matrix einmal in Laufschrift im Setup "Foldi" an.
Im Loop kommt dann immer "Ich habe jetzt Pause!", dann der Wochentag,
gefolgt von Datum und Uhrzeit.
Falk B. schrieb:> Siehe Anhang. Es ist das Modul hier, es hängt direkt am Arduino Uno.>
Wo ist denn da die Pufferbatterie?
Pin 13 Als Spannung für die Uhr zu nehmen, ist auch nicht schlecht. :-)
Wäre ich jetzt nicht drauf gekommen. Gute Idee.
Frank O. schrieb:> Falk, vielleicht magst du ja mal drauf schauen.> Jeder andere selbstverständlich auch.
Naja, sooo viel kann man bei dem IC nicht falsch machen. Bestenfalls das
EOSC Bit setzen, dann bleibt der Oszillator stehen, wenn die normale
Versrogung weggeht. Das kann irgendwo aus Versehen passieren. Also mal
Register 0E auslesen und den Wert anzeigen lassen. Er muss kleiner 128
sein, nur das ist das Bit gelöscht und der oszillator läuft im
Batteriebetrieb.
Im einfachsten Fall schreibt man 0 ins Register 0xE.
Du benutzt eine Bibliothek und die muss sich darum kümmern. Man kann
aber auch mal einen "manuellen" Zugriff machen. Wie das geht, steht in
meinem Programm.
writeRegister(0xE, 0);
Mit der im Moment auskommentierten Funktion dump_regs() kann man sich
alle Register anzeigen lassen.
Frank O. schrieb:>> Siehe Anhang. Es ist das Modul hier, es hängt direkt am Arduino Uno.>>> Wo ist denn da die Pufferbatterie?
Unter der Platine, zwischen Lochraster und Träger, sieht man nicht auf
dem Bild.
Frank O. schrieb:> Keine Fehlermeldung, aber die Uhr bleibt weiter stehen, sobald die> Spannung weg ist.
Kommt der 32kHz Takt weiter, wenn du VCC weg nimmst?
Moin!
Gleich muss ich erstmal weg. Ich habe jetzt von den restlichen
DS3231-Modulen den Widerstand für die Ladeschaltung runter gemacht und
werde alle probieren.
Was man so liest und vor allem laut Datenblatt, muss der IC selbst
erkennen welche Spannung anliegt.
Ich werde mir die Module einmal genau ansehen.
Leider habe ich bisher keinen Schaltplan dazu gefunden. Wenn also jemand
einen Schaltplan hat, wäre es schön, wenn er den hier verlinken würde.
Vielen Dank dafür!
Auch wenn ich bisher keine Uhr gebraucht habe und auch jetzt nicht
brauche, nervt es gewaltig, dass das nicht so funktioniert.
Das alles sind eigentlich nur Programmierübungen, weil ich in meinem
eigentlichen Projekt feststecke. Ich muss erstmal wieder besser
programmieren können. Und deshalb schaue ich mir verschiedenen Code an,
nehme diese Sachen als Vorlage für eigenen Code, damit ich das alles
besser verstehe.
Mit anderen Worten, mein Leben hängt nicht von diesem Modul ab.
Aber schön wäre es schon, es in den Griff zu bekommen.
Falk B. schrieb:> writeRegister(0xE, 0);>> Mit der im Moment auskommentierten Funktion dump_regs() kann man sich> alle Register anzeigen lassen.
Vielen Dank! Das werde ich heute Mittag auf jeden Fall versuchen.
Problem gelöst!
Bei der Bundeswehr hatte ich Hubschrauber repariert und wenn die Piloten
zurück kamen, gab es dann immer ein Debriefing. Wenn wir die Fehler, die
uns die Piloten erzählten, nicht nachvollziehen konnten, also nichts
kaputt war,
dann sagten wir immer: "Der Fehler lag zwischen den Kopfhörern!"
In diesem Fall auch.
Die Module funktionieren richtig, aber mein Verständnis für die
Programmierung noch nicht so ganz.
Aber jetzt habe ich den Fehler gefunden.
Vielen Dank an alle!
Frank O. schrieb:> Aber jetzt habe ich den Fehler gefunden.
Nur, falls sich da später mal einer dafür interessiert: was war der
Fehler? Was musstest du ändern?
Ich muss jetzt zum Arzt.
Hätte ich später noch ausführlich geschrieben.
Im Setup habe ich doch die Zeit gesetzt.
Mit jedem neuen Anschließen des Arduinos, setze ich automatisch die
Zeit, da natürlich keine aktuelle Zeit kommt, nimmt er immer die letzte
Zeit, der letzten Einstellung.
Frank O. schrieb:> Leider habe ich bisher keinen Schaltplan dazu gefunden.
Suchmaschinen wurden schon erfunden. Solange hier keiner weiß, welches
Modul genau du besitzt, wirst du wohl selber suchen und ihn dir ggf.
selber zeichnen müssen.
Rainer W. schrieb:> Suchmaschinen wurden schon erfunden. Solange hier keiner weiß, welches> Modul genau du besitzt, wirst du wohl selber suchen und ihn dir ggf.> selber zeichnen müssen.
Das Problem ist längst gelöst.
Wenn ich wüsste wie man die nennt.
Das sind die Teile, die es haufenweise bei eBay, Ali und Amazon für ein
paar Euro gibt. Diese Module mit dem EEPROM drauf.
https://de.aliexpress.com/item/1005006685897934.html
Frank O. schrieb:> Wenn ich wüsste wie man die nennt.> ...> https://de.aliexpress.com/item/1005006685897934.html
Geht doch - und so einfach 😄
Nachteil von so einem Angebotslink ist, dass der schon bald Geschichte
sein kann. Ein Bild hier im Forum hält sich so lange, wie der Thread.
Aber die HW war ja nun doch nicht Schuld ...
Rainer W. schrieb:> Aber die HW war ja nun doch nicht Schuld ...
Nein, war sie nicht.
Ich habe es nicht richtig gemacht.
Ich habe erst ca. Ende Februar wieder angefangen und im Grunde fast bei
Null.
Aber letztlich habe ich den Fehler dann doch alleine gefunden.
Zur Zeit bin ich noch sehr weit weg, von dort wo ich sein will.
Dass ich hier nicht mehr zum Guru werden kann, ist mir klar. Dafür ist
die Lebenszeit wohl nicht mehr ausreichend.
Aber das was ich da jetzt gemacht habe, auch wenn es nur eine Spielerei
ist, sieht schon einmal ganz nett aus und ich bin zufrieden.
Kleine Brötchen schmecken auch, man muss nur mehr davon essen, um satt
zu werden.
Also nochmal vielen Dank euch allen!
Insbesondere Falk, für seinen Code.
Kleiner Nachtrag:
Da ich jetzt einiges gelesen habe, wird dieser Fehler bei vielen der
Grund gewesen sein, dass das nicht richtig funktioniert.
Eigentlich kann man selbst drauf kommen, aber es wäre ein kleiner
Hinweis in dem Sketch sicher nützlich gewesen.
Frank O. schrieb:> Eigentlich kann man selbst drauf kommen, aber es wäre ein kleiner> Hinweis in dem Sketch sicher nützlich gewesen.
Wer lesen kann, ist klar im Vorteil.
1
// When time needs to be set on a new device, or after a power loss, the
2
// following line sets the RTC to the date & time this sketch was compiled
3
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
4
// This line sets the RTC with an explicit date & time, for example to set
Frank O. schrieb:> Moin!> Gleich muss ich erstmal weg. Ich habe jetzt von den restlichen> DS3231-Modulen den Widerstand für die Ladeschaltung runter gemacht und> werde alle probieren.> Was man so liest und vor allem laut Datenblatt, muss der IC selbst> erkennen welche Spannung anliegt.> Ich werde mir die Module einmal genau ansehen.> Leider habe ich bisher keinen Schaltplan dazu gefunden. Wenn also jemand> einen Schaltplan hat, wäre es schön, wenn er den hier verlinken würde.> Vielen Dank dafür!>> Auch wenn ich bisher keine Uhr gebraucht habe und auch jetzt nicht> brauche, nervt es gewaltig, dass das nicht so funktioniert.> Das alles sind eigentlich nur Programmierübungen, weil ich in meinem> eigentlichen Projekt feststecke. Ich muss erstmal wieder besser> programmieren können. Und deshalb schaue ich mir verschiedenen Code an,> nehme diese Sachen als Vorlage für eigenen Code, damit ich das alles> besser verstehe.> Mit anderen Worten, mein Leben hängt nicht von diesem Modul ab.> Aber schön wäre es schon, es in den Griff zu bekommen.
Hallo Frank,
Ich fand diese Seite hier mit nützlicher Information:
https://circuitdigest.com/microcontroller-projects/interfacing-ds3231-rtc-with-arduino-and-diy-digital-clock
Zuusätzlich möchte ich davor warnen, RTC Module mit dem DS3231M zu
bekommen. Man sollte nur die DS3231SN Module wählen. Ich bestellte
letztes Jahr Module mit SN spezifiziert. Erhielt aber die M Versionen.
Alle diese Module hatten grottenschlechte Genauigkeit und konnten auch
mit dem AGO Register nicht kalibriert werden. Ich reklamierte und
erhielt dann die gewünschten Module. Diese funktionierten
aussergewöhnlich gut, mit AGO=0 Genauigkeit von 1s/m.
Also aufpassen
Normalerweise funktioniert die automatische Backup Umschaltung immer
ohne Probleme.
Probier mal das dort gelistete Programm aus zum Vergleich ob das Problem
dann auch dort auftritt.
Auch ein Schaltbild findest Du dort.
Gruß,
Gerhard
Falk B. schrieb:> // When time needs to be set on a new device, or after a power loss,> the> // following line sets the RTC to the date & time this sketch was> compiled
Wer liest schon das Kleingedruckte? :-)
Wie wahr, du hast absolut recht!
Gerhard O. schrieb:> Zuusätzlich möchte ich davor warnen, RTC Module mit dem DS3231M zu> bekommen. Man sollte nur die DS3231SN Module wählen. Ich bestellte> letztes Jahr Module mit SN spezifiziert. Erhielt aber die M Versionen.> Alle diese Module hatten grottenschlechte Genauigkeit und konnten auch> mit dem AGO Register nicht kalibriert werden. Ich reklamierte und> erhielt dann die gewünschten Module. Diese funktionierten> aussergewöhnlich gut, mit AGO=0 Genauigkeit von 1s/m.
Hallo Gerhard!
Schön von dir zu hören.
Zu deiner Mail: Da war ich sicher die falsche Person dafür. Hatte mich
dort einmal eingeklinkt, aber hoffnungslos.
Das was du da gerade schriebst, das stelle ich hier gerade fest.
Die eine Uhr haut ab wie Schmitz Katze. Die nächste bummelt rum.
Aber auch die Atomuhr die ich mir auf dem Laptop anzeigen lies, lief
zwar, war aber erst nach dem Aktualisieren der Seite wieder genau.
Man kann sich da schon einen Wolf dran basteln.
Gibt es bessere Module, von anderen Anbietern?
Frank O. schrieb:> Gerhard O. schrieb:>> Man sollte nur die DS3231SN Module wählen.>> Gerade bestellt.> Danke für den Hinweis!> Vor allem kosten die nicht mehr.
Warte mal ab, was Du bekommst: Ich habe hier ein DS3231N(!) (gibt es
nicht, funktioniert auch nicht).
War billig.
Thomas W. schrieb:> Hast Du die Webseite gelesen?
Ne, weil Gerhard geschrieben hat, dass die gut sind.
Gerhard O. schrieb:> Diese funktionierten> aussergewöhnlich gut, mit AGO=0 Genauigkeit von 1s/m.
Gerhard O. schrieb:> die M Versionen. Alle diese Module hatten grottenschlechte Genauigkeit
Die 'M'-Versionen sind ja auch ganz andere Bausteine, die haben keinen
Quarz-, sondern einen MEMS-Oszillator.
Nachtrag,
Die irrtümlich erhaltenen DS3231M waren allesamt unbrauchbar. Keine
einzige ließ sich kalibrieren.
Ich bekam mal N Versionen. Die waren auch sehr schlecht.
Die als Ersatz geschickten SN Versionen waren dagegen absolut stellar.
Wie es manchmal gehen kann.
Meine Nixie Uhr, die eines der neuen Module drin hat, ist nun nach 9
Monaten nur 15s falsch. Man kann sich nicht beklagen.
Rolf schrieb:> Gerhard O. schrieb:>> die M Versionen. Alle diese Module hatten grottenschlechte Genauigkeit>> Die 'M'-Versionen sind ja auch ganz andere Bausteine, die haben keinen> Quarz-, sondern einen MEMS-Oszillator.
Trotzdem sollten sie am Tag nicht um viele s falsch gehen.
Ich habe zwei Original Maxim Samples im SO-8 Format von den MEMS
Versionen und die laufen beide einwandfrei.
Thomas W. schrieb:> Frank O. schrieb:>> Gerhard O. schrieb:>>> Man sollte nur die DS3231SN Module wählen.>>>> Gerade bestellt.>> Danke für den Hinweis!>> Vor allem kosten die nicht mehr.>> Warte mal ab, was Du bekommst: Ich habe hier ein DS3231N(!) (gibt es> nicht, funktioniert auch nicht).>> War billig.
Ja. Da muß man aufpassen. Obwohl ich nur SN Versionen bestelle, kriegt
man manchmal alles andere. Da muß man reklamieren.
Frank O. schrieb:> Hahaha!> Ich habe die dort bestellt:> https://www.christians-shop.de ...
Ist wohl ein Tippfehler auf der Webseite. Im Text steht dort nämlich
auch:
"DS3231M-Chip mit präziser Echtzeit- und Datumsbestimmung (höchstens
+-0,432 sek. Abweichung pro Tag)"
Die 0,432 s stehen übrigens im M-Datenblatt ...
Gerhard O. schrieb:> Ich bekam mal N Versionen. Die waren auch sehr schlecht.
Da es im Datenblatt kein N gibt, gehe ich mal davon aus, dass das
DS3231N(!) abgeschliffen und neu gelabelte Was-Auch-Immer sein (M oder
N, nur ein Strich, kann nicht so ein grosser Unterschied sein)
Kleines Anekdoetchen:
Segor liefert diese dummen DS3231-Platinen fuer 6.50EUR, mit der
Beschreibung "RTC DS3231+24C32 I2C 5V mit Akku! (LIR2032)". Willst Du
den DS3231SN von Dallas haben, ruft Segor ganz entspannt 15.90EUR auf.
Das ist auch bei BerryBase das gleiche: China-Ware auch ca. 5EUR, DS3231
mit Herkunftsnachweis ca. 15 - 20EUR.
Ist halt leider das Risiko wenn man nicht beim Distributor kauft.
Gibt es bessere Module, von anderen Anbietern?
Naja. Bei Watterott, Sparkfun oder Adafruit und ähnlich renommierte
Händlern, hätte ich keinerlei Bedenken. In der eBucht muß man aber
aufpassen; da ist alles möglich und man hat keine Ahnung was da
tatsächlich geliefert wird.
Vor vielen Jahren bestellte ich für meine Wetterstation in der Bucht
DS3234 SPI RTCs Module. Die waren grottenschlecht und akkumulierten in
zwei Wochen über 90s an Abweichung. Dann bestellte ich von Digikey.
Dieser DS3234 lief seit 2009 mit nur 90s Abweichung und ist Temperaturen
von -48 bis +50C ausgesetzt. Ich habe die RTC absichtlich seit der
Installation in 2009 nie mehr gestellt, weil ich die Langzeit Performanz
beobachten wollte, wenn reale Temperaturschwankungen im Spiel sind. Das
AGO ist auf Null eingestellt.
Rolf schrieb:> "DS3231M-Chip mit präziser Echtzeit- und Datumsbestimmung (höchstens> +-0,432 sek. Abweichung pro Tag)">> Die 0,432 s stehen übrigens im M-Datenblatt ...
Das sind "satte" 5ppm. Macht 13,39s / Monat bzw. 160,7s/Jahr. MAXIMAL!
Andreas S. schrieb:> Allerdings muss man mit LGA umgehen können.
Bisher habe ich immer nur Lochstreifenraster genommen. Bei den Preisen
für die Platinen (hab das in einem Video von Edi's Techlab gesehen) ist
es sicher wieder etwas, das man auch mal selbst machen kann.
Mit Heißluft und Lötpaste sollte MAX31328 aber kein Problem sein.
Btw: Die Uhr läuft seit heute Mittag sekundengenau.
Im Moment habe ich da eigentlich keinen Bock drauf, aber über kurz oder
lang werde ich die interne RTC auch mal testen.
Warum die nicht gleich hinten auch noch einen Batteriehalter drauf
gebaut haben? Kostet doch nur ein paar Cent.
Falk B. schrieb:> Siehe Anhang.
Inspiriert durch deine Schaltung, wollte ich beim Uno R4 WiFi den AREF
und Grnd, neben den I2C Anschlüssen nehmen.
Bei den anderen Arduinos waren die immer mit +5V verbunden. Hier nicht.
Hier sitzt da noch ein 5,1K Widerstand drin und ein Ferrit.
Jedenfalls, wenn man den belastet, dann bleibt der Controller stehen.
Nur mal so am Rande.