RTC / Zeitmessung
DS1307
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.
DS1307 Pins
Pin | Beschreibung | Kommentar |
---|---|---|
BAT | Batteriespannung (Knopfzelle) Volt-Pegel | Hier kann die Spannung messen, meistens nicht angeschlossen |
GND | Grund | Grund |
VCC | 5V+ | Stromversorgung des Moduls und Laden des Akkus |
SDA | I²C data | I²C Data-Line |
SCL | I²C clock | I²C Taktsignal |
DS | DS18B20 | Temperaturmessausgang, 1-Wire-Busverbindung |
SQW | quadratische Ausgabe | normalerweise nicht angeschlossen, konfigurierbarer 1Hz, 4kHz, 8kHz oder 32kHz Ausgang |
DS1307 Verdrahtung
Github
DS1307 példaprogram
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); }
Quellen
http://www.hobbyist.co.nz/?q=real_time_clock
http://www.instructables.com/id/Arduino-Real-Time-Clock-DS1307/
https://github.com/PaulStoffregen/DS1307RTC
DS3231
DS3231 Pins
Pin | Beschreibung | Kommentar |
---|---|---|
BAT | Batteriespannung (Knopfzelle) Volt-Pegel | Hier kann die Spannung messen, meistens nicht angeschlossen |
GND | Grund | Grund |
VCC | 5V+ | Stromversorgung des Moduls und Laden des Akkus |
SDA | I²C data | I²C Data-Line |
SCL | I²C clock | I²C Taktzeit |
SQW | quadratische Ausgabe | normalerweise nicht angeschlossen, konfigurierbarer 1Hz, 4kHz, 8kHz Ausgang |
32Khz | quadratische Ausgabe | normalerweise nicht angeschlossen, 32kHz Ausgang |
DS3231 Verdrahtung
DS3231 Beispiel-Programm
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: