[Из песочницы] Управление микроклиматом на Arduino
В последнее время на Хабре появилась масса постов про построение мониторов качества воздуха. При этом ни одной попытки управления качеством воздуха не нашел, а ведь как только мы переходим от пассивного наблюдения к активному управлению — возникает масса интересных проблем и решений. Своими скромными наработками в этой области и хочу поделиться.Итак, дано: Гараж неотапливаемый, не утепленный, кирпичный двухэтажный с огромной влажностью внутри, от которой гниет деревянное межэтажное перекрытие, на стенах зимой снежная шуба и прочая неприятная ржавчина.
Задача: «Осушить» гараж.
Решение. Не будем вдаваться в подробности капиллярного подсоса воды бетоном и прочих источников появления влаги в воздухе гаража — сосредоточимся на том, что мы можем сделать с уже появившейся влагой. Если не рассматривать слишком дорогую для гаража технику типа осушителей, то единственный способ, который я нашел, это вытеснять внутренний сырой воздух более сухим наружным при помощи простого вентилятора.
Arduino, два датчика DHT22 изнутри и снаружи, релейный модуль на вентилятор и начинаются действительно интересные проблемы.Как известно, DHT22 отдает температуру и относительную влажность. Как сравнивать показания датчиков? Действительно ли наружный воздух «суше», чем внутренний? Что будет с воздухом, если его всосать в гараж? Возможно, он настолько теплее, что даже при меньшей относительной влажности снаружи даст конденсат на стенах внутри. Внутренняя температура всегда отличается от наружной, но при этом постепенно стремится к наружной. Степень «постепенности» неизвестна. Будет температура расти или падать — так же неизвестно.
Первой мыслью было пытаться строить массивы показаний датчиков и пытаться прогнозировать влияние наружного воздуха на внутренний, но куча изрисованных бумажек так и не позволила выстроить в голове внятную модель для реализации.
Но пришла следующая идея. Абсолютная влажность она на то и абсолютная, что от давления, температуры и прочего не зависит. И если абсолютная влажность наружного воздуха ниже абсолютной влажности внутреннего, то наружный воздух однозначно «суше» и независимо от того, как изменится его температура внутри — он «лучше» замещенного воздуха.
Идея — идеей, но и тут оказались мелкие проблемы. Оказывается абсолютная влажность вычисляется по температуре и относительной влажности по графикам типа такого:
И никакого точного способа пересчета нет. Зато есть достаточно большое разнообразие аппроксимирующих формул. По итогу была выбрана вот эта формула, а точнее формулы, поскольку для положительной и отрицательной температуры формулы разные.
Казалось бы, на этом и все. Сравниваем две абсолютные влажности и если снаружи «суше» — включаем вентилятор, но не тут то было. Первая проблема в том, что если представить, что наружный воздух имеет постоянную влажность, а внутри никакого источника влаги нет, но есть сырой воздух, то при прокачивании через гараж наружный воздух будет смешиваться с имеющимся там воздухом и внутренняя влажность будет бесконечно приближаться к наружной, но не достигнет ее или достигнет очень не скоро. А это крайне неэффективно по электричеству. Очевидное решение — ввести какую-то разность влажностей, при достижении которой вентилятор выключать и считать внутренний воздух сухим, но тут возникает вторая проблема. При перепаде температур от +30 до -30 значение абсолютной влажности изменяется в тысячу раз. То есть при -30 градусах разница в 0.001 грамма на кубометр воздуха может означать, что вы пройдете точку росы и на стенах выпадет шуба. А при +30 эта тысячная ничего не значит, потому что в кубометре может висеть 20 грамм воды.
Никакого четкого, обоснованного решения придумано не было. Волевым научным тыком разность была принята в 0.01 грамма на кубометр из того соображения, что от инея на стенах вреда не много, поскольку при повышении температуры, при работе робота — лед просто сублимирует и будет удален с остальным воздухом. И из эмпирических соображений было введено еще одно энергосберегающее ограничение. При относительной наружной влажности выше 90% наружный воздух не прокачивается. Просто потому, что это ненормально высокая для нашего региона влажность и даже если этот воздух суше внутреннего — очень скоро и его тоже придется выкачивать. Цифра 90% так же с потолка.
Результат.
Полтора года робот пашет безостановочно.
Ардуино в коробке с автоматом, там же блок питания. На ней же справа внутренний датчик. Релейный блок в самой розетке. Выключатель принудительно включает вентилятор в обход реле. Шуба из инея зимой пропала. Дерево все рассохлось. Ничего не гниет. Потребляет порядка двух киловатт-часов в месяц. Если в «сухом» гараже подышать минут 15 — робот включает вентилятор. В общем, все работает.
Побочный эффект — вымораживает. Причем вымораживает так, что шуба из инея теперь периодически появляется снаружи, а в мае, когда светит солнышко и зеленеет травка — внутри без ватника трясет от холода.
Поле для оптимизации. Если прикрутить SD-карточку и пособирать статистику — можно выбрать более обоснованную отсечку, чем 90%. Можно подумать и поставить разность абсолютных влажностей на отсечку в зависимость от температуры.
А вот теперь самое интересное — развитие.
Сейчас прорабатывается система приточно-вытяжной вентиляции с рекуперацией для частного дома. Задача снизить расход энергии и на вентиляцию и на обогрев. Казалось бы, все просто. Датчики СО2 по комнатам. Вентилируем только ту комнату, где «надышали», но есть масса вопросов, на которые у меня пока нет ответов. Буду рад помощи.
1. Как контролировать отток через печку? Вот есть частотник на приточном вентиляторе, есть на вытяжном. Если бы не печка, можно было бы обойтись одним и крутить вентиляторы синхронно. А как быть с оттоком через печь? (Отдельный воздуховод на приток печи — не предлагать);2. (без учета печки) Алгоритм управления оборотами вентиляторов? Текущая идея в том, что скорость вращения должна зависеть не от концентрации СО2, а от скорости роста концентрации. То есть если концентрация растет — обороты растут, падает — падают и какая-то отсечка, скажем, 500–600ppm. Повышением отсечки можно ввести зимний экономный режим с повышенной концентрацией СО2;3. Есть желание заслонку печки привязать к датчику СО, в том плане, чтобы он держал заслонку максимально закрытой максимальное количество времени, но страшно;4. Чисто технический вопрос: как все это датчиковое великолепие максимально дешево развесить по дому, поскольку для целей управления отоплением еще и DHT22 в каждой комнате будут?
Спасибо за внимание. Схему робота я не рисовал, скетч вышлю всем желающим, с радостью приму конструктивные предложения.