Обзор часов реального времени DS3231 (RTC)

Модуль DS3231 (RTC, ZS-042) — представляет собой недорогую плату с чрезвычайно точными часами реального времени (RTC), с температурной компенсацией кварцевого генератора и кристалла. Модуль включает в себя литиевую батарею, которая поддерживает бесперебойную работу, даже при отключении источник питания. Интегрированный генератор улучшить точность устройства и позволил уменьшить количество компонентов.

Обзор часов реального времени DS3231 (RTC)

Технические параметры

► Напряжение питания: 3.3В и 5В
► Чип памяти: AT24C32 (32 Кб)
► Точность: ± 0.432 сек в день
► Частота кварца:32.768 кГц
► Поддерживаемый протокол: I2C
► Габариты: 38мм x 22мм x 15мм

Общие сведения

Большинство микросхем, таких как DS1307 используют внешний кварцевый генератор частотой 32кГц, но в них есть существенный недостаток, при изменении температуры меняется частота кварца, что приводит к погрешности в подсчете времени. Эта проблема устранена в чипе DS3231, внутрь которого установили кварцевый генератор и датчик температуры, который компенсирует изменения температуры, так что время остается точным (при необходимости, данные температуры можно считать). Так же чип DS3231 поддерживает секунды, минуты, часы, день недели, дата, месяц и год информацию, а так же следит за количеством дней в месяце и делает поправку на високосный год. Поддерживает работу часов в двух форматов 24 и 12, а так-же возможно запрограммировать два будильника. Модуль работает по двух проводной шине I2C.

Обзор часов реального времени DS3231 (RTC)

Теперь немного о самом модуле, построен он на микросхеме DS3231N. Резисторная сборка RP1 (4.7 кОм), необходима для подтяжки линий 32K, SQW, SCL и SDA (кстати, если используется несколько модулей с шиной I2C, необходимо выпаять подтягивающие резисторы на других модулях). Вторая сборка резисторов, необходима для подтяжки линий A0, A1 и A2, необходимы они для смены адресации микросхемы памяти AT24C32N. Резистор R5 и диод D1, служат для подзарядки батарее, в принципе их можно выпаять, так как обычной батарейки SR2032 хватает на годы. Так же установлена микросхема памяти AT24C32N, это как бы бонус, для работы часов RTC DS3231N в ней нет необходимости. Резистор R1 и светодиод Power, сигнализируют о включении модуля. Как и говорилось, модуль работает по шине I2C, для удобства эти шины были выведены на два разъема J1 и J2, назначение остальных контактов, можно посмотреть ниже.Назначение J1
► 32K:   выход, частота 32 кГц
► SQW: выход
► SCL:   линия тактирования (Serial CLock)
► SDA:  линия данных (Serial Dфta)
► VCC:  «+» питание модуля
► GND: «-» питание модуля   Назначение J2
► SCL:   линия тактирования (Serial CLock)
► SDA:  линия данных (Serial Data)
► VCC:  «+» питание модуля
► GND: «-» питание модуля

Обзор часов реального времени DS3231 (RTC)

Немного расскажу, о микросхеме AT24C32N, это микросхема с 32к памятью (EEPROM) от производителя Atmel, собранная в корпусе SOIC8, работающая по двухпроводной шине I2C. Адрес микросхемы 0x57, при необходимости легко меняется, с помощью перемычек A0, A1 и A2 (это позволяет увеличить количество подключенных микросхем AT24C32/64). Так как чип AT24C32N имеет, три адресных входа (A0, A1 и A2), которые могут находится в двух состояния, либо лог «1» или лог «0», микросхеме доступны восемь адресов. от 0x50 до 0x57.

Подключение DS3231 к Arduino

Необходимые детали:
► Arduino UNO R3 x 1 шт.
► Часы реального времени на DS3231, RTC, SPI, AT24C32 x 1 шт.
► Провод DuPont, 2,54 мм, 20 см, F-M (Female — Male) x 1 шт.
► Кабель USB 2.0 A-B x 1 шт.

Подключение:
В данном примере буду использовать только модуль DS3231 и Arduino UNO R3, все данные будут передаваться в «Мониторинг порта». Схема не сложная, необходимо всего четыре провода, сначала подключаем шину I2C, SCL в A4 (Arduino UNO) и SDA в A5 (Arduino UNO), осталось подключить питание GND к GND и VCC к 5V (можно записать и от 3.3В), схема собрана, теперь надо подготовить программную часть.

Обзор часов реального времени DS3231 (RTC)

Библиотеки работающий с DS3231 нет в среде разработке IDE Arduino, необходимо скачать «DS3231 » и добавить в среду разработки Arduino.

Установка времени DS3231
При первом включении необходимо запрограммировать время, откройте пример из библиотеки DS3231 «Файл» —> «Примеры» —> «DS3231» —> «Arduino» —> «DS3231_Serial_Easy», или скопируйте код снизу

/* 
  Тестирование производилось на Arduino IDE 1.8.0
  Дата тестирования 31.08.2018г.
*/

#include <DS3231.h>                    // Подключаем библиотеку Wire  
DS3231  rtc(SDA, SCL);                 // Инициализация DS3231

void setup()
{
  Serial.begin(115200);                // Установка последовательного соединения
  rtc.begin();                         // Инициализировать rtc
  
// Установка времени
  rtc.setDOW(FRIDAY);                  //  Установить день-недели
  rtc.setTime(16, 29, 0);              //  Установить время 16:29:00 (формат 24 часа)
  rtc.setDate(31, 8, 2018);            //  Установить дату 31 августа 2018 года
}
void loop()
{
  Serial.print(rtc.getDOWStr());       // Отправляем день-неделя
  Serial.print(" ");
  
  Serial.print(rtc.getDateStr());      // Отправляем дату
  Serial.print(" -- ");

  Serial.println(rtc.getTimeStr());    // Отправляем время
  
  delay (1000);                        // Задержка в одну секунду
}

Загружаем скетч в контроллер Arduino и открываем «Мониторинг порта»

Обзор часов реального времени DS3231 (RTC)

Вот и все.

Обзор часов реального времени DS3231 (RTC)

Ссылки
  Библиотека libraries-DS3231

Купить на Aliexpress
   Контроллер Arduino UNO R3
   Часы реального времени RTC DS3231
   Комплект проводов DuPont, 2,54 мм, 20 см

Купить в Самаре и области
  
Купить контроллер Arduino UNO R3
  Купить провода DuPont, 2,54 мм, 20 см
  Купить часы реального времени RTC DS3231

Читайте также:

комментариев 17

  1. Дмитрий Медведев:

    Часы реального времени RTC DS3231
    Библиотека libraries-DS1307RTC
    А почему Вы не используете библиотеку DS3231?

    • Сергей Мир:

      Добрый день, решил использовать эту библиотеку, работает как с DS3231 так и с DS1307, в другом примере уже начал использовать библиотеку для DS3231
      OLED часы (термометр) на arduino и DS3231

      • Руслан:

        Я будильник для прогрева автомобиля писал с библиотекой 1307 а 3231 подвисала,знак-му гению по С++ отдал на анализ и он сказал библиотека сырая, делайте вывод!

  2. Андрей:

    В данном примере не устанавливается день недели. Кстати в библиотеке 3231 гораздо всё проще и ещё температура есть.

  3. Эдуард:

    Эти часы рассчитаны на работу с аккумулятором (lir2032) а на фотографии гальванический элемент cr2032. Если не разорвать цепь заряда то батарейка будет быстро дохнуть.
    Надо выкусить маленькую коричневую фигнюшку расположенную вертикально справа от чипа ds3231.

    • Константин:

      Можно просто перерезать дорожку, которая идёт от VCC на резистор с маркировкой 201(это такая чёрненькая штучка рядом с коричневой фигнюшкой). Потом восстановить можно, просто припаяв проводом.

    • Александр:

      На компьютерах она дохнет лет 5.

      • Vlady:

        Речь о том, что батарейку cr2032 заряжать нельзя, а аккумулятор lir2032 — можно. При попытке заряда батарейки и бахнуть имеет право.

    • kiv69:

      Уже года 4 в гараже часы работают и не дохнет батарейка. Ничего не выкусывал. ЧЯСНТ?

  4. Сергей:

    Сергей, приветствую! Перефотографируйте главное фото. Там неправильно подключение организовано. Нужно провода в SCL & SDA коннектор вставить. У вас в аналоговые вставлено.

    • Дмитрий:

      Вопрос для самостоятельного изучения: на каких выводах чипа Atmega168/328 (или платы Arduino) присутствует аппаратная поддержка шины I2C?
      На всякий случай: правильно там нарисовано.

  5. Max:

    А как поставить формат времени 12 часов?

  6. Дмитрий:

    после закрытия порта и повторного открытия — время снова отображается то, которое установил первично.
    Это аппаратная проблема?
    ЧЯСНТ?

    • Пупка:

      О, дружище спешу помочь, запиши код который у тебя есть, ещё раз на ардуину, потом в коде выреж установку времени с последней компиляции и всё сейчас пашет!! (Ардуина сохраняет время компиляции в памяти, а потом все время при запуске восстанавливает его на часы.) Удачи!

  7. Gordon:

    Как контроллер узнает адрес модуля и на каких пинах он висит??

    • Сергей:

      Добрый день, в библиотеке ds3231, уже указан адрес микросхемы 0x68 и аппаратные пины I2C

  8. Пупка:

    Я заметил, у часов есть проблема(рассинхрон какой-то) температура окружения стабильная но время идёт медленнее при отключении от 5V. Эмм.. что это такое и как с этим бороться?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *