Управление вентиляцией
Вентиляцию в своем доме я делал «на глазок», с запасом. В итоге «запас» оказался слишком большим, а это значит некомфортная (слишком низкая) влажность в помещении и перерасход газа для отопления дома в зимний период.
В результате было разработано описываемое устройство. Вот его схема:
Оно предназначено для управления положением двух воздушных заслонок с помощью сервомашинок MG-995, опроса двух датчиков влажности и температуры DHT-11, DHT-21 (AM2301) или DHT-22 (AM2302), а также имеет пять выходов для управления нагрузкой (вентилятор вытяжки, освещение и т.д.).
В качестве коммутирующего элемента я выбрал бесконтактное реле, оно может управляться непосредственно с выходов микроконтроллера. Вот его внешний вид:
На eBay такое реле стоит всего около 5 долларов (160-170 рублей). Но несмотря на заявленную способность коммутировать ток до 40 ампер, не стоит обольщаться и нагружать его током более 10 ампер (при использовании теплоотвода) и не более 3-4 ампер без охлаждения. Надо помнить, что это «китайские» амперы. :)
Заслонки самодельные, вот внешний вид одной из них:
|
|
Как видно на фото, изготавливались они из подручных средств – кусок оцинковки, обрезки текстолита, пара сантехнических хомутов (остались от монтажа канализации) и крепеж, который нашелся в гараже. Были куплены только сервомашинки и металлические рычаги к ним. (Покупались на eBay)
Хочу отметить, что не все хомуты плотно обхватывают трубу, некоторые могут болтаться. У меня были с надписью Strongman 107-112mm, труба 110мм.
Как и все устройства автоматизации у меня дома, это тоже для управления и настройки использует WEB интерфейс и сеть Ethernet. Вот скриншоты традиционного уже интерфейса для настройки устройства:
|
|
|
|
В сети масса информации об управлении сервомашинками, тем не менее, думаю, стоит кратко пояснить два последних скриншота, дело в том, что для управления положением сервомашинки используются импульсы разной длительности, следующие с частотой 50 Гц. Стандартным считается длительность от 1000 до 2000 микросекунд, но мне в руки попали машинки, у которых перемещение машинки из одного крайнего положения в другое происходит при изменении длительности от 750 до 3250 микросекунд. Это крайние положения.
Для поворота заслонки необходим угол всего 90 градусов, в моем случае это достигается при следующей настройке:
Важно, чтобы механика заслонки была спроектирована так, что положению Min соответствовала полностью открытая заслонка, а Max, соответственно закрытая. Это влияет на расчет угла поворота при задаче условного прохода вентиляционного канала.
Для управления и опроса устройства с сервера используются следующие команды:
Команда |
Описание |
Ответ |
http://192.168.100.14/sec/?srv=1&pos=4000 |
Установить положение сервопривода 1 в диапазоне от Min до Max. (Min, Max устанавливаются в WEB интерфейсе). |
OK, Error |
http://192.168.100.14/sec/?srv=1&du=50 |
Открыть заслонку 1 на "du" процентов. du = от 0 до 100% (0% соответствует максимальная длительность импульсов, а 100% минимальная) |
OK, Error |
http://192.168.100.14/sec/?out=1&val=1 |
Установить выход 1 в состояние: val=0 - 0 val=1 - 1 val=2 - инвертировать |
OK, Error |
http://192.168.100.14/sec/?out=1 |
Получить состояние выхода 1 |
0/1, Error |
http://192.168.100.14/sec/?out=a |
Получить состояние всех выходов |
0;1;1;0;1, Error |
http://192.168.100.14/sec/?dht=1 |
Прочитать данные с датчика DHT-11, DHT-21 или DHT-22 (Влажность;Температура) |
88.8;22.2, Error |
Как показала практика, выводить все параметры в WEB интерфейс нет никакого смысла, это дает лишь неоправданное увеличение объема прошивки.
PS В результате перехода с макета на готовую конструкцию и отладки работы с датчиками DHT, обнаружился один баг - забыл подключить работу с float в printf, в результате исправления, объём прошивки перестал помещаться в 16 Кб. Писать свой вывод лень, воткнул кристалл с большим флешь - ATmega328, до кучи добавил вывод в WEB интерфейс датчиков и возможность управления выходами, жалко флеша стало...
Также появилась новая команда для получения состояния всех выходов: http://192.168.100.14/sec/?out=a Вывод в формате 0;1;1;0;1 - удобно парсить в PHP... Подробности в файле Readme.txt в исходниках.
Download.
Схема - /Vent/cpu.gif Пришлось применить мегу "постарше" - ATmega328, других изменений нет...
Исходные коды прошивки - /Vent/Sourse_328_0.02.rar
Скомпилированная прошивка - /Vent/main_0.02.hex
Обновление 08.02.2014
Исправлен баг с выходами.
Исходные коды прошивки - /Vent/Sourse_328_0.03.rar
Скомпилированная прошивка -/Vent/main_0.03.hex
Обновление 18.02.2014
Улучшена работа с датчиками DHT.
Исходные коды прошивки - /Vent/Sourse_328_0.04.rar
Скомпилированная прошивка - /Vent/main_0.04.hex
PS Прошивка пока работает на макете с процессором ATmega 32, скачать ее можно на форуме по адресу:
http://www.ab-log.ru/forum/viewtopic.php?f=1&t=647
Там же и обсуждение конструкции.