DS3231

Hallo,

ich möchte nun anstatt eines DS1307 RTC Moduls ein DS3231 einsetzen. Finde aber keine auf den DS3231 bezogene Libary.

Mit der DS1307 Libary inkl. Sketch für SetTime funktioniert es bedingt. Er setzt die Zeit, jedoch läuft die Uhr bereits beim Setzen der Zeit um 3Minuten nach.

Grüße Uwe

Man sollte auch die 1307 Libs anpassen können. Wenn man ins Datenblatt schaut sieht man, dass die Register etwas anders sind. Vor allem das Star/Stop Bit ist nicht mehr Bit 7 des Sekunden-Registers, sondern Bit 7 im Control-Register. Und im Monats-Register gibt es ein Century-Bit.

sschultewolter:
Mit der DS1307 Libary inkl. Sketch für SetTime funktioniert es bedingt. Er setzt die Zeit, jedoch läuft die Uhr bereits beim Setzen der Zeit um 3Minuten nach.

Die DS3231 ist in Bezug auf die 7 untersten Register zu 100% kompatibel zur DS1307.
Das sind die Register für Sekunde, Minute, Stunde, Wochentag, Tag, Monat und Jahr.

Lesen und Schreiben dieser Register ==> vollständig kompatibel.

Du darfst halt nur nicht versuchen, etwas ins Uhren-RAM zu schreiben. Das hat die DS3231 nämlich nicht.

oder - GitHub - JChristensen/DS3232RTC: Arduino Library for Maxim Integrated DS3232 and DS3231 Real-Time Clocks - wirkt auch mit DS3231

Das RTC Modul konnte ich gestern Nacht erfolgreich setzen. Beim Beispielsketch musste man nur drauf achten, dass die Baudrate gleich ist. Sie ist im Sketch nämlich nicht 9600 gewesen.

Nun aber zum eigentlichen Problem. Auch bei diesem RTC Modul habe ich wieder "große" Abweichungen zur PC Uhr. Die Uhr läuft nun ca 12Std am Stück. Sie läuft jetzt bereits wieder 6 Sekunden vor.

  1. synchronisiere die PC-Zeit mit einem NTP-Server bevor Du den Zeitvergleich machst. So eliminierst Du den Fehler der PC Uhr.
  2. der DS3231 hat laut Datenblatt http://datasheets.maximintegrated.com/en/ds/DS3231.pdf eine Genauigkeit von 2ppm (im Temperaturbereich 0 bis 40°C) das sind 0,1728 Sekunden am Tag Abweichung oder 1 Sekunde alle 5,69 Tage.
    Ich tippe daß Deine PC-Referenzzeit falsch läuft.
    Grüße Uwe

Habe ich immer drin (ptbtime1.ptb.de)

sschultewolter:
Habe ich immer drin (ptbtime1.ptb.de)

Wie oft wird die Zeit synchronisiert?
Standartmäßig macht das Windows XP 1x die Woche. Für andere Versionen hab ich keine infos.

Grüße Uwe

1 Woche ist auch bei Windows 7 noch der Standard Wert. Kann diesen aber heruntersetzen. Vor jedem SetTime am RTC habe ich auch die Zeit synchronisiert.

Ich kann dir nur sagen, meiner läuft genau.

Vergleiche doch mal direkt mit einer Online-Atomuhr, z.B. http://www.atomzeit.eu/.
Einmal die RTC stellen, mit http://www.atomzeit.eu/ vergleichen, und nach einer Woche nochmal.

Der DS3231 läuft bislang auf die Sekunde genau :wink:

Eine weitere Frage, gibt es einen Schaltplan, um den DS3231 direkt auf einem ProtoShield laufen zu lassen? Google gibt mir noch nicht da passende. Sind die Bauteile alle als DIP 2,54 mm verfügbar? SMD Löten kann ich nur ein IC mit 14Pins.

Lohnt sich das denn, wenn es fertige Module für 4€ in der Bucht gibt?

Falls du doch basteln willst, nimm doch die Schaltung aus dem Datenblatt.
oder du fragst Tante Google

Ach ja: den Baustein gibt es nur im SOIC16 wide Gehäuse.

Alternativ kann ich die fertigen Platinen auf ein Protoshield klicken.

Das hier geht vom Abstand zwischen beiden Lötreihen nicht.
http://www.ebaypa.com/albums/20120005/sku082052-4.jpg

Das hier wäre die Alternative, aber ob das mit den Lötreihen passt?
http://i.ebayimg.com/t/NEW-mini-RTCpro-DS3231-Clock-Module-Temperature-Measure-Module-/00/s/MTI4MFgxNjAw/z/usoAAMXQjUNR3mef/$(KGrHqQOKp0FG1kem5cVBR3mefVM5!~~60_12.JPG

sschultewolter:
Das hier geht vom Abstand zwischen beiden Lötreihen nicht.

Was meinst du damit?

Die beiden Anschlussreihen sind alternativ. Du brauchst nur SDA, SCL, VCC und GND.
Diese beiden Signale sind auf auf beiden Seiten rausgeführt, auf der 6-poligen Leiste hast du zusätzlich noch zwei zusätzliche Signale.
Es reicht also, wenn du eine der beiden Seiten kontaktierst.

Und beide Stiftleisten haben das 1/10 Zoll Raster, passen also auf die gängigen Protoboards.

Kann es passieren dass man den DS3231 auch "kaputt" schreibt?

Ich habe ein kleines Modul mit einem DS3231 http://www.ebay.de/itm/DS3231-AT24C32-Chip-hohe-Prazision-Uhr-Modul-IIC-Real-Time-Clock-Memory-Modul-/350902261430?pt=Bauteile&hash=item51b36796b6,
und es hat bei einem ersten Test auch gut funktioniert. Ich konnte die Zeit setzten und wieder auslesen.

Doch nach Verwendung verschiedener Libraries (einige für den DS1307 sowie den DS3232 die ja von den Registern her kompatibel sind) geht nun nichts mehr. Der 32k Ausgang gibt jedoch 32khz aus und am INT/SQW Pin liegt VCC an...

himijendrix:
Doch nach Verwendung verschiedener Libraries (einige für den DS1307 sowie den DS3232 die ja von den Registern her kompatibel sind) geht nun nichts mehr. Der 32k Ausgang gibt jedoch 32khz aus und am INT/SQW Pin liegt VCC an...

Es ist natürlich voll Panne, mit Sketchen dort reinzuschreiben, wo die DS1307 ihren RAM-Speicher hat.

Funktioniert es denn, mit diesem hier geposteten Sketch die Uhr über den seriellen Monitor zu stellen:
http://forum.arduino.cc//index.php?topic=192740.msg1426044#msg1426044
???

Danke für den Sketch, damit wird ja alles ohne Librarys direkt gesendet und muss! ja gehen wenn die hardware stimmt.
Leider tut sich auch hier nichts.
Habe die Verkabelung nochmal mit dem Multimeter direkt an den Chip durchgemessen und das stimmt alles.
Die Batterie habe ich auch herausgenommen ...

Ich denke mal der DS3231 ist defekt, habe mir auch einen neuen bestellt.
Eventuell war die Versorgungsspannung zu hoch (die ist nämlich mit maximal 5,5V angegeben im Datenblatt...)

trotzdem danke,
himi

himijendrix:
Eventuell war die Versorgungsspannung zu hoch (die ist nämlich mit maximal 5,5V angegeben im Datenblatt...)

Wie kann die Versorgungsspannung für die DS3231 zu hoch gewesen sein?
Hast Du das DS3231 Modul nicht am 5V Pin des Arduino angeschlossen gehabt?

Auch die Atmega-Controller selbst können nicht mehr als 5.5V ab und dürfen an ihrem 5V Pin mit nicht mehr als 5.5V versorgt werden!

Falls Du sowohl das DS3231 Modul als auch den Atmega-Controller an einigen Pins mit mehr als 5.5V versorgt haben solltest, könnte es sein, dass nicht nur das DS3231 Modul, sondern auch der Atmega-Controller dabei (teilweise) geschrottet wurde.

Also der DS3231 war definitiv kaputt. Heute ist der neue gekommen und damit geht wieder alles.

Warum die Versorgungsspannung so hoch war habe ich auch noch nicht herausgefunden. Das RTC Modul ist nicht am Arduino angeschlossen sondern in eine Platine integriert ...

Ich glaube es lag an einem Spannungsregler 7805 der zu Beginn der Bastelei die Spannung von 12V auf 5V regeln musste.
Dabei wurde er ziemlich heiß und ich habe später seine Eingangsspannung durch einige Dioden gesenkt.
Kann sein dass er da eingeknickt ist und höhere Spannungen geliefert hat.

Der Atmega 328P kann bis 6V ab und alle anderen eingebauten Chips ebenfalls, weswegen ich das vielleicht nicht gemerkt habe.