Wire arduino ds1307

Подключение RTC часы реального времени DS1302, DS1307, DS3231 к Arduino

Для подключения RTC часов реального времени DS1302, DS1307, DS3231, была разработана универсальная библиотека.

Подключение:

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

RTC DS1307 Arduino UNO
GND GND
VCC +5V
SDA A4
SCL A5

Подключение DS1302 к Arduino :

RTC DS1302 Arduino UNO
GND GND
VCC +5V
RST 10 (Можно изменить на другие в скетче)
CLK 13 (Можно изменить на другие в скетче)
DAT 12 (Можно изменить на другие в скетче)

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

RTC DS3231 Arduino UNO
GND GND
VCC +5V
SDA A4
SCL A5

Программа:

В зависимости от того какой модуль Вы подключаете, необходимо в программе указать

Для DS1307:

Для DS1302 :

Для DS3231 :

Пример установки текущего времени в RTC модуль (DS1307):

Пример считывания текущего времени с RTC модуля (DS1307) и вывод в «Последовательный порт» :

Преимущества библиотеки:

— библиотека имеет внутренние функции аппаратной обработки протоколов передачи данных I2C и SPI, а следовательно не требует подключения дополнительных библиотек, но и не конфликтует с ними, если таковые всё же подключены.

— библиотека имеет внутренние функции программой обработки протокола передачи данных 3-Wire

— для инициализации модуля необходимо вызвать функцию begin с названием модуля.

— подключение модулей осуществляется к аппаратным выводам arduino используемой шины (за исключением 3-Wire)

— простота установки и чтения времени функциями settime и gettime

функция settime может устанавливать дату и время, как полностью, так и частично (например только минуты, или только день, и т.д.)

функция gettime работает как функция date в php, возвращая строку со временем, но если её вызвать без параметра, то функция ничего не вернёт, а время можно прочитать из переменных в виде чисел.

— библиотека расширяемая, то есть для того, чтоб она работала с новым модулем, нужно указать параметры этого модуля в уже существующих массивах файла RTC.h (тип шины, частота шины в кГц, режимы работы, адреса регистров и т.д.), как всё это сделать, описано в файле extension.txt

Таким образом добавив новый модуль в библиотеку, мы лишь увеличим область занимаемой динамической памяти на

36 байт, при этом не затронув область памяти программ.

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

— при работе с модулем DS1302 не нужны никакие резисторы на выводе GND (которые нужны для его работы с другими библиотеками этого модуля), это достигнуто тем, что для шины 3-Wire указана конкретная частота 10кГц, не зависимо от частоты CPU arduino.

— в библиотеке реализована еще одна не обязательная функция period, принимающая в качестве единственного аргумента — количество минут (от 1 до 255)

если в течении указанного времени была вызвана функция gettime несколько раз, то запрос к модулю по шине будет отправлено только в первый раз, а ответом на все остальные запросы будет сумма времени последнего ответа модуля и времени прошедшего с этого ответа.

Функцию period достаточно вызвать один раз.

Источник

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

Источник

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

В статье вы познакомитесь с механизмом подключения часов реального времени DS1307 к Arduino. Этот модуль для обзора мы выбрали не случайно – он популярен, необычайно легок в сборке и использовании, доступен по цене (продается буквально в каждом магазине, онлайн в том числе). Кроме того, он может функционировать без замены батареи на протяжении нескольких лет (в зависимости от производителя микроплаты).

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

Технические параметры прибора таковы:

  • напряжение питания: 5 V;
  • рабочая температура: – 40℃ … + 85℃;
  • память: 56 байт;
  • тип интерфейса: I2C (двухпроводной);
  • 24-х и 12-ти часовой режимы;
  • размеры: 28мм х 25мм х 8 мм.

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

Модуль сочетается со многими платами расширения Ардуино, на которых питание логики равно 5 В. Для реализации нашего проекта понадобится следующее «железо»:

  • контроллер Arduino UNO
  • USB -кабель (для подключения к персональному компьютеру)
  • RTC DS1307
  • соединительный провод (перемычки)

Мы подключили RTC модуль DS1307 к Ардуино. Теперь можно приступать к программированию. Для корректного компилирования прошивки понадобятся библиотеки – DS1307RTC и TimeLib. Их можно отыскать и скачать в Интернете, а затем просто добавить в IDE (директория папки libraries).
Заливаем скетч для установки и проверки времени:
Проверяем себя — открываем монитор последовательного порта (клавиши Ctrl+Shift+M). Там должно отобразиться что-то вроде текста: configured Time=16:38:47 Это означает, что вы все сделали правильно!

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

Источник

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

Микросхема DS1307 – экономичные часы реального времени с последовательным интерфейсом. Включает в себя часы-календарь с представлением информации в двоично-десятичном коде и 56 байт энергонезависимой памяти NV SRAM. Адрес и данные передаются по двунаправленной двухпроводной последовательной шине. Информация о реальном времени и календаре представляется в секундах минутах, часах, дне, дате, месяце и годе. Если текущий месяц содержит менее 31 дня, то микросхема автоматически определит количество дней в месяце с учетом високосного года. Часы работают как в 24-часовом, так и в 12-часовом режимах с индикатором AM/PM. DS1307 имеет встроенную схему наблюдения за питанием, которая обнаруживает перебои питания и автоматически переключается на батарею.

Характеристики

  • часы реального времени (RTC) отсчитывают секунды, минуты, часы, дату месяца, месяц, день
  • недели и год с компенсацией високосного года, действительной до 2100 года
  • 56-байтовое энергонезависимое ОЗУ с питанием от батареи для хранения пользовательских данных
  • двухпроводной последовательный интерфейс
  • программируемый выходной сигнал с прямоугольными импульсами (для тактирования внешних устройств)
  • автоматическое обнаружение падения напряжение и схема переключения на батарею
  • потребление менее 500 нА в режиме батарейной поддержки при работающем тактовом генераторе
  • промышленный диапазон температур: от – 40 °C до + 85 °C
  • микросхема производится в 8-выводных корпусах DIP и SOIC.

Назначение выводов

  • Vcc – источник питания +5 В
  • X1, X2 – подключение кварцевого резонатора 32.768 кГц
  • VBAT – вход батареи +3 В
  • GND – общий минус
  • SDA – последовательные данные
  • SCL – последовательные синхроимпульсы
  • SQW/OUT – выходной сигнал с прямоугольными импульсами

Модуль с часами DS1307

Небольшой модуль на микросхеме DS1307ZN+ для проектов на микроконтроллерах, которые не имеют встроенной функции RTC. Имеет память EEPROM объемом 4 Кб, сохраняющую информацию при отключении всех видов питания. Память и часы связаны интерфейсом I2C. Наличие собственной памяти позволяет регистрировать данные событий, происходящих несколько раз в сутки, например, изменение температуры. На плате имеется место для монтажа датчика температуры DS18B20 (в комплект поставки не входит). Данные в дальнейшем считываются из памяти модуля.

Внешний вид модуля RTC 1307

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

Модуль имеет необходимые подтягивающие резисторы, поэтому не нужно добавлять свои собственные. Как и все устройства, подключенные к шине I²C, постарайтесь свести к минимуму длину проводов линий SDA и SCL.

Подключите выводы SCL к A5, SDA к A4 Arduino, вывод Vcc — к 5V, GND — к GND.

Схема подключения RTC DS1307 к Arduino Uno

Программирование

Загрузите демонстрационный скетч, который выведет текущее время и дату в Монитор порта. Значения необходимо предварительно установить в функции setDS3231time (строка 19 программы ). Вставьте значения от секунды до года и часы запустятся с этого времени. Формат установочных данных :

Источник

Adblock
detector