RTC / Időmérés
DS1307
A DS1307 egy RTC (Real Time Clock) modul, mely az Arduinoval I²C kommunikációt folytat.
Ez a modul tartalmaz egy DS1307 I²C valós idejű RTC IC-t és egy 24C32 32K I²C EEPROM tárolót. Sőt, ráadásként egy DS18B20 hőmérséklet szenzort is integráltak a modulra, igaz, ez 1-Wire kommunikációt igényel. A modul LIR2303 újratölthető lítium akkumulátorral van szerelve, és a töltőáramkört a modul tartalmazza. Ha a hőmérséklet-érzékelő ki van kapcsolva, az RTC modul akár egy évig is működhet egy töltéssel.
Ezt a modult olyan például a adatgyűjtésre, vagy időzítési alkalmazásokhoz lehet felhasználni. Mivel a modul önműködően működik, az időadatok akkor is megmaradnak, ha az Arduino ki van kapcsolva, lehetővé téve olyan kis teljesítményű rendszerek kiépítését, amelyek hosszú távon is működhetnek az elemek cseréje nélkül.
A modul nagyjából és maximum 1 percet téved havonta, pontossága meglehetősen érzékeny a külső hőmérsékletre. A DS3231 pontosság szempontjából jobb választás, ott az 1 perces eltérés egy év alatt tud összejönni, mivel belső oszcillátort használ.
A kommunikáció összekötése után érdemes az Arduino I²C scanner programmal tesztelni a modul jelenlétét.
DS1307 portok
pin | leírás | megjegyzés |
---|---|---|
BAT | az akkumulátor (gombelem) feszülségszintje | itt mérhető a feszültségszint, többnyire nincs bekötve |
GND | grund | grund |
VCC | 5V+ táp | a modul tápellátása és az akkumulátor töltése |
SDA | I²C data | I²C adatvonal |
SCL | I²C clock | I²C órajel |
DS | DS18B20 | Hőmérsékletmérés kimenet, 1-wire busz csatlakozó |
SQ | négyszögjel kimenet | általában nincs bekötve, konfigurálható 1Hz, 4kHz, 8kHz vagy 32kHz kimenet |
DS1307 bekötése
A lila szaggatott vonal a DS18B20 hőmérséklet-szenzor bekötését jelzi. Ez 1-wire kommunikációt igényel, melyet itt az Arduino 2. portján valósítottak meg.
Github
DS1307 példaprogram
A DS1307 könyvtárat innen, a GitHub-ról lehet letölteni. Ennek telepítése után az alábbi példaprogram is futtathatóvá válik.
A modul kiolvasásához és az idő beállításához is található példa ugyanitt, a GitHub-on. A kiolvasóprogramot ide másolom:
#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); }
Források
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
A DS3231 egy RTC (Real Time Clock) modul, mely az Arduinoval I²C kommunikációt folytat.
Ez a modul tartalmaz egy DS3231 I²C valós idejű RTC IC-t és egy 24C32 32K I²C EEPROM tárolót. A modul LIR2303 újratölthető lítium akkumulátorral van szerelve, és a töltőáramkört a modul tartalmazza. Ha a hőmérséklet-érzékelő ki van kapcsolva, az RTC modul akár egy évig is működhet egy töltéssel.
Ezt a modult olyan például a adatgyűjtésre, vagy időzítési alkalmazásokhoz lehet felhasználni. Mivel a modul önműködően működik, az időadatok akkor is megmaradnak, ha az Arduino ki van kapcsolva, lehetővé téve olyan kis teljesítményű rendszerek kiépítését, amelyek hosszú távon is működhetnek az elemek cseréje nélkül. A modulon egy riasztásfunkció is elérhető.
A korábbi, DS1307 modul nagyjából és maximum 1 percet téved havonta, pontossága meglehetősen érzékeny a külső hőmérsékletre. A DS3231 pontosság szempontjából jobb választás, itt az 1 perces eltérés egy év alatt tud összejönni, mivel belső oszcillátort használ.
A kommunikáció összekötése után érdemes az Arduino I²C scanner programmal tesztelni a modul jelenlétét.
DS3231 portok
pin | leírás | megjegyzés |
---|---|---|
BAT | az akkumulátor (gombelem) feszülségszintje | itt mérhető a feszültségszint, többnyire nincs bekötve |
GND | grund | grund |
VCC | 5V+ táp | a modul tápellátása és az akkumulátor töltése |
SDA | I²C data | I²C adatvonal |
SCL | I²C clock | I²C órajel |
SQW | négyszögjel kimenet | általában nincs bekötve, konfigurálható 1Hz, 1.024kHz, 4.096kHz, 8.192kHz kimenet |
32Khz | négyszögjel kimenet | általában nincs bekötve, 32kHz kimenet |
DS3231 bekötése
DS3231 példaprogram
A DS3231 könyvtárat innen, a GitHubról lehet letölteni. Ennek telepítése után az alábbi példaprogram is futtathatóvá válik.
A példatárban az alábbi programok használják a DS3231-t:
DS3231 for Pi
Az, hogy ez a modul a Pi-hez készült, nem kell, hogy bárkit is elijesszen, ugyanis a modul tápjának jó a 3,3V és az 5V is, azaz simán működik Arduino-val is (kipróbáltam). Egyébként minden paraméterében és beállításában megegyezik a fenti DS3231-gyel.