Обзор часов реального времени 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 на CH340G
  Контроллер Arduino UNO R3 на Atmega16U2
  Провода DuPont, 2,54 мм, 20 см
  Часы реального времени RTC DS3231

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

О нас Сергей

Посмотреть также

Обзор модуля GSM, GPRS на чипе SIM800C

Обзор модуля GSM, GPRS на чипе SIM800C

В статье расскажу о плате разработке на чипе SIM800C, который поддерживает GSM, GPRS b Bluetooth с управлением AT командам.

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

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

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

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

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

    • Константин

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

    • Александр

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

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

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

    • Если запитывать от 3.3 вольта можно не снимать цепь заряда и ставить батарейку

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

    • Дмитрий

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

    • TWI: вывод A4 или SDA и вывод A5 или SCL. С использованием библиотеки Wire данные выводы могут осуществлять связь по интерфейсу TWI.

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

  6. Дмитрий

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

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

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

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

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

  9. Анатолий

    Сергей, А как прописать команду на включение двигателя один раз в сутки или в определенное время?

  10. Анатолий

    Спасибо, Сергей.

    Я нашёл эту программу:
    #include  //Подключаем библиотеку для использования I2C интерфейса с модулем RTC #include #include  // Подключаем библиотеку часовint Relay = 12; // Назначаем выход для управлением релеint DAYint HRint MINint SECvoid setup(){ Serial.begin(9600); while (!Serial); // Устанавливаем функцию для получения времени с часов setSyncProvider(RTC.get); //Устанавливаем время в формате: часы, минуты, секунды, день, месяц, год    setTime(17,50,0,23,3,2015); RTC.set(now()); //Применяем: pinMode(Power, OUTPUT); pinMode(Relay, OUTPUT); // Устанавливаем выход для реле RTC.stop(); // остановка времени перед синхронизацией с компьютером}void loop(){ RTC.get(rtc,true); // Получаем время из DS1307 if(DOW == 1 && HR == 12 && MIN == 0 && SEC == 0){ // задаём день понельник время и время включения с 12.00.00 digitalWrite(Relay, HIGH); //реле включено } delay(3000); //задержка на 3 секунды else { //иначе digitalWrite(Relay, LOW); //реле выключено }}
    Правильно я понимаю,
    из этой программы нужно добавить соответствующие фрагменты в написанный Вами выше скетч

    в void setup и void loop соответственно? Спасибо.

  11. А не подскажите как с памятью работать что в этом модуле распаяна?
    Как к ней обратиться?
    И вообще возможно ли её использовать под хранение «своих» ардуиновских настроек?

  12. Ардуинщик

    Подскажите, пожалуйста , начинающему ардуинщику.
    Есть 1)Arduino Nano; 2)Модуль часов реального времени ds3231 3) 2-х канальный модуль реле 5V.
    Нужно 1 раз в 1 минуту поочередно по одному включать каждое реле на 2 сек. То есть: включить реле №1 на 2 секунды –выключить реле №1, подождать 58 секунд. После этого включить реле № 2 на 2 секунды – выключить реле №2, подождать 58 секунд. И так по кругу. Как написать скетч?

    • Добрый день, напишите на почту. info@robotchip.ru

    • Здравствуйте. Решили как это сделать? Мне нужно точно то же самое. Ардуино ни разу в руках не держал, но был бы готовый код, дальше соображу. Хочу запустить вторичные часы «Стрела». Можете помочь?

      • Анатолий

        Могу прислать код для вторичных часов

        • Алексей

          добрыйдень
          а мне можно тоже код для вторичных часов стрела
          сделал идут но без модуля ds 3231 не получаеться постоянно отстают
          я ни бум бум в кодах модуль купил а куда присонединить и куда прописать код ума не приложу.
          заранее спасибо

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

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