AVRDOM, контроллер для управления электрооборудованием дома
Intro
Я не перевариваю такие термины как "Умный дом" и подобную маркетинговую
муть. Поэтому описываемое здесь устройство (далее по тексту AVRDOM) названо
именно контроллером для управления электрооборудованием дома.
Имеется в виду уличное оборудование частного дома, которое
находится на прилегающем участке.
Когда я перелопачивал литературу на тему автоматитзации такого рода
(для моих задач оказалось невозможным купить что-то готовое),
то ничего готового для повторения не нашел. Странно, но дальше
настольных часов, термостатов для аквариума или управления шаговыми
двигателями (модель робота нужна мне как рыбе зонтик например)
конструкторская мысль почему-то не пошла (я утрирую, но, к сожалению, недалек от истины).
Пришлось сделать что-то свое. Путь от идеи к
работоспособному устройству пройден и ниже я расскажу более подробно
про AVRDOM.
Функциональность
Контроллер AVRDOM может управлять тремя линиями уличного освещения, подогревом
трубопровода, дренажным насосом и подогревом двигателя машины. В сумме
получается шесть каналов. Для каждого канала реализованы девять
суточных таймеров совпадения. Для подогрева трубопровода, машины и дренажного
насоса предусмотрены датчики и дополнительная логика.
AVRDOM, панель управления
Информация о времени, режимах работы выводится на ЖКИ 2x16. Управление
при помощи 12 кнопочной клавиатуры, клавиши 0-9, [C]ancel и [E]nter.
Состояние каналов (выключен/включен) сделано
светодами зеленого цвета. Состояние датчика превышения уровня воды в
дренажном колодце и состояние ошибки (ALARM) показывается двумя
красными светодиодами. Нажатие клавиш озвучено через внутренний
динамик. Также предусмотрена подача периодических звуковых сигналов,
если контроллер находился или находится в аварийном состоянии (ALARM).
Предусмотрена возможность подключения обычного
конпьютера через RS-232 порт. При этом AVRDOM ведет протокол всех
событий (лог) и управление всеми режимами доступно из обычной
терминальной программы. Для компьютеров, работающих под ОС Unix
прилагается программа записи всех сообщений от AVRDOM в syslog.
Верхняя строка ЖКИ предназначена для индикации режима работы, нижняя
строка - информационная.
На этой фотографии AVRDOM находится в режиме ожидания (main).
На информационной строке показывается текущее время и температура
воздуха/водопровода (-99 означает неисправность датчиков, которые
пришлось отключить при фотографировании, но об этом чуть ниже).
Навигация в режимах управления производится клавишами 0-9, [C]cncel -
откат на уровень выше, [E]nter - подтверждение. При вводе времени или
других параметров включается курсор, который помогает набрать нужные
числа. Все меню сведены в древовидную структуру, которая полностью
разрисована на рисунке ниже. Также предусмотрены так называемые
"быстрые" клавиши для ускорения доступа к некоторым функциям. Они
работают в одно нажатие непосредственно из режима ожидания (Main).
AVRDOM, диаграмма навигации в режимах управления и настроек
Ниже подробнее про функционал каналов. Для описания меню я буду
применять сокращенную запись по клавишам навигации меню, к примеру 9-4-2 обозначает установку
максимальной температуры воздуха, при которой нужно подогревать
двигатель машины. То есть из режима ожидания нужно нажать 9, потом 4 и 2.
Основной режим ожидание (Main). В этом режиме AVRDOM выводит на ЖКИ
текущее время и температуру воздуха/трубопровода. В случае
неисправности датчика температуры в соответствующей позиции высвечивается -99 и в дальнейшем
показания этого датчика игнорируются. Поскольку заранее неизвестно,
какой из двух датчиков измеряет воздух, а какой трубопровод,
предусмотрена возможность переключения датчиков (9-7).
В случае возникновения нештатных ситуаций (например неисправность датчика
температуры) AVRDOM включает аварийный режим. В этом случае зажигается
светодиод "ALARM" и периодически подается звуковой сигнал. После
устранения причины аварийный режим может быть отключен (9-8).
Существует возможность полного перезапуска микроконтроллера (9-3).
Уличное освещение
Как сказано выше предусмотрено три линии уличного освещения. Каждая
линия имеет 9 таймеров. Датчик освещенности позволяет включать
освещение только в темное время суток. Эта возможность
отключаемая. Если таймеры установлены на ночное время и включен датчик
освещенности, то после совпадения времени включения AVRDOM включит
освещение только при наступлении ночи. Это же справедливо и при
наступлении рассвета, то есть освещение выключится или по таймеру или
на рассвете.
Для того, чтобы продлить срок службы ламп накаливания предусмотрена
возможность плавного включения. Поскольку не все лампы расчитаны на
такой режим, то эта возможность отключаемая, 9-2-9.
Предусмотрены "быстрые" клавиши включения-выключания освещения 1-3,
которые имеют приоритет над таймерами.
Подогрев двигателя машины
Общеизвестно, что запуск двигателя в зимнее время не всегда простая
задача. Особенно это актуально для дизельных двигателей, которые
часто просто не оживают после ночевки на хорошем морозе. Для решения этой проблемы
многие машины оборудованы электроподогревателями, которые
подогревают антифриз в системе охлаждения или (что реже) масло
двигателя до небольшой положительной температуры. Я говорю о
подогревателях, питающихся от сети 220В.
При наличии такого устройства нужно только не забыть подключить
подогреватель в розетку. Можно использовать для этого уличный таймер, или
включать/выключать все из дома, но в AVRDOM все минимизировано, нужно
только не забыть набрать время следующего выезда из дома.
Показания датчика температуры воздуха на улице определяют время, необходимое
для прогрева двигателя:
-10C и ниже |
2 часа |
-9С..-5С |
1 час |
-4С...+5С |
30 мин |
Если температура воздуха выше +5C, подогреватель включается точно по таймеру,
а при температуре воздуха выше необходимого минимума (начальное
значение +10C, может
задаваться в пределах +5...+15С 9-4-2), то подогреватель не
включается совсем.
К примеру, если предполагается поездка в 9:00 (установлен таймер), то
при температуре воздуха -7С подогреватель включится в 8:00.
Датчик температуры может быть неисправен или отключен (9-4-0). В этом
случае вся логика, связаная с расчетами на прогрев, отключается.
Как и остальные каналы, линия подогревателя имеет 9 таймеров совпадения.
Для быстрой установки первого таймера предусмотрена клавиша 7.
Ручное включение/выключение подогревателя, которое имеет приоритет над таймерами, предусмотрено из меню
Switcher (0-4).
Подогрев трубопровода
Не всегда есть возможность проложить трубопровод ниже глубины
промерзания (например скалистый грунт). В этом случае рядом (или
внутри трубы прокладывается греющий кабель. С противоположной стороны
непосредственно на трубе закрепляется датчик температуры. Затем трубопровод тщательно
теплоизолируется. Для управления греющим кабелем трубопровода
предусмотрен соответствующий канал. Он также имеет 9 таймеров
включения/выключения. Если датчик температуры почвы исправен и
используется (вкл/выкл 9-5-0), то температура трубопровода
поддерживается в заданном интервале. По умолчанию предполагается
+2...+5С, но нижняя и верхняя границы настраиваются в пределах
0...+10С, меню 9-5-2 и 9-5-3 соответственно.
Если датчик температуры неисправен или отключен (9-5-0), вся
вышеуказанная логика отключается.
Ручное включение/выключение, которое имеет приоритет над таймерами, предусмотрено из меню
Switcher (0-5).
Дренажный насос
Не секрет, что уровень грунтовых вод весной существенно выше. Для
того, чтобы не допустить переполнение дренажного колодца в нем
устанавливается погружной насос. Насос может сломаться, кроме того, он
не расчитан на работу "всухую".
Для обслуживания дренажного насоса предусмотрен соответствующий канал.
Также есть 9 таймеров включения/выключения. Предусмотрены датчики
уровня воды, "переполнение", 2 продублированных датчика на размыкание
и датчик "мало воды" - для выключения насоса при откачке воды ниже
минимального уровня. Этот датчик также
работает на размыкание.
Размыкание присходит при превышении уровня воды выше определенного.
При переполнении дренажного колодца автоматически включается насос и включается светодиод
ALARM на передней панели.
При откачке воды ниже определенного уровня насос отключается.
Предусмотрена дополнительная логика обслуживания датчиков. Например
если одновременно сработали датчики "переполнение" и "мало воды", то
последний считается неисправным и в дальнейшем не используется.
Ручное включение/выключение , которое имеет приоритет над таймерами, предусмотрено из меню
Switcher (0-6).
Схемотехника
AVRDOM спроектирован в виде набора модулей, которые физически
разнесены и имеют собственные корпуса.
Блок управления и индикации
Собственно "сердце" всей конструкции. Использован микроконтроллер
ATMega164. Тактируется на частоте 3.3864MHz от внутреннего генератора,
стабилизированного кварцем.
При программировании микроконтроллера необходимо установить
fuse'ы BODLEVEL0,BODLEVEL1 (остальные оставить
сброшенными - "1"). Это позволит ATMega работать с внешним
кварцевым резонатором и отслеживать напряжение питания (не портится
содержимое EEPROM при включениях/выключениях).
Предусмотрен ЖКИ индикатор 2x16 символов,
который подключен к PORTC. Индикатор работает в полубайтовом режиме (4
линии для data). Может быть использован любой ЖКИ с HD44780
совместимым контроллером (например KS0070B). Клавиатура матричная,
4x3, кроме цифровых клавиш используются еще [C]ancel и [E]nter. Если
используется стандартная клавиатура от телефона, то дополнительными
клавишами будут соответственно "#" и "*".
AVRDOM'ом можно управлять и при помощи компьютера, годится любая
терминальная программа, которая работает через COM порт. Клавишам [C] и
[E] соответствуют [Shift]-[C]/[E] соответственно.
Для связи в компьютером установлен конвертор TTL-RS232 на микросхеме
Maxim232, которая работает в обычном режиме, используются только два
из четырех конверторов. Номиналы конденсаторов C3-C6 зависят от используемого
конвертора, при замене, например, на Maxim232A их номинал 0.1Мк
(смотрите datasheet для своей микросхемы).
USART0 микроконтроллера работает в режиме 9600 8N1.
На микросхеме D5 собрана индикация переполнения дренажного
колодца. При разрыве любого из двух датчиков переполнения загорается
светодиод D5 на лицевой панели. Светодиоды D13-D18 показывают
включение соответствующего канала. Светодиод D6 - индикатор аварии.
Динамик LS1 любой 8-20 Ом, я использовал от старого компьютера.
Также на плате блока управления находится стабилизатор напряжения A1,
от которого запитан сам блок, а также все остальные модули.
Мне показалось неразумным разрабатывать печатную плату для одного
устройства, поэтому все распаял на макетке проводом МГТФ. Получилост
примерно так .
Датчик освещенности
Датчик освещенности собран в корпусе для монтажа электропроводки и
установлен на окно. Фоторезистор R7 - любой, сопротивление в режиме
засветки 5-10 кОм, в темноте - 200-300кОм. На транзисторе VT2 собран
эмиттерный повторитель и далее два инвертора с триггером Шмидта
К555ТЛ2. Триггер Шмидта позводяет избавиться от паразитного включения/выключения
освещения при пороговой освещенности.
Настройка сводится к подбору резистора R8.
Также при использовании фоторезисторов с другими характеристиками возможно
потребуется замена VT2 на КТ3102.
Датчик освещенности запитан от блока управления и индикации.
При наступлении темного времени суток на выводе LGT появляется низкий
уровень (горит всетодиод VD12), который поступает непосредственно на
порт микрокотнтроллера.
Температурные датчики
Температурные датчики сделаны на основе сенсоров DS1820 (DS18S20). На
схема изображен только один датчик (U3, C12, C13, R21). Второй,
абсолютно идентичный, подключается параллельно первому.
Как было написано выше, первый датчик установлен на улице и измеряет
температуру воздуха, другой непосредственно на трубопроводе и измеряет
его температуру. Естественно все должно быть хорошо влагоизолированно.
Микроконтроллер работает с температурными датчиками по однопроводной шине 1-Wire.
При каждом включении AVRDOM опрашивает шину и запоминает коды обоих
датчиков в EEPROM. Предусмотрена возможность программного переключения
датчиков (9-7), так что нет никакой разницы, какой из двух DS1820
измеряет воздух, а какой тепературу трубопровода.
В случае отказа одного или обеих датчиков AVRDOM включает аварийный
режим и в соответствующее значение температуры записывается значение
-99.
Силовой модуль и датчики уровня воды
Силовой модуль и датчики уровня воды выполнены опять же отдельным блоком в
собственном корпусе.
На схеме изображен только один силовой канал. Остальные абсолютно
идентичны. Разница только к том, что в каналах 3-5 симисторы
установлены на радиаторах, что связано с большей коммутируемой мощностью этих
каналов.
На оптопаре VD9 типа MOC3083 сделана гальваническая развязка, а сама
нагрузка коммутируется симистором VD8, BT139-600. Светодиод D7
индицирует включение нагрузки. При замене MOC3083 на что-то другое
возможно придется изменить номинал R12 (смотреть ток открывания
фотосимистора в datasheet).
Датчики уровня воды я взял жигулевские. К поплавкам приклеены кусочки
пенопласта необходимой длины, собственно идея в том, чтобы сами
датчики оставались сухими. В нормальном состоянии датчики замкнуты, при
повышении уровня воды выше определенного контакты размыкаются.
На порты микроконтроллера сигналы от датчиков приходят через
опторазвязку VD11 (на схема изображен только один датчик, остальные
полностью аналогичные).
Питается силовой модуль от блока управления и индикации.
Собран на макетке примерно так .
Настройка
Никакой настройки не требуется. Единственно подобрать резистор R8
датчика освещенности и проверить правильность температурных датчиков,
при необходимости программно поменять местами через меню 9-7.
Дополнительно
Поскольку AVRDOM может управляться через интерфейс RS232 (COM порт
компьютера), можно прикрутить практически любые программы для
расширения функционала, например рисовать график температуры воздуха.
AVRDOM, график температуры воздуха за неделю, программа RRDTool
Приложения
Tags: avr microcontrollers electronic home_electronic
Назад
|