Не работают часы rtc

Подключение 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 достаточно вызвать один раз.

Источник

Подключаем и разбираемся с ошибками часов DS1302 для arduino

Приветствую вас пользователи nookery.ru! Я уже не один год время от времени создаю проекты на arduino, для себя и друзей. У меня как и у многих из вас, возникают различные вопросы и проблемы, и это нормально ведь главное учиться и не останавливаться на достигнутом. Не давно я достал свой старый проект и вспомнил сколько проблем у меня с ним возникло. Сейчас я опишу одну из них. В моем проекте использовались часы DS1302, с подключением которых у меня особо не возникло проблем. Пробежавшись по не скольким сайтам нашел схему, в основном она была одна и та же на всех сайта.

В моем проекте я подключил на цифровые выводы arduino 8 9 10, вы же можете их подключить как угодно, у меня они просто единственные остались свободные. Установил множество различных библиотек для работы с часами, но рабочими в моем случаи было только две, остальные были либо принципиально с другим вариантом подключения, либо модифицированные, что меня абсолютно не устраивало. Все хорошо, что хорошо кончается, кода я загрузил скетч:

К моему разочарованию я увидел не то что хотел, а именно каждую секунду выводилось время как и положено дата и время, но в моем случаи выводилось реальное время и еще какое то левое, 2000-00-00 00:00:00 покапавший в библиотеке оказалось что это время вшито внутри нее. Но это никак не помогло мне, так как реальное и фейковое время поочередно выводились у меня на дисплей каждую секунду. Причем в lcd дисплее выводились не время с часов DS1302, а какие то иероглифы, по поочередно. На многих сайтах упоминалось о том что час сломаны, плохая пропайка итд. Но я не опускал руки и все же нашел причину. Оказалось что все дело в не полной схеме, а точнее не хватала резистора 10 кОм на землю -5v. Которые снижали шум внутри цепи, и предотвращали вывод не верной информации с часов. Я накидал полную схему:

С этой схемой все стабилизировалось и часы DS1302 стали работать как надо. Ниже я выложил две библиотеки которые работали у меня, но написаны одна на C# другая на C++ так как же в них разные команды вывода информации, но в обоих есть скетч примеры в архиве с комментариями.

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

Мужик, спасибо большое. хотел было выбрасывать их уже)

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

В библиотеке перечислены пины:
DS1302(uint8_t ce_pin, uint8_t data_pin, uint8_t sclk_pin);
У Вас — перепутаны CLK и RST:
DS1302 rtc(8, 9, 10); //инициализация платы DS1302

И в течение!! — учите русский язык — отымённый предлог
В течении только у реки..

Золотой Вы человек! Спасибо за помощь в устранении проблемы с перепутанными пинами.

Александр, перепутанные порты не при чем. Учить русский — хорошо. А намерение помочь людям — важнее!
Надеюсь не допустил ошибок…)))

Большое спасибо — помогли!

Умный Александр — порты не при чем.

Собрал все по инструкции не работает выводил скажем нули, перевернул провода CLK и RST на плате и часы пошли.

Большое спасибо за статью! Два дня не мог разобраться что за чушь получаю на выходе с этих часов! :))) РЕЗИСТОР на 10 кОм. Теперь понимаю почему почти все модули реального времени используют аналоговые пины а не цифровые. Теперь буду смотреть как вывести время на 4 матрицы 8х8.

Реально резюк помог.
СПАСИБО.

А не подскажите как использовать в операторе if и часы и минуты одновременно

Конкретно по методам не подскажу, студии нет ардуина под рукой, но суть сводиться к следующему. Если минуты равны 20 и часы равны 5 то выполняем какое то действие в скобках.
if(минуты==20 && часы==5)
<
>

Огромное спасибо! Тоже уже выкидывать собирался.

Так же чуть не поступил 😀

До этого у людей работало, у вас нет?)

Подскажите пожалуйста ошибку. При компиляции выдает (‘hour’ was not declared in this scope)

#include
#include // подключение библиотеки
iarduino_RTC time(RTC_DS1302,8,6,7); // Задаем правильно название нашего модуля, а также указываем к каким цифровым пинам его подключаем(в нашем случае – 8,6,7)
#include // библиотека для устройств I2C
#include // подключаем библиотеку для дисплея
#define feed_period
LiquidCrystal_I2C LCD(0x27,16,2);
Servo servo1;

Источник

Часы реального времени, RTC (Trema-модуль)

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

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

Trema-модуль RTC (DS1307Z) построен на базе чипа DS1307Z, который снабжен: интерфейсом I2C (частота 100 кГц, адрес 0x68), 64 однобайтными регистрами (56 из которых доступны для хранения данных пользователя), компаратором (для переключения между основным и резервным питанием), блоком подзарядки аккумуляторной батареи. Модуль позволяет считывать: секунды, минуты, часы, дни, дни недели, месяц и год.

Trema-модуль RTC (DS3231) — построен на базе чипа DS3231, который снабжен: интерфейсом I2C, кварцевым резонатором на 32,768 кГц, датчиком температуры (для температурной компенсации кварцевого резонатора), регистрами данных, двумя будильниками, компаратором (контролирующим уровень заряда батареи), блоком подзарядки аккумуляторной батареи и выходами меандра (с фиксированной 32,768 кГц, и программируемой частотой 1,0 Гц — 8,192 кГц). Модуль позволяет устанавливать и считывать: секунды, минуты, часы, дни, дни недели, месяц, год и состояние. Считывать температуру и устанавливать: секунды, минуты, часы, и дни будильников

Видео

Спецификация для чипа DS1307Z:

  • Питание модуля: 5 В.
  • Напряжение питания батареи: 2,0 .. 3,5 В (номинально 3 В).
  • Потребляемый ток (в режиме ожидания): до 200 мкА.
  • Потребляемый ток (во время передачи данных): до 1,5 мА.
  • Потребляемый ток (во время резервного питания): 300 . 800 нА.
  • Тактовая частота шины I2C: до 100 кГц.
  • Уровень «0» на шине I2C: -0,5 . 0,8 В.
  • Уровень «1» на шине I2C: 2,2 . VСС 0,3 В.
  • Рабочая температура: 0 . 70 °C.
  • Габариты 30×30 мм.

Спецификация для чипа DS3231:

  • Питание модуля: 3,3 В или 5 В (оба напряжения входят в диапазон допустимых значений).
  • Потребляемый ток (в режиме ожидания): до 170 мкА.
  • Потребляемый ток (во время передачи данных): до 300 мкА.
  • Потребляемый ток (во время резервного питания, без передачи данных): до 3,5 мкА.
  • Тактовая частота шины I2C: до 400 кГц.
  • Уровень «0» на шине I2C: -0,3 . 0,3 * Vcc В.
  • Уровень «1» на шине I2C: 0,7 * Vcc . Vcc + 0,3 В.
  • Напряжение питания батареи: 2,3 .. 5,5 В (номинально 3,0 В).
  • Рабочая температура: 0 . 70 °C.
  • Точность хода: ±2 ppm (примерно ± 1 минута в год)
  • Габариты 30×30 мм.

Все модули линейки «Trema» выполнены в одном формате

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

Модуль подключается к аппаратной или программной шине I2C Arduino и имеет адрес 0x68.
Для удобства подключения, предлагаем воспользоваться TremaShield.

Модуль удобно подключать 3 способами, в зависимости от ситуации:

Способ — 1 : Используя проводной шлейф и Piranha UNO

Используя провода «Папа — Мама», подключаем напрямую к контроллеру Piranha UNO.

Способ — 2 : Используя Trema Set Shield

Модуль можно подключить к любому из I2C входов Trema Set Shield.

Способ — 3 : Используя проводной шлейф и Shield

Используя 4-х проводной шлейф, к Trema Shield, Trema-Power Shield, Motor Shield, Trema Shield NANO и тд.

При подключении RTC модулей на базе чипов DS1302, DS1307, DS3231 к другим платам, например, WEMOS D1 mini или WEMOS D1 mini Pro на базе микроконтроллера ESP8266, и т.д. перед подключением библиотеки iarduino_RTC нужно подключить библиотеку Wire, как это описано в разделе Wiki — расширенные возможности библиотек iarduino для шины I2C.

Питание:

  • При наличии основного (Vcc = 5 В) и резервного (Vbat = 3 В) источника питания, модули работают от основного источника питания.
  • При отсутствии резервного питания, модули работают от основного источника питания.
  • При отсутствии основного питания, модули работают от резервного (продолжает отсчитывать время, но не отвечает на запросы по шине I2C).
  • При отсутствии основного и резервного питания, модули отключаются и все их регистры сбрасываются.

Подробнее о модулях:

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

Преимуществом данной библиотеки является удобная реализация получения времени.

Вы можете получать время не только через переменные (для сек., мин., часов., . ), но и одной строкой, указав, что именно в ней должно быть.

Подробнее про установку библиотеки читайте в нашей инструкции..

Примеры:

Вывод времени в Монитор последовательного порта:

Установка времени модуля:

Получение времени в переменные и вывод их в монитор:

Установка системного времени в модуль (времени компьютера):

Будильник:

В библиотеке реализовано 7 функций: 3 основных (begin, settime, gettime) и 4 дополнительных (blinktime, period, settimeUnix, gettimeUnix).

Описание основных функций библиотеки:

Данная библиотека может использовать как аппаратную, так и программную реализацию шины I2C.
О том как выбрать тип шины I2C рассказано в статье Wiki — расширенные возможности библиотек iarduino для шины I2C.

Источник

Читайте также:  Сигнализация страж не могу настроить
Оцените статью