Устройство для мониторинга CO2 в помещении
В этой статье мастер-самодельщик предлагает рассмотреть портативное, автономное и простое в использовании устройство с открытым исходным кодом для мониторинга и записи концентрации CO2 в воздухе в режиме реального времени.
В этой статье мастер попытается решить проблему, которая одновременно простая и сложна: эффективная сигнализация о необходимости вентиляции закрытых пространств, заполненных людьми. SARS-CoV2, вирус, ответственный за Covid19, считается вирусом, передающимся по воздуху, распространяющимся (среди прочего) через респираторные аэрозоли (микроскопические капли, которые выделяются как нормальный побочный продукт дыхания). На открытом воздухе или в основном на открытых пространствах лучшая стратегия борьбы с воздушным заражением — дистанция. В закрытых помещениях респираторные аэрозоли могут перемещаться на большие расстояния и равномерно рассеиваться по всему помещению, если им дать достаточно для этого времени. В таких условиях дистанцирование теряет часть своей эффективности, а пригодный для дыхания воздух во всем помещении рискует стать переносчиком заражения. В принципе, решить эту проблему легко: хорошая вентиляция закрытых помещений решает проблему. Однако проблема усложняется отсутствием очевидных показателей, на которые можно положиться, чтобы выбрать лучшую стратегию вентиляции: для данного количества людей в данном закрытом помещении, как часто следует открывать окна или двери, и на какой срок.
Мастер предлагает использовать мониторинг CO2 в качестве маркера для количественного измерения того, сколько пригодного для дыхания воздуха в помещении потенциально заражено респираторными аэрозолями.
Шаг первый: теория и немного о комплектующих
Попытка непосредственно обнаружить микроскопические капли, ответственные за загрязнение воздуха, хотя технически осуществима, оказалась бы очень сложной и дорогой в обычных повседневных условиях. Однако, учитывая, что указанные аэрозоли являются прямым побочным продуктом дыхания людей, находящихся в комнате, их можно косвенно контролировать с помощью другого естественного продукта дыхания: диоксида углерода. Путем дозирования углекислого газа в комнате, где живут люди, и сравнения этого измерения с фоновой концентрацией СО2 в атмосфере (обычно около 400 частей на миллион в среднем) можно получить прямую оценку того, сколько воздуха «выдохнули» обитатели. На основе этого измерения можно затем контролировать вентиляцию, обеспечивая более безопасное нахождения людей в закрытых помещениях.
Указанный в материалах микроконтроллер Feather 328P является эквивалентом платы Arduino, адаптированной к форм-фактору Feather и работающей от логического напряжения 3,3 В. Если размер не является проблемой (например, для фиксированных устройств), его можно заменить любой базовой платой Arduino. Требование к любой заменяющей плате для этого проекта состоит в том, чтобы выбранный микроконтроллер мог обмениваться данными с периферийными устройствами как через SPI, так и через I2C, а также иметь, по крайней мере, один аналоговый входной вывод, связанный с АЦП (в идеале с диапазоном более 2 В).
Вместо указанной здесь модели 328P можно использовать любое Arduino-совместимое устройство Feather, например, плату Feather M0, плату M4 или 32u4 или любую другую модель. .
Featherwings — это эквивалент платы расширения Arduino.
Featherwing OLED — это OLED-экран, который взаимодействует через I2C. Интересной особенностью рекомендованной здесь конкретной модели является наличие трех кнопок (A, B и C), которые здесь используются для взаимодействия с интерфейсом устройства. При необходимости их можно легко заменить независимыми кнопками.
Featherwing Adalogger представляет собой комбинацию I2C RTC и устройства чтения SD-карт SPI. Он используется здесь для записи измерений и соответствующих им времени и даты.
Блок питания можно заменить зарядным устройством для телефона с разъемом Micro-USB любого типа, если устройство используется в качестве стационарного устройства, подключенного к розетке. Обратите внимание, что блоки питания USB обычно поставляются с собственным кабелем USB A — Micro-USB. В большинстве случаев такие кабели аккумулятора имеют только провода питания и не могут использоваться для программирования или передачи данных.
Шаг второй: подготовка микроконтроллера
Самая первая задача — установить разъемы на микроконтроллер и две платы расширения. Затем, печатные платы можно расположить друг над другом или разместить на макетной плате.
Разъемы устанавливаются путем пайки их в соответствующие монтажные отверстия на каждой плате.
После инициализации RTC можно загрузить рабочий код на плату Feather.
Предлагаемый здесь код написан для IDE Arduino. Язык IDE Arduino является производным от C / C ++. Код хорошо прокомментирован. Он основан на следующих библиотеках, которые нужно сначала импортировать в IDE Arduino с помощью Менеджера библиотек:
SPI
SD
Wire
RTClib
Adafruit_GFX
Adafruit_SSD1306
Код можно скачать репозитория GitHub .
Структура кода проста:
При включении устройства начинается двухминутная фаза предварительного нагрева, во время которой светодиод светится, синим цветом.
Файл, в котором записаны уровни CO2, создается на карте micro-SD. Имя файла автоматически создается при загрузке как LOG *****. TXT, где ***** — уникальный 5-значный индексный номер, увеличивающийся со временем. Такая индексация номеров упрощает упорядочивание файлов по времени и защищает систему от непреднамеренной перезаписи старых файлов при перезагрузке устройства.
Затем начинается нормальный рабочий цикл, в котором измерение концентрации CO2 производится каждые две секунды. После серии из пяти таких измерений расчетное значение концентрации CO2 вычисляется как среднее из предыдущих пяти значений. Затем он записывается на карту micro-SD вместе с датой и временем и аналогичным образом отображается на OLED-экране.
Отображаемая концентрация CO2 сравнивается с пороговым значением, заданным пользователем. Если он превышает пороговое значение, светодиод становится красным, в противном случае он становится зеленым.
Затем снова начинается новый цикл измерения.
Между двумя измерениями код проверяет, нажата ли кнопка A. Если нажата, на дисплее появляется меню, с помощью которого пользователь может увеличивать или уменьшать выбранный порог с шагом ± 250 ppm, используя кнопки B и C. Пороговое значение по умолчанию установлено на уровне 1000 ppm, в соответствии с рекомендациями нескольких международных организаций здравоохранения.
Шаг четвертый: схема сборки
Схема достаточно проста. Платы, как говорилось ранее, устанавливаются друг над другом, светодиод и датчик CO2 подключаются проводами.
Светодиод подключается к контактам цифрового ввода / вывода 13 (R), 12 (B) и 11 (G), а его общий катод к земле. Можно выбрать и другие выводы, но этот конкретный выбор был мотивирован необходимостью избегать использования вывода 10, который уже влияет на аппаратную связь SPI между микроконтроллером и платой Adalogger. Кроме того, на платах Feather (и на большинстве плат Adafruit) контакт № 13 подключен к отладочному красному светодиоду SMD, установленном на самой плате. При данном выборе подключения красный канал внешнего светодиода RGB всегда имитирует красный светодиод платы, что удобно для целей отладки.
Датчик CO2 представляет собой инфракрасный датчик NDIR CO2 производства Gravity. На рынке существует несколько других моделей, хотя большинство из них дороже. Эта конкретная модель обеспечивает аналоговый выход с напряжением от 0 до 2В. Выход подключается к контакту A2 на плате. Данный вывод используется еще как аналоговый вход, и инструкция в коде активирует его 12-битное разрешение АЦП (по сравнению с 10-битным АЦП классической Arduino). Провода питания датчика подключаются к контактам USB и заземления платы Feather соответственно.
Для питания устройства можно использовать адаптер питания 5В или повербанк. После тестов мастер установил, что аккумулятор на 2000 мАч позволяет устройству работать непрерывно чуть более 24 часов.
Поскольку основная плата и платы расширения уложены друг на друга, к контактам на плате нет прямого доступа для пайки проводов. Есть несколько способов обойти это.
Если на плату Feather (как на фотографии) были установлены длинные гнездовые разъемы, то соединения можно легко припаять к той части контактов, которая выступает из нижней части платы.
Второй вариант, плату Feather можно припаять к небольшой перфорированной плате, на которую затем можно легко припаять другие провода.
Источник
Датчики со2 своими руками
Добрый день всем!
Извините за длинное сообщение, но коротко не скажешь. Конструирую инфракрасный измеритель концентрации углекислого газа, нужны советы. Сам измеритель нужен потому, что собираю гуманную ловушку для крыс, действие которой будет основано на том, что крыса будет проваливаться в ёмкость с углекислым газом и быстро терять сознание. Ловушка нужна для применения в приюте для собак и кошек, который достали крысы и мыши. Там нельзя использовать обычные яды, чтобы отравленной крысой не потравились собаки и кошки. На Западе есть такие гуманные ловушки, крысы в них погибают без мучений — но это сложные устройства, начиненные электроникой. Я хочу собрать простейшую дешевую конструкцию. При этом хочу понимать, насколько быстро газ будет улетучиваться из контейнера ловушки за счет диффузии и исходя из этого, думать о мерах герметизации системы в «режиме ожидания».
Концентрацию CO2 планирую измерять спектроскопически, углекислый газ обладает сильной полосой поглощения в ближней инфракрасной области, пик поглощения приходится приблизительно на длину волны 4.43 мкм.
Купил за 1000 рублей пироэлектрический датчик Murata IRA-E420QW1, который обладает встроенным полосовым фильтром на 4.45 мкм и чувствителен только к ИК-излучению около 4.43-4.45 мкм, что совпадает с полосой поглощения CO2. То что надо.
В качестве источника света буду использовать недокаленную (светится темно-красным) галогенную лампу на 40 Вт с колбой из кварцевого стекла, которое пропускает ИК-излучение упомянутого диапазона (обычное стекло не пропускает). Хвост распределения излучения как раз должен попасть в нужную 4-5 мкм область.
Подключил питание к датчику 5 вольт, на третий вывод повесил цифровой мультиметр с высоким внутренним сопротивлением (которое доказывается тем, что даже конденсаторы малой ёмкости медленно сбивают напряжение при измерении им).
Что наблюдал:
а) при отсутствии ИК-излучения, показания мультиметра 1.0-1.2 вольта
б) при поднесении зажженной спички или раскаленной нихромовой проволоки — уже на расстоянии 20-30 сантиметров показания мультиметра 3 вольта. Чувствительность хорошая датчика хорошая.
в) при освещении недокаленной обычной лампой накаливания — ноль реакции, оно и понятно, обычное стекло сильно поглощает ИК-излучение длиннее 3 мкм!)
г) при освещении упомянутой недокаленной галогенкой — датчик превосходно реагирует, при расстоянии между датчиком и лампой с рефлектором из фольги и датчиком:
20 сантиметров — 3 вольта
30 сантиметров — 2.4 вольта
При снятии ИК-облучения показания обращаются вначале в ноль, а затем медленно восстанавливаются 1.0-1.2 вольта, но каждый раз немного разные во втором знаке. Интересная «петля гистерезиса» вырисовывается.
То есть даже без всякого усилителя датчик отлично реагирует на ИК-освещение спичек, нихрома и галогенки.
Однако когда опускаешь закрепленные на 20-30 сантиметрах датчик и ИК-осветитель с рефлектором в ёмкость, только что наполненную чистым углекислым газом из баллона, показания мультиметра абсолютно не отличаются от тех, которые я имею на воздухе. Что на воздухе 2.5 вольта, что в ёмкости с газом.
Варьировал расстояние между ИК-излучателем и датчиком, менял питание в допустимых пределах от 3 до 12 вольт, и всё равно та же картина! Даже при максимальном питании датчика в 12 вольт разница показаний лишь во втором знаке. (При 5 вольтах и во втором знаке нету).
Сейчас думаю, что надо собирать усилитель постоянного тока на ОУ и полевиках, тогда будет значимая разница между показаниями освещенного датчика на воздухе и в углекислом газе. Датчик хочу использовать один (дорогие всё же), опорный сигнал для второго входа ОУ хочу снимать с переменного резистора, подключенного для стабильности к батарейке. Хочу на воздухе делать первый замер, затем выставлять переменным резистором величину опорного сигнала равной величине показаний на воздухе; далее буду опускать датчик в ёмкость с CO2 и разница между опорным сигналом и сигналом датчика в газе должна дать разбаланс дифференциального усилителя, который и будет релевантен концентрации газа.
1. Подскажите пожалуйста, какие операционные усилители и полевики (если нужно усиливать сигнал перед ОУ) лучше всего использовать с IRA-E420QW1?
2. Или вообще лучше отказаться от идеи ИК-спекстроскопии и замутить что-нибудь основанное на измерении теплопроводности? (Теплопроводность CO2 в 2 раза выше, ченм у воздуха, теоретически мостик Уитсона с накаливаемыми проволочками должен почувствовать). Но пока что хочется ИК-спектроскопию пробовать, т.к. накаливаемый датчик теплопроводности будет чувствителен к самому легкому дуновению, показания будут искажаться.
3. Может кто-то знает готовые измерители для высокого диапазона концентраций CO2 (40-80%) в ценовой категории до 5000 рублей, которые можно просто купить и не париться?
PS. Я по образованию химик, кандидат наук, радиотехникой увлекался в детстве, сейчас уже многое подзабыл
Источник
Контроль качества воздуха (со2 и температуры) в офисе и дома, своими руками
Все началось с того что я работаю в офисе, где как водится нет нормальной вентиляции. Зато есть много народу, кому-то все время жарко, другим постоянно дует.
Для контроля качества воздуха в помещении знать температуру недостаточно. Даже с кондиционером часто бывает прохладно, но душно. Спертый воздух. Оказалось, на это больше всего влияет концентрация со2. Когда я узнал стоимость готовых приборов хотел от этой идеи отказаться. Но случайно увидел описание оптического датчика концентрации со2 MH-Z19.
Цена конечно тоже не маленькая, но все-таки близко к разумным пределам. И руки давно чесались по паяльнику. В качестве контролера использовать решил ESP8266. Во первых дешево, во вторых что бы передавать информацию на компьютер, свой и любого желающего в комнате. После того как собрал и оттестировал первый вариант, с программой-монитором на компьютере, решил добавить экран. Во первых это красиво. Во вторых, во многих случаях удобно.
Устройство построено на модуле ESP8266 NodeMcu Lua wi-fi. Для него была написана программа на скриптовом языке LUA. Прошивку для интерпретатора Lua под мое устройство сгенерил на on-line сервере nodemcu-build.com. Выбрал там только те модули, которые мне были необходимы для создания проекта.
Дальше я взялся за сборку устройства. Подключил датчики температуры. ds18b20. Они работают по интерфейсу 1-wire:
Затем собственно датчик углекислого газа MH-Z19. Он может использовать два интерфейса ШИМ и UART. Я решил сперва попробовать ШИМ, и в результате он меня удовлетворил по надежности и точности показаний.
И подключил дисплей по шине ISP:
Была написана вот такая программа под Windows. На Delphi XE8:
Используемый мной контролер имеет встроенный модуль WIFI, который рассылает полученную с датчиков информации как UDP broadcast пакеты по всей сети офиса. И пользователи у которых стоит программа монитор, получают информацию о состоянии воздуха в помещении и предупреждения, если ситуация становится критической.
А теперь собственно впечатления.
Прибор оказался намного полезней и интереснее чем я ожидал. Во первых больше нет проблем с проветриванием, никто не возмущается, так как у всех выскакивает предупреждение и они довольно хорошо согласуются с личными ощущениями. Ну и просто наблюдения показали что в солнечный день уровень со2 значительно ниже чем в пасмурный и дождливый, утром загрязненность воздуха выше чем днем. С первого взгляда можно понять что делать, проветривать, если зашкаливает со2, или включить кондиционер, если повышенная температура. Датчик температуры на улице хорошо показывает получится ли охладить проветриванием, или только кондиционер. Стало очевидным и понятным, что творится в комнате и как в этом жить. Был случай когда решили проветрить, открыли окно, и тут же закрыли его, датчик буквально зашкалило, И дома прибор оказался очень полезным, особенно в детской комнате, тем более что за показаниями можно следить удаленно через WiFi.
В результате все это выглядит примерно так:
Источник