DS3231 precision rtc breakout

Hallo zusammen

Ich habe mir die DS3221 Realtimeclock zugelegt. Nachdem ich das Modul an den Arduino angeschlossen und das Sample-Programm gestartet habe, Erhalte ich immer die gleiche Antwort:
2165/165/165 (Wednesday) 165:165:85
since midnight 1/1/1970 = 1553039185s = 17974d
now + 7d + 30s: 2019/3/27 12:16:31

Diese Antwort kommt mit oder ohne Stützbatterie. Kann mir da jemand weiter helfen?

Welcher Arduino, wie angeschlossen und zeige Deinen Sketch (bitte in Codetags </> oben links).

Gruß Tommy

Es ist ein Arduino Uno

DS3231 -> Arduino
Vin -> 5V
GND -> GND
SCL -> SCL
SDA -> SDA

Der Code ist aus dem beiliegenden Beispiel

#include <Wire.h>
#include "RTClib.h"

RTC_DS3231 rtc;

char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

void setup () {
  Serial.begin(9600);

  if (! rtc.begin()) {
    Serial.println("Couldn't find RTC");
    while (1);
  }

  if (rtc.lostPower()) {
    Serial.println("RTC lost power, lets set the time!");
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  }
}

void loop () {
    DateTime now = rtc.now();
    
    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(" (");
    Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
    Serial.print(") ");
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();
    
    Serial.print(" since midnight 1/1/1970 = ");
    Serial.print(now.unixtime());
    Serial.print("s = ");
    Serial.print(now.unixtime() / 86400L);
    Serial.println("d");
    
    // calculate a date which is 7 days and 30 seconds into the future
    DateTime future (now + TimeSpan(7,12,30,6));
    
    Serial.print(" now + 7d + 30s: ");
    Serial.print(future.year(), DEC);
    Serial.print('/');
    Serial.print(future.month(), DEC);
    Serial.print('/');
    Serial.print(future.day(), DEC);
    Serial.print(' ');
    Serial.print(future.hour(), DEC);
    Serial.print(':');
    Serial.print(future.minute(), DEC);
    Serial.print(':');
    Serial.print(future.second(), DEC);
    Serial.println();
    
    Serial.println();
    delay(3000);
}

Angeschlossen wie auf dem Bild (Strom fehlt auf dem Bild)

components_wiring.jpg

Also "ds3231 2165" bringt einen Sucheintrag bei Google auf die Seite arduino.cc das der Batteriehalter einen kurzschluss haben könnte ode rirgendwas da rundherum.

Ich habe einige von den Teilen (als Modul und IC)und wenn die Verdrahtung richtig ist dann muss das Example so oder so laufen wenn man schon weiß wie man Sketche kompiliert und hochlädt. Mir ist dieser Fehler nicht bekannt.

165 Stunden (und so weiter) ist im Allgemeinen der Wert, wenn keine RTC angeschlossen ist.
Das deutet also auf Kontaktprobleme hin oder eine defekte RTC.

eipalittau:
Hallo zusammen

Ich habe mir die DS3221 Realtimeclock zugelegt. Nachdem ich das Modul an den Arduino angeschlossen und das Sample-Programm gestartet habe, Erhalte ich immer die gleiche Antwort:
2165/165/165 (Wednesday) 165:165:85
since midnight 1/1/1970 = 1553039185s = 17974d
now + 7d + 30s: 2019/3/27 12:16:31

Diese Antwort kommt mit oder ohne Stützbatterie. Kann mir da jemand weiter helfen?

Kopiere Dir mal diese Funktion in Deinen Sketch und rufe sie in setup() auf:

boolean RTCinit()
{
  Wire.begin();
  delay(10); // small delay to stabilize I2C bus voltage
  Wire.beginTransmission(RTC_I2C_ADDRESS);
  Wire.write(0);
  return (Wire.endTransmission()==0);
}

Wenn die Uhr richtig angeschlossen ist, sollte ein true zurückgeliefert werden.

Was bekommst Du: true oder false?

Hinweis:
Damit die Funktion kompiliert werden kann, muß im Sketch die Wire-Library inkludiert und die RTC-Adresse des RTC-Moduls definiert werden

#include <Wire.h>
#define RTC_I2C_ADDRESS 0x68 // // I2C adress of DS1307 and DS3231 RTC

@Schuppeste: Woher hast Du die Nummer "2165"?
@jurs: Wire.endTransmission() <- Dieser Befehl beendet die Ausführung...

eipalittau:
@Schuppeste: Woher hast Du die Nummer "2165"?
@jurs: Wire.endTransmission() <- Dieser Befehl beendet die Ausführung...

Ja, natürlich beendet der Befehl die Ausführung.
Und liefert dabei einem Rückgabewert zurück, der darüber Auskunft gibt, ob die Ausführung fehlerfrei abgeschlossen wurde oder mit einem Fehlerstatus endete.

Mit der geposteten Funktion testest Du im wesentlichen, ob das RTC-Modul auf Befehle über den I2C-Bus richtig reagiert:

  • false ==> das Gerät ist falsch yangeschlossen oder der I2C-Bus funktioniert aus anderen Gründen nicht
    ttrue==> Alles in Ordnung, das Gerät reagiert auf Kommandos über den I2C-Bus

eipalittau:
@Schuppeste: Woher hast Du die Nummer "2165"?

DAHER-> 2165/165/165 (Wednesday) 165:165:85

Bist nicht der erste der das hat, anscheinend leider nur der erste Deutsche :wink:

Um in Google einen höchstmöglichen Treffer zu finden habe ich nur nach 2165 gegoogelt und das ging auch ins Schwarze..

Kannst Du mit 2 Wörtern nicht selbst googeln?
arduino.cc/forum/I2C DS1307 RTC Clock weird problem, aka "2165-165-165..." output

EDIT: Ich weiß, da sist der 1307, wenn man sich den Thread nur mal durchliest melden sich auch MEnschen mit DS3231 zu Wort, dabei haben die beiden fast die gleichen Register/Librarys.

EDIT: Second EDIT: Welches Modul hast Du überhaupt, es gibt zig verschiedene?

@jurs: Ich meine: Absturz. Kein Rückgabewert, keine weitere Zeile die ausgeführt wird.

@Schuppeste: Overview | Adafruit DS3231 Precision RTC Breakout | Adafruit Learning System
Ich hoffe das beantwortet dein 2. Edit. Werde das erste noch googlen. Beim den anderen Threads gehts um die Batterie, welche eine falsche Spannung aufweist. Dies ist nicht mein Problem.

Ich kenne deine verwendete Library nicht, daher mein Tipp:
Setze die DS3232RTC.h ein, die funktioniert auch mit deiner RTC und bei mir seit langer Zeit fehlerfrei.
Mit den beigefügten Beispielen kommst sicher schnell zum Ziel.

Danke, werde ich heute Abend runterladen und einbinden.

eipalittau:
@jurs: Ich meine: Absturz. Kein Rückgabewert, keine weitere Zeile die ausgeführt wird.

Das ist seltsam!

Teste mal den "I2C-Scanner" Sketch"

Funktioniet der I2C-Scanner und findet das RTC-Modul an seiner I2C-Adresse?

Ich hatte das gleiche Problem auch vor kurzen.
Eine Woche alles mögliche gesucht, getestet und und und..
Die Uhr lies sich auch nicht stellen, sie fing immer bei 00:00:00 an zu laufen,
nach Reset des Arduino wieder 165:165:85

Lösung: das blöde Ding war einfach nur... kaputt
Mit einer neuen lief alles wieder auf Anhieb.

Vielen Danke für die hilfreichen Antworten. Ich bin in den Ferien und erhohle mich von meiner RTC-Odysee. Nach meiner Rückkehr werde ich alles ausprobieren und mich wieder melden. Bis bald.