DS3231 RTC Arduino

DS3231 RTC Arduino

Ещё один интересный модуль для Arduino ZS-042 – это модуль часов Модуль RTC (Real Time Clock - часы реального времени) DS3231  с интерфейсом I2C(TWI).
Для микросхемы не нужен внешний кварцевый резонатор, благодаря встроенному термокомпенсированному кварцевому генератору (TCXO) с частотой 32,768 кГц.
У микросхемы есть вход для подключения батарейки, и благодаря питанию от батареи поддерживается точный отсчет времени даже когда питание системы отключается.
Интеграция кварцевого резонатора в корпус микросхемы улучшило стабильность точности хода часов.   

Модуль DS3231 RTC Arduino собран на микросхеме DS3231 и модуле памяти EEPROM на микросхеме 24C32 объемом 32 Кбит от производителя Atmel. Может работать как совместно с Arduino, так и отдельно (необходима батарейка CR2032).

DS3231 RTC         DS3231 RTC

Связь модуля с Arduino происходит по сетевому последовательному интерфейсу I2C(Inter-IntegratedCircuit) с максимальной скоростью 400 кГц, разработанному фирмой Philips.
Для питания часов и памяти модуля в автономном режиме необходима батарейка CR2032.
Модуль отслеживает состояние VCC для обнаружения сбоев питания и при необходимости автоматически переключается на резервный источник питания.
Модуль позволяет устанавливать и считывать: секунды, минуты, часы, дни, дни недели, месяц, год, а так же температуру и есть возможность установки 2-х будильников.
Что может модуль DS3231 RTC Arduino
•    Установить календарь до 2100 года с учётом високосных лет
•    Выбор режимов 12(AM/PM) или 24-часового режима
•    Возможность настроить 2 будильника
•    Использовать в качестве генератора прямоугольных импульсов
•    Измерять температуру микросхемы  для температурной компенсацией кварцевого генератора (TCXO). Она практически не нагревается поэтому можно сказать, что она равна температуре окружающей среды

Характеристики
•    Микросхема: DS3231
•    Рабочее напряжение: 3,3 В - 5 В.
•    Потребляемый ток (в режиме ожидания): до 170 мкА.
•    Потребляемый ток (во время передачи данных): до 300 мкА.
•    Потребляемый ток (во время резервного питания, без передачи данных): до 3,5 мкА.
•    Тактовая частота шины I2C: до 400 кГц.
•    Рабочая температура: 0 ... 70 °C.
•    Точность хода: ±2 ppm (примерно ± 1 минута в год) при температуре от 0 до 40С
•    внутренний термометр с диапазоном от −40…+85°C.
•    Размер: мм 38 мм (длина) мм * 22 мм (Ш) мм * 14 мм (высота)
•    Вес: 8 г

ppm(partspermillion) – частей на миллион.

На основе этого модуля DS3231 можно построить 
Часы, будильник, секундомер, генератор прямоугольных импульсов, термометр, включать/выключать внешние устройства по расписанию
На модуле выведена гребёнка контактов. Для удобного использования контакты расположены с двух сторон платы.

Теперь немного о самом модуле.
построен он на микросхеме DS3231N. 
Резисторная сборка RP1 (4.7 кОм),

DS3231 RTC

необходима для подтяжки линий 32K, SQW, SCL и SDA (кстати, если используется несколько модулей с шиной I2C, необходимо выпаять подтягивающие резисторы на других модулях). 
Вторая сборка резисторов, необходима для подтяжки линий A0, A1 и A2, необходимы они для смены адресации микросхемы памяти AT24C32N. 
Резистор R5 и диод D1, служат для подзарядки батареи. 
Микросхема памяти EEPROM AT24C32N .   
Резистор R1 и светодиод Power, работают как индикатор, показывая, что модуль включен. 
Модуль DS3231 RTC Arduino связывается с Arduino по шине I2C(TWI), для удобства монтажа они выведены с двух сторон модуля, J1 и J2.

Datasheet DS3231 англ.
Datasheet DS3231 рус.

Скетч установки времени в модуле DS3231.

Питание DS3231 RTC Arduino
Если модуль питается от платы Arduino, то он не использует батарею на модуле.
При питании от батарейки модуль отслеживает дату и время, но не работает с шиной I2C.
При отсутствии обоих источников питания модуль прекращает работать и сбрасывает все данные в заводские настройки.
С резервной батарейкой часы способны проработать несколько лет.

Группы контактов - J1
•    32K:   выход генератора, частота 32 кГц
•    SQW: Выход прямоугольного(Square-Wave) сигнала.
•    SCL:   Serial CLock - шина тактовых импульсов интерфейса I2C
•    SDA:  Serial Data - шина данных интерфейса I2C;
•    VCC:  «+» питание модуля
•    GND: «-» питание модуля

Группы контактов - J2
•    SCL:   линия тактирования (Serial CLock)
•    SDA:  линия данных (Serial Data)
•    VCC:  «+» питание модуля
•    GND: «-» питание модуля

datasheet DS3231 RTC

datasheet DS3231 RTC

Подключение модуля DS3231 RTC Arduino к шине I2C
(например, для Arduino UNO, Nano, Pro Mini):
SCL → A5
SDA → A4
VCC → +5 В
GND → земля
Подключение происходит по двухпроводной шине I2C(TWI)
Выводы SDA и SCL подключаются к аналогичным выводам на Arduino Питание VCC к +5 Вольт, а GND к GND на плате Arduino

Пины SDA и SCL на разных платах Arduino:
                       SDA    SCL
UNO                A4     A5
Mini                A4      A5
Nano              A4       A5
Mega2560     20       21
Leonardo       2          3

Для работы необходимо установить библиотеку DS3231

Подключение библиотеки

После установки откройте пример из библиотеки

Пример из библиотеки

или запустите пример установки даты и времени из скаченной папки. Это тот же пример, но с комментариями на русском языке и добавлено измерение температуры.

Скетч установки времени в модуле DS3231.

Загрузите скетч в плату, после чего откройте монитор последовательного порта (Ctrl+Shift+M).
Вы увидите неправильные данные, но не переживайте – это потому, что для работы надо установить календарь и время самостоятельно. Это делается один раз, при включении. И потребуется ещё раз только если разрядится батарея.

Ну вот и всё. DS3231 RTC Arduino очень простой и интересный модуль.

В ближайшее время я напишу статью как подружить этот модуль с  4-х разрядным, семисегментным индикатором с контроллером TM1637, 4 цифры, двоеточие.
LED TM1637

Подписывайтесь и не пропустите новые интересные статьи и описания различных модулей.

Дополнительные материалы по теме
Самодельные часы с кукушкой и боем курантов
Мир удивительных часов. Часы с кукушкой или с боем.
DS3231 Подключение к Arduino, настройка и установка времени.
часы на ардуино с дисплеем tft и ds3231
Часы на Ардуино без модуля часов
"Модуль часов RTC DS3231" Урок № 7
DS3231 Подключение к Arduino, настройка и установка времени.
DS3231 Настройка даты и времени. Управление энкодером.
часы на светодиодах ws2812
DS3231 подключение
Точное Время. Проекты с модулем часов DS3231 на Arduino и ESP8266

Дополнительные файлы