Часы реального времени DS1302

Модуль часов реального времени (RTC) на микросхеме DS1302, которая  состоит из  часов / календаря,  статического ОЗУ емкостью 31 байт и с возможностью бесперебойного питания от литиевой батарейки.  Микросхема поддерживает следующие форматы: год, месяц, дата, час, неделя, секундаи минута. Время выводится в 12-часовом или 24-часовом формате.

 

DS1302 pinout
Назначение контактов DS1302

 

Для подключения DS1302 использует три линии — CE, I/O, SCLK  ( это не I2C, OneWire и не SPI интерфейсы ). Наиболее часто используемое название — 3-x проводный интерфейс (3-wire interface).

  1. Vcc2 — питание + 5 В или + 3,3 В
  2. X1 — кварц с частотой 32,768 кГц
  3. X2 — кварц с частотой 32,768 кГц
  4. GND
  5. RST / CE — разрешение чтения\записи
  6. DAT — линия данных
  7. CLK  — тактовый сигнал
  8. Vcc1 — подключение батареи или аккумулятора (+)

Микросхема  имеет 31 байт оперативной памяти. Данные в ОЗУ  будут потеряны, если Arduino выключен, а батарея  отсутствует или разряжена. Для хранения данных гораздо лучше подойдет модуль EEPROM микросхемы AVR ATmega328 — используется в Arduino Uno.

Модуль RTC DS1302 подключается к Arduino по следующей схеме:

 

RTC DS1302
Подключение модуля RTC DS1302 к Arduino Uno

 

Тестовый скетч для проверки работы модуля DS1302 без подключения библиотек, показывает всё, что может вывести микросхема на Монитор порта среды разработки Arduino IDE.

 

Часы и календарь устанавливаются перед компиляцией скетча в строках 214-221. Данные выводятся с интервалом в 5 секунд ( delay( 5000) ) — строка 282.

Ниже представлен результат работы скетча.

Вывод данных с DS1302 на Монитор порта
Вывод данных с DS1302 на Монитор порта

 

Недорогой модуль с часами DS1302 часто имеет проблемы с уходом частоты кварца и зависит от напряжения питания и температурного режима. Подходит для простых проектов. Рекомендуется использовать модуль с часами DS3231 , который очень надежен и точен,  для работы требуется только батарея (кварц  имеется внутри микросхемы DS3231 ).