A real time clock is basically just like a watch - it runs on a battery and keeps time for you even when there is a power outage! Using an RTC, you can keep track of long timelines, even if you reprogram your microcontroller or disconnect it from USB or a power plug.

Most microcontrollers, including the Arduino, have a built-in timekeeper called millis() and there are also timers built into the chip that can keep track of longer time periods like minutes or days. So why would you want to have a separate RTC chip? Well, the biggest reason is that millis() only keeps track of time since the Arduino was last powered - . That means that when the power is turned on, the millisecond timer is set back to 0. The Arduino doesn't know that it's 'Tuesday' or 'March 8th', all it can tell is 'It's been 14,000 milliseconds since I was last turned on'.

OK so what if you wanted to set the time on the Arduino? You'd have to program in the date and time and you could have it count from that point on. But if it lost power, you'd have to reset the time. Much like very cheap alarm clocks: every time they lose power they blink 12:00

While this sort of basic timekeeping is OK for some projects, some projects such as data-loggers, clocks, etc will need to have consistent timekeeping that doesn't reset when the Arduino battery dies or is reprogrammed. Thus, we include a separate RTC! The RTC chip is a specialized chip that just keeps track of time. It can count leap-years and knows how many days are in a month, but it doesn't take care of Daylight Savings Time (because it changes from place to place)

adafruit_products_Realtimeclock_Motherboard_Baby_AT_crop.jpg
https://en.wikipedia.org/wiki/Real-time_clock#/media/File:Realtimeclock_Motherboard_Baby_AT_crop.jpg

The image above shows a computer motherboard with a Real Time Clock called the DS1387. There's a lithium battery in there which is why it's so big.

The RTC we'll be using is the DS1307. It's low cost, easy to solder, and can run for years on a very small coin cell.

Battery Backup

As long as it has a coin cell to run it, the RTC will merrily tick along for a long time, even when the Arduino loses power, or is reprogrammed.

Use any CR1220 3V lithium metal coin cell battery:

Angled shot of CR1220 12mm Diameter - 3V Lithium Coin Cell Battery - CR1220.
These are the highest quality & capacity batteries, the same as shipped with the iCufflinks, iNecklace, Datalogging and GPS Shields, GPS HAT, etc. One battery per order...
Out of Stock
You MUST have a coin cell installed for the RTC to work, if there is no coin cell, you should pull the battery pin low.

This guide was first published on Jan 29, 2013. It was last updated on Mar 08, 2024.

This page (What is an RTC?) was last updated on Mar 08, 2024.

Text editor powered by tinymce.