- #МастеримДома. День 2: анализатор CO2 своими руками (первый подход)
- Макетная плата
- Датчик MQ135
- Arduino Uno
- Собираем анализатор CO2 на базе Arduino Uno
- Скетч для считывания показаний датчика
- Простейший измеритель CO2 за 2000 рублей и полчаса
- Измеритель-сигнализатор уровня CO2.
- Введение.
- Электрическая схема.
- Печатные платы.
- Монтаж.
#МастеримДома. День 2: анализатор CO2 своими руками (первый подход)
Вчера мы познакомились с Arduino и рассмотрели небольшой пример скетча для Arduino Uno. Сегодня попробуем собрать простейший датчик CO2 и написать скетч для передачи данных в COM-порт.
Для того, чтобы собрать наш анализатор нам понадобиться следующие железки:
- Макетная плата (breadboard)
- Датчик MQ135
- Arduino Uno
- Шесть проводов “папа – папа”
Прежде, чем я покажу итоговую сборку, скажу пару слов об используемом железе, чтобы в дальнейшем было понятно почему различные устройства подключаются именно так, а не иначе.
Макетная плата
Как известно, для сборки устройств разрабатываются и создаются печатные платы, например, вот такие:
Понятно, что самостоятельно делать такую плату ради прикола, как в моем случае, вряд ли захочется, тем более, что это может занять достаточно много времени. Поэтому для быстрой сборки различных электрических схем без пайки существуют макетные платы (они же – макетные доски, они же breadboard’ы).
Выглядит макетная плата вот таким незамысловатым образом:
Внутри макетной платы расположены медные пластины-рельсы. При этом, крайние рельсы (помеченные красным и синим цветом) расположены вдоль макетной платы, а остальные (помеченные латинскими буквами и цифрами) – поперёк макетной платы. Такое расположение рельс позволяет собирать самые разнообразные электрические схемы, подключая различные элементы схемы как последовательно, так и параллельно:
Изображение взято с сайта amperka.ru
Датчик MQ135
Датчик MQ135 – это, насколько я понял из различных описаний этого устройства, полупроводниковый газочувствительный резистор (если не прав – поправьте). Принцип работы датчика MQ135 основан на изменении сопротивления тонкопленочного слоя диоксида олова (SnO2) при его контакте с молекулами определяемого газа.
Чувствительный элемент датчика состоит из керамической трубки с покрытием Al2O3 и нанесенного на неё чувствительного слоя диоксида олова. Внутри трубки расположен нагревательный элемент, который нагревает чувствительный слой до температуры, при которой он начинает реагировать на определяемый газ. При этом, чувствительность к разным газам достигается изменением состава примесей в чувствительном слое.
В свое время, я покупал MQ135 на плате FC-22 со всей необходимой обвязкой. Выглядит датчик следующим образом:
Результат работы датчика выдается на аналоговый выход (A0), в то время как на цифровой выход (D0), по идее, должен выдаваться сигнал (1) при превышении концентрацией вещества заданного предела (предел регулируется подстроечным резистором). Питается датчик MQ135 от 5В.
К особенностям работы подобных датчиков мы ещё вернемся в одной из следующих статей, а пока перейдем к следующей нашей “железке” – Arduino Uno, которую я показывал в прошлый раз.
Arduino Uno
Я не буду подробно останавливаться на том, какие бывают Arduino Uno (оригинальные, китайские поделки, разные ревизии т.д.), а также подробным образом расписывать технические характеристики. Скажу только, что у меня китайская Arduino Uno, которая выглядит примерно так как на рисунке:
На платформе расположены 14 контактов (pins), которые могут быть использованы для цифрового ввода и вывода и 6 аналоговых (A0-A5). Какую роль исполняет каждый контакт — зависит от вашей программы. Все они работают с напряжением 5 В и рассчитаны на ток до 40 мА. Также каждый контакт имеет встроенный, но отключённый по умолчанию резистор на 20–50 кОм.
Теперь, показав вкратце, что и как выглядит и из чего состоит, можно попробовать собрать наш первый анализатор CO2 и посмотреть его в работе.
Собираем анализатор CO2 на базе Arduino Uno
Вообще, для себя, как для человека достаточно далекого от электроники, хотя и любящего иногда повозиться с оной, я при работе с Arduino придерживаюсь старого доброго правила, описанного в замечательной повести Анджея Сапковского “Ведьмак”. Кто читал эту книгу, тот наверняка вспомнит изречение медика Русти:
“Шейте красное с красным, желтое с желтым, белое с белым. Так наверняка будет хорошо…”
Вот и Arduino точно так же – соединяем VCC на датчике с VCC на Arduino Uno, аналоговые выходы с аналоговыми входами – так наверняка заработает.
Попробуем реализовать это правило в деле. Я соединил выход A0 на датчике с пином A0 на Arduino Uno, выход D0 на датчике с пином D4, ну и, соответственно, подвел питание 5В. Получилась вот такая хрупкая конструкция:
Судя по тому, что на датчике загорелся светодиод питания, а датчик пусть и не сильно, но нагрелся, можно сказать, что с аппаратной частью работы мы более менее справились. Теперь набросаем небольшой скетч, суть которого будет заключаться в том, чтобы отправить в COM-порт показания датчика MQ135.
Скетч для считывания показаний датчика
Итак, судя по тому, что удалось найти (см. выше) по работе датчика MQ135, наша задача получить значение сопротивления с аналогового выхода и каким-либо образом преобразовать значение этого сопротивления в значение концентрации интересующего нас вещества. В нашем случае – это CO2.
Скетч у меня получился вот такой:
Теперь загружаем скетч в Arduino Uno так, как я показывал в прошлой статье и открываем в меню Arduino IDE “Инструменты – Монитор порта”. Через несколько секунд в мониторе порта появились следующие значения:
Во время работы датчика я на него немного подышал и по картинке видно, что датчик сработал. Однако, что он показывает для нас пока остается загадкой. Точнее даже не так – остается загадкой значение концентрации CO2 в атмосфере моей комнаты.
Завтра приступим к “расшифровке” данных датчика MQ-135, посмотрим как можно интерпретировать получаемые значения, а заодно разберем один вопрос, который не дает мне покоя уже достаточно долгое время.
Источник
Простейший измеритель CO2 за 2000 рублей и полчаса
Измеритель уровня углекислого газа (CO2) наверное самый недооценённый прибор, который на мой взгляд должен быть в каждой квартире, ведь он показывает, насколько воздух пригоден для дыхания и с помощью него всегда видно, когда пора проветривать.
Такой измеритель в квартирах большая редкость прежде всего из-за высокой цены. Свой первый измеритель AZ Instruments 7798 CO2 datalogger я покупал за $139 и это была самая дешёвая модель на рынке.
Сейчас готовый измеритель CO2 стоит около 4000 рублей, а самодельный обойдётся вдвое дешевле.
Я разобрался с подключением датчиков углекислого газа с Aliexpress, нашёл примеры их использования и сделал простейшие измерители уровня CO2, которые очень просто повторить.
В большинстве самоделок используют датчик MH Z19B, но у него есть нехорошая особенность — если помещение не проветривается до состояния уличного воздуха каждый день, показания начинают «уплывать» (датчик автоматически калибруется каждый день и считает минимальный уровень CO2 в помещении за 400 ppm). Я заказал два более продвинутых датчика — Sensair S8 004-0-0053 (он обошёлся мне в $28.86, сейчас стоит $32.30) и Telaire T6703 (его я купил за $19.41, сейчас он стоит $28.35).
Я подключил датчики к Arduino Nano (его можно купить за $2.98), но можно использовать и другую плату Arduino. Для отображения значения CO2 используется дешёвый светодиодный экранчик TM1637 (он стоит $0.67). Для соединения удобно использовать готовые провода с коннекторами Dupont F-F (20 штук по 10 см стоят $0.87), для подключения сенсоров их можно разрезать пополам и подпаять.
Помимо индикации на экранчике, мои измерители передают данные в порт, поэтому их можно подключить к компьютеру, зайти в режим платформы Arduino «Монитор порта» (скорость 9600), наблюдать значения CO2 и использовать измеритель, как даталоггер (нужно просто скопировать данные из окошка монитора порта в Excel).
Кстати, экран можно не подключать и пользоваться только монитором порта.
Оба сенсора дают точные результаты (я сравнивал с хорошими измерителями уровня углекислого газа Даджет МТ8057s и AZ Instruments 7798 CO2 datalogger). Более дешёвый Telaire T6703 мне понравился даже больше — он выходит на правильные показания секунд за тридцать после включения и его результаты ближе к результатам дорогих приборов с двухлучевыми сенсорами.
Если вы захотите повторить одну из этих простых конструкций, я собрал всё, что нужно в одном архиве — там и скетчи для Arduino, и схемы подключения и необходимая библиотека.
Я планирую добавить к моим измерителям поддержку дешёвого цветного TFT-экрана и трёх или четырёх реле для управления вентиляцией в зависимости от уровня углекислого газа в помещении. Как только сделаю это, напишу такую же инструкцию для повторения этих самоделок.
Источник
Измеритель-сигнализатор уровня CO2.
«В доме было все краденое, и даже воздух был какой-то спертый» (А. Кнышев, писатель-сатирик). В статье предлагается устройство, которое определяет концентрацию углекислого газа в помещении («спертость воздуха») и выдает световые и звуковые сигналы при превышении установленных порогов качества воздуха.
Рекомендуется руководителям подразделений к установке в производственных помещениях для объективного определения необходимости их проветривания в целях сбережения здоровья работников и повышения производительности труда.
Введение.
Качество воздуха в помещениях жилых и общественных зданий обеспечивается необходимым уровнем вентиляции, поддерживающим допустимые значения содержания углекислого газа в помещениях. В России действует межгосударственный стандарт ГОСТ 30494–2011 «Здания жилые и общественные. Параметры микроклимата в помещениях», в котором указаны четыре класса помещений, в зависимости от объема углекислого газа, измеренного в см3в 1 м3 воздуха.
В международной практике принято измерять концентрацию углекислого газа в «ppm» (partspermillion – частей на миллион). Т.е. 1 ppm — это одна миллионная доля. Концентрация СО2 в 1 ppm означает, что в 1 м3 воздуха содержится 1 см3 углекислого газа. Например, на улице уровень СО2 составляет 350…400 ppm
Уровень концентрации СО2 в помещении служит основным показателем качества воздуха. Он выступает как индикатор, по которому можно судить не только о других загрязнителях, но и о том, насколько хорошо работает вентиляционная система в здании. Исследования ученых-экологов показывают, что если в воздухе присутствуют, кроме углекислого газа, летучие органические соединения и формальдегиды, то достаточно следить только за СО2. Если вентиляция справляется с ним, то остальные загрязнители также остаются на низком уровне. Более того, по СО2 можно судить и о количестве бактерий в воздухе. Чем больше углекислого газа, тем хуже справляется вентиляция и тем больше в воздухе разных бактерий и грибков. Особенно отчетливо это заметно зимой, когда интенсивность вентиляции падает, а количество респираторных инфекций растет.
Уровни концентрации СО2 и их влияние на человека изображены на рисунке (Рисунок 1).
Рисунок 1. Влияние концентрации СО2 на человека
На рисунке: ASRAE — American Society_of_Heating, Refrigeratingand Air-Conditioning Engineers (Американское Общество инженеров по отоплению, охлаждению и кондиционированию воздуха).
OSHA — Occupational_Safetyand_Health_Administration (Федеральное агентство США, которое регулирует охрану труда). Как видно из рисунка данные российского и американского стандарта по микроклимату в помещении практически совпадают.
Предлагаемое устройство является измерителем-сигнализатором уровня углекислого газа в помещении. Оно проводит периодические измерения концентрации углекислого газа в помещении с выводом полученного значения на ЖК-дисплей. Устройство анализирует полученное значение концентрации углекислого газа, классифицирует ее степень по трем установленным классам состояния воздуха («свежий воздух», «норма», «душно») и сигнализирует о качестве воздуха светодиодными индикаторами. Каждому классу качества воздуха соответствует светодиод определенного цвета свечения: зеленый – свежий воздух, желтый – норма, красный – душно. При этом если устройство определило, что концентрация СО2 в помещении превысила значение «душно», то дополнительно к светодиоду красного цвета свечения включается прерывистый звуковой сигнал.
Пользователь может самостоятельно задать пороговые уровни концентрации СО2 исходя из строительных норм, санитарных норм или собственного предпочтения.
Кроме измерения уровня СО2, устройство также измеряет и отображает на ЖК-дисплее еще два важных климатических параметра: температуру и влажность воздуха в помещении.
Внешний вид устройства показан на рисунке (Рисунок 2).
Рисунок 2. Внешний вид станции
Видео с демонстрацией работы станции представлено ниже:
Электрическая схема.
Схема электрическая принципиальная представлена на рисунке 3.
Рисунок 3. Схема электрическая принципиальная
Устройство собрано на микроконтроллере ATmega8. Цепочка R1С3 обеспечивает начальный сброс (!Reset) микроконтроллера при включении. Предусмотрено внутрисхемное программирование МК через разъем XP1 «SPI программатор».
Фьюзы МК ATmega8: HIGH=0xD9, LOW=0xE4.
Основным измерительным прибором устройства является инфракрасный датчик CO2 MH-Z19B. Датчик подключен к МК по UART (линии RXD, TXD). Программа МK опрашивает датчик не чаще чем 1 раз в 10 секунд. В ответ на запрос концентрации СО2 (команда 0x86) датчик посылает последовательно 9 байт, которые записываются в буферный массив программы. 2-й и 3-й элементы массива содержат значение концентрации СО2, последний элемент массива содержит контрольную сумму. Согласно документации на датчик, требуется около трех минут, чтобы он вышел на рабочий режим. Первое время после включения он будет выдавать неточные значения.
Дополнительным измерительным прибором является датчик температуры и влажности DHT11, который также опрашивается не чаще чем 1 раз в 10 секунд (опрос происходит в едином цикле с опросом датчика CO2 MH-Z19B). МК взаимодействует с датчиком по последовательному одно-проводному двунаправленному интерфейсу. В ответ на запрос датчик возвращает 5 байт. Первые два байта содержат значение влажности, целая и десятичная части. Следующие два байта являются значением температуры по Цельсию, целая и десятичная части. Последний байт — это контрольная сумма, которая является суммой первых четырех байтов. Следует отметить, что на точность показаний датчика DHT11 по влажности — очень много нареканий в среде пользователей. Для приближения показаний датчика к приемлемым значениям в программу введена корректирующая поправка, которая задается пользователем во время эксплуатации устройства и сохраняется в EEPROM. Эту поправку следует вводить после сравнения показаний относительной влажности устройства с другим прибором, показаниям которого принято доверять. Линия интерфейса DATA датчика DHT11 «подтянута» к питанию VCC резистором R7.
Управление устройством осуществляется с помощью кнопок SA1 «Установка», SA2 «+» (увеличение значения параметра) и SA3 «-» (уменьшение значения параметра). При помощи этих кнопок устанавливаются нижний и верхний пороги концентрации СО2, включается или отключается громкоговоритель устройства, устанавливается корректирующая поправка на показание относительной влажности воздуха.
В качестве дисплея используется жидкокристаллический индикатор типа WH-1602A.Потенциометром R8 регулируется яркость подсветки индикатора. На дисплее отображаются текущие значения концентрации СО2, температуры и относительной влажности в помещении, а также настраиваемые параметры устройства в режиме «установка».
Светодиодные индикаторы VD2, VD3, VD4 — обеспечивают сигнальное отображение уровня СО2: ниже нижнего порога – зеленый («свежий воздух»), между нижнем и верхним порогами – желтый («норма»), выше верхнего порога – красный («душно»).
Звуковой сигнал с вывода 15 МК, через регулятор громкости резистор R6 — усиливается усилителем низкой частоты на транзисторах VT1 и VT2. Для воспроизведения звука используется громкоговоритель SP1 с сопротивлением звуковой катушки 8 Ом.
Питание устройства осуществляется от сетевого источника питания напряжением 5 Вольт. На схеме изображен разъем питания от USB. В авторском опытном изделии источник питания помещен в один корпус вместе с устройством.
Печатные платы.
Печатные платы разработаны в программе DipTrace. Они выполнены на одностороннем фольгированном стеклотекстолите. Расположение деталей на основной печатной плате показано на рисунке (Рисунок 4). На рисунке перемычки выделены цветными ломаными линиями. Печатная плата со стороны дорожек показана на рисунке (Рисунок 5).
Рисунок 4. Основная печатная плата. Вид со стороны деталей.
Рисунок 5. Основная печатная плата со стороны дорожек. Зеркальное изображение.
Плата кнопок управления и сигнальных индикаторов показана на рисунках (Рисунок 6 и Рисунок 7).
Рисунок 6. Плата управления. Вид сверху.
Рисунок 7. Плата управления. Вид снизу.
Монтаж.
Станция смонтирована в корпусе универсальной коробки для кабельных каналов «Промрукав» — IP42; 400V; полистирол ГОСТ Р 50827.1-2009 ТУ 3464-001-97341529-2012. Артикул 40-0460. На передней стороне корпуса прорезаны окна для дисплея, датчика CO2 MH-Z19B, датчика температуры и влажности DHT11, отверстия для кнопок и светодиодов.
Размещение радиодеталей на печатной плате и комплектующих изделий показано на рисунках (Рисунок 8 и Рисунок 9).
Рисунок 8. Размещение деталей на плате и комплектующие изделия
Рисунок 9. Дисплей, датчики, пульт управления на плате.
Архив к статье содержит:
1.Папку CO2meter – файлы проекта на Си в среде AtmelStudio 7.
2.CO2meter.dch – схема электрическая принципиальная в формате DipTrace и в формате рисунка jpg.
3.CO2meter.dip – печатная плата устройства в формате DipTrace.
4.CO2meter_button.dip – печатная плата Пульта управления в формате DipTrace.
5.CO2meter.hex – загрузочный файл для МК.
P.S. Ещё была мысль — приделать к устройству привод для автоматического открытия-закрытия фрамуги. Пока не реализовал, но если появится такая необходимость, о чём пишите в комментариях, то всегда можно усовершенствовать устройство.
Удачи Вам в творчестве и всего наилучшего!
Скачать архив.
Источник