Digitrode
цифровая электроника вычислительная техника встраиваемые системы
Arduino и датчик MQ-135: измерение концентрации углекислого газа в воздухе
Уровень углекислого газа (двуокись углерода или CO2) в атмосфере Земли повышается день ото дня. Среднее значение CO2 в атмосфере в 2019 году составило 409,8 частей на миллион, а в октябре 2020 года – 411,29. Двуокись углерода является ключевым парниковым газом, на который приходится около трех четвертей выбросов. Таким образом, мониторинг уровня CO2 также стал приобретать все большее значение.
В нашем предыдущем проекте мы использовали инфракрасный датчик CO2 для измерения концентрации CO2 в воздухе. В этом проекте мы собираемся использовать датчик MQ-135 с Arduino для измерения концентрации углекислого газа. Измеренные значения концентрации CO2 будут отображаться на OLED-модуле.
Датчик газа MQ-135 – это датчик качества воздуха для обнаружения широкого спектра газов, включая NH3, NOx, спирт, бензол, дым и CO2. Датчик MQ-135 можно приобрести как в виде модуля, так и просто как датчик. В этом проекте мы используем сенсорный модуль MQ-135 для измерения концентрации CO2 в PPM. Принципиальная схема платы модуля MQ-135 приведена далее.
Нагрузочный резистор RL играет очень важную роль в обеспечении работы датчика. Этот резистор изменяет свое значение сопротивления в зависимости от концентрации газа. Согласно документации на MQ-135, сопротивление нагрузочного резистора может находиться в диапазоне от 10 кОм до 47 кОм. В документации рекомендуется откалибровать детектор на концентрацию 100 ppm NH3 или 50 ppm спирта в воздухе и использовать значение сопротивления нагрузки (RL) около 20 кОм. По умолчанию на плате стоит значение этого резистора 1 кОм.
Таким образом, чтобы измерить соответствующие значения концентрации CO2, вам необходимо заменить резистор 1 кОм на резистор 22 кОм. Полная схема подключения датчика газа MQ-135 к Arduino приведена далее.
Схема очень проста, поскольку мы подключаем только датчик MQ-135 и модуль OLED-дисплея к Arduino Nano. Датчик газа MQ-135 и модуль OLED-дисплея питаются от +5 В. Вывод аналогового выхода датчика MQ-135 подключен к выводу A0 Arduino Nano. Поскольку модуль OLED-дисплея использует связь SPI, мы установили связь SPI между модулем OLED и Arduino Nano. После подключения оборудования в соответствии с принципиальной схемой оно должно выглядеть примерно так:
Теперь, когда мы знаем значение RL, давайте приступим к расчету значений Ro для чистого воздуха. Здесь мы собираемся использовать MQ135.h для измерения концентрации CO2 в воздухе. Поэтому сначала загрузите библиотеку MQ-135, затем предварительно нагрейте датчик в течение 24 часов, прежде чем считывать значения Ro. После процесса предварительного нагрева используйте приведенный ниже код, чтобы прочитать значения Ro.
Теперь, когда вы получили значения Ro, перейдите в Документы – Arduino –libraries –MQ135-master, откройте файл MQ135.h и измените значения RLOAD и RZERO.
Теперь прокрутите вниз и замените значение ATMOCO2 текущим значением CO2 в атмосфере, равным 411,29.
Полный код для взаимодействия датчика MQ-135 с Arduino приведен далее.
Как только оборудование и код будут готовы, следует проверить датчик. Для этого подключите Arduino к ноутбуку, выберите плату и порт и нажмите кнопку загрузки. Затем откройте монитор последовательного порта и подождите некоторое время (процесс предварительного нагрева), после чего вы увидите окончательные данные. Значения будут отображаться на OLED-дисплее, как показано на следующем изображении.
Измеряем концентрацию CO2 в квартире с помощью MH-Z19
Практически любая метеостанция, включая дешевые китайские модели за несколько долларов, умеет измерять основные параметры воздуха — температуру и влажность. С углекислым газом все сложнее: бытовых приборов, способных его измерять, практически нет в продаже. Усложняет ситуацию и то, что CO2 — газ без цвета и запаха, так что «носом» ощутить его концентрацию практически невозможно.
Подробности и измерения под катом.
Сам датчик MH-Z19 уже описывался здесь на сайте. За основу была взята статья «Обзор инфракрасного датчика CO2», а данный материал является его логическим продолжением. Про измерение концентрации CO2 на улице было написано здесь, однако данных о концентрации в квартире там не приводилось. Восполним этот пробел.
Железо
40$, или 2600р. Фирменный прибор от известной компании стоит примерно вдвое дороже, хотя здесь скорее вопрос не экономии, а технического интереса.
Код для Arduino был позаимствован из вышеприведенной статьи, в него был добавлен вывод данных на дисплей, а для более удобного анализа данных вывод был переделан в формат простой строки с разделителем. Также были добавлены метки времени, каждая соответствует 10 секундам.
Все это было собрано вместе, скетч залит в ардуину, результат выглядит примерно так:
Конечно это не верх промышленного дизайна (в планах подыскать какой-то корпус), но для задачи показометра, способного работать как автономно, так и передавать данные по USB, устройство вполне справляется. Для получения данных по USB достаточно открыть в Arduino IDE монитор порта, в нем будут выводиться данные. Текст оттуда можно скопировать и открыть в любой программе, например в Excel.
Измерения
Следующий вопрос: что мы собственно измеряем? Устройство выдает данные в ppm (parts per million, частей на миллион). 1000 ppm = 0,1% содержания СО2. В интернете можно найти следующую таблицу допустимых концентраций:
— 350 — 450 ppm: Нормальный уровень на открытом воздухе.
— 1000 ppm держатся не менее часа.
Конец графика: было открыто окно, и уровень co2 упал практически сразу же.
Выводы
Устройство оказалось довольно-таки интересным, и особенно актуальным для работающих дома за компьютером. Так например, за время написания этой статьи уровень co2 вырос в помещении с 500 до 770ppm. Поглядывание на экран заставляет либо чаще открывать окно, либо наконец-таки задуматься об устройстве в доме нормальной вентиляции (наверное режим микропроветривания в окне был бы не лишним, а лучше какая-то вытяжка). Если бы я сейчас покупал новые окна, наверно задумался бы о более-менее качественной модели с нормальным проветриванием.
Также важно отметить актуальность хорошей вентиляции на кухне: как показывает график, даже за 10 минут одна газовая горелка может „выжечь“ весь запас кислорода, доведя концентрацию CO2 до весьма высокой. Измерения в спальне показали, что в плане вентиляции тоже все не очень хорошо: к утру концентрация co2 составляет более 1000ppm, а для умственного труда хороший сон это весьма актуально.
В общем, это нехитрое и недорогое устройство позволяет весьма эффективно проверить качество воздуха в квартире или офисе.
Автор желает всем хорошего здоровья и хорошего настроения. Ну и хорошего воздуха разумеется, тоже.
Детектор утечки газа на Arduino
В то время как сжиженный нефтяной газ (LPG) необходим почти в каждом домохозяйстве, его утечка может привести к катастрофе. Для предупреждения об утечке газа и предотвращения любой аварии существуют различные устройства обнаружения утечек. В данной статье мы разработаем сигнализацию утечки газа на основе Arduino. Если произойдет утечка газа, эта система обнаружит ее и просигнализирует об этом с помощью зуммера, включенного в схему. Собрать эту систему легко, и каждый, у кого есть минимальные знания в электронике и программировании, сможет сделать это.
Макет детектора утечки газа на Arduino
Для обнаружения утечки мы использовали модуль датчика сжиженного нефтяного газа (LPG). Когда происходит утечка газа, он выдает импульс высокого логического уровня на своем выводе D0, а Arduino непрерывно считывает состояние этого вывода. Когда Arduino обнаруживает импульс высокого логического уровня от модуля детектора газа, она показывает сообщение « LPG Gas Leakage Alert » на LCD дисплее 16×2 и активирует зуммер, который подает звуковой сигнал снова и снова, пока модуль детектора газа не перестанет обнаруживать газ в воздухе. Когда модуль детектора LPG газа подает импульс низкого логического уровня на Arduino, LCD показывает сообщение « No LPG Gas Leakage ».
Структурная схема сигнализации утечки газа
- Arduino Pro Mini
- Модуль датчика LPG газа
- Зуммер
- Транзистор BC547
- 16×2 LCD
- Резистор 1 кОм
- Макетная плата
- Батарея 9 вольт
- Перемычки
Модуль датчика LPG газа
Данный модуль содержит датчик MQ3, который и обнаруживает LPG газ, компаратор (LM393) для сравнения выходного напряжения MQ3 с опорным напряжением. Когда LPG газ обнаружен, он выдает напряжение высокого логического уровня. Потенциометр используется для регулировки чувствительности обнаружения газа. Данный модуль очень прост в использовании с микроконтроллерами и Arduino и легко доступен в продаже под названием «LPG Gas Sensor Module». Мы также можем собрать его самостоятельно, используя LM358, LM393 и MQ3.
Модуль датчика LPG газа
Принципиальная схема и описание
Как показано на приведенной выше принципиальной схеме, система включает в себя плату Arduino, модуль детектора LPG газа, зуммер и LCD дисплей 16×2. Arduino контролирует всю работу системы: считывание показаний датчика LPG газа, отправка сообщений на LCD, активирование зуммера. Чувствительность данного датчика мы можем установить с помощью установленного на нем потенциометра.
Вывод D0 датчика LPG газа напрямую подключен к выводу 18 (A4) Arduino, а выводы Vcc и GND подключены к выводам Vcc и GND на Arduino. Модуль датчика LPG газа содержит датчик MQ3, который и обнаруживает LPG газ. Этот датчик MQ3 содержит внутри себя нагреватель, который может потребовать до 15 минут для нагрева, чтобы подготовиться к обнаружению LPG газа. Схема компаратора используется для преобразования аналогового сигнала с MQ3 в цифровой. LCD дисплей 16×2 подключен к Arduino в 4-битном режиме. Выводы управления RS, RW и En напрямую подключены к выводам Arduino 2, GND и 3. Выводы данных D4-D7 подключены к выводам Arduino 4, 5, 6 и 7. Зуммер соединен с выводом 13 Arduino через NPN транзистор BC547 с резистором 1 кОм на базе.
Описание программы
В программе мы использовали функцию считывания цифрового вывода, чтобы прочитать показания модуля датчика LPG газа, а затем действовали в соответствии с полученными данными.
Для проверки проекта мы использовали зажигалку со сжиженным газом.
Видео
Детектор для обнаружения утечки газа на Arduino
Сжиженный нефтяной газ (LPG — liquified petroleum gas) используется сейчас в большинстве домохозяйств, однако его утечка может привести к тяжелым последствиям. Для предотвращения и обнаружения утечек этого газа разработано достаточно большое число разнообразных устройств. В этой статье мы разработаем детектор обнаружения утечки данного газа на основе платы Arduino. При обнаружении утечки газа детектор будет выдавать сигнал тревоги в виде звукового сигнала.
Мы будем использовать модуль обнаружения сжиженного нефтяного газа для обнаружения его утечки. При утечке газа этот модуль будет выдавать импульс высокого напряжения на своем контакте DO. А плата Arduino будет периодически проверять сигнал на этом контакте и когда она обнаружит на нем сигнал высокого уровня, то она будет высвечивать на экране жидкокристаллического (ЖК) дисплея сообщение “LPG Gas Leakage Alert” (тревога – утечка газа) и включать звонок (зуммер), который будет звенеть до тех пор пока не прекратится утечка газа. А когда модуль обнаружения утечки газа будет выдавать сигнал низкого уровня на своем контакте, то Arduino будет показывать на дисплее сообщение “No LPG Gas Leakage” (нет утечки газа).
Схема работы устройства представлена на следующем рисунке.
Необходимые компоненты
- Плата Arduino Pro Mini (купить на AliExpress).
- Модуль обнаружения утечки газа MQ3 (купить на AliExpress).
- Зуммер (буззер) (купить на AliExpress).
- Транзистор BC547 (купить на AliExpress).
- ЖК дисплей 16×2 (купить на AliExpress).
- Резистор 1 кОм (купить на AliExpress).
- Макетная плата.
- Батарейка на 9 В.
- Соединительные провода.
Модуль обнаружения утечки газа
Этот модуль содержит датчик MQ3, который способен обнаруживать сжиженный нефтяной газ, и компаратор (LM393) для сравнения выходного напряжения датчика MQ3 с опорным напряжением. Потенциометр используется для управления чувствительностью модуля. Этот модуль достаточно легко подсоединить к плате Arduino, а в иностранных интернет магазинах его также достаточно легко приобрести введя там в строке поиска запрос “LPG Gas Sensor Module”. Его также можно сконструировать самостоятельно используя датчик MQ3 и компаратор LM358 или LM393.
Работа схемы
Схема устройства представлена на следующем рисунке.
На представленной схеме можно увидеть плату Arduino, модуль обнаружения утечки газа, звонок и ЖК дисплей 16×2. Arduino контролирует весь процесс функционирования устройства: считывание сигнала с выхода модуля обнаружения утечки газа, передача сообщений в ЖК дисплей и включение звонка. Чувствительность модуля обнаружения утечки газа можно отрегулировать с помощью потенциометра, присутствующего на нем.
Контакт DO модуля обнаружения утечки газа непосредственно соединен с контактом 18 (A4), а его контакты Vcc (питание) и GND (земля) соединены с контактами Vcc и GND Arduino. Модуль обнаружения утечки газа включает в своем составе датчик MQ3, который непосредственно обнаруживает сжиженный нефтяной газ (LPG). Этот датчик включает нагревательный элемент, которому нужно нагреться до определенной температуры чтобы датчик стал функционировать должным образом. Обычно этот процесс занимает около 15 минут. Компаратор в составе модуля обнаружения утечки газа используется для конвертации аналогового значения с выхода датчика MQ3 в цифровое. ЖК дисплей 16×2 соединен с платой Arduino в 4-битном режиме. Управляющие контакты RS, RW и En напрямую подсоединены к контактам 2, GND и 3 Arduino. Контакты для передачи данных D4-D7 подсоединены к контактам 4, 5, 6, 7 Arduino. Звонок подключен к контакту 13 Arduino через транзистор NPN BC547, в базу которого включен резистор сопротивлением 1 кОм.
Исходный код программы
В тексте программы мы будем использовать функцию считывания значений с цифрового выхода Arduino чтобы считывать значение с цифрового выхода модуля обнаружения утечки газа и потом выполнять необходимые управляющие действия. Эта последовательность действий программируется следующим кодом:
Для тестирования работоспособности устройства мы будем использовать сигарету, содержащую сжиженный нефтяной газ. Далее представлен полный код программы.
#include
// подключение библиотеки для работы с ЖК дисплеем
LiquidCrystal lcd(3, 2, 4, 5, 6, 7); //контакты, к которым подключен ЖК дисплей
#define lpg_sensor 18 // контакт, к которому подключен модуль обнаружения утечки газа
#define buzzer 13 // контакт, к которому подключен звонок
void setup()
<
pinMode(lpg_sensor, INPUT); // на ввод данных
pinMode(buzzer, OUTPUT) ; // на вывод данных
lcd.begin(16, 2);
lcd.print(«LPG Gas Detector»);
lcd.setCursor(0,1);
lcd.print(«Circuit Digest»);
delay(2000);
>
void loop()
<
if(digitalRead(lpg_sensor) ) //если на выходе модуля обнаружения утечки газа сигнал высокого уровня
<
digitalWrite(buzzer, HIGH);
lcd.clear();
lcd.print(«LPG Gas Leakage»);
lcd.setCursor(0, 1);
lcd.print(» Alert «);
delay(400);
digitalWrite(buzzer, LOW);
delay(500);
>
else
<
digitalWrite(buzzer, LOW);
lcd.clear();
lcd.print(» No LPG Gas «);
lcd.setCursor(0,1);
lcd.print(» Leakage «);
delay(1000);
>
>