Обзор часов реального времени 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 и открываем «Мониторинг порта»

Обзор часов реального времени 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

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

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

  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 в гараже часы работают и не дохнет батарейка. Ничего не выкусывал. ЧЯСНТ?

    • Андрей:

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

  4. Сергей:

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

    • Дмитрий:

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

    • Pawel:

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

  5. Max:

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

  6. Дмитрий:

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

    • Пупка:

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

  7. Gordon:

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

    • Сергей:

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

  8. Пупка:

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

  9. Анатолий:

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

  10. Анатолий:

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

    Я нашёл эту программу:

    #include //Подключаем библиотеку для использования I2C интерфейса с модулем RTC
    #include
    #include // Подключаем библиотеку часов
    int Relay = 12; // Назначаем выход для управлением реле
    int DAY
    int HR
    int MIN
    int SEC

    void 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

    • Павел:

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

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

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