Audytor.ru

Теплоснабжение "Аудитор"
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Микроконтроллеры Процессоры, проекты, программирование

pcf8583OSC1 – вход внешнего генератора 32768Гц.
OSC2 — выход генератора.
A0 – Линия выбора адреса
Vss – общий провод питания
SDA – линия данных шины I2C
SCL – линия тактового сигнала шины I2C
INT – выход прерывания для внешнего устройства. Требует подключения подтягивающего резистора.
Vdd– линия питания

Фактически микросхема PCF8583 представляет собой статическое ОЗУ, емкостью 256 байт, у которого первые 16 байт являются регистрами специального назначения. Назначение некоторых регистров зависит от режима работы микросхемы. Режим задается в регистре состояния имеющем адрес 00h. Все числа в регистрах часов по умолчанию хранятся в BCD формате.

Тревога. Доли секунд

Введение

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

Вот здесь и будет удобно использование микросхемы RTC (Real Time Clock, часов реального времени). Эта микросхема с батарейкой 3В или каким-либо другим источником питания следит за временем и датой. Часы/календарь обеспечивают информацию о секундах, минутах, часах, дне недели, дате, месяце и годе. Микросхема корректно работает с месяцами продолжительностью 30/31 день и с високосными годами. Связь осуществляется через шину I2C (шина I2C в данной статье не обсуждается).

Если напряжение на главной шине питания Vcc падает ниже напряжения на батарее Vbat, RTC автоматически переключается в режим низкого энергопотребления от резервной батареи. Резервная батарея – это обычно миниатюрная батарея (в виде «монетки», «таблетки») напряжением 3 вольта, подключенная между выводом 3 и корпусом. Таким образом, микросхема по-прежнему будет следить за временем и датой, и когда на основную схему будет подано питание, микроконтроллер получит текущие время и дату.

В этом проекте мы будем использовать DS1307. У этой микросхемы вывод 7 является выводом SQW/OUT (выходом прямоугольных импульсов). Вы можете использовать этот вывод для мигания светодиодом и оповещения микроконтроллера о необходимости фиксации времени. Мы будем делать и то, и другое. Ниже приведено объяснение работы с выводом SQW/OUT.

Читайте так же:
Мосэнерго требует поменять счетчик

Для управления работой вывода SQW/OUT используется регистр управления DS1307.

Ригистр управления DS1307

Бит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0
OUTSQWERS1RS0

Бит 7: управление выходом (OUT) Этот бит управляет выходным уровнем вывода SQW/OUT, когда выход прямоугольных импульсов выключен. Если SQWE = 0, логический уровень на выводе SQW/OUT равен 1, если OUT = 1, и 0, если OUT = 0. Первоначально обычно этот бит равен 0. Бит 4: включение прямоугольных импульсов (SQWE) Этот бит, когда установлен в логическую 1, включает выходной генератор. Частота прямоугольных импульсов зависит от значений битов RS0 и RS1. Когда частота прямоугольных импульсов настроена на значение 1 Гц, часовые регистры обновляются во время спада прямоугольного импульса. Первоначально обычно этот бит равен 0. Биты 1 и 0: выбор частоты (RS[1:0]) Эти биты управляют частотой выходных прямоугольных импульсов, когда выход прямоугольных импульсов включен. Следующая таблица перечисляет частоты прямоугольных импульсов, которые могут быть выбраны с помощью данных битов. Первоначально обычно эти биты равны 1.

Выбор частоты прямоугольных импульсов и уровня на выводе SQW/OUT микросхемы DS1307

RS1RS0Частота импульсов и уровень на выходе SQW/OUTSQWEOUT
1 Гц1x
14,096 кГц1x
18,192 кГц1x
1132,768 кГц1x
xx
xx11

Данная таблица поможет вам с частотой:

Выбор частоты прямоугольных импульсов DS1307

Частота импульсовБит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0
1 Гц1
4,096 кГц11
8,192 кГц11
32,768 кГц111

Если вы подключили светодиод и резистор к выводу 7 и хотите, чтобы светодиод мигал с частотой 1 Гц, то должны записать в регистр управления значение 0b00010000. Если вам нужны импульсы 4,096 кГц, то вы должны записать 0b000100001. В этом случае, чтобы увидеть импульсы вам понадобится осциллограф, так как светодиод будет мигать так быстро, что будет казаться, что он светится постоянно. Мы будем использовать импульсы с частотой 1 Гц.

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

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

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

Модуль часов подключается к контактам SCL/SDA, которые относятся к шине I2C. Также нужно подключить землю и питание. К Ардуино подключается так же, как описан выше: SDA – A4, SCL – A5, земля с модуля к земле с Ардуино, VCC -5V.

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

Arduino будильник

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

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

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

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

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

Arduino будильник

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

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

  • Подключение всех компонентов;
  • Загрузка скетча;
  • Проверка – на экране монитора должны меняться ежесекундно время и дата. Если на экране указано неправильное время, нужно добавить в скетч функцию RTC.write (tmElements_t tm). Проблемы с неправильно указанным временем связаны с тем, что модуль часов сбрасывает дату и время на 00:00:00 01/01/2000 при выключении.
  • Функция write позволяет получить дату и время с компьютера, после чего на экране будут указаны верные параметры.

Подключение модуля 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.

Подключение MP1095 к шилду DFRobot MegaSensor

  • VDD используется для питания микросхемы RTC для получения с него временных данных. Если напряжение +5 В отсутствует, микросхема переходит в спящий режим для сохранения и отсчета времени.
  • GND — земля (общий провод)
  • SCL — тактирующий вывод I 2 C интерфейса (нужен для коммуникации с часами реального времени)
  • SDA — вывод данных I 2 C интерфейса (нужен для коммуникации с RTC)
  • SQW (на некоторых аналогичных модулях RTC) — дополнительный выход прямоугольного сигнала частотой 32768 Гц. В большинстве случаев не используется.

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

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

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

Эта проблема решается благодаря встроенному вспомогательному источнику питания (AUX) в контроллерах серии MSP430F67хх и его гибкой схеме переключения. У AUX есть специальные выводы (AUX0 (DVCC), AUX1, AUX2 и AUX3) для подключения различных источников питания. Например, вход питающего напряжения AUX2 не позволит системе включиться без предварительного использования других входов. Источник питания, подключенный к этому входу, не будет использоваться, пока не будет задействован другой вход питающего напряжения. Вход AUX2 может быть задействован только при условии переключения с другого, ранее использовавшегося входа — AUX0 или AUX1.

На рис. 2 представлена внутренняя структура системы управления питанием микроконтроллеров серии MSP430F67хх.

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

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

В качестве резервного источника питания можно использовать перезаряжаемые компоненты: батарею или ионистор. При использовании перезаряжаемого источника для обеспечения надежности и простоты управления система должна обладать некоторыми дополнительными функциями.

Во‑первых, цепь заряда должна обеспечивать возможность заряда/разряда и сохранения энергии указанных источников. Питание цепи заряда необходимо осуществлять от главного источника питания, подключенного к DVCC. Во время заряда резервного элемента питания необходимо контролировать или ограничивать ток заряда, потребляемый от основного источника питания, во избежание критического падения напряжения этого источника. И наконец, для контроля нагрузки и защиты от перегрузок следует постоянно измерять и контролировать параметры всех источников питания. Микроконтроллеры семейства MSP430F67xx обеспечивают выполнение этих функций благодаря встроенному резистивному зарядному устройству: при этом измерение напряжения может выполняться с помощью встроенного 10‑битного АЦП.

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

Рис. 3. Стандартная диаграмма работы зарядных устройств и переключателей

На рис. 3 представлены стандартные профили заряда и переключения системы питания AUX. DVCC считается основным источником питания. AUX1 — первый резервный источник, который может питаться от силовой сети, тогда как перезаряжаемый элемент подключается к AUX2. На графике показаны некоторые сценарии, обычно происходящие в период работы приложений при изменении напряжения или полном отключении отдельных источников питания. Необходимо, чтобы всегда функционировал хотя бы один источник, способный обеспечить питанием наиболее важные узлы устройства.

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

Отсюда возникает потребность в обеспечивающих точность учета часах реального времени (RTC). Поэтому необходимо, чтобы часы реального времени работали бесперебойно в течение всего срока эксплуатации счетчика. Таким образом, для модуля часов реального времени и цепи его тактирования нужен отдельный источник питания. Дополнительная экономия возможна в случае, если часы реального времени расположены в одном корпусе с измерительной и вычислительной частью устройства и представлены в одном микроконтроллере. Правительства некоторых стран уже узаконили требования, согласно которым модуль часов реального времени должен иметь свой собственный источник питания, который не зависит от других цепей питания счетчика. Он обозначен на рис. 1 и 2 как AUX3 и входит в состав системы AUX.

Как уже отмечалось ранее, для счетчика электроэнергии необходима гибкая система электропитания, к которой предъявляется множество требований. Группа микроконтроллеров со сверхнизким уровнем энергопотребления MSP430F67xx — мощное и недорогое средство для реализации счетчиков электроэнергии. Выполнение всех необходимых функций обеспечивается благодаря встроенному вспомогательному модулю питания. Для повышения стабильности работы приложения можно использовать встроенные в микроконтроллер периферийные модули, например ADC10 для измерения или контроля подачи напряжения. Благодаря этому обеспечивается компактное и простое системное решение без многочисленных дополнительных внешних компонентов.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector