Цифровые часы на rtc ds12c887 и 8051

Цифровые часы на RTC DS12C887 и 8051

Данная статья представляет собой улучшенный вариант цифровых часов с использованием RTC DS12C887 и 8051 с установкой времени. В предыдущей статье мы обсуждали основные приемы получения данных из RTC DS12C887, используя микроконтроллер 8051 (AT89C51). Эта статья продолжение к вышеуказанной статье, которая знакомит вас с концепцией обработки прерываний для получения времени и другой информации от RTC DS12C887 .

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

RTC 12C887 имеет три прерывания, а именно:

  • Будильник, настроенный на время суток
  • По периоду времени
  • Конец цикла обновления часов

Более подробно о прерываниях можно прочитать в техническом описании на изделие. Исходный код программы свободно распространим и написан на С.

Все три прерывания работают независимо друг от друга.

Когда происходит прерывание DS12C887, выполняются следующие события:
1. Бит 7 и соответствующий флаг прерывания регистра С устанавливается равным лог. 1.
2. В ывод IRQ переключается на лог. 0, если бит разрешения соответствующего прерывания установлен в регистре B.

Шаги для обработки прерывания:
1. Подключите IRQ вывод RTC к внешнему аппаратному прерыванию микроконтроллера.
2. Инициализировать внешние прерывания микроконтроллера для получения прерываний от RTC.
3. Инициализировать прерывание RTC, которое будет использоваться, настроив соответствующие биты регистра B.
4. Когда возникает прерывание нужно читать значение Регистра C, чтобы проверить, какое прерывание произошло.

Регистры В и С используются для обработки прерываний. Чтобы включить нужное прерывание нужно установить биты 4-6 в регистре В.

Регистр С можно только читать, он содержит информацию о том какое прерывание произошло посредством установки (лог.1) соответствующего флага прерывания. Для более подробной информации можно обратиться к техническому описанию.

Когда происходит прерывание 7 ой бит регистра С устанавливается в лог. 1. Далее устанавливается флаг соответствующего прерывания. Далее просто считывается значение этого регистра. Регистр C обновляется каждый раз, независимо от того использовали ли мы прерывание или нет. В таком случае значение регистра С сохраняется. Если произошло первое прерывание, а потом второе то флаг первого прерывания сохранится в регистре.

Вывод 19 (выход прерывания IRQ) RTC используется для указания на прерывание. На выводе лог. 0 если:
1. Любое из трех прерываний происходит.
2. Бит разрешения соответствующего прерывания установлен в Регистре B.

Этот вывод может быть использован для обеспечения внешнего аппаратного прерывания микроконтроллеру. Этот вывод мультиплексирован ко всем трем прерываниям, т.е. лог.0, когда любое из прерываний происходит и, следовательно, означает, что прерывание произошло.Однако, чтобы определить, какое прерывание произошло надо считать значение регистра С. На IRQ будет лог. 0, пока на флаге прерывания лог.1 в регистре С и соответствующих разрешающих битах регистра B. После того, как прерывание произошло, вывод IRQ нужно сменить состояние, чтобы часы работали дальше. Вывод IRQ может быть установлен с помощью одного из двух способов:
1. Подачей лог. 0 на вывод сброса очистит состояние IRQ.
2. Читая регистр C, вывод прерываний будет очищен с помощью процессора.

В коде мы использовали второй метод сброса IRQ. Читая регистр C узнаем, какие прерывания произошли.

Подключение DS12C887 к микроконтроллеру показано на схеме. В этой статье используется прерывание – конец цикла обновления часов. Каждый раз, когда приходит прерывание, время увеличивается на одну секунду. Результат отображается на ЖК-дисплее. Часы представлены в этой статье также имеют установку времени. Часы используют 2-е внешнее прерывание микроконтроллера AT89C51 для установки времени. Пользователь может установить время, нажав переключатель, подключенный к контакту 13 микроконтроллера, который является прерыванием 2. Часы и минуты можно установить с помощью кнопки на выводе 5 и 6 контроллера AT89C51. После того, как время установили, пользователю необходимо нажать на старт (вывод 8 контроллера), чтобы запустить часы. Код программы для часов RTC DS12C887 + 8051 написан на языке C.

Делаем электронные часы на Ардуино своими руками

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

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

Соединение всех электронных компонентов проводится на специальной контактной («беспаячной») макетной плате, что исключает риск получения ожогов, порезов и других травм — поэтому заниматься с конструктором Arduino можно и вместе с детьми. А наглядный способ представления принципиальной схемы поможет не ошибиться при сборке устройства.

Шаг 1. Список компонентов

Чтобы собрать простые часы на светодиодных матрицах вам потребуется всего несколько дешёвых компонентов:

  • платформа Arduino. Подойдут самые простые модели — Arduino Nano или Micro;
  • контактная макетная плата;
  • соединительные провода для макетной платы;
  • модуль часов реального времени Adafruit DS3231;
  • светодиодный матричный модуль 32×8 MAX7219;
  • две кнопки.

Также понадобится персональный компьютер и USB—mini-USB кабель для загрузки программы управления в память Arduino IDE. Вот и всё — паяльник, щипцы для снятия изоляции, монтажные ножи и прочие профессиональные инструменты не нужны: все операции выполняются руками. Разве что в некоторых случаях удобнее использовать пинцет, но можно обойтись и без него.

Детали для сборки электронных часов на Arduino

Шаг 2. Сборка электронной схемы

Схема электронных часов с индикацией на светодиодах с применением Arduino даже для неопытных радиолюбителей покажется довольно простой. Для сборки требуется всего несколько проводников. Таблица подключений:

Модуль Arduino → светодиодная матрица 32×8 MAX7219

Модуль Arduino → часы реального времени Adafruit DS3231

Модуль Arduino → кнопки

Второй вывод кнопок соединяется с землёй GND.

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

Схема электрических подключений макетной платы

Два ряда (1 и 4) с обеих сторон замкнуты горизонтально — обычно они используются как линия питания +5V и земля GND. Все внутренние контакты (2 и 3) замкнуты вертикально. При этом монтажная плата как вертикально, так и горизонтально разделена на две независимые друг от друга симметричные части. Это позволяет, например, собрать два разных устройства на одной плате.

Схема электронных часов с индикацией на светодиодах, а также расположение элементов на монтажной плате представлена на иллюстрации:

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

Внешний вид собранного устройства

Шаг 3. Прошивка Arduino

После того как сборка и проверка схемы завершена, можно приступать к загрузке управляющей программы (или «прошивки») в память Arduino.

Интерфейс среды разработки Arduino IDE

Для этого нужно установить бесплатную официальную среду разработки — Arduino IDE [https://www.arduino.cc/en/Main/Software]. Также вам потребуется исходный код проекта, который вы можете скачать ниже в архиве со всеми библиотеками и скетчем, а если вам нужен просто скетч – его можно скопировать отдельно:

Теперь для завершения работы над устройством потребуется выполнить лишь ряд простых операций:

  1. подсоедините Arduino к USB-порту компьютера. Если модуль подключается впервые, то необходимо будет дождаться определения устройства операционной системой и установки драйвера;
  2. скопируйте содержимое папки libraries из архива в одноимённую папку в каталоге Arduino IDE;
  3. запустите средство разработки Arduino IDE;
  4. настройте тип Arduino в соответствии с имеющимся у вас модулем. Так, если вы используете Arduino Nano, в меню необходимо выбрать Tools -> Board: “Arduino Nano”. Также убедитесь в том, что модель процессора соответствует микроконтроллеру на вашей плате:

Выбор модели Arduino в среде Arduino IDE

  • откройте исходный код (файл clock_8x32.ino): File -> Open. Arduino IDE предложит вам автоматически создать отдельную директорию под проект — ответьте утвердительно;
  • загрузите программу в память Arduino: Sketch -> Upload.
  • Компиляция программного кода и дальнейшая загрузка в память микроконтроллера займёт некоторое время, обычно не более одной минуты. Об успешном завершении операции будет сообщено в консоли Arduino IDE. После чего остаётся лишь перезагрузить Arduino с помощью кнопки Reset на устройстве — простые часы на светодиодных матрицах готовы!

    Готовые часы на Arduino

    Настройка часов осуществляется с помощью двух кнопок. Устройство поддерживает 12- и 24-часовой формат вывода времени, показ даты и дня недели, отображение времени с секундами и без. Также имеется возможность менять яркость свечения светодиодов.

    Вариант корпуса для светодиодных часов

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

    Микросхемы часов реального времени RTC – назначение, виды и примеры использования

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

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

    Что это такое

    RTC (real time clock, рус. часы реального времени) — это вид микросхем, предназначенных для отсчета времени в «реальных» единицах (секунды, минуты, часы и т.д.).

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

    Точность отсчета как раз и зависит от качества и точности настройки внутреннего генератора или внешнего кварцевого резонатора. При этом точность кварца и RTC соответственно, указывается не в герцах и не в процентах, а в «ppm», например ±12 ppm, ±50 ppm. Это расшифровывается, как Parts Per Million, т. е. количество миллионных частей от какой-то средней величины.

    Часы реального времени могут быть реализованы на базе микроконтроллеров, однако, использование специальных чипов позволяет снизить энергопотребление, поскольку большинство микроконтроллеров даже в спящем режиме (или режиме пониженного энергопотребления) потребляют больше энергии чем специальные интегральные микросхемы (ИМС). RTC могут быть и встроенными в сам микроконтроллер (как в STM32).

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

    Классификация

    Классификация микросхем RTC может отличаться от производителя к производителю. Наиболее распространены часы реального времени таких производителей, как: Maxim Integrated и STMicroelectronics. На рынке есть микросхемы и других компаний:

    Intersil Corporation (д.к. Renesas Electronics);

    Cymbet (линейка EnerChip™ RTC, отличительная особенность — встроенная твердотельная батарея);

    NXP (RTC с календарем, с поддержкой протоколов I2C или SPI)

    Компания Maxim Integrated в качестве основного критерия для классификации микросхем RTC использует тип интерфейса управления, а именно:

    1. Микросхемы RTC с последовательным интерфейсом управления: I2C, 3-wire, SPI.

    2. С параллельным интерфейсом управления:

    с мультиплексированной шиной «адрес/данные»;

    с разделенными шинами адреса и данных;

    с однопроводным интерфейсом 1-wire.

    Можно классифицировать и по формату представления данных:

    Календарный. В виде шаблона YY-MM-DD для даты и HH-MM-SS для времени время и другие их форматы;

    Бинарный. В виде непрерывного двоичного счетчика единиц времени (секунд или их долей).

    В зависимости от назначения микросхемы в схеме устройства и выбирается её тип, если ИМС с календарным представлением — она будет выполнять функцию обычных часов, а в случае с бинарным — для таких применений, как отчеты периодов времени, например срока действии лицензии, гарантийного срока или в устройства для учета чего-либо (например, электросчетчиках), например в каталоге Maxim Integrated они называются «Elapsed Time Counter» — счетчик прошедшего времени, пример такой ИМС — DS1683.

    В других случаях микросхемы часов реального времени могут классифицироваться по функционалу или другим характеристикам:

    Наличие встроенного генератора или необходимо использовать внешний генератор (кварцевый).

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

    По типу и объёму внутренней памяти и протоколам связи с «внешним» миром (описывались выше).

    По наличию фантомного (phantom) интерфейса для доступа к внутренним регистрам микросхемы (для настройки, установки режимов или считыванию значений).

    Другие функции: сторожевой таймер (watchdog), будильника (alarm), секундный выход, контроль питания, возможность зарядки внешней батареи и пр.

    И, наконец, многие производители классифицируют свои устройства по уровню энергопотребления, в среднем потребляемый ток лежит в пределах от 200 до 1500 нА, но может и выходить из этого диапазона в зависимости от конкретной ИМС и производителя.

    Применение в радиолюбительской практике

    Часы реального времени нередко используются в паре с такими популярными платформами для разработки и прототипирования, как семейство Arduino, и при разработке устройств на любых других микроконтроллерах, а также микрокомпьютерах семейства Raspberry Pi и подобные.

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

    Их удобно использовать как для готовых устройств, так и в макетах — вы можете использовать перемычки со штекерами и разъёмами типа Dupont, если установить на модуль гребенку для их подключения, или припаять провода прям к пятакам на плате (смотрите – Советы по быстрой сборке схем на макетных платах).

    В среде ардуинщиков и современных самодельщиков наибольшее распространение получили микросхемы часов реального времени компании Maxim Integrated и модули на их базу, а именно:

    Их отличия приведены в таблице ниже.

    Как видите, все из них поддерживают связь с микроконтроллером по шине I2C, а DS1302 и по SPI, хотя в даташите сказано «простой 3-проводной последовательный интерфейс, подходящий для большинства микроконтроллеров». И может подключаться не только к 10-13 пинам Ардуино, на которых назначены выводы шишны SPI, но и к други, установленным в скетче, схемы будут ниже. Даташиты на эти ИМС со всеми техническими данными прилагаем к статье.

    Даташиты на микросхемы реального времени:

    Arduino UNO поддерживает оба этих протокола, что вы можете увидеть на схеме ниже (помечено фиолетовым и серым цветом для SPI и I2C соответственно).

    Как и Raspberry pi.

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

    Для того чтобы Arduino работала с RTC нужна библиотека, но так как её нет в стандартном пакете Arduino IDE, её нужно скачать. В сети есть библиотеки для каждой из рассмотренных ИМС, а есть и универсальные, что выбрать, и какая будет удобнее решать уже вам.

    Универсальную библиотеку прилагаем – iarduino_rtc.zip. Отметим, что в ней задаётся вручную тип ИМС, а для DS1302 и выводы, к которым она подключена:

    include // Подключаем библиотеку
    iarduino_RTC time(RTC_DS3231); // Создаём объект time, для ИМС DS3231
    iarduino_RTC time(RTC_DS1307); // ДЛЯ DS1307
    iarduino_RTC time(RTC_DS1302, RST, CLK, DAT); // для DS1302.
    // Вместо RST, CLK и DAT номера пинов ардуино,
    // к которым подключены соответствующие пины модуля часов

    Схема для DS1302, еще раз напомним, что выводы могут быть другими:

    А вот линия данных DS1307 и DS3231 подключается только к пинам A5 и A4 Arduino UNO (для других ревизий и версий платы смотрите распиновку).

    Заключение

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

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

    Arduino.ru

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

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

    Пообещали подогнать несколько вот таких часов Dallas DS1287 с очень древних материнок, подскажите может кто уже пробовал подлючать что то подобное? Если пробовали поделитесь пожалуйста опытом.

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

    Sanyaba, в них батарейка залита компаундом. Думаете ещё жива?

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

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

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

    Ног только много занимает.

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

    Ног только много занимает.

    Спасибо за ответ.

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

    А в чем необходимость часов?

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

    Проблема в том что они не i2c а паралельный интерфейс.

    Я думаю лучше поискать i2c часы – их тоже полно где ставят.

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

    Я думаю лучше поискать i2c часы – их тоже полно где ставят.

    Например, в списанных кассовых аппаратах. А можно попробовать

    шину AD подключить через PCF8574.

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

    Можно на вакуумных лампах собрать. Но в чём смысл? Извращение ради извращения?

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

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

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

    kisttan ” так есть же стандартные шилды с часами и не дорого. “

    ПОСТ 2: у нас в Донецке больше года уже не работает почтовое сообщение .

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

    Ок, я не прав. Исходного кода такого не видел, нашел только как меняют батарейку в такой микросхеме.

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

    Наш аналог КР512ВИ1, её описание в “Радиоежегодник 1989”

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

    Так и не ясно что собирает автор и чем его миллис не устраивают.

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

    Купил у китайцев часы реального времени DS3231. Подключил к ардуинке. Установил по часам точного времени, которые в яндексе выдают точное московское с секундами. Установить удалось с разницей в 2 секунды. Вот уже почти 3 месяца ходят, показывают дату, время, день недели и температуру. Периодечески ради интереса проверяю разницу с яндексовскими часами. Как она была 2 секунды, так и есть. Я фигею! Неужели так точно могут идти часы?

    Заказал еще 2 штуки.

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

    DS3231 – высокоточные часы реального времени (RTC) со встроенными I2C интерфейсом, термокомпенсированным кварцевым генератором (TCXO) и кварцевым резонатором.

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

    Например, в списанных кассовых аппаратах. А можно попробовать

    Сейчас можно и не списанные брать. Извините за флуд.

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

    Например, в списанных кассовых аппаратах. А можно попробовать

    Сейчас можно и не списанные брать. Извините за флуд.

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

    Sanyaba на мотодроме у Пашки есть и DS1307 , и DS3231 .Был на прошлой неделе и спрашивал . цены , правда трехзначные , но есть в наличии.

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

    Купил у китайцев часы реального времени DS3231. Подключил к ардуинке. Установил по часам точного времени, которые в яндексе выдают точное московское с секундами. Установить удалось с разницей в 2 секунды.

    Если к ардуине подключить еще модуль enc28j60, то время без всякого яндекса можно установить с точностью до миллисекунды с серверов точного времени в интернете. У меня так комнатные часы работают.

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

    Оживлю темку – подключены к ардуине ds1287. Время настроено, часики тикают. Однако обнаружил за чуть менее чем прошедший месяц отставание почти на 15 минут. Это как-то лечится, кроме как вручную подправлять?

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

    Оживлю темку – подключены к ардуине ds1287. Время настроено, часики тикают. Однако обнаружил за чуть менее чем прошедший месяц отставание почти на 15 минут. Это как-то лечится, кроме как вручную подправлять?

    Если есть доступ в инет можно с ntp серваками синхронизировать.

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

    Но лучше плюнуть и поставить DS3231. Идет уже 3 месяца точно.

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

    Оживлю темку – подключены к ардуине ds1287. как вручную подправлять?

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

    Ошибочка. У меня модуль DS3231. Почему отстают часы?

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

    Ошибочка. У меня модуль DS3231. Почему отстают часы?

    Теперь при отключении и включении точное время сохраняется. Специально несколько раз отключал на длительное время. Удалось установить время на модуле секунда в секунду по этим часам http://radioclock.narod.ru/ Наблюдаю 3 дня. Идут точно. Не ушли ни на секунду.

    Еще одни часики, которые я собрал на макетке, тоже идут 3дня. Установил время на них с разницей 2 секунды. Разница не изменилась.

    За часиками, собранным на модуле ранее, наблюдал с ноября прошлого года. Ход отличный.

    Это дает мне право считать, что эти часики просто прекрасны! 🙂

    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, а затем открыть «Мониторинг порта»

    Мир микроконтроллеров

    Популярное

    • Устройство и программирование микроконтроллеров AVR для начинающих – 143
    • Трехканальный термостат, терморегулятор, таймер на ATmega8 – 71
    • Двухканальный термостат, терморегулятор на ATmega8 – 67

    Часы на микроконтроллере AVR с DS1307

    Простые электронные часы на микроконтроллере ATtiny26,
    с использование микросхемы часов реального времени DS1307

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

    Конструкция собрана на микроконтроллере ATTiny26 и часов реального времени DS1307. В качестве индикатора текущего времени использован четырехразрядный семисегментный светодиодный индикатор (ультраяркий, голубого цвета свечения, что неплохо смотрится в темное время, и, заодно, часы играют роль ночника). Управление часами происходит двумя кнопками. Благодаря использованию микросхемы часов реального времени DS1307, алгоритм программы получился довольно простым. Общение микроконтроллера с часами реального времени происходит по шине I2C, и организованно программным путем.

    К сожалению, в схеме есть ошибка:
    — выводы МК к базам транзисторов нужно подключать:
    РВ0 к Т4, РВ1 к Т3, РВ2 к Т2, РВ3 к Т1
    или поменять подключение коллекторов транзисторов к разрядам индикатора:
    Т1 к DP1 ….. Т4 к DP4

    Детали, используемые в схеме часов:

    ♦ микроконтроллер ATTiny26:

    ♦ часы реального времени DS1307:

    ♦ 4-разрядный семисегментный светодиодный индикатор – FYQ-5641UB -21 с общим катодом (ультраяркий, голубого цвета свечения):

    ♦ кварц 32,768 кГц, с входной емкостью 12,5 пф (можно взять с материнской платы компьютера), от этого кварца зависит точность хода часов:

    ♦ все транзисторы — NPN-структуры, можно применить любые (КТ3102, КТ315 и их зарубежные аналоги), я применил ВС547С
    ♦ микросхемный стабилизатор напряжения типа 7805
    ♦ все резисторы мощностью 0,125 ватт
    ♦ полярные конденсаторы на рабочее напряжение не ниже напряжения питания
    ♦ резервное питание DS1307 – 3 вольтовый литиевый элемент CR2032

    Для питания часов можно использовать любое ненужное зарядное устройство сотового телефона (в этом случае, если напряжение на выходе зарядного устройства в пределах 5 вольт ± 0,5 вольта, часть схемы — стабилизатор напряжения на микросхеме типа 7805, можно исключить)
    Ток потребления устройством составляет — 30 мА.
    Батарейку резервного питания часов DS1307 можно и не ставить, но тогда, при пропадании напряжения в сети, текущее время придется устанавливать заново.
    Печатная плата устройства не приводится, конструкция была собрана в корпусе от неисправных механических часов. Светодиод (с частотой мигания 1 Гц, от вывода SQW DS1307) служит для разделения часов и минут на индикаторе.

    Установки микроконтроллера заводские: тактовая частота — 1МГц, FUSE-биты трогать не надо.

    Алгоритм работы часов (в Algorithm Builder):

    1. Установка указателя стека
    2. Настройка таймера Т0:
    — частота СК/8
    — прерывания по переполнению (при такой предустановленной частоте вызов прерывания происходит каждые 2 миллисекунды)
    3. Инициализация портов (выводы РА0-6 и РВ0-3 настраиваются на выход, РА7 и РВ6 на вход)
    4. Инициализация шины I2C (выводы РВ4 и РВ5)
    5. Проверка 7-го бита (СН) нулевого регистра DS1307
    6. Глобальное разрешение прерывания
    7. Вход в цикл с проверкой нажатия кнопки

    При первом включении, или повторном включении при отсутствии резервного питания DS307, происходит переход в первоначальную установку текущего времени. При этом: кнопка S1 – для установки времени, кнопка S2 – переход к следующему разряду. Установленное время – часы и минуты записываются в DS1307 (секунды устанавливаются в ноль), а также вывод SQW/OUT (7-й вывод) настраивается на генерацию прямоугольных импульсов с частотой 1 Гц.
    При нажатии кнопки S2 (S4 — в программе) происходит глобальный запрет прерываний, программа переходит в подпрограмму коррекции времени. При этом, кнопками S1 и S2 устанавливаются десятки и единицы минут, затем, с 0 секунд, нажатием кнопки S2 происходит запись уточненного времени в DS1307, разрешение глобального прерывания и возвращение в основную программу.

    Часы показали хорошую точность хода, уход времени за месяц — 3 секунды.
    Для улучшения точности хода, кварц рекомендуется подключать к DS1307, как указано в даташите:

    Программа написана в среде «Algorithm Builder».
    Вы можете, на примере программы часов, ознакомиться с алгоритмом общения микроконтроллера с другими устройствами по шине I2C (в алгоритме подробно прокомментирована каждая строчка).

    Фотография собранного устройства и печатная плата в формате .lay от читателя сайта Анатолия Пильгук, за что ему огромное спасибо!

    В устройстве применены: Транзисторы — СМД ВС847 и ЧИП резисторы

    Приложения к статье:

    Схема часов в SPL7 (42,9 KiB, 3 375 hits)

    Программа часов в “Algorithm Builder” (6,3 KiB, 4 323 hits)

    Программа часов в HEX коде (3,1 KiB, 2 760 hits)

    Даташит DS1307 на русском языке (312,1 KiB, 6 077 hits)

    Второй вариант программы часов в АБ (для тех у кого нескачивается верхний)

    Программа часов в АБ (11,4 KiB, 2 050 hits)

    Печатная плата часов от Анатолия Пильгук в формате .lay (61,2 KiB, 736 hits)

    (15 голосов, оценка: 4,80 из 5)

    Читайте также:  Дополнительные функции для мотоцикла
    Рейтинг
    ( Пока оценок нет )
    Загрузка ...
    Adblock
    detector