Приветствую Вас, Гость! Регистрация RSS

Мой сайт

Понедельник, 29.04.2024

Управление вентиляцией


Вентиляцию в своем доме я делал «на глазок», с запасом. В итоге «запас» оказался слишком большим, а это значит некомфортная (слишком низкая) влажность в помещении и перерасход газа для отопления дома в зимний период.

В результате было разработано описываемое устройство. Вот его схема:

/Vent/cpu.gif

Оно предназначено для управления положением двух воздушных заслонок с помощью сервомашинок 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
Там же и обсуждение конструкции.