hu:arduino:rtc

RTC / Időmérés

DS1307 RTC modul

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.

pinleírásmegjegyzés
BATaz akkumulátor (gombelem) feszülségszintjeitt mérhető a feszültségszint, többnyire nincs bekötve
GNDgrundgrund
VCC5V+ tápa modul tápellátása és az akkumulátor töltése
SDAI²C dataI²C adatvonal
SCLI²C clockI²C órajel
DSDS18B20Hőmérsékletmérés kimenet, 1-wire busz csatlakozó
SQné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.

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);
}

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.

pinleírásmegjegyzés
BATaz akkumulátor (gombelem) feszülségszintjeitt mérhető a feszültségszint, többnyire nincs bekötve
GNDgrundgrund
VCC5V+ tápa modul tápellátása és az akkumulátor töltése
SDAI²C dataI²C adatvonal
SCLI²C clockI²C órajel
SQWnégyszögjel kimenetáltalában nincs bekötve, konfigurálható 1Hz, 1.024kHz, 4.096kHz, 8.192kHz kimenet
32Khznégyszögjel kimenetáltalában nincs bekötve, 32kHz kimenet

DS3231 bekötése

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:

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.

DS3231 for Pi

  • hu/arduino/rtc.txt
  • 2022/04/21 15:02
  • ()