Доработка проветривателя или управление вентиляцией от датчика углекислого газа


Уровень углекислого газа (CO2) один из важных показателей качества воздуха в помещении. Еще его уровень очень удобно использовать для управления вентиляцией.

В статье расскажу о доработке проветривателя и дистанционном управлении вентиляторами посредством микроконтроллеров и датчика CO2.
Также, при желании, после небольшой доработки эту же схему можно применить и для управление приточной-вытяжной системой.


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

Получить свежий воздух в помещении без шума можно установкой:
  1. Приточной системы
  2. Проветривателей, подающие воздух с улицы через дырку в капитальной стене


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

Приведу здесь таблицу уровней углекислого газа и влияния его на здоровье, чтобы знать к чему стремиться:


Таким образом, будем считать уровень CO2 равный 450-1000 ppm оптимальным для помещения.
Про своему опыту скажу, что при закрытых окнах и дверях, включенном на минимуме проветривателе и при нахождении в комнате двух человек, к утру получается где-то 1200-1500 ppm, что многовато.


Алгоритм работы



Примененный алгоритм для управлении производительностью вентиляции достаточно простой, но при желании можно и усложнить:
  • Берется средний уровень CO2, полученный с датчика, за некоторое время.
  • Есть 6 пороговых значений и в зависимости от этого выбирается скорость вентиляторов, которая передается по радиоканалу на микроконтроллеры, управляющие вентиляторами.
  • При понижении уровня CO2 есть некоторый порог, только после которого происходит уменьшение скорости.
  • Ночью максимальная скорость вентиляторов ограничена, чтобы уменьшить шум.
  • По командам с пульта можно увеличивать или уменьшать общую производительность вентиляции и конкретно каждого вентилятора.


В качестве датчика углекислого газа использован не дорогой бытовой CO2 монитор MIC 98130.
Подача воздуха идет через проветриватель Aeropac 90A.
Вытяжка усилена канальным вентилятором SystemАir IF 150.

Для управления используются микроконтроллеры Atmel AVR ATtiny44A.
Данные передаются от контроллера, подключенного к монитору CO2, на контроллеры, управляющими вентиляторами, с помощью модулей на трансивере NRF24L01+.
Установка режима работы и настройка возможны с помощью любого ИК пульта, либо магнита или кнопки.


Доработка монитора CO2





Монитор СO2, заказанный на ebay, как оказалось, имеет внутри инфракрасный газовый анализатор SenseAir K22 с достаточно хорошей точностью.
А самое главное — имеет специальный выход с уровнем CO2 (на картинке белый разъем с четырьмя контактами).

На этом разъеме слева-направо:

  1. питание +9В
  2. общий
  3. выход уровня CO2 в ШИМ от 350 до 2000 ppm


Свободного места внутри не много, поэтому для доработки использована мини плата с трансивером NRF24L01+ и на нее же запаян микроконтроллер в SOP14 корпусе c обвязкой. Перед запайкой был включен фьюз DWEN для программирования и отладки по протоколу debugWIRE.

По радио-модулям есть одно замечание — дальность передачи не достаточно велика.

Тем более если есть стены, двери между передатчиком и приемником. Так что лучше выбирать модули с внешней антенной или стараться чтобы между передатчиком и приемником было как можно меньше препятствий.

Существует совместимый с nRF24L01+ китайский чип с повышенной мощностью передачи — SI24R01.
Модули с ним обычно стоят дешевле, так что лучше брать с ним.
Я, правда, не нашел вменяемые мини модули с этим чипом и в проекте еще используются модули и с родным nRF24L01+ чипом.
Для включения повышенной мощности передачи у SI24R01 используется бит 0 регистра RF_SETUP.

На резисторах R1, R2 собран делитель для уменьшения напряжения, получаемого с датчика.

Величина CO2 получается при вычислении времени между сменой уровня на ноге контроллера. Время берется из счетчика 16 битного таймера.
Чтобы меньше проводить вычислений микроконтроллер работает на частоте 8.192МГц, а делитель таймера установлен в 1024.
Таким образом счетчик таймера TCNT1 увеличивается каждые 0.125мс.
Получается для того, чтобы вычислить уровень CO2 — нужно счетчик таймера разделить на 4 и вычесть 4.

ШИМ сигнал на выходе датчика:


Схема:
Схема

Фоторезистор LDR1 используется для определения порога темноты, кнопка — для первоначального запоминания команд ИК пульта. Светодиод информирует об ошибках передачи, а так же используется для настройки.

Для управления и настройки решил использовать обычный ИК пульт, команды которого нужно сначала прописать в микроконтроллер.
Вход в режим программирования — нажать и удерживать кнопку более 3 секунд. Затем по порядку облучить ИК приемник, нажимая на кнопки пульта.

ИК команды:
  1. вверх,
  2. вниз,
  3. выбор,
  4. установка корректировки скорости каждого вентилятора.


В обычном режиме команды «вверх» и «вниз» увеличивают или уменьшают скорости всех вентиляторов на одну ступень.
Команда «выбор» — сброс.
С помощью команды 4 происходит вход в режим установки смещения скорости каждого вентилятора. Сначала выбирается номер вентилятора, затем после выбора вводится смещение. Светодиод в этому режиме промигивает текущий выбор.

Команды идентифицируются микроконтроллером таким образом:
  • с помощью таймера 0 получаем время от предыдущего фронта сигнала (прерывание PCINT1)
  • если это первый импульс, то проверяем его длительность, чтобы сразу исключить ложное срабатывание
  • если произошло изменение длительности в 1.5 раза по сравнению с предыдущем значением, то добавляем в битовый массив 1, иначе 0.
  • вычислям хеш (2 байта) битового массива и используем его для идентификации команды


Используется простая хеш функция, для уменьшения нагрузки на контроллер, с формулой: hash = hash * 17 + x

if(IRSignalTimer > IRSignalTimerLast) // bit = a / b > 1.5
	bit = (uint8_t)(IRSignalTimer - IRSignalTimerLast) > IRSignalTimerLast / 2;
else
	bit = (uint8_t)(IRSignalTimerLast - IRSignalTimer) > IRSignalTimer / 2;
IRReadedByte = (IRReadedByte << 1) | bit;
if(++IRArrayBit > 7) {
	IRArrayBit = 0;
	IRHash = ((IRHash << 4) + IRHash) + IRReadedByte; // * 17
	IRReadedByte = 0;
}


По работе с радио-модулями NRF24L01 написано много статей, по этому углубляться в эту тему не буду.
Скажу только, что настроены они на работу со скоростью 1Mbps, используется CRC и каждая передача должна быть подтверждена ACK пакетом.
Для общения контроллера и модуля используется хардварный USI интерфейс.
Вывод IRQ не используется, проверка подтверждения передачи пакета идет в цикле в функции NRF24_Transmit.

Передается на каждый вентилятор — уровень CO2, скорость вентилятора и признак ночи.
В текущем проекте контроллеры, управляющие вентиляторами, пока используют только скорость.


Доработка проветривателя



У меня установлены проветриватели Aeropac 90A фирмы SIEGENIA-AUBI — это достаточно древняя модель.
Работает уже не один год и, как показала практика, штука в общем-то полезная.
Воздух он гонит через 80 мм отверстие в стене и имеет угольный фильтр.
Шумоизоляция от звуков с улицы очень хорошая.

Внутри установлен центробежный вентилятор Ebmpapst R2E133-BH96-19.
С шумностью самого вентилятора после стольких лет работы не все гладко. На низких оборотах может проявляться низкочастотный гул, а на высоких — некоторое подвывание.
Причем это проявляется индивидуально. Один вентилятор больше гудит на низких оборотах, другой посвистывает на высоких.
Решил эту проблему ограничением скорости.

В проветривателе очень интересно реализована схема регулировки оборотов двигателя — с низких оборотов до средних плавно, а затем включается сразу максимальная скорость.
Если на минимальной и средней скорости он работает достаточно тихо, то при максимальной скорости находиться в помещении не комфортно.
В новой модели — Aeropac SN, не смотря на цифровую ступенчатую регулировку, принцип регулировки оборотов остался прежним — c 1 по 6 скорости обороты регулируются где-то до середины, а потом сразу максимум.

На схеме электронный блок проветривателя обведен пунктирной линией:
Схема

Доработка заключается в перерезании дорожки, ведущей от среднего вывода переменного резистора RV1 к резисторам R6 и R7. В разрыв подключается оптопары U2 и U3, которые будут управлять оборотами вентилятора.
Управляющий ШИМ сигнал на оптопары подает микроконтроллер через интегрирующую RC цепочку.
Светодиод в оптопаре начинает проводить ток только с определенного напряжения, поэтому в программе есть настройка минимального значения ШИМ сигнала.
Переменный резистор остается, и им, при желании, можно ограничить максимальную скорость.

Если производительности на средней скорости не хватает, то ее возможно увеличить заменой конденсатора C9 на конденсатор большей емкости. На плате предусмотрительно есть отверстия под два размера конденсаторов — с расстоянием 27.5мм и 22мм между выводами.



Места внутри проветривателя достаточно — влезет и не одна плата.
Единственная проблема может возникнуть с радио модулями. Корпус двойной и сделан из толстого пластика.
С радио-модулем на родном чипе nRF24L01+ не было связи с соседней комнатой.
Выкрутился так — припаял одножильный медный провод к встроенной антенне, вывел его наружу через дырку для светодиода и расположил конец под крутилкой переменного резистора. С согласованием антенны не заморачивался.
Связь появилась.

Для настройки вместо кнопки используется геркон (SW1), чтобы не портить внешний вид и не нарушать звукоизоляцию.
Магнита от жесткого диска вполне хватает.


Вытяжка



Поступающий воздух должен в итоге куда-то выходить. Естественная вытяжка даже если как-то и справляется зимой, то уж летом ее скорее всего будет не достаточно.
В моем случае я использовал канальный вентилятор SystemАir IF 150 с однофазным двигателем. Внешний диаметр у него 15 см.

Регулировка его оборотов ступенчатая и сделана на конденсаторах. Опто-симисторы шунтируют конденсаторы, изменяя таким образом напряжение, подаваемое на двигатель вентилятора.
При двух конденсаторах получается 4 скорости.

Схема:
Схема



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

Программа управления вентиляторами универсальная и, в зависимости от настроек в энергонезависимой памяти, может управлять вентиляторами как с помощью ШИМ, так и в дискретном режиме.
Подключен ли ИК приемник к контроллеру задается тоже в EEPROM.

В программу заложена возможность ретранслировать принятый пакет дальше — на другой вентилятор.
Таким образом, например, можно увеличить расстояние между датчиком CO2 и вентилятором вытяжки.

Исходник на C (для Atmel Studio 6.1)
  • +7
  • 27 декабря 2013, 13:36
  • vad7
  • 1
Файлы в топике: WirelessCO2Sensor.zip

Комментарии (41)

RSS свернуть / развернуть
А зачем закинули свою статью с хабра сюда?
0
  • avatar
  • xpeh
  • 27 декабря 2013, 14:30
Ну, к примеру, я не слежу особо за хабром. А тут получил оповещение о новой статье. Интересный пост, добавил в избранное. Не будь поста тут — пропустил бы.
+3
И не у всех есть аккаунты на хабре, чтобы что-то спросить.
+1
Согласен, в профиле автора на хабре нет ни каких контактов.
0
Хм… проветриватель, как-раз очень актуально. Дырку делали до ремонта или как? Ещё может кто сталкивался с рекуперативными проветривателями, цена конская, но возможности, описанные на сайте производителя, впечатляют.
0
цена конская
Не поверите, но цена на указанный провертриватель на 30% выше (по крайней мере в Киеве).
У меня такой же, только с цифровым управлением.
Не понятно с чего такие цены за, по сути, центробежный насос + фильтр + управление и корпус, но альтернатив от других компаний я, в свое время, не нашел.

Жаль что не попадались варианты как на вашей ссылке в то время как я делал ремонт. Однозначно купил бы его.
0
цена конская
Это сколько, если в конях?
А почему бы не запилить самодельную рекуперативную систему вентиляции и кондиционирования?
Где-то в закладках у меня затерялись ссылки на описание самодельной системы, причём контроллер был выполнен на легендарном БК-0010.
0
400 у.е., я подсчитывал мне на две комнаты с установкой и всякими свистоперделками выходит под полтора килобакса.
0
Я делал — до, но установщики все чисто сделали.
Сверлили алмазным буром с подключенным пылесосом.
Так что грязи не было.
+1
топик-ссылка не катит?
0
  • avatar
  • xar
  • 27 декабря 2013, 23:14
1 — сам топик противоречит правилам хабра
2 — думаю тут тоже не приветсвуется
+1
Подозрительно, что в исходном файле сенсора, переменная uint16_t CO2Level, изменяющаяся в прерывании(кстати, почему-то не volatile) неатомарно используется в теле программы.
0
Ну да, по хорошому, можно обернуть присвоение в ATOMIC_BLOCK, но не особо критично.
volatile не нужен, с ним кода больше генерится, вместо него используется: __asm__ volatile ("" ::: «memory»);
0
Давно думал над такой системой, только останавливает стоимость датчика кислорода или датчика CO2.
Посоветуйте где найти такой в районе 50$?
0
Стоимость датчика К22, скорее всего столько и будет, только чего-то нет их нигде в продаже.
Есть не NDIR датчики с большей погрешностью и меньшим размером — например MG811.
0
У MG811 узкий диапазон как раз на рабочую область: Your text to link... и не понятно насколько он долговечен.
0
У меня mg811 спустя месяц непрерывной работы начал выдавать повышенное плавающее напряжение. На углекислый газ реагирует, но для измерения уже совсем непригоден.
0
Есть K30 65$
Не 50, но и не 150. Хотя опять же доставка…
0
Они в Россию не отправляют.
0
Да это уже не такая проблема. Есть много сервисов, которые могут обеспечить эту доставку, тот же шипито, например. Только стоить это будет около 30$
0
Можно купить на нескольких желающих и сэкономить на доставке. Я готов записаться
0
Не хило сенсоры подорожали. K30 уже 85$. Я надеялся подешевеет, а тут все наоборот, да еще с учетом курса…
0
по схеме вентилятор не отключается полностью от сети и через конденсаторы течет какой-то ток + еще питание на мк
что там счетчик показывает или амперметр?
есть ли нагрев гасящего резистора?
0
Чтобы, если варится на плите что-то серьезное, нажатием одной кнопки включать вытяжку на максимум.
Может по температуре над плитой вытяжку включать?
0
Какое содержение углекислого газа в выдыхаемом воздухе?
0
около 4%
0
Меня больше интересует не сам факт, а ТТХ газоанализатора по отношению к измерению этой величины.
0
ну, как говорится, как вы спросили — так я и ответил.
0
Помогите, пожалуйста, вкурить схемотехнику проветривателя. На схеме двигатель имеет три клемы(плохо видно, кажется черный коричневый и голубой). На сколько я понимаю, в данном случаи автор, изобразил имеющююся у двигателя конденсатор(С1), то есть изображение двигателя на схеме под собой подразумевает только голый двигатель. Итого мы имеем дело с самым обычным асинхронным двухфазным двигателем(или как его еще именуют конденсаторным) с белечьей клеткой в качестве ротора?
0
Да. Вот схема двигателя.
Конденсатор в ней, это C1 на схеме доработки.

0
Сам занимаюсь вопросом вентиляции в квартире. Всю воздушно-механическую часть смонтировал, осталось дело за мозгом системы. Как регулировать нагрузку нагревателя в общем и без того понятно, но в случаи если нагреватель не будет справляться с входящим потоком воздуха(-40 С воздух с улицы), а запрос внутри установлен на 0 градусов и выше. То один из способов регулировки, это понизить производительность воздушной системы в целом. У меня испанский канальный вентилятор soler & palau td 250/100 silent(тот что якобы самый тихий в мире). Вот он как раз так же асинхронный, двухфазный. Сначала планировалось собрать двухфазный частотный регулятор, но в последствии данная схема показалась не такой уж и простой. Слишком много подводных камней всплыло. Решено было собрать однофазный. Имея один конденсатор можно регулировать частоту в некотором диапазоне, где форма вращающегося магнитного поля будет меняться в некоторых допустимых пределах. Ну и чтоб эти пределы как то расширить, планировалось так же подобрать несколько емкостей, ну и соответсвенно при определенном диапазоне частот коммутировать определенный конденсатор или конденсаторы. Наткнулся на вашу схему, нордики(nrf24l01) и все остальные мозги не так интересны(уже поигрался). А вот схема драйвера двигателя… На сколько я понял: D3, Q3, Q2, D4 здесь выполняют роль некой нагрузки, которую в свою очередь регулирует RV1. Транзисторы слегка приоткрываются и просаживают заряд конденсатора С1 куда то в сторону реле или конденсаторов С7, С8, С9. тем самым меняя емкость конденсатора С1. Меняется емкость, меняется и сдвиг фазы между синусами на обмотках двигателя. вращающийся магнитный вектор описывает уже не круг а эллипс, кпд падает, но с ним падают и обороты. Наверно, как то так. В общем не совсем понятен принцип действия. Если не сложно просветите меня в тонкостях схемы. В частности блока транзисторов и реле.
0
При вентиляторном характере нагрузки скорость вращения асинхронного двигателя можно регулировать изменением питающего напряжения. Например, при помощи (авто)трансформатора или фазоимпульсного тиристорного регулятора.
0
Я догадывался, что подобный ответ кто-нибудь предоставит. Автотрансформатор, честно говоря мне десяток плат проще сделать, чем ковыряться с намоткой транса, да и не имею я в этой области достаточного опыта(придет время, и в этом направление постараюсь просветится). Плюс ко всему, изменение напряжения не самый лучший способ смены скорости(минусы: падение кпд, и малый диапазон регулировки скорости). Таков метод применялся пару десятков лет назад. Часто можно было встретить на производствах трехфазники с внешним блоком резисторов, все можно было понять, времена были такие, про микроконтроллерное управление тогда мало кто знал. Фазоимпульсный способ я так же рассматривал, он хорош для лампочки, но не для индуктивной нагрузки, мне не хочется иметь еще один источник выбросов в сеть питания (разные гармоник в переходных процессах). Можно конечно и эту проблему обойти, коммутируя при переходе через ноль, но в таком случаи, при снижении скорости появляется низкочастотный гул и вибрация, чего тоже хотелось бы избежать. Частотник же в свою очередь, подкупал возможностью регулировать скорость не только в меньшую сторону(от номинальной), но и в большую. Хотя я не отрицаю, что регулировка оборотов вентилятора с помощью частотника выглядит неоправданно трудозатратной. Но трудности нас закаляют, а их преодоление дает нам ценный опыт.
0
Таков метод применялся пару десятков лет назад.
Насколько я вижу, он и сейчас применяется, в обоих описанных автором вентиляторах.
Да и в тех многоскоростных вентиляторах, что у меня есть (правда, это обычные настольные/напольные вентиляторы), применяются асинхронники и коммутация отводов от обмотки, что по сути, AFAIK, то же самое.
0
применяются асинхронники и коммутация отводов от обмотки
Я правильно понимаю, это как раз те двигателя, что имеют у себя в наличии многополюсные обмотки? Точнее обмотки, каждая фаза которых состоит из нескольких обмоток. При различной коммутации которых, мы при той же частоте получаем разное количество полюсов, а следовательно и разную скорость вращения магнитного поля.
0
Насколько я знаю, число полюсов не меняется (в одном двигателе — точно не меняется, остальные настолько глубоко не изучал, но выглядят как обычные двухфазники с 4 полюсами, да и обороты не настолько радикально меняются). Просто меняется сопротивление обмотки и, соответственно, ток через нее.
0
Регулирование частоты вращения асинхронных электродвигателей. Масандилов Л. Б., Москаленко В. В. 1978. Библиотека электромонтёра, выпуск № 469.
0
Схема, примененная производителем в проветривателе также ограничивает напряжение посредством конденсаторов C9, C8 в «регулируемом» режиме.
Плюс резистор открывает транзисторы, которые шунтируют одну обмотку.
Для двухфазных вентиляторов вполне нормально регулировать обороты напряжением. Это же не силовой двигатель.
0
Отменное начало. Но надо учесть один нюанс: CO2 ещё и при пожаре вырабатывается (поправьте меня, если я ошибаюсь), а вот тут вот вентиляция скорее вредна, чем полезна. Такой вариант предусматривается?
0
предусматривается — из искры разгорится пламя! :)
а что датчики СО типа mq7 не подходят для данной задачи?
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.