Содержание

Примеры проектов (микроконтроллеры AVR) / Управление нагрузкой.

Управление нагрузкой.

Устройство преднозначено для управления какой-либо нагрузкой. Нагрузка может находится в нескольких состояниях: "отключено", "включено на определенное время" и "включено непрерывно". Для контроля состояния нагрузки, в схеме устройствва, используется индикатор. Состояние индикатора: "Не горит" - нагрузка в состоянии "отключено" либо "включено на определенное время"; "Горит" - нагрузка в состоянии "включено непрерывно". Переключение между режимами производится кнопкой, в следующей последовательности:"отключено"->"включено на определенное время"->"включено непрерывно"->"отключено"... , если нагрузка находилась в состоянии "включено на определенное время" и истекло время, то нагрузка возвращается в состояние "отключено".
Проект построен на микроконтроллере «ATtiny13», нагрузка подключена к выводу «PinB2», индикатор режима «PinB1», кнопка управления нагрузкой к «PinB0». Стоит обратить внимание, что данный вывод «PinB0» физичеки не подтянут ни к одному из выводов источника питания, данный вывод будет подтянут к «Vcc» программно. Упрощенная схема устройства представлена на следующем рисунке.
AVR микроконтроллер, примеры проектов.
Для реализации логики проекта я буду использовать следующие FBD блоки: «PinB0» , «PinB1» и «PinB2» - реализующий доступ к выводам микроконтроллера. Триггер отслеживающий падающий фронт логического сигнала «FTRIG». Блоки работы с реальным временем «Счетчик милисекунд» и «Таймер с задержкой отключения». Инверсия логического сигнала - FBD блок «Логическое НЕ». FBD блоки реализующие простейшие логические действия: «Логическое НЕ», «Логическое И», «Логическое ИЛИ». Триггер SR с приоритетом по входу S (установка триггера)- «Триггер SR». Данные блоки объеденены в следующую схему:
AVR микроконтроллер, примеры проектов.
Работает конфигурация следующим образом, при нажатии на кнопку, на входе «PinB0» меняется состояние с 1 на 0. Момент перехода отслеживается триггером «FTRIG», на выходе которого формируется короткий (единичный) имульс. Данный ипульс перезапускает таймер «Задержка отключения», поступает на вход сброса «R» триггеров «RS» триггера №1(расположенный левее), №2(расположенный правее). Также прохождение данного импульса возможно на вход «S» триггера №1 при условии сброшенного состояния триггера №2, а также на вход «S» триггера №2 при условии взведенного состояния триггера №1 и сброшенного состояния триггера №2. Данная логика обеспечивается верхними по схеме блоками «AND» и блоком «NOT». Триггер №1 фиксирует режим "включено на определенное время", а триггер №2 режим "включено непрерывно". Для сброса триггера №1, по достижению временного интервала, используется цепь «задержка отключения», «FTRIG», «OR», вдод «R» триггера №1. На выводе прорта «PinB2» появится логическая 1 если, взведен триггер №1 и не истекло время блока «Задержка отключения», или взведен триггер №2. Данная логика сформированна блоками «AND» и «OR» расположенными в нижней части схемы. Управление, индикатором режима «PinB1», осуществляется непосредственно с выхода триггера №2. Блок «счетчик милисекунд» создает внутреннию глобальную переменную, доступную другим блокам, выполняющую роль счетчика милисекунд. Данная переменная необходима для работы блока «Задержка отключения».
Создание проекта:
PS Наверное блок «AND» (нижний по схеме) можно исключить, при этом вход бока «OR» подключить непосредственно к выходу триггера №1.