Для выполнения каких-либо задач, связанных с автоматизацией, часто нужно отсчитывать определенные временные промежутки. Иногда это делают с помощью отсчета определенного числа периодов тактового генератора или машинных циклов.
Однако хоть они и следуют с заданной частотой и чаще всего зависят от кварцевого резонатора, но при выполнении операций в режиме реального времени, а особенно если они привязаны к времени суток — происходит их смещение во времени. Чтобы решить эту проблему используют микросхемы часов реального времени или RTC.
Что это такое
RTC (real time clock, рус. часы реального времени) — это вид микросхем, предназначенных для отсчета времени в «реальных» единицах (секунды, минуты, часы и т.д.).
Они зависимы от источника питания, который может быть как внешним, в виде сменной батареи или литиевого аккумулятора, так и встроенным в корпус микросхемы (см. фото ниже). Тактовые сигналы для отчета времени могут быть получены с внешнего кварцевого резонатора , а реже — из питающей электросети.
Точность отсчета как раз и зависит от качества и точности настройки внутреннего генератора или внешнего кварцевого резонатора. При этом точность кварца и RTC соответственно, указывается не в герцах и не в процентах, а в «ppm», например ±12 ppm, ±50 ppm. Это расшифровывается, как Parts Per Million, т. е. количество миллионных частей от какой-то средней величины.
![Микросхема часов реального времени RTC Микросхема часов реального времени RTC](https://remontka.com/wp-content/uploads/electro_all/1566473446_11.jpg)
Часы реального времени могут быть реализованы на базе микроконтроллеров, однако, использование специальных чипов позволяет снизить энергопотребление, поскольку большинство микроконтроллеров даже в спящем режиме (или режиме пониженного энергопотребления) потребляют больше энергии чем специальные интегральные микросхемы (ИМС). RTC могут быть и встроенными в сам микроконтроллер (как в STM32).
Именно благодаря часам реального времени на вашем компьютере не сбивается время и дата после его отключения от сети, в этом случае они работают от батарейки CR2032, установленной в разъёме на материнской плате, она же и питает микросхему BIOS, чтобы не сбивались выставленные в нем настройки.
![Микросхема RTC со встроенным аккумулятором Микросхема RTC со встроенным аккумулятором](https://remontka.com/wp-content/uploads/electro_all/1566473414_1.jpg)
Классификация
Классификация микросхем RTC может отличаться от производителя к производителю. Наиболее распространены часы реального времени таких производителей, как: Maxim Integrated и STMicroelectronics. На рынке есть микросхемы и других компаний:
Intersil Corporation (д.к. Renesas Electronics);
Cymbet (линейка EnerChip™ RTC, отличительная особенность — встроенная твердотельная батарея);
NXP (RTC с календарем, с поддержкой протоколов I2C или SPI)
Zilog;
Epson;
ON semiconductor.
![Модуль часов реального времени с микросхемой DS1307 Модуль часов реального времени с микросхемой DS1307](https://remontka.com/wp-content/uploads/electro_all/1566473416_13.jpg)
Компания Maxim Integrated в качестве основного критерия для классификации микросхем RTC использует тип интерфейса управления, а именно:
1. Микросхемы RTC с последовательным интерфейсом управления: I2C, 3-wire, SPI.
2. С параллельным интерфейсом управления:
с мультиплексированной шиной «адрес/данные»;
с разделенными шинами адреса и данных;
с однопроводным интерфейсом 1-wire.
![Модуль часов реального времени Модуль часов реального времени](https://remontka.com/wp-content/uploads/electro_all/1566473703_111.jpg)
Можно классифицировать и по формату представления данных:
Календарный. В виде шаблона YY-MM-DD для даты и HH-MM-SS для времени время и другие их форматы;
Бинарный. В виде непрерывного двоичного счетчика единиц времени (секунд или их долей).
В зависимости от назначения микросхемы в схеме устройства и выбирается её тип, если ИМС с календарным представлением — она будет выполнять функцию обычных часов, а в случае с бинарным — для таких применений, как отчеты периодов времени, например срока действии лицензии, гарантийного срока или в устройства для учета чего-либо (например, электросчетчиках), например в каталоге Maxim Integrated они называются «Elapsed Time Counter» — счетчик прошедшего времени, пример такой ИМС — DS1683.
В других случаях микросхемы часов реального времени могут классифицироваться по функционалу или другим характеристикам:
Наличие встроенного генератора или необходимо использовать внешний генератор (кварцевый).
По наличию встроенного источника питания или возможности использования внешней батареи.
По типу и объёму внутренней памяти и протоколам связи с «внешним» миром (описывались выше).
По наличию фантомного (phantom) интерфейса для доступа к внутренним регистрам микросхемы (для настройки, установки режимов или считыванию значений).
Другие функции: сторожевой таймер (watchdog), будильника (alarm), секундный выход, контроль питания, возможность зарядки внешней батареи и пр.
И, наконец, многие производители классифицируют свои устройства по уровню энергопотребления, в среднем потребляемый ток лежит в пределах от 200 до 1500 нА, но может и выходить из этого диапазона в зависимости от конкретной ИМС и производителя.
Применение в радиолюбительской практике
Часы реального времени нередко используются в паре с такими популярными платформами для разработки и прототипирования, как семейство Arduino, и при разработке устройств на любых других микроконтроллерах, а также микрокомпьютерах семейства Raspberry Pi и подобные .
![Применение микросхем RTC в радиолюбительской практике Применение микросхем RTC в радиолюбительской практике](https://remontka.com/wp-content/uploads/electro_all/1566473365_2.jpg)
Сегодня промышленность выпускает модули с RTC, в виде отдельной печатной платы или шилда. Преимущество такого вида модулей состоит в том, что нет необходимости разводить плату и распаивать микросхему, обвязку, держатель батареи питания и прочее.
Их удобно использовать как для готовых устройств, так и в макетах — вы можете использовать перемычки со штекерами и разъёмами типа Dupont, если установить на модуль гребенку для их подключения, или припаять провода прям к пятакам на плате (смотрите — Советы по быстрой сборке схем на макетных платах ).
![Модули с RTC Модули с RTC](https://remontka.com/wp-content/uploads/electro_all/1566473379_3.jpg)
В среде ардуинщиков и современных самодельщиков наибольшее распространение получили микросхемы часов реального времени компании Maxim Integrated и модули на их базу, а именно:
DS1302;
DS1307;
DS3231.
Их отличия приведены в таблице ниже.
![Характеристики микросхем DS1302, DS1307 и DS3231 Характеристики микросхем DS1302, DS1307 и DS3231](https://remontka.com/wp-content/uploads/electro_all/1566473425_4.jpg)
Как видите, все из них поддерживают связь с микроконтроллером по шине I2C, а DS1302 и по SPI, хотя в даташите сказано «простой 3-проводной последовательный интерфейс, подходящий для большинства микроконтроллеров». И может подключаться не только к 10-13 пинам Ардуино , на которых назначены выводы шишны SPI, но и к други, установленным в скетче, схемы будут ниже. Даташиты на эти ИМС со всеми техническими данными прилагаем к статье.
Даташиты на микросхемы реального времени:
Arduino UNO поддерживает оба этих протокола, что вы можете увидеть на схеме ниже (помечено фиолетовым и серым цветом для SPI и I2C соответственно).
![Arduino UNO Arduino UNO](https://remontka.com/wp-content/uploads/electro_all/1566473368_5.jpg)
Как и Raspberry pi.
![Raspberry pi Raspberry pi](https://remontka.com/wp-content/uploads/electro_all/1566473460_6.jpg)
Это значит, что вы можете использовать любой из этих модулей с каждой из платформ. Внешние отличия модулей вы можете видеть на иллюстрации ниже, но компоновка платы может отличаться, смотрите на маркировку ИМС.
Для того чтобы 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, еще раз напомним, что выводы могут быть другими:
![Схема подключения DS1302 к Ардуино Схема подключения DS1302 к Ардуино](https://remontka.com/wp-content/uploads/electro_all/1566473417_7.png)
А вот линия данных DS1307 и DS3231 подключается только к пинам A5 и A4 Arduino UNO (для других ревизий и версий платы смотрите распиновку).
![Схема подключения RTC к ардуино Схема подключения RTC к ардуино](https://remontka.com/wp-content/uploads/electro_all/1566473365_8.jpg)
![Схема подключения RTC к ардуино Схема подключения RTC к ардуино](https://remontka.com/wp-content/uploads/electro_all/1566473415_9.jpg)
Заключение
Часы реального времени позволяют делать проекты, в которых какие-либо процессы должны запускаться по расписанию. Почти в любом относительно сложном проекте для практического использования есть такая потребность неважно это автоматическая система полива растений или же система управления технологическими процессами на производстве.
Благодаря дешевизне деталей и простоте подключения и программирования сейчас подобные системы может реализовать каждый, даже не имея углубленных знаний в электронике и микроконтроллерах. Но это не значит, что раз есть ардуино с присущей ей простотой, то не нужно изучать программную и аппаратную часть. Наоборот, знание железа и структуры кода позволит делать более быстрые и сложные программы, которые при этом занимают меньше места.
Информация, опубликованная на данном веб-сайте, представлена исключительно в ознакомительных целях, за применение этой информации администрация сайта ответственности не несет.