Altijd bij de tijd met de DS1307 en DS3231 real-time clock modules

De DS1307 en DS3231 real-time clock modules zijn de ideale oplossing om altijd bij de tijd te zijn met een microcontroller. Een microcontroller zoals de Arduino kan zelf moeilijk bijhouden wat de tijd is, aangezien delays, interrupts, resets en externe factoren invloed hebben op de snelheid van de code. Om bijvoorbeeld een data-logger toch betrouwbaar te maken is een externe 'klok' noodzakelijk.
Real time clock modulesReal time clock modules

Real time clock versies

De real time clock serie bevat veel verschillende typenummers met allen vergelijkbare functionaliteit. In deze serie zijn maar 2 versies 'mainstream', namelijk de DS1307 en de DS3231. Deze chips hebben beiden de mogelijkheid om een batterij aan te sluiten en hebben een sqw output pin, waarmee de controller een clockpuls van (1Hz, 1.024kHz, 4.096kHz, 8.192kHz) kan ontvangen. Ook hebben beide ic's een One-Wire interface, waardoor het mogelijk is deze over I2C aan te spreken.

De RTC module aansluiten op de Arduino UNO

De RTC modules komen in verschillende vormen en maten, de verbinding met de Arduino is echter voor alle modules gelijk. De module moet in ieder geval gevoed worden met 5V, verder zal de I2C interface verbonden moeten worden met de SDA (Serial data) SCL (Serial clock) pinnen van de Arduino (dit zijn pinnen A4 en A5 bij de Arduino UNO). Verder kan de SQW output worden aangesloten op een willekeurige pin van de Arduino om een klokpuls van de RTC te ontvangen.

DS1307 aansluiting Arduino UNODS1307 aansluiting Arduino UNO

BCD Code

De numerieke waardes in de RTC chips zijn in BCD formaat opgeslagen. BCD code is op hardware niveau makkelijker in gebruik dan decimale getallen, echter zijn deze codes in de software niet erg handig. De getallen van en naar de chip moeten dus gecodeerd en gedecodeerd worden zodat de controller en RTC elkaar begrijpen. 


De huidige tijd naar de RTC schrijven

De tijd hoeft maar 1 keer naar de RTC worden geschreven wanneer deze aan de batterij is verbonden. De RTC houd zelf de tijd bij en telt verder, zelfs wanneer deze niet is aangesloten aan de controller.
Hard drive clockHard drive clock

De tijd van de RTC lezen




De tijd weergeven

Met deze functies samen kan de tijd worden bepaald door de Arduino. Met onderstaande functie word deze data naar de serial monitor geschreven, maar de mogelijkheden voor het weergeven van de tijd zijn eindeloos.

SQW frequentie instellen

Met deze code kan een complete klok worden gebouwd, welke de tijd kan weergeven. Dit kan op een 7-segment display, als analoge klok, met rooksignalen of deze kan zelfs worden uitgesproken wanneer hierom wordt gevraagd. Daarnaast kan de tijd ook worden gebruikt in de domotica / huis automatisering, koffiezetter gaat 's ochtends om 8 uur aan, de magnetron 's avonds om 17.15 en de gordijnen gaan dicht om 19.01:05. Werkelijk alles is mogelijk.
Door - Datum


Reacties

-
-
Goede how-to, bedankt!

Wij horen graag uw mening

Altijd bij de tijd met de DS1307 en DS3231 real-time clock modules
Altijd bij de tijd met de DS1307 en DS3231 real-time clock modulesKlik op een ster om een beoordeling te geven