de:arduino:rtc

RTC / Zeitmessung

DS1307 RTC modul

Der DS1307 ist eine RTC (Real Time Clock) Modul, das ist mit Arduino inI²C Verbindung steht.

Dieses Modul enthält ein Echtzeit-RTC-IC DS1307 (I²C) und ein 24C32 32K I²C-EEPROM. Zusätzlich wurde ein DS18B20-Temperatursensor in das Modul integriert, der eine 1-Wire Kommunikation erfordert. Das Modul ist mit einem wiederaufladbaren Lithium-Akku LIR2303 ausgestattet, die Ladeschaltung ist im Modul enthalten. Wenn der Temperatursensor ausgeschaltet ist, kann das RTC-Modul mit einer einzigen Ladung bis zu einem Jahr betrieben werden.

Dieses Modul kann zum Beispiel für Datenerfassungs- oder Zeitsteuerungsanwendungen verwendet werden. Da das Modul automatisch arbeitet, bleiben die Zeitdaten auch dann erhalten, wenn der Arduino ausgeschaltet ist. Dies ermöglicht leistungsschwache Systeme, die langfristig ohne Batteriewechsel betrieben werden können.

Das Modul ist bis zu einer Minute pro Monat kann irren sich und seine Genauigkeit ist sehr empfindlich gegenüber Außentemperaturen. Der DS3231 ist eine bessere Wahl für die Genauigkeit, da er einen internen Oszillator verwendet.

Nachdem Sie die Kommunikation hergestellt haben, sollten Sie das Vorhandensein des Moduls mit Arduino I²C-Scanner testen.

PinBeschreibungKommentar
BATBatteriespannung (Knopfzelle) Volt-PegelHier kann die Spannung messen, meistens nicht angeschlossen
GNDGrundGrund
VCC5V+Stromversorgung des Moduls und Laden des Akkus
SDAI²C dataI²C Data-Line
SCLI²C clockI²C Taktsignal
DSDS18B20Temperaturmessausgang, 1-Wire-Busverbindung
SQWquadratische Ausgabenormalerweise nicht angeschlossen, konfigurierbarer 1Hz, 4kHz, 8kHz oder 32kHz Ausgang

DS1307 Verdrahtung

Die lila gestrichelte Linie zeigt den Anschluss des DS18B20-Temperatursensors an.

A DS1307 library hier von GitHub zum Download. Nach der Installation wird das folgende Beispielprogramm ausgeführt.

Es gibt auch Beispiel, wie man das Modul liest oder die Zeit auf GitHub einstellt.

#include <Wire.h>
#include <TimeLib.h>
#include <DS1307RTC.h>
 
void setup() {
  Serial.begin(9600);
  while (!Serial) ; // wait for serial
  delay(200);
  Serial.println("DS1307RTC Read Test");
  Serial.println("-------------------");
}
 
void loop() {
  tmElements_t tm;
 
  if (RTC.read(tm)) {
    Serial.print("Ok, Time = ");
    print2digits(tm.Hour);
    Serial.write(':');
    print2digits(tm.Minute);
    Serial.write(':');
    print2digits(tm.Second);
    Serial.print(", Date (D/M/Y) = ");
    Serial.print(tm.Day);
    Serial.write('/');
    Serial.print(tm.Month);
    Serial.write('/');
    Serial.print(tmYearToCalendar(tm.Year));
    Serial.println();
  } else {
    if (RTC.chipPresent()) {
      Serial.println("The DS1307 is stopped.  Please run the SetTime");
      Serial.println("example to initialize the time and begin running.");
      Serial.println();
    } else {
      Serial.println("DS1307 read error!  Please check the circuitry.");
      Serial.println();
    }
    delay(9000);
  }
  delay(1000);
}
 
void print2digits(int number) {
  if (number >= 0 && number < 10) {
    Serial.write('0');
  }
  Serial.print(number);
}

Siehe die Beschreibung oben (DS1307).

PinBeschreibungKommentar
BATBatteriespannung (Knopfzelle) Volt-PegelHier kann die Spannung messen, meistens nicht angeschlossen
GNDGrundGrund
VCC5V+Stromversorgung des Moduls und Laden des Akkus
SDAI²C dataI²C Data-Line
SCLI²C clockI²C Taktzeit
SQWquadratische Ausgabenormalerweise nicht angeschlossen, konfigurierbarer 1Hz, 4kHz, 8kHz Ausgang
32Khzquadratische Ausgabenormalerweise nicht angeschlossen, 32kHz Ausgang

DS3231 Verdrahtung

A DS3231 library innen, a GitHubról zum Download. Nach der Installation wird das folgende Beispielprogramm ausgeführt.

In der Beispielbibliothek verwenden die folgenden Programme der DS3231:

DS3231 for Pi

  • de/arduino/rtc.txt
  • 2022/04/21 15:00
  • ()