Меню

Ds3231 arduino настройка времени



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

Автор: Сергей · Опубликовано 16.01.2017 · Обновлено 13.04.2020

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

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

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

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

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

Теперь немного о самом модуле, построен он на микросхеме 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: «-» питание модуля

Немного расскажу, о микросхеме 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 шт.

Читайте также:  Настройка ретаргетинга в mytarget

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

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

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

Источник

Часы реального времени DS3231

Товары

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

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

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

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

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

календарь до 2100 года

выход стабильной частоты : 1-32768 Гц

напряжение питания : 2,7 — 5,3 В

напряжение батарейки : 2,3 — 5,3 В

ток потребления : 250 мкA

ток потребления от батарейки : 3 мкA

порог переключения на батарейку : 2,6 В

размеры : 40х22 мм

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

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

VCC – питание 2,7 — 5,3 В

SDA – вход/выход данных интерфейса I2C

SCL – синхронизация интерфейса I2C

SQW – прерывание от будильников или выход импульсов 1-8192 Гц

32K – выход импульсов 32768 Гц

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

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

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

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

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

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

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

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

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

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

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

Плата прототипирования – 1

Модуль DS3231 – 1

4digit display на базе TM1637 – 1

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

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

Читайте также:  Настройка усилителя магнат под динамики

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

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

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

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

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

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

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

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

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

Проверьте напряжение резервного питания (должно быть не менее 2,3 В).

Источник

Делаем реальные часы при помощи чипа Arduino DS3231

Я обнаружил, что использование чипа RTC DS3231 чрезвычайно сложно с Arduino.

Простая установка времени довольно сложна, не говоря уже о коде. Но я нашел отличную и удобную библиотеку, которая действительно улучшает использование чипа DS3231.

Шаг 1. Соединения

Конечно, сначала вам нужно подключить чип. Это очень просто, сделайте это в соответствии с рисунками ниже:

  • VCC -> Arduino 5V
  • GND -> Arduino GND
  • SCL -> SCL or A5
  • SDA -> SDA or A4

Насколько я знаю, в Arduino UNO и MEGA имеются специальные выходы SCL и SDA. Есть также два других контакта 32K и SQW, но мы не будем их использовать, поскольку мы получим полную функциональность через интерфейс I2C.

Шаг 2:. Библиотека

Мы будем использовать библиотеку Хеннинга Карлсена, которая реально классная. Большое спасибо ему за это! Существуют некоторые основные функции, такие как время и дата чтения, время и дата записи. Загрузить библиотеку можно на этой странице в нашем разделе Библиотек.

Шаг 3. Код проекта

Я просто использую примерный эскиз из библиотеки, который будет содержать множество комментариев:

На этом всё, эта библиотека очень проста в использовании.

Источник

DS3231 arduino подключение

DS3231 arduino подключение — часы реального времени

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

Технические характеристики устройства

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

Базовая информация

Большая часть микросхем, аналогичных одной из самых доступных типов модульного устройства часов реального времени DS1307, применяется схема простого кварцевого генератора. DS3231 arduino подключение, которого не представляет никакой сложности. Данная схема выполнена на двух транзисторах с рабочей частотой 32 кГц. Однако и в этих приборах имеется свое несовершенство, так при различных температурных составляющих изменяется диапазон частот у кварца. А это в свою очередь создает неточность при обработке и подсчете времени.

Этот недостаток был решен в микросхеме DS3231, за счет внедрения в нее термо-компенсированного кварцевого генератора поддерживающий температурную стабильность частоты. При этом реальное время всегда находится в высокоточном режиме (в случае надобности, параметры температуры возможно подсчитать). DS3231 гарантирует работу с выводом информации по всем значениям, начиная от секунд и заканчивая месяцем и годом. Помимо этого он определяет сколько дней в текущем месяце и делает коррекцию при високосном годе.

Читайте также:  Где находится настройка прокси

Само устройство собрано на основе чипа DS3231N. Чтобы подтянуть линии 32K, SQW, SCL и SDA была применена сборка из резисторов RP1 с номиналом 4.7 кОм. Но здесь нужно учитывать одну зависимость. При использовании некоего количества приборов с шиной обеспечивающей передачу информации через интерфейс I2C, тогда нужно убрать резисторы на остальных модулях. Другая резисторная сборка, также служащая для поддержания стабильного уровня нуля на линиях A0, A1 и A2 и для изменения памяти адреса у микросхемы AT24C32N.

Подзарядка аккумулятора

Для обеспечения подзарядки аккумулятора служит цепочка, собранная на сопротивлении R5 и выпрямительном диоде D1. Вообще то эту цепь можно убрать, поскольку дисковые литиевые элементы SR2032 могут служить много лет. Светодиод визуальной индикации, включенный через сопротивление R1 показывает, что модуль включен и готов к работе. Так как DS3231 arduino подключение выполнено по интерфейсной шине 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: «-» питание модуля

Что касается электронного компонента памяти AT24C32N, то он упрятан в корпус SOIC8, работает по сдвоенному интерфейсному проводнику I2C.

Фиксированный адрес чипа AT24C32N — 0x57, но в случае нужды его несложно изменить, установив перемычки A0, A1 и A2. Поскольку в приборе AT24C32N реализовано три входных адреса A0, A1 и A2, способные быть в двух положениях: LOG-1 или LOG-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 подключение используя только приборы DS3231 и Arduino UNO R3, необходимая информация будет поступать на все данные будут передаваться в «Port Monitor». Сложного в схеме ничего нет, для подключения нужно две пары проводов. Первым делом подключается интерфейсный проводник I2C, SCL в A4 (Arduino UNO) и SDA в A5 (Arduino UNO), теперь подается напряжение питание GND к GND и VCC к 5V. Возможно подать и 3.3v, на этом подключение завершилось.

Для нормальной работы устройства DS3231 требуется библиотека, которая отсутствует в программе разработки Arduino, поэтому ее нужно скачать здесь и встроить в программу разработки. Скачать: DS1307RTC и TimeLib

Настройка и установка времени DS3231

Прежде, чем включать устройство нужно запустить процесс программирования времени, для этого необходимо взять из библиотеки DS1307RTC в качестве примера файл. Делается это так: -> «Файл» -> «Примеры» -> «DS1307RTC» -> «SetTime», либо можно взять готовый код расположенный ниже.

DS3231 arduino подключение — теперь этот код нужно загрузить в контроллер Arduino, значение времени нужно взять с операционной системы, открываем «Мониторинг порта».

Программа разработки

В данной библиотеке имеется еще дополнительный файл для примера, открывается он также просто: DS1307RTC «Файл» —> «Примеры» —> «DS3231» —> «DS3231_Serial_Hard»

Опять же и этот код добавляем в контроллер Arduino, а затем открыть «Мониторинг порта»

Источник

Adblock
detector