Часы ds3231

330 руб.

2 в наличии

Артикул: 15 Категория:

Описание

Если вы создаете устройство, которому нужно знать точное время, вам пригодится модуль часов реального времени RTC (Real Time Clock). Данные модули отсчитывают точное время и могут сохранять его даже при отключении основного питания при использовании резервного питания (батарейка CR2032 или литий-ионный аккумулятор LIR2032-3,6 В), которого хватит на несколько лет.

Еще совсем недавно основным модулем RTC в среде Ардуинщиков являлся модуль на микросхеме DS1307. В этом модуле использовался внешний кварцевый генератор частотой 32кГц, при изменении температуры менялась частота кварца, что приводило к погрешности в подсчете времени.

Новые модули RTC (рис. 1) построены на микросхеме DS3231, внутрь которой установлен кварцевый генератор и датчик температуры, который компенсирует изменения температуры, поэтому время отсчитывается более точно. Погрешность составляет ±2 минуты за год.

real-time-clock-01.jpg

Рисунок 1.


Технические характеристики

 

  • календарь до 2100 года
  • погрешность : +/- 4ppm
  • два будильника
  • выход стабильной частоты : 1-32768 Гц
  • напряжение питания : 2,7 – 5,3 В
  • напряжение батарейки : 2,3 – 5,3 В
  • ток потребления : 250 мкA
  • ток потребления от батарейки : 3 мкA
  • порог переключения на батарейку : 2,6 В
  • интерфейс : I2C
  • размеры : 40х22 мм

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

Модуль имеет 6 выводов:

 

  • GND – общий
  • VCC – питание 2,7 – 5,3 В
  • SDA – вход/выход данных интерфейса I2C
  • SCL – синхронизация интерфейса I2C
  • SQW – прерывание от будильников или выход импульсов 1-8192 Гц
  • 32K – выход импульсов 32768 Гц

Подключение к плате Arduino

Модуль DS3231 подключается к плате Arduino по интерфейсу I2C, используются выводы SDA и SCL. Схема подключения показана на рис. 2.

real-time-clock-02.jpg

Рисунок 2.

Для программирования будем использовать библиотеки DS1307 и Time. Скетч получения данных с DS3231 и вывода в последовательный порт показан в листинге 1.

Открываем монитор последовательного порта (рис. 3).

real-time-clock-03.jpg

 

Рисунок 3.

Результат работы – правильный отсчет, но неверное значение времени и даты. При отсутствии питания значение времени в микросхеме DS3231 сбрасывается на 00:00:00 01/01/2000.

Добавим функционал скетчу – установка времени отправкой строки вида “dd/mm/ YYYY hh:mm:ss” в последовательный порт.

После загрузки скетча на плату Arduino, открываем монитор последовательного порта и отправляем в Arduino строку «dd/mm/ YYYY hh:mm:ss» для установки текущей даты и точного времени (рис. 4,5).

real-time-clock-04.jpg

real-time-clock-05.jpg

Рисунок 4,5.

Теперь DS3231 будет отсчитывать точное время. И если установлена батарейка, время не собъется после отключения питания.


Пример использования

Создадим проект часов с выводом данных на 4-х разрядный семисегментный дисплей на базе драйвера TM1637.

Нам потребуются следующие компоненты:

 

  • Плата Arduino Uno – 1
  • Плата прототипирования – 1
  • Модуль DS3231 – 1
  • 4digit display на базе TM1637 – 1
  • Провода

 

Схема соединения элементов показана на рис. 6.

real-time-clock-06.jpg

Рисунок 6.

Для программирования вывода данных на 4-х разрядный семисегментный дисплей на базе драйвера TM1637 установим в Arduino IDE библиотеку TM1637. Каждые 5 секунд меняем на дисплее отображение:

 

  • текущее время;
  • день и месяц.

 

При отображении показаний текущего времени каждые 0.5 секунды мигаем разделителем типа “двоеточие” между вторым и третьим разрядом. Содержимое скетча показано в листинге 3.

Загружаем скетч на плату Arduino и проверяем работу часов.

real-time-clock-07.jpg

real-time-clock-08.jpg

Рисунок 7,8.


Часто задаваемые вопросы

1. Отсутствует получение данных времени с модуля DS3231.

 

  • Проверьте правильность подключения модуля DS3231 к плате Arduino.

 

2. Данные, получаемые с модуля DS3231, неверные.

 

  • Установите правильную дату и время, загрузив код из листинга 2 и отправив из последовательного порт правильные данные.

 

3. При отключении питания сбивается время и дата.

 

  • Установите резервное питание модуля (батарейка CR2032 или литий-ионный аккумулятор LIR2032-3,6 В).
  • Проверьте напряжение резервного питания (должно быть не менее 2,3 В).