Skip to content
2025.11.07.
  • F
  • X
  • LinkedIn
  • YouTube
  • Instagram
  • GitHub
TavIR

TavIR

Mikrokontroller világ

  • TavIR Tudástár
  • TavIR WebShop
  • TavIR Fórum
  • Hírek
  • Könyvek
    • Egyszerű elektronika – Kezdőlap
    • ESP8266/ESP32
    • Tippek
      • Tippek-trükkök (AVR)
      • Tippek-trükkök (ESP8266/ESP32)
  • +Gyorstippek
  • +Mélyvíz
  • +Témakereső
  • Kapcsolat
  • Főoldal
  • Cikk
  • A DS1307 órachip (RTC) használata
  • Cikk
  • Gyorstippek
  • Tippek-trükkök (AVR)

A DS1307 órachip (RTC) használata

Robert 2024.10.14.
Arduino és RTC - DS1307

A valós idejű órák (RTC) világa nem csak az idő pontos mérését jelenti, hanem az adatkezelést és a rendszer stabilitását is szolgálja. Különösen olyan feladatoknál, ahol a tápellátás megszűnésekor is szükséges az adatmegőrzés. A DS1307 chip egy jól ismert és kedvelt RTC áramkör, amely a hobbi- és profi elektronikai fejlesztések nélkülözhetetlen eszköze. Ez a cikk elkalauzol a DS1307 belső működésének rejtelmeibe, részletesen bemutatva az I2C interfészt, az akkumulátoros tápellátást, valamint a négyszögjel-kimenet programozhatóságát. A trükkös és komplex nyári-téli időszámítási funkció megvalósításával és az 56 byte RAM-mal a DS1307 ideális választás számos projekt számára, ahol az időalapú események megbízható követése és hosszú távú stabilitás szükséges.

Készülj fel egy átfogó és részletes leírásra, amely végigvezet a DS1307 minden trükkjén, és bemutatja, hogyan lehet teljes mértékben kihasználni a benne rejlő lehetőségeket! Egy családba tartozik a →DS1302 és a →DS3231 órákkal: kicsit hasonlítanak, kicsit mások…. Itt is van néhány belőlük még: →RTC cikkek a TavIR Tudástárban.

Tartalomjegyzék

Toggle
  • A DS1307 alapvető tulajdonságai és műszaki paraméterei
    • Technikai paraméterek
    • Speciális funkciók
  • Szükséges áramkörök és kiegészítők
  • Minták és megvalósítások
    • A könyvtárak és összehasonlításuk
    • Miért modul?
    • I2C Interfész
    • A teljes eszköz – alkatrészenként
    • Akkutöltés
  • A gyakorlati alkalmazás
    • I2C busz bekötése és az ellenállások
    • Dátum és idő beállítása a DS1307-en
    • A dátum és idő lekérdezése
    • A programozható négyszögjel-kimenet
    • Memóriafunkciók és az NV RAM Kezelése
  • DS1307 alkalmazási területei
    • Hőmérsékleti hatás

A DS1307 alapvető tulajdonságai és műszaki paraméterei

A DS1307 egy minimál-funkcionalitású valós idejű óra (RTC) chip, amelynek célja az idő és dátum pontos nyomon követése különféle rendszerekben. A chipet 5V tápfeszültség táplálja – de automatikusan átkapcsol az akkumulátoros működésre, ha az elsődleges tápfeszültség megszakad. Ezt az áramköri megoldást gyakran alkalmazzák olyan rendszerekben, amelyeknek pontos időzítésre van szükségük még áramkimaradás esetén is. Extraként a DS1307-ben található 56 byte nem felejtő (NV) RAM memória, amely lehetővé teszi az adatok folyamatos tárolását.

DS1307 SOIC-8 tokozású RTC áramkör
DS1307 SOIC-8 tokozású RTC áramkör

Technikai paraméterek

  • Tápfeszültség és működés
    • A DS1307 5 V tápfeszültségen működik, de automatikusan átkapcsol egy külső akkumulátorra, amikor a fő áramforrás megszűnik. Ekkor a chip kevesebb, mint 500 nA áramot fogyaszt, hogy fenntartsa az időmérést. Fontos! Az 5V működés esetén, ha a modult 3.3V-ról használjuk, akkor bizonytalanság lép(het) fel – például ESP8266/ESP32 vagy akár 3.3V-os Arduino Pro mini esetén!
    • A chip működési hőmérséklete -40 °C és +85 °C között van, ami ipari környezetben is alkalmazhatóvá teszi
  • Óra és dátum funkciók
    • A chip 24 és 12 órás formátumban képes tárolni az időt, az AM/PM jelzés mellett.
    • Az év, hónap, nap, hét napja, óra, perc és másodperc adatai tárolhatók. A szökőéveket automatikusan kezeli 2100-ig, és a hónapokhoz igazítja a napok számát.
    • A hét napja is tárolásra kerül.
  • I2C kommunikáció
    • Az I2C interfész kétvezetékes kommunikációt biztosít, amely lehetővé teszi az óra beállítását és adatainak egyszerű lekérdezését. Az SDA és SCL csatlakozókon keresztül történik az teljes órachip adatátvitele, beállítása, konfigurálása és adatlekérdezése.

Speciális funkciók

  • Automatikus átkapcsolás akkumulátoros üzemre
    • A DS1307 automatikusan átvált a beépített akkumulátoros táplálásra áramkimaradás esetén, így a pontos idő és dátum megőrződik. Ehhez a VBAT lábhoz egy CR2032 típusú akkumulátor javasolt.
  • Programozható négyszögjel-kimenet
    • Az SQW/OUT kimeneti pin 1 Hz, 4,096 kHz, 8,192 kHz vagy 32,768 kHz frekvenciájú négyszögjelet generál. Ez az órajelet is biztosíthatja más rendszeralkalmazások számára.
  • Akkumulátorral biztosított RAM
    • A DS1307 órachip beépített 56 byte nemfelejtő (NV) RAM lehetőséget biztosít az adatok tárolására – amelyhez a külső eszközök hozzáférhetnek az rendszerprogramon keresztül. Az NV RAM adattárolása a RTC tápellátásától függ – azaz ha a gombelem lemerül az adatok elvesznek!

Szükséges áramkörök és kiegészítők

Arduino UNO alappanel→ Arduino Uno alappanel
DS1307 modul→ DS1307 óramodul

 

Minták és megvalósítások

Az Arduino világában, ha valaki a DS1307 valós idejű óra chip kezelésébe vág bele, akkor nagyon nagy könnyebbség a külső eljáráskönyvtárak használata, mint például az RTClib és a DS1307RTC. Ezek a könyvtárak kész megoldásokat kínálnak az idő és dátum beállítására, lekérdezésére, és az adatátvitelre az I2C buszon keresztül. Az RTClib a kifejezetten sokoldalú API-jával segíti a DS1307 teljes körű kihasználását: támogatja a négyszögjel-kimenetet, a RAM olvasást-írást és a szinkronizálást is, így igazi fegyvertárat ad minden mikrovezérlő-rajongó kezébe.

A DS1307RTC könyvtár pedig egyszerűsített megoldást nyújt, főként akkor, ha csak az alapvető időkezelési funkciókra van szükségünk. Különösen előnyös, ha a Time könyvtárral kombináljuk, hiszen így a nyári-téli időszámítás kérdése is könnyen kezelhető. Röviden: ezek a könyvtárak leveszik a terhet a vállunkról, hiszen nem kell alacsony szinten bajlódnunk az időzítéssel, egyszerűen és gyorsan használhatók – ideális választás mindenkinek, aki a lehető legtöbbet szeretné kihozni az RTC chipjéből!

A könyvtárak és összehasonlításuk

Az alábbi táblázatban a DS1307 RTC chiphez leggyakrabban használt két eljáráskönyvtár, az RTClib és a DS1307RTC funkcióit láthatjuk. Az eljáráskönyvtárak némileg eltérőek – a kevesebb funkcionalitás is sok esetben elegendő. Ez például a szűkös Flash memória gazdálkodást segíti.

FunkciókRTClibDS1307RTC
Idő és dátum olvasásaIgenIgen
Négyzetes hullám kimenetIgen (1 Hz, 4 kHz, 8 kHz, 32 kHz a DS1307 esetén)Nem – regiszter szinten kezelendő.
RAM írás és olvasásIgen, 56 byte RAM a DS1307 eseténNem támogatott
Szinkronizálás és idő formázásIgen, tartalmaz szinkronizálási lehetőségeketIgen, de a Time könyvtárral való együttműködés szükséges
Szökőév kezelésIgen, automatikusIgen, automatikus
Nyári/téli időszámítás támogatásNem automatikus, külső logika szükségesNem automatikus, de könnyebben kezelhető a Time könyvtárral
Támogatott eszközökDS1307, DS3231, DS3232, PCF8523, PCF8563DS1307, DS3231

Letöltési helyek

  • RTClib: GitHub - RTClib – Alkalmas több féle RTC chip kezelésére, széles körű kompatibilitással.
  • DS1307RTC: GitHub - DS1307RTC – Integrálva a Time könyvtárral, főként egyszerűbb, alapvető időkezelési műveletekre.

Miért modul?

Az RTC moduloknál, mint a DS1307, a dugaszolós panelek helyett gyakran modulokat használunk, különösen ha megbízható és stabil megoldásra törekszünk. A modulok előre gyártott, tesztelt és stabil csatlakozásúak, amelyek a kezdők számára is könnyen kezelhetők, hiszen a forrasztás, bonyolult kábelezés nélkül is gyorsan összeszerelhetők. Az I2C protokollon keresztül, egyetlen kétvezetékes rendszerrel (SDA, SCL) biztosítják a kommunikációt, így a többi alkatrészhez kevesebb vezeték szükséges. Ez letisztultabb, átláthatóbb áramkört eredményez, ami hibakeresés során is előnyt jelent. A moduláris felépítés minimalizálja a kontakthibákat, így a kezdők is nyugodtabban dolgozhatnak vele anélkül, hogy attól kellene tartaniuk, hogy egy laza kábel megszakítja a kapcsolatot.

DS1307 modul : DS1307 RTC és 24LC32 EEPROM
DS1307 modul : DS1307 RTC és 24LC32 EEPROM

A dugaszolós panelek ugyan szabadabb tervezést tesznek lehetővé, de a DS1307 esetén több hibalehetőséget is rejtenek magukban, különösen az I2C vonalakon, ahol már egy kis eltérés is adatvesztést okozhat. A félrekötések, laza csatlakozások, vagy rövidzárlatok elkerülése különösen fontos a valós idejű órák esetében, hiszen ezek az időzítések pontosságát és megbízhatóságát befolyásolhatják. A modul használata éppen ezért kifejezetten hasznos: nincs szükség alacsony szintű huzalozási munkákra, ami csökkenti a hibázás lehetőségét, így a kezdők nagyobb magabiztossággal és sikerrel dolgozhatnak az RTC alapú időzítési projektekben.

I2C Interfész

A DS1307 és a mikrovezérlő közötti kommunikációhoz az I2C protokollt használjuk, amely egy kétvezetékes adatátviteli rendszer – kifejezetten kis helyigényű és egyszerű integrációt kínál. Az SDA (adatvonal) és az SCL (órajelvonal) révén a chip mindössze két I/O vonalat igényel, így tökéletes választás akkor, ha minimalizálni szeretnénk a csatlakozások számát. Az I2C előnye, hogy egy címzési mechanizmus segítségével több eszköz is kapcsolható ugyanarra a buszra, tehát egyetlen mikrovezérlővel egyszerre kezelhetjük a DS1307 óra mellett például más szenzorokat vagy perifériákat is. Ez különösen hasznos lehet összetett, több komponensből álló rendszerek esetén, mivel nem kell külön csatlakozást biztosítani minden eszköznek.

DS1307 modul és az Uno lap összekötése
DS1307 modul és az Uno lap összekötése IIC buszon keresztül

A kommunikáció sebessége 100 kHz, amely elég gyors ahhoz, hogy a valós idejű óra adatait pontosan és hatékonyan tudjuk lekérdezni és beállítani. Az adatátvitel stabilitásához mindössze két felhúzóellenállás szükséges az SDA és SCL vonalakra, ami tovább egyszerűsíti a hardver kialakítását. Így az I2C protokoll használatával nemcsak helytakarékos, de költséghatékony megoldást is kapunk. Ez a rugalmasság teszi ideálissá a DS1307 modult mind a hobbi projektek, mind pedig a professzionális alkalmazások számára – ahol az egyszerű, de megbízható időszinkronizáció kiemelt fontosságú.

A teljes eszköz – alkatrészenként

A teljes modul viszonylag egyszerűen felépíthető. Az adatlapban a mintakapcsolás megtalálható:

DS1307 alkalmazása - schematic
DS1307 alkalmazása – schematic

A felépítés viszonylag egyszerű. A SQW/OUT egy felhúzó-ellenállást igényel – ha a kimenetet/funkciót használjuk.
Az I2C busz felhúzó-ellenállása a standard : busz végén 4.7 kOhm javasolt. Az I2C busz méretezése, és a buszkapacitás / távolság / felhúzó-ellenállás hármasa során a standard elveket kell figyelembe venni – a DS1307 áramkör a 100kHz-s standard I2C buszt használja. Az ettől eltérő 10 kHz vagy 400 kHz vagy nagyobb sebességű buszokkal nem kommunikál!

Akkutöltés

A DS1307 RTC nem rendelkezik az órachipbe beépített töltőáramkörrel – azonban a kész modulokon ezt kiegészítő elektronikával pótolták. Ez teszi lehetővé a backup akkumulátor töltését, amikor a modul külső tápfeszültséget kap. Ez a töltési funkció általában egy dióda és egy ellenállás kombinációján alapul, ami egyszerű, de hatékony módon biztosítja az akkumulátor számára szükséges töltést. A dióda és az ellenállás szerepe az, hogy megfelelő töltőáramot biztosítsanak, valamint védelmet nyújtsanak a fordított polaritás ellen.

DS1307 modul - és az elemtöltő áramköre
DS1307 modul – és az elemtöltő áramköre

A D1 dióda funkciója ebben az áramkörben elsősorban az, hogy megakadályozza a visszaáramlást az akkumulátorból a tápfeszültség felé. Így, ha a külső tápfeszültség megszűnik, az akkumulátor továbbra is képes a DS1307 áramellátását biztosítani anélkül, hogy feszültséget engedne vissza az áramkörbe. A dióda egyirányú vezetési képessége teszi lehetővé, hogy a töltés csak a kívánt irányban folyjon, megvédve az áramkört és az akkumulátort a káros hatásoktól. Időnként szilícium diódák helyett germániumot vagy schottky-t használnak, amelyek alacsonyabb feszültségesést biztosítanak, így növelik a hatékonyságot.

Az R5 ellenállás szerepe az áramkörben az áramerősség szabályozása, így biztosítva, hogy a töltés lassan és biztonságosan történjen meg. Mivel a DS1307 modul által használt gombelemek csak kis áramerősséget képesek elviselni, az ellenállás nagyságának megválasztása kulcsfontosságú. Az ellenállás a töltőáramot korlátozza, hogy az akkumulátor ne sérüljön és ne melegedjen túl, ami hosszabb élettartamot biztosít. Az ellenállás értékét általában a rendszer teljesítményfelvételétől és a használt elem specifikációitól függően választják meg.

A modulokon az R6 és R4 ellenállások a töltés/túltöltéskontrollt adják – ugyanakkor a feszültségosztóként az elem mélykisülését illetve „hirtelen” kimerülését hivatottak elnyújtani. A hasznosságukról számos fórumban vita megy, hogy milyen értékűek legyenek illetve kellenek-e. A vélemények megoszlanak. A bekötésük hosszú kikapcsolás esetén az elem járulékos merülését okozzák. Ugyanakkor – ha tölthető LiPo akku van benn (pl. Li2032) – a túltöltésvédelmet is szolgálja. Ha egyszerű CR2032 (nem tölthető elem) van benn, akkor az áramkör csepptöltésként is viselkedik – ami a működési élettartamot növelheti.

A DS1307 RTC modulok töltésvezérlő áramkörei tehát egyszerű, mégis hatékony módon gondoskodnak arról, hogy a backup akkumulátor a lehető leghosszabb ideig üzemképes maradjon, és ne merüljön le hirtelen. Ez a megoldás különösen előnyös a folyamatos időmérés szempontjából, mivel áramkimaradás esetén is biztosított az óra működése. A diódás-ellenállásos megoldás egyszerűsége ellenére kiváló védelmet nyújt, és megfelelő töltőáramot biztosít a hosszú távú megbízhatóság érdekében.

A gyári dokumentációban semmiféle akkutöltési áramkör nem szerepel, egyszerűen egy CR2032 elem van elhelyezve….

A gyakorlati alkalmazás

Most következnek azok a gyakorlati példák, amelyek segítségével Arduino-val programozzuk a DS1307 valós idejű óra modult, hogy valódi, időalapú projektekbe építhessük be. A DS1307 kiválóan használható olyan feladatokhoz, ahol folyamatos és pontos időmérésre van szükség, még akkor is, ha az áramellátás időnként megszakad. Az Arduino-hoz könnyedén csatlakoztatható I2C interfészen keresztül, így egyszerűen olvashatjuk ki és állíthatjuk be az időt. A következő gyakorlati példák és kódrészletek bemutatják, hogyan használhatjuk a DS1307 modult különböző projektekben, legyen szó időzített események vezérléséről, adatgyűjtés időbélyegzéséről vagy akár naptári funkciók megvalósításáról.

A mintákban az RTCLib eljárást fogjuk használni – a teljes körű lehetőségek ezen át mutathatóak be a legkönnyebben.

I2C busz bekötése és az ellenállások

Az SDA (adat) és SCL (órajel) lábak a DS1307 I2C interfészének részei. Ezeket a lábakat egy ellenállás segítségével húzzuk fel a tápfeszültségre, amely biztosítja a buszon lévő vonalak stabilitását és megakadályozza a zajos jeleket. Javasolt, hogy mindkét vezetéken egy-egy 4,7 kΩ-os ellenállás legyen elhelyezve, amely tipikusan elegendő a megfelelő működéshez a legtöbb alkalmazásban.

1
2
3
4
5
6
7
8
9
10
#include <Wire.h>
#include <RTClib.h>
 
RTC_DS1307 rtc;
 
void setup() {
  Wire.begin();
  rtc.begin();
  // További beállítási paraméterek itt
}

A fenti kódban látható, hogy a Wire.begin() parancs inicializálja az I2C interfészt, amely elengedhetetlen az adatkapcsolat létrehozásához. Az rtc.begin() az órachip alapinicializálását és ellenőrzését hajtja végre.

Tipp és haladó szint

Ha a programot nem csak elindítjuk és bízunk benne, hanem részben debug, részben hibakezeléssel is ellátjuk.

A teljes körű hibakezeléshez figyelembe kell venni az rtc.begin() függvény visszatérési értékét. Ezzel biztosítható, hogy az I2C busz inicializálása és az RTC modul elérése megfelelően megtörtént, mielőtt további műveleteket végeznénk. Az alábbiakban egy megoldás, hogy hogyan valósítható meg a hibakezelés:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <Wire.h>
#include <RTClib.h>
 
RTC_DS1307 rtc;
 
void setup() {
  Serial.begin(9600); // Soros monitor indítása hibajelzésekhez
  Wire.begin();       //IIC vonal inicializálás
 
  if (!rtc.begin()) { // rtc.begin() hibakezelése
    Serial.println("Hiba: Az RTC modul nem érhető el. Ellenőrizze a bekötést és a tápellátást!");
    while (1);        // Program leáll, ha az RTC modul nem található
  } else {
    Serial.println("RTC modul inicializálása sikeres.");
  }
                      // További beállítási paraméterek itt
}
void loop() {
                      // További programrészek
}

Hibakezelés

  • rtc.begin() ellenőrzése

Funkciója: Az rtc.begin() inicializálja az RTC modult a DS1307 RTClib segítségével. Ha false értéket ad vissza, az azt jelenti, hogy az RTC modul nem található vagy hibás.
Hibakezelés: Ha rtc.begin() hibát jelez, figyelmeztetést ad, és leállítja a programot egy while (1); ciklussal. Ez megakadályozza, hogy a program további műveleteket hajtson végre, amelyek hibás adatokat eredményezhetnek.

Tipp: A Wire.begin() függvénynek nincs visszatérési értéke. A Wire.begin() kizárólag az I2C busz indítását végzi, és nem szolgáltat információt arról, hogy a művelet sikeres volt-e. Az I2C eszközökkel kapcsolatos kommunikációs hibák elkerülése érdekében az endTransmission() függvény válaszait kell használni, amely lehetőséget ad a kommunikáció állapotának figyelésére és hibakezelésre​

Dátum és idő beállítása a DS1307-en

Az idő és dátum beállítása az RTC-ben kulcsfontosságú lépés a pontos időkezeléshez. Az óra beállítására külön parancsok és kódrészletek állnak rendelkezésre, amelyek lehetővé teszik a dátum és idő egyszerű konfigurálását, valamint az adatlekérdezést. Külső óraszinkron hiányában az I2C buszon a programból kell a beállítást (alaphelyzetet) elvégezni. A beállításához az rtc.adjust() függvényt használjuk, amely paraméterként egy DateTime objektumot vár, amely tartalmazza a kívánt év, hónap, nap, óra, perc és másodperc értékeket. Az alábbi példa bemutatja, hogyan lehet manuálisan beállítani egy adott időt:

1
2
3
4
void setTime() {
  // Például: 2024. március 15., 10:30:00
  rtc.adjust(DateTime(2024, 3, 15, 10, 30, 0)); // Állítsa be a kívánt időt
}

A setTime() függvényt egyszer kell meghívni a setup() függvényen belül, vagy külön megadott feltételek mellett a loop()-ban, hogy az idő beállítása megtörténjen. Ezzel a módszerrel könnyedén beállítható az idő a DS1307 RTC modulon, miközben az RTClib könyvtár biztosítja a megbízható kommunikációt és időkezelést az Arduino lap és a modul között.

A dátum és idő lekérdezése

Az óra és dátum lekérdezése szintén egyszerű – az RTC chip visszaadja a jelenlegi dátumot és időt. Az idő kiolvasásához a rtc.now() függvényt használjuk, amely visszaad egy DateTime objektumot, ebből pedig könnyen lekérdezhetők az év, hónap, nap, óra, perc és másodperc adatok. Az alábbi kódrészlet megjeleníti az aktuális időt a soros monitoron:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <Wire.h>
#include <RTClib.h>
 
RTC_DS1307 rtc;
 
void setup() {
  Serial.begin(9600);
  Wire.begin();
  
  if (!rtc.begin()) {
    Serial.println("Hiba: Az RTC modul nem elérhető.");
    while (1);
  }
 
  if (!rtc.isrunning()) {
    Serial.println("Az RTC nem működik. Alapértelmezett idő beállítása.");
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // Beállítja az aktuális időt
  }
}
 
void loop() {
  DateTime now = rtc.now();                         // Az aktuális idő lekérdezése
  Serial.print("Idő: ");                            // Az idő kiírása a soros monitorra
  Serial.print(now.year(), DEC);
  Serial.print('/');
  Serial.print(now.month(), DEC);
  Serial.print('/');
  Serial.print(now.day(), DEC);
  Serial.print(" ");
  Serial.print(now.hour(), DEC);
  Serial.print(':');
  Serial.print(now.minute(), DEC);
  Serial.print(':');
  Serial.print(now.second(), DEC);
  Serial.println();
 
  delay(1000); // 1 másodperces frissítés
}

Ez a kódrészlet segít abban, hogy az aktuális dátum és idő a soros monitoron megjelenjen, ami hasznos a fejlesztési és tesztelési fázis során. Az RTC interfészével így könnyedén lekérhetők és kiírhatók az aktuális időadatok, amelyekhez a rendszeren belül szükség lehet.

Tipp: A programban ellenőrzésre kerül az RTC chip elérhetősége valamint a pontos idő beállítása (ha az óra nem lenne beállítva). A pontos időnek a program a fordításkori dátumot és időt fordítja a kódba!

A programozható négyszögjel-kimenet

A chip különlegessége a programozható négyszögjel-kimenet, amely az SQW/OUT kimeneti lábon érhető el. Ez a funkció különféle frekvenciákon képes jeleket generálni:  1 Hz, 4,096 kHz, 8,192 kHz vagy 32,768 kHz-es jel. Az alábbi példa kód egy 1 Hz-es kimeneti jel generálását mutatja:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <Wire.h>
#include <RTClib.h>
 
RTC_DS1307 rtc;
 
void setup() {
  Wire.begin();
  rtc.begin();
  rtc.writeSqwPinMode(DS1307_SquareWave1HZ); // Beállítja az 1 Hz-es négyzetes hullámot
}
 
void loop() {
  // Kimenet az SQW/OUT lábon
}

A négyszögjel kimenet hasznos lehet időzítési jelként, valamint különféle rendszerinterfészek szinkronizálásához. Az RTClib a mintaalkalmazásai közt a többi négyszögjel kimenet létrehozására is tartalmazza a mintákat.

Memóriafunkciók és az NV RAM Kezelése

A DS1307 chip 56 byte nem felejtő RAM memóriával rendelkezik, amely lehetővé teszi az adatok tárolását, még akkor is, ha a chip áramellátása megszakad. Ez a memória felhasználható események, időbélyegek, vagy egyéb állapotok mentésére, amelyek később hozzáférhetők maradnak. A RAM területe szabadon programozható, és az adatokat olvashatjuk és írhatjuk is az I2C buszon keresztül. Az adatokat címekkel azonosítjuk, így a memóriában tárolt információk könnyen elérhetők. A következő kódrészlet egy adat olvasását és írását mutatja be a memóriába:

1
2
3
rtc.writeRam(0x00, 0xFF);      // Adat írása a RAM-ba
byte data = rtc.readRam(0x00); // Adat olvasása a RAM-ból
Serial.println(data, HEX);     // Az adat HEX formátumban kerül megjelenítésre

Ez a memória különösen hasznos olyan helyzetekben, ahol a rendszer folyamatosan adatokat tárol, például mérési adatok vagy konfigurációs paraméterek. A RAM tartalma megmarad, még akkor is, ha a chip akkumulátoros üzemmódban működik, így a tárolt adatok visszanyerhetők később.

DS1307 alkalmazási területei

A DS1307 RTC széleskörűen használható különféle alkalmazásokban, ahol az időzítés és az időalapú vezérlés alapvető követelmény.

Az ipari rendszerekben, ahol pontos időmérés szükséges, például elektromos hálózatok monitorozásánál, az RTC-k segítségével biztosítják a pontos időadatokat. A DS1307 ezen rendszerekben képes folyamatosan nyomon követni az eseményeket, például a rendszer újraindulásakor automatikusan visszaáll az aktuális időre.

A DS1307-et gyakran használják olyan számítógép-perifériákban és beágyazott rendszerekben, amelyek pontos időzítést igényelnek. A chip I2C interfésze lehetővé teszi az egyszerű kommunikációt az alaplapokkal és más vezérlő áramkörökkel. Például a PC-k BIOS-a számára ideális, mivel az alaplapon lévő akkumulátor biztosítja a folyamatos áramellátást.

Hőmérsékleti hatás

A DS1307 működési tartománya -40 °C és +85 °C között van, de nincs beépített hőmérséklet-kompenzáció. Emiatt a környezeti hőmérséklet befolyásolhatja a kvarckristály frekvenciáját, ami hosszú távon kismértékű pontosságvesztést eredményezhet. A kristály frekvenciája változik a hőmérséklet függvényében, amely eltérést okozhat az időmérés pontosságában. Különösen hőmérséklet-ingadozások esetén ajánlott olyan környezeti kompenzációs áramkörök alkalmazása, amelyek stabilizálják a kristály frekvenciáját, minimalizálva ezzel a hőmérséklet által okozott driftet. Annak érdekében, hogy a DS1307 pontossága hosszú távon is megbízható maradjon, ajánlott egy hőmérséklet-kompenzált kristály oszcillátor (TCXO) használata, amely csökkenti a hőmérsékleti változások hatását. Ezenkívül bizonyos környezeti feltételek, például szabályozott hőmérsékletű tárolás, segíthetnek megőrizni a chip pontos működését.

 

Felhasznált források

– DS1307 RTC Power Problem with battery [ElectroTech]
– DS1307RTC library [Arduino]

 

Kapcsolódó cikkek:

– A digitális idő paradoxonja: az óraátállítás árnyoldalai
– DS1302 trükkök: RAM, írásvédelem, burst mód és csepptöltés (trickle charge)
– DS1302 RTC óramodul használata: az óra és a dátum
– IIC eszköz detektálása UNO, ESP8266 és ESP32 - kezdőknek
– Infravörös vevőmodul tesztelése Arduino UNO-val – hogyan olvassunk távirányítót digitálisan (KY-022)?

Tags: Arduino RTC Uno

Post navigation

Előző Arduino kezdőknek: Változók és adatkezelés egyszerűen!
Következő Gyakori hibák az Arduino 2.3.3 Serial Monitor használatakor – Előzmények és megoldások

Kapcsolódó anyagok

A digitális idő paradoxonja: az óraátállítás árnyoldalai Ködös kertben analóg és digitális óra, köztük egy végtelen jelet formázó fényív, alatta automata locsoló rendszer – az őszi óraátállítás kettőzött időpontját szimbolizálva.
  • Cikk
  • Mélyvíz
  • Tippek

A digitális idő paradoxonja: az óraátállítás árnyoldalai

2025.10.23.
Teker Ed, te tekered? – Az enkóder Illusztrált forgó enkóder modul Arduino fejlesztőkörnyezetben, számítógéppel és elektronikai munkapaddal. Oktatási és DIY elektronikai célokra.
  • Cikk
  • Gyorstippek

Teker Ed, te tekered? – Az enkóder

2025.08.23.
DS1302 trükkök: RAM, írásvédelem, burst mód és csepptöltés (trickle charge) DS1302 RTC modul egy Arduino fejlesztőasztalon, háttérben laptop és prototípus panelek – Arduino DS1302 valós idejű óra interfész bemutató.
  • Cikk
  • Gyorstippek

DS1302 trükkök: RAM, írásvédelem, burst mód és csepptöltés (trickle charge)

2025.08.20.

Hírlevél

Hogy az újdonságokról első kézből értesülj:
→ Feliratkozás a Hírlevélre

Ingyenes tanfolyam

60 nap alatt Arduino - az ingyenes tanfolyam
→ Kattints ide és iratkozz fel!
60 nap alatt Arduino

Szeretnél egy lépéssel a többiek előtt járni?

Ne hagyd ki a legújabb tanfolyamokat, amik még csak most bontogatják szárnyaikat.

Legyél te az első! Tanfolyamok

Alkatrész-tár

→ TavIR WebShop
→ Tanulókészletek

Témakörök

  • Cikk (49)
  • Hír (35)
  • Könyv (34)
    • Egyszerű elektronika tippek (18)
    • ESP8266/ESP32 (1)
    • Mélyvíz (8)
    • Mit ne használjunk Arduino projektekben? (6)
  • Tippek (59)
    • Gyorstippek (20)
    • Tippek-trükkök (AVR) (21)
    • Tippek-trükkök (ESP8266/ESP32) (5)

TavIR WebShop

→ Tovább a TavIR WebShopba
4 csatornás kétirányú jelszintillesztő modul (digitális vonalakhoz, MOSFET)
4 csatornás kétirányú jelszintillesztő modul (digitális vonalakhoz, MOSFET)

Univerzális, 4 csatornás kétirányú jelszintillesztő modul, amely megbízható módon biztosítja a digitális [...]

Mérleg súlymérő cella (500g)
Mérleg súlymérő cella (500g)

A 500 g-os mérleg súlymérő cella egy kis méretű, mégis meglepően pontos terhelésérzékelő, [...]

USB-A - USB-A galvanikus leválasztó (1500V, isolátor, USB 2.0 izolátor, hi-speed/480Mbps)
USB-A - USB-A galvanikus leválasztó (1500V, isolátor, USB 2.0 izolátor, hi-speed/480Mbps)

Az USB-A - USB-A leválasztó a PC védelmét szolgálja, a statikus kisülés [...]

Arduino UNO R4 WiFi (ABX00087) - az eredeti, fejlett Wi‑Fi és Bluetooth funkcionalitású fejlesztőpanel
Arduino UNO R4 WiFi (ABX00087) - az eredeti, fejlett Wi‑Fi és Bluetooth funkcionalitású fejlesztőpanel

Az Arduino UNO R4 WiFi (ABX00087) egy 32‑bites fejlesztőpanel, amely beépített Wi‑Fi és Bluetooth modullal [...]

XKC‑Y25‑T12V érintésmentes folyadékszint‑érzékelő modul, kapacitív működéssel (5–12 V DC)
XKC‑Y25‑T12V érintésmentes folyadékszint‑érzékelő modul, kapacitív működéssel (5–12 V DC)

Az XKC‑Y25‑T12V egy érintkezés nélküli, kapacitív elven működő folyadékszint‑érzékelő, mely ideális zárt, [...]

LiPo akku (902040, 3.7V, 1000mAh)
LiPo akku (902040, 3.7V, 1000mAh)

Ez a 902040 típusú lítium-polimer (LiPo) akkumulátor kompakt megoldást kínál olyan hordozható [...]

12V digitális termosztát modul - beépíthető, tokos kivitelű hőmérséklet-szabályozó (W1209WK/W1209)
12V digitális termosztát modul - beépíthető, tokos kivitelű hőmérséklet-szabályozó (W1209WK/W1209)

A W1209WK digitális termosztát egy kompakt, intelligens hőmérséklet-szabályozó modul 12 V DC [...]

VEML6040 I2C RGBW színmérő modul (IIC)
VEML6040 I2C RGBW színmérő modul (IIC)

A VEML6040 I2C RGBW színmérő modul egy nagy pontosságú, négysávos (R–G–B–W) fényérzékelő, [...]

Elektromágneses lövedék gyorsító (DIY Coil Gun) készlet – Electromagnetic Gun DIY Kit
Elektromágneses lövedék gyorsító (DIY Coil Gun) készlet – Electromagnetic Gun DIY Kit

Ez az Elektromágneses lövedék-gyorsító DIY Készlet (más néven coil gun kit) olyan [...]

USB-A - USB-A galvanikus leválasztó (CH318T, 1500V, USB 2.0 izolátor, full speed (480Mbps), 400mA)
USB-A - USB-A galvanikus leválasztó (CH318T, 1500V, USB 2.0 izolátor, full speed (480Mbps), 400mA)

A CH318T alapú USB 2.0 nagysebességű galvanikus leválasztó modul célja, hogy biztonságos [...]

Akril tok ESP32‑S3 4,3 hüvelykes 800×480 kijelzős fejlesztőpanelhez – LVGL HMI kompatibilis
Akril tok ESP32‑S3 4,3 hüvelykes 800×480 kijelzős fejlesztőpanelhez – LVGL HMI kompatibilis

Ez az akrilház (plexi tok) kifejezetten az ESP32‑S3 alapú, 4,3 hüvelykes, 800×480 [...]

LM35D / LM35DZ lineáris, analóghőmérséklet‑érzékelő modul
LM35D / LM35DZ lineáris, analóghőmérséklet‑érzékelő modul

Ez az LM35D / LM35DZ típusra épülő hőmérséklet‑érzékelő modul egyszerű, megbízható és [...]

Fórum

  • Ami máshova nem besorolható... :: Re: Melyik humanoid robot gyártó lesz a piacvezető 2030-ban?
  • Ami máshova nem besorolható... :: Melyik humanoid robot gyártó lesz a piacvezető 2030-ban?
  • Bascom-AVR nyelvű programozás (AVR programozásának lehetőségei) :: Re: DC servo motor szabalyzo
  • Tovább a TavIR Fórumra...

Címkék

alappanel Arduino Arduino nap Arduino nap 2023 art atmel AVR billentyűzet biztosíték darlington dióda eeprom egyszerű elektronika elem ellenállás ESP Espressif Systems flash Forrasztás ft232 fusebit hang hőmérő i2c i2clcd infravörös ISP JTAG kijelző LCD lm35 megvilágítás microchip MOSFET motor pcb páratartalom Relé RTC telepítés tmp36 tranzisztor Uno Zener óra

Archívum

  • 2025. október (3)
  • 2025. augusztus (3)
  • 2025. július (7)
  • 2025. június (4)
  • 2025. május (6)
  • 2025. április (5)
  • 2025. március (4)
  • 2025. február (1)
  • 2025. január (6)
  • 2024. december (5)
  • 2024. november (5)
  • 2024. október (6)
  • 2024. szeptember (5)
  • 2024. augusztus (4)
  • 2024. július (3)
  • 2024. június (1)
  • 2024. május (3)
  • 2024. március (1)
  • 2024. február (2)
  • 2024. január (1)
  • 2023. december (3)
  • 2023. szeptember (2)
  • 2023. augusztus (6)
  • 2023. július (2)
  • 2023. június (1)
  • 2023. május (1)
  • 2023. április (10)
  • 2023. február (1)
  • 2022. szeptember (2)
  • 2022. július (1)
  • 2022. május (6)
  • 2022. április (1)
  • 2022. március (2)
  • 2022. január (2)
  • 2021. december (1)
  • 2021. november (4)
  • 2021. október (2)
  • 2021. szeptember (1)
  • 2021. július (1)
  • 2021. május (2)
  • 2021. április (1)
  • 2021. március (2)
  • 2020. szeptember (1)

Eddig nem olvasott...

A digitális idő paradoxonja: az óraátállítás árnyoldalai Ködös kertben analóg és digitális óra, köztük egy végtelen jelet formázó fényív, alatta automata locsoló rendszer – az őszi óraátállítás kettőzött időpontját szimbolizálva.
  • Cikk
  • Mélyvíz
  • Tippek

A digitális idő paradoxonja: az óraátállítás árnyoldalai

2025.10.23.
Qualcomm-Arduino: amikor a nyílt hardver találkozik az ipari óriással Közelkép egy Arduino UNO Q mikrokontroller panelről, amelyen jól látható a Qualcomm Dragonwing logó és a nyomtatott áramkörök részletei. AI-alapú beágyazott rendszerekhez és prototípusfejlesztéshez ideális.
  • Hír

Qualcomm-Arduino: amikor a nyílt hardver találkozik az ipari óriással

2025.10.08.
Arduino UNO Q – Az új korszak kezdete: Linux és valós idejű vezérlés egy lapon Egy futurisztikus megvilágítású Arduino UNO Q fejlesztőlap, középpontban egy Qualcomm QRB2210 chip, kék alaplapon mikrokontrolleres és IoT-alkalmazásokhoz optimalizált alkatrészekkel. AI és IoT fejlesztésekhez készült hardver.
  • Hír

Arduino UNO Q – Az új korszak kezdete: Linux és valós idejű vezérlés egy lapon

2025.10.07.
Teker Ed, te tekered? – Az enkóder Illusztrált forgó enkóder modul Arduino fejlesztőkörnyezetben, számítógéppel és elektronikai munkapaddal. Oktatási és DIY elektronikai célokra.
  • Cikk
  • Gyorstippek

Teker Ed, te tekered? – Az enkóder

2025.08.23.

Információk

Cégadatok-impresszum | Használati feltételek
Adatvédelmi irányelvek | Kapcsolat

Elérhetőség

Ügyfélszolgálat: +36 (20) 99-23-781
E-mail: avr (kukac)tavir (pont) hu
Iroda/telephely: 1181 Budapest, Szélmalom utca 13.
Copyright © TavIR Minden jog fenntartva | DarkNews by AF themes.
TavIR
Manage your privacy

To provide the best experiences, we and our partners use technologies like cookies to store and/or access device information. Consenting to these technologies will allow us and our partners to process personal data such as browsing behavior or unique IDs on this site and show (non-) personalized ads. Not consenting or withdrawing consent, may adversely affect certain features and functions.

Click below to consent to the above or make granular choices. Your choices will be applied to this site only. You can change your settings at any time, including withdrawing your consent, by using the toggles on the Cookie Policy, or by clicking on the manage consent button at the bottom of the screen.

Funkcionális Always active
A technikai tárolás vagy hozzáférés szigorúan szükséges az előfizető vagy felhasználó által kifejezetten kért konkrét szolgáltatás használatának lehetővé tételének jogos céljához, vagy kizárólag a közlés elektronikus hírközlő hálózaton keresztüli továbbításának céljához.
Beállítások
A technikai tárolás vagy hozzáférés a jogos célból szükséges, hogy olyan beállításokat tároljunk, amelyeket az előfizető vagy a felhasználó nem kért.
Statisztika
Kizárólag statisztikai célokra használt technikai tároló vagy hozzáférés. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
A technikai tárolás vagy hozzáférés felhasználói profilok létrehozásához szükséges hirdetések küldéséhez, illetve a felhasználó nyomon követéséhez egy vagy több weboldalon hasonló marketingcélokból.
Statistics

Marketing

Features
Always active

Always active
Manage options Manage services Manage {vendor_count} vendors Read more about these purposes
Manage options
{title} {title} {title}