для чего нужны часы реального времени ардуино

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

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

DS1307 это небольшой модуль, предназначенный для подсчета времени. Собранный на базе микросхемы DS1307ZN с реализацией питания от литиевой батарейки (LIR2032), что позволяет работать автономно в течение длительного времени. Также на модуле, установлена энергонезависимая память EEPROM объемом 32 Кбайт (AT24C32). Микросхема AT24C32 и DS1307ZN связаны обшей шиной интерфейсом I2C.

для чего нужны часы реального времени ардуино

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

Напряжение питания: 5В
Рабочая температура: – 40℃ … + 85℃
Память: 56 байт (энергонезависимая)
Батарейка: LIR2032 (автоматическое определение источника питания)
Интерфейса: I2C
Габариты: 28мм х 25мм х 8 мм

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

Использовании модуля DS1307 зачастую очень оправдано, например, когда данные считываются редко, интервалом более недели, использовать собственные ресурсы контроллера, неоправданно или невозможно. Обеспечивание бесперебойное питание, например платы Arduino, на длительный срок дорого, даже при использовании батареи.
Благодаря собственной памяти и автономностью, можно регистрировать события, (при автономном питании) например изменение температуры и так далее, данные сохраняются в памяти их можно считать из памяти модуля. Так что модуль DS1307 часто используют, когда контроллерам Arduino необходимо знать точное время, для запуска какого то события и так далее.

для чего нужны часы реального времени ардуино

Обмен данными с другими устройствами осуществляется по интерфейсу I2C с выводов SCL и SDA. Конденсаторы С1 и С2 необходимы для снижения помех по линию питания. Чтобы обеспечить надлежащего уровня сигналов SCL и SDA установлены резисторы R2 и R3 (подтянуты к питанию). Для проверки работоспособности модуля, на вывод 7 микросхему DS1307Z, подается сигнал SQ, прямоугольной формы с частотой 1 Гц. Элементы R4, R5, R6, VD1 необходимы для подзарядку литиевой батарейки. Так же, на плате предусмотрено посадочное место (U1), для установки датчика температуры DS18B20 (при необходимости можно впаять его), считывать показания, можно с вывода DS, который подтянут к пиатнию, через резистор R1 сопротивлением 3.3 кОм. Принципиальную схему и назначение контактов можно посмотреть на рисунках ниже.

для чего нужны часы реального времени ардуино

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

для чего нужны часы реального времени ардуино

Первая группа контактов:
DS: вывод DS18B20 (1-wire)
SCL: линия тактирования (Serial CLock)
SDA: линия данных (Serial Dфta)
VCC: «+» питание модуля
GND: «-» питание модуля

Вторая группа контактов:
SQ: вход 1 МГц
DS: вывод DS18B20 (1-wire)
SCL: линия тактирования (Serial CLock)
SDA: линия данных (Serial Dфta)
VCC: «+» питание модуля
GND:«-» питание модуля
BAT:

Подзарядка батареи
Как описывал ваше модуль может заряжать батарею, реализовано это, с помощью компонентов R4, R5, R6 и диода D1. Но, данная схема имеет недостаток, через резистор R4 и R6 происходит разряд батареи (как подметил пользователь ALEXEY, совсем не большой). Так как модуль потребляем незначительный ток, можно удалить цепь питания, для этого убираем R4, R5, R6 и VD1, вместо R6 поставим перемычку (после удаления компонентов, можно использовать обычную батарейку CR2032).

для чего нужны часы реального времени ардуино

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

Необходимые детали:
Arduino UNO R3 x 1 шт.
Провод DuPont, 2,54 мм, 20 см x 1 шт.
Кабель USB 2.0 A-B x 1 шт.
Часы реального времени RTC DS1307 x 1 шт.

Подключение:
Для подключения часы реального времени DS1307, необходимо впаять впаять штыревые разъемы в первую группу контактов. Далее, подключаем провода SCL (DS1307) к выводу 4 (Arduino UNO) и SDA (DS1307) к выводу 5 (Arduino UNO), осталось подключить питания VCC к +5V и GND к GND. Кстати, в различных платах Arduino вывода интерфейса I2C отличаются, назначение каждого можно посмотреть ниже.

для чего нужны часы реального времени ардуино

Установка времени DS1307
Первым делом, необходимо скачать и установить библиотеку «DS1307RTC» и «TimeLib» в среду разработки IDE Arduino, далее необходимо настроить время, открываем пример из библиотеки DS1307RTC «Файл» —> «Примеры» —> «DS1307RTC» —> «SetTime» или копируем код снизу.

Источник

Часы реального времени на RTC модулях Ардуино DS1302, DS1307, DS3231

Во многих проектах Ардуино требуется отслеживать и фиксировать время наступления тех или иных событий. Модуль часов реального времени, оснащенный дополнительной батарей, позволяет хранить текущую дату, не завися от наличия питания на самом устройстве. В этой статье мы поговорим о наиболее часто встречающихся модулях RTC DS1307, DS1302, DS3231, которые можно использовать с платой Arduino.

Модули часов реального времени в проектах Arduino

Модуль часов представляет собой небольшую плату, содержащей, как правило, одну из микросхем DS1307, DS1302, DS3231.Кроме этого, на плате практически можно найти механизм установки батарейки питания. Такие платы часто применяется для учета времени, даты, дня недели и других хронометрических параметров. Модули работают от автономного питания – батареек, аккумуляторов, и продолжают проводить отсчет, даже если на Ардуино отключилось питание. Наиболее распространенными моделями часов являются DS1302, DS1307, DS3231. Они основаны на подключаемом к Arduino модуле RTC (часы реального времени).

Часы ведут отсчет в единицах, которые удобны обычному человеку – минуты, часы, дни недели и другие, в отличие от обычных счетчиков и тактовых генераторов, которые считывают «тики». В Ардуино имеется специальная функция millis(), которая также может считывать различные временные интервалы. Но основным недостатком этой функции является сбрасывание в ноль при включении таймера. С ее помощью можно считать только время, установить дату или день недели невозможно. Для решения этой проблемы и используются модули часов реального времени.

Электронная схема включает в себя микросхему, источник питания, кварцевый резонатор и резисторы. Кварцевый резонатор работает на частоте 32768 Гц, которая является удобной для обычного двоичного счетчика. В схеме DS3231 имеется встроенный кварц и термостабилизация, которые позволяют получить значения высокой точности.

Сравнение популярных модулей RTC DS1302, DS1307, DS3231

В этой таблице мы привели список наиболее популярных модулей и их основные характеристики.

НазваниеЧастотаТочностьПоддерживаемые протоколы
DS13071 Гц, 4.096 кГц, 8.192 кГц, 32.768 кГцЗависит от кварца – обычно значение достигает 2,5 секунды в сутки, добиться точности выше 1 секунды в сутки невозможно. Также точность зависит от температуры.I2C
DS130232.768 кГц5 секунд в суткиI2C, SPI
DS3231Два выхода – первый на 32.768 кГц, второй – программируемый от 1 Гц до 8.192 кГц±2 ppm при температурах от 0С до 40С.

Точность измерения температуры – ±3С

I2C

Модуль DS1307

DS1307 – это модуль, который используется для отсчета времени. Он собран на основе микросхемы DS1307ZN, питание поступает от литиевой батарейки для реализации автономной работы в течение длительного промежутка времени. Батарея на плате крепится на обратной стороне. На модуле имеется микросхема AT24C32 – это энергонезависимая память EEPROM на 32 Кбайт. Обе микросхемы связаны между собой шиной I2C. DS1307 обладает низким энергопотреблением и содержит часы и календарь по 2100 год.

Модуль обладает следующими параметрами:

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

Взаимодействие с другими устройствами и обмен с ними информацией производится с помощью интерфейса I2C с контактов SCL и SDA. В схеме установлены резисторы, которые позволяют обеспечивать необходимый уровень сигнала. Также на плате имеется специальное место для крепления датчика температуры DS18B20.Контакты распределены в 2 группы, шаг 2,54 мм. В первой группе контактов находятся следующие выводы:

Во второй группе контактов находятся:

для чего нужны часы реального времени ардуино

Для подключения к плате Ардуино нужны сама плата (в данном случае рассматривается Arduino Uno), модуль часов реального времени RTC DS1307, провода и USB кабель.

Чтобы подключить контроллер к Ардуино, используются 4 пина – VCC, земля, SCL, SDA.. VCC с часов подключается к 5В на Ардуино, земля с часов – к земле с Ардуино, SDA – А4, SCL – А5.

для чего нужны часы реального времени ардуино

Для начала работы с модулем часов нужно установить библиотеки DS1307RTC, TimeLib и Wire. Можно использовать для работы и RTCLib.

Проверка RTC модуля

При запуске первого кода программа будет считывать данные с модуля раз в секунду. Сначала можно посмотреть, как поведет себя программа, если достать из модуля батарейку и заменить на другую, пока плата Ардуино не присоединена к компьютеру. Нужно подождать несколько секунд и вытащить батарею, в итоге часы перезагрузятся. Затем нужно выбрать пример в меню Examples→RTClib→ds1307. Важно правильно поставить скорость передачи на 57600 bps.

При открытии окна серийного монитора должны появиться следующие строки:

для чего нужны часы реального времени ардуино

Будет показывать время 0:0:0. Это связано с тем, что в часах пропадает питание, и отсчет времени прекратится. По этой причине нельзя вытаскивать батарею во время работы модуля.

Чтобы провести настройку времени на модуле, нужно в скетче найти строку

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

для чего нужны часы реального времени ардуино

Настройка произведена корректно и дополнительно перенастраивать часы реального времени не придется.

Считывание времени. Как только модуль настроен, можно отправлять запросы на получение времени. Для этого используется функция now(), возвращающая объект DateTime, который содержит информацию о времени и дате. Существует ряд библиотек, которые используются для считывания времени. Например, RTC.year() и RTC.hour() – они отдельно получают информацию о годе и часе. При работе с ними может возникнуть проблема: например, запрос на вывод времени будет сделан в 1:19:59. Прежде чем показать время 1:20:00, часы выведут время 1:19:00, то есть, по сути, будет потеряна одна минута. Поэтому эти библиотеки целесообразно использовать в случаях, когда считывание происходит нечасто – раз в несколько дней. Существуют и другие функции для вызова времени, но если нужно уменьшить или избежать погрешностей, лучше использовать now() и из нее уже вытаскивать необходимые показания.

Пример проекта с i2C модулем часов и дисплеем

Проект представляет собой обычные часы, на индикатор будет выведено точное время, а двоеточие между цифрами будет мигать с интервалом раз в одну секунду. Для реализации проекта потребуются плата Arduino Uno, цифровой индикатор, часы реального времени (в данном случае вышеописанный модуль ds1307), шилд для подключения (в данном случае используется Troyka Shield), батарейка для часов и провода.

В проекте используется простой четырехразрядный индикатор на микросхеме TM1637. Устройство обладает двухпроводным интерфейсом и обеспечивает 8 уровней яркости монитора. Используется только для показа времени в формате часы:минуты. Индикатор прост в использовании и легко подключается. Его выгодно применять для проектов, когда не требуется поминутная или почасовая проверка данных. Для получения более полной информации о времени и дате используются жидкокристаллические мониторы.

Индикатор подключается просто – выводы с него CLK и DIO подключаются к любым цифровым пинам на плате.

для чего нужны часы реального времени ардуино

Скетч. Для написания кода используется функция setup, которая позволяет инициализировать часы и индикатор, записать время компиляции. Вывод времени на экран будет выполнен с помощью loop.

После этого скетч нужно загрузить и на мониторе будет показано время.

Программу можно немного модернизировать. При отключении питания выше написанный скетч приведет к тому, что после включения на дисплее будет указано время, которое было установлено при компиляции. В функции setup каждый раз будет рассчитываться время, которое прошло с 00:00:00 до начала компиляции. Этот хэш будет сравниваться с тем, что хранятся в EEPROM, которые сохраняются при отключении питания.

Для записи и чтения времени в энергонезависимую память или из нее нужно добавить функции EEPROMWriteInt и EEPROMReadInt. Они нужны для проверки совпадения/несовпадения хэша с хэшем, записанным в EEPROM.

Можно усовершенствовать проект. Если использовать жидкокристаллический монитор, можно сделать проект, который будет отображать дату и время на экране. Подключение всех элементов показано на рисунке.

для чего нужны часы реального времени ардуино

В результате в коде нужно будет указать новую библиотеку (для жидкокристаллических экранов это LiquidCrystal), и добавить в функцию loop() строки для получения даты.

Алгоритм работы следующий:

Заключение

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

Источник

Для чего нужны часы реального времени ардуино

для чего нужны часы реального времени ардуино

Часы реального времени (Real Time Clock, RTC) — это электронная схема, специально предназначенная для учета текущего времени, даты, дня недели и прочих временных и календарных данных. Широко используются в системах регистрации данных, при создании электронных часов, будильников, таймеров, управляющих устройств, работающих по расписанию. Как правило, такая схема, помимо учитывающего устройства включает и автономный источник питания, чтобы продолжать работать даже при выключении основной системы. Часы реального времени ведут учет в единицах измерения времени, более привычных человеку (часы, минуты, годы и пр.), в отличие от тактовых генераторов и счетчиков, которые создают и считают просто «тики». Можно сказать, что часы реального времени — это тактовый генератор, специально предназначенный для отсчета времени.

Зачастую, микроконтроллеры, включая и Arduino, имеют функции для хранения времени, такие как millis () и имеют аппаратные таймеры, которые могут отслеживать более длительные временные интервалы, например, минуты и дни. Так зачем же нужны отдельные схемы часов реального времени?

Основная причина кроется в том, что millis () отслеживает время, прошедшее с момента последнего включения Arduino, при включении таймер миллисекунд устанавливается в ноль. Arduino не знает «вторник» сегодня или «23 февраля», все что ему известно, так это то, что с момента последнего включения прошло, например, 14763 миллисекунды.

Что если мы захотим установить время на Arduino? В программе нужно было бы задать некоторую точку отсчета, относительно которой бы считать время и даты. Но при отключении питания время бы сбросилось. Именно это и происходит в недорогих моделях будильников, когда при отключении питания начинает мигать «12:00». Для каких-то задач это вполне приемлемо, но в некоторых случаях важно продолжать отсчет времени, даже если питание пропадает. Вот в этом случае на помощь и приходят специализированные микросхемы RTC, имеющие автономный источник питания.

Большинство схем часов реального времени использует кварцевый резонатор, работающий на частоте 32768 Гц. 32768 = 2 15 тактов в секунду, что очень удобно для простых двоичных счётчиков.

Многие производители выпускают собственные микросхемы часов реального времени. Среди них Texas Instruments, Dallas Semocinductor, STMicroelectronics, Intersil, Maxim, Philips. Достаточно популярными являются микросхемы DS1307 от Dallas Semiconductor и ее полный, но более дешевый аналог M41T56 от STMicroelectronics. Также широко используется микросхема DS3231, которая имеет встроенный кварц и термостабилизацию, что позволяет получить повышенную точность в сравнении с DS1307. С точки зрения программиста, отличие между ними — это разные адреса и назначение битов в Control register. Так что, если изменения в программе если и придется вносить, то совсем незначительные.

Я некоторое время назад приобрел модуль MP1095 производства «Мастер Кит», основанный на микросхеме M41T56M6, поэтому я свои эксперименты буду проводить, используя именно этот модуль. Он полностью совместим с устройствами, в основе которых лежит DS1307, что позволяет использовать популярные библиотеки часов реального времени для последнего.

Принципиальная схема модуля MP1095:

для чего нужны часы реального времени ардуино

Микросхема M41T56

Микросхема M41T56 представляет собой часы реального времени, с последовательным интерфейсом I 2 C и низким энергопотреблением с 56 байтами энергонезависимой памяти. Встроенный генератор с частотой 32768 Гц (или же внешний стабилизированный кварцевый) и первые 8 байт ОЗУ используются для временных/календарных функций. Конфигурирование осуществляется в двоично-десятичном формате. Адреса и данные передаются последовательно по двухпроводной двунаправленной шине. Встроенный адресный регистр инкрементируется автоматически после каждой операции WRITE или READ для байта данных.

Часы реального времени M41T56 часы имеют встроенную схему контроля для обнаружения сбоев питания и автоматически переключается на питание от батарей во время сбоя внешнего питания. Энергия, необходимая для поддержания работоспособности оперативной памяти и часов может быть обеспечена при использовании небольшого литиевого элемента питания.

Типичное время хранения данных превышает 10 лет с 50 мА·ч, 3 В литиевым элементом. M41T56 поставляется в 8-выводном пластиковом SOIC-корпусе.

Расположение и назначение выводов

для чего нужны часы реального времени ардуино

для чего нужны часы реального времени ардуино

Операции

Часы реального времени M41T56 работают как ведомое устройство на последовательной шине. Доступ получается реализацие условия запуска, за которым следует правильный адрес ведомого (D0h). К 64 байтам памяти, имеющимся в устройстве, можно получить последовательно доступ в следующем порядке:

Микросхема постоянно отслеживает VCC на выход за допустимые пределы. Если VCC падает ниже VPFD, устройство прекращает дальнейший доступ и сбрасывает адрес счетчика. Входы устройства не будут признаны в это время, для предотвращения записи ошибочных данных на устройство с отказом от системы допуска. Когда VCC падает ниже VBAT, устройство автоматически переключается на аккумулятор в режим с пониженным энергопотреблением для экономии заряда аккумулятора. После подключения внешнего питания, устройство переключается с батарейного питания VBAT на VCC и считывает входы при превышении VCC в вольтах над VPFD.

В микросхеме имеется программируемый генератор прямоугольных импульсов, позволяющий вырабатывать одну из четырех частот (1 гц, 4096 Гц, 8192 Гц или 32768 Гц).

Полная версия datasheet на M41T56

для чего нужны часы реального времени ардуино

Datasheet RTC M41T56

Category:Documents
Date:21.02.2015

Библиотеки Arduino для работы с RTC

Для работы с часами реального времени, в основе которых лежит микросхема DS1307 или аналогичные потребуются специальные библиотеки

для чего нужны часы реального времени ардуино

для чего нужны часы реального времени ардуино

Для установки скачиваем файлы и переносим их в папку с библиотеками. Также можно устанавливать библиотеки, используя менеджер библоитек. Подробнее об установке библиотек в среде Arduino IDE можно почитать здесь.

Подключение модуля MP1095 к Arduino

Для подключения к Arduino Mega 2560 различных устройств и датчиков я использую шилд под названием MEGA Sensor. И для использования шины I2C на нем выведены отдельные пины. Очень удобно, надо сказать.

Дешево китайский клон Arduino Mega 2560 можно купить, например, здесь. Недорогой аналог шилда, позволяющий подключать множество устройств к Arduino Mega продается здесь.

На плате Arduino Mega дополнительные пины шины I2C соответствуют аналоговым выводам 20 и 21 (тоже самое справедливо и для Arduino Due). Для Arduino Uno это выводы 4 и 5, 2 и 3 в случае Arduino Leonardo. Ориентироваться нужно на названия пинов SDA и SCL.

для чего нужны часы реального времени ардуино

для чего нужны часы реального времени ардуино

Подключите аналоговый 20 пин Arduino Mega (аналоговый 4 пин для других плат Arduino) к выводу SDA модуля и 21 пин (5 — для других плат) к выводу SCL.

Тестируем часы реального времени

Первым делом посмотрим тестовый скетч, который считывает время с модуля RTC один раз в секунду. Также выясним, что произойдет, если снять батарею и заменить ее, что заставляет часы реального времени сбросится. Прежде всего, снимем батарею при отключенном питании Arduino. Подождем 3 секунды и вернем батарею на место. Это приведет к сбросу RTC.

Выберем пример скетча из меню Arduino IDE Файл → Образцы → DS1307RTC → ReadTest и загрузим его в микроконтроллер

Источник


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

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