Measure CO2 with MQ-135 and Arduino Uno – Rob’s blog

Measure CO2 with MQ-135 and Arduino Uno - Rob's blog Анемометр
Содержание
  1. Что такое ардуино
  2. How the code works?
  3. Mq-135 gas detection arduino sketch
  4. Mq135 not suitable for co2
  5. Next day
  6. Pinout
  7. Specifications
  8. What is mq-135 gas sensor?
  9. Wrong formula in the mq135.h library
  10. Wrong hardware
  11. Версии аппаратной части платформы ардуино
  12. Влияние содержания со2 на человека
  13. История создания arduino
  14. Как сделать датчик газа на ардуино своими руками
  15. Калибруем датчик
  16. Общие сведения:
  17. Питание:
  18. Подключение:
  19. Подробнее о модуле:
  20. Получаем значение концентрации co2 в помещении
  21. Применение:
  22. Пример для типа подключения 1:
  23. Пример для типа подключения 2:
  24. Проект сборки детектора углекислого газа с датчиком mq-135 на платформе ардуино
  25. Проект сборки детектора углекислого газа с инфракрасным датчиком mh-z19
  26. Спецификация:
  27. Способ – 1 :  используя проводной шлейф и piranha uno
  28. Способ – 2 :  используя trema set shield
  29. Способ – 3 :  используя проводной шлейф и shield
  30. Узнаем значение нагрузочного сопротивления
  31. Устройство и принцип работы датчика углекислого газа для ардуино

Что такое ардуино

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

Универсальность электронной платформы заключается в том, что её можно загружать разными программами, с помощью которых можно управлять самыми разнообразными гаджетами. Ардуино — это своеобразная конструкторская база, с помощью которой можно создавать уникальные управляющие системы любого назначения, в том числе измеритель уровня загазованности окружающего пространства CO2.

How the code works?

Create two int variables to hold the analog and digital output readings.

int sensorValue;
int digitalValue;

Inside the setup() function, we will open the serial communication at a baud rate of 9600. Then configure pin2 connected with the DO pin of the sensor as an input and pin13 connected with the LED’s anode pin as an output.

void setup()
{
  Serial.begin(9600); // sets the serial port to 9600
  pinMode(13, OUTPUT);
  pinMode(2, INPUT);
}

In the infinite loop(), we will use analogRead() on the A0 pin and save the value in ‘sensorValue.’ Likewise, we will read the digital output on pin2 using digitalRead() and save the value in ‘digitalValue.’ Next, using an if-else statement we will check if the analog reading is greater than 400 or not.

void loop()
{
  sensorValue = analogRead(0); // read analog input pin 0
  digitalValue = digitalRead(2);
  if (sensorValue > 400)
  {
    digitalWrite(13, HIGH);
  }
  else
    digitalWrite(13, LOW);
  Serial.println(sensorValue, DEC); // prints the value read
  Serial.println(digitalValue, DEC);
  delay(1000); // wait 100ms for next reading
}

Mq-135 gas detection arduino sketch

Open your Arduino IDE and go to File > New. Copy the code below in that file.

Mq135 not suitable for co2

I think that I will stop my attempts for using the MQ-135 as a CO2 meter. With 1 sensor I measured different voltages on the analog port with same amount of CO2. It probably is to responsive to other gases in my surroundings. (Airport and highway).One evening while my wife was one floor lower and took some perfume the ppm went sky high from 640ppm to 5570ppm, and then slowly (30 minutes) went down again.

Next day

The next morning ppm was down to 500 according to the NETATMO, but the arduino showed a ppm of 600. I change the RZERO to 819 and the arduino also showed 500.

This is no good of course, so something must go wrong in the calculations in the MQ135 library. Or I am using a MQ-135 sensor with a bad response curve.

The next day I have tested the same with another MQ-135, but the results were about the same.

Pinout

The MQ-135 sensor module consists of four pins namely VCC, GND, DO, and DO. The table below gives a brief description of them.PinDescriptionVCCPositive power supply pin that powers up the sensor module.GNDReference potential pin.AOAnalog output pin.

It generates a signal proportional to the concentration of gas vapors coming in contact with the sensor.DODigital Output pin. It also produces a digital signal whose limit can be set using the in-built potentiometer.

Specifications

The table below shows some key specifications of the MQ-135 sensor module:FeatureDescriptionOperating Voltage2.5-5.0VDetecting Concentration10ppm-300ppm for NH310ppm-1000ppm for Benzene10ppm-300ppm for AlcoholLoad ResistanceAdjustableHeater Resistance33Ω ± 5%Heater Consumptionless than 800mWOperating Temperature-10 to 45°C

Про анемометры:  Правила пользования оборудованием | Инструкция по эксплуатации PROTHERM Гепард | Страница 15 / 42

What is mq-135 gas sensor?

MQ-135 sensor belongs to the MQ series that are used to detect different gasses present in the air. The MQ-135 sensor is used to detect gases such as NH3,NOx, alcohol, Benzene, smoke,CO2 ,etc. steel exoskeleton houses a sensing device within the gas sensor module.

Wrong formula in the mq135.h library

The formula to calculate the resistance of the sensor is wrong.It should read:

Wrong hardware

mq-135-2
Found out that the resistor towards ground was just 1K ohm, after replacing the resister with one 22K ohm the results were getting much better.

In my room s the real ppm was about 770 ppm according to my NETATMO.

The raw value measured with the arduino was now 241.Using MQ135-master from G.Krocker site and modifying MQ135.h with the correct RLOAD resistor value of 22K and a RZERO of 879.13

and using the below Arduino code

The Arduino sends out the following output to the serial port.

With these values I am very close to the values of the NETATMOI will of course also run the calibration outside where it should show about 400ppm, and eventually adjust the RZERO in MQ135.h

Версии аппаратной части платформы ардуино

На сегодняшний день существует несколько видов плат Arduino. Последняя разработка Leonardo использует микроконтроллер AT mega 32u4, а Duemilanove построена на Atmel At mega 328. Для сборки детектора углекислого газа применяют чаще всего более дешёвую модель — Arduino Uno, основанную на том же микроконтроллере, что и предыдущая версия платформы.

Платформа Ардуино Уно:

Влияние содержания со2 на человека

С повышением уровня углекислого газа в помещении люди начинают ощущать духоту, учащается сердцебиение, появляется утомляемость. Дальнейшее ухудшение качества воздуха может и вовсе привести к трагическим последствиям. Концентрацию газа в атмосфере ограниченного объёма измеряют в ppm.

Содержание СО2, ppmСимптомы
1400–800Отличное самочувствие
2800–1200Сонливость, утомляемость, падает внимание
31200 и болееПотеря трудоспособности, угроза здоровью

Влияние СО2 на человека:

История создания arduino

Автором универсального прибора считается житель итальянского городка Ивреа в провинции Пьемонт. Молодой преподаватель местного университета Массимо Банци с коллегами в 2005 году, пытаясь создать универсальную платформу для обучения студентов программированию, оснастил микроконтроллер ATMEGA дополнительной обвязкой. В результате Банци получил продукт, крайне востребованный на рынке электроники.

Интересен сам факт названия электронной платформы. Группа университетских программистов частенько засиживалась в местном баре под названием Arduino. Так в давние времена звали местного правителя. Вот авторы изобретения и решили так назвать своё детище.

Как сделать датчик газа на ардуино своими руками

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

Существует несколько проектов сборки детектора углекислого газа на Ардуино. Стоит рассмотреть два наиболее популярных из них. В принципе оба отличаются тем, что в первом случае используется датчик углекислого газа MQ-135, а в другом варианте применяется китайский инфракрасный прибор MH-Z19B.

Калибруем датчик

Для калибровки датчика нам придётся написать вот такой скетч:

Теперь, по логике вещей, мы должны сейчас найти чистый воздух, где содержание кислорода составляет ровно 21%, температура воздуха 20 градусов Цельсия и относительная влажность 65%. Оставить на таком воздухе наш датчик минут на 20-30, потом все полученные значение осреднить и получить наше итоговое значение R0.

Однако, учитывая то, что мне такого чистого помещения вряд ли удастся найти, я просто проветрил комнату в которой нахожусь, накрыл всю конструкцию небольшой коробкой и оставил так на 20 минут. В итоге я получил значение RO = 70.83. Это значение я также внёс в MQ135.h.

Общие сведения:

Trema-модуль датчик газа MQ-2 и MQ-135 – способны определять концентрацию широкого спектра газов в воздухе (природные газы, углекислый и угарный газ, углеводороды, дым, пары спирта и бензина).

Trema-модуль датчик газа MQ-3 – способен определять концентрацию паров спирта в воздухе.

Trema-модуль датчик газа MQ-6 – способен определять концентрацию углеводородных газов в воздухе.

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

Про анемометры:  Газовый котел BAXI ECO FOUR 24 F (24 кВт) – характеристики, отзывы, плюсы-минусы, конкуренты и все цены в обзоре

Питание:

Входное напряжение питания 5 В постоянного тока, подаётся на выводы «V» (Vcc) и «G» (GND) модуля.

Подключение:

В комплекте имеется кабель для быстрого и удобного подключения к Trema Shield.

  • Аналоговый выход модуля «S» (Signal) – подключается к любому аналоговому входу Arduino и предназначен для снятия показаний модуля.
  • Цифровой вход модуля «EN» (Enable) – подключается к любому выходу Arduino и предназначен для управления режимами работы модуля («1» – активный режим, «0» – режим энергосбережения).
  • Если вход «EN» оставить неподключённым, то модуль будет находиться в активном режиме пока есть питание.

Модуль удобно подключать 3 способами, в зависимости от ситуации:

Подробнее о модуле:

Уровень напряжения на аналоговом выходе «S» (Signal) прямо пропорционален концентрации детектируемых газов. Цифровой вход «EN» (Enable) можно не использовать – тогда модуль будет работать постоянно.

Если подключить вход модуля «EN» к любому выходу Arduino, то модулем можно управлять: логическая «1» подключит нагревательный элемент датчика к шине питания и модуль будет регистрировать концентрацию газов, логический «0» отключит нагревательный элемент и модуль перейдёт в режим энергосбережения.

Получаем значение концентрации co2 в помещении

Осталось теперь получить значение концентрации CO2 в помещении. Для этого заменяем скетче строку

на такую

Загружаем скетч в память и через несколько секунд в мониторе порта видим следующие значения:

439.39
439.39
439.39
428.56
428.56
428.56
428.56
428.56
428.56
428.56
428.56
417.91
417.91
417.91
417.91

Много это или мало — 428 ppm CO2? Судя по данным википедии концентрация CO2 в атмосфере составляет порядка 400 ppm. Если быть точнее, то (цитата): 11 мая 2022 года, зафиксирован новый рекорд концентрации CO2 в атмосфере: 415,28 ppm (или 0,041528 % углекислого газа в воздухе).

И на этом моменте (получение концентрации CO2) я бы и хотел остановиться по-подробнее. Насколько то значение, которое мы получаем с датчика является правдивым?

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

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

И третье, тот самый чувствительный слой оксида олова реагирует ведь не только на CO2, но может среагировать и вообще на всё подряд. В той же спецификации указано, что датчик реагирует не CO2, бензол, аммиак и etc. Соответственно, погрешность может возникнуть, если в воздухе одновременно будут находиться, например, аммиак, СО2 и бензол.

Или показание датчика может быть вообще неверно интерпретировано, например, когда в чистом помещении мы вдруг захотим определить концентрацию бензола (которого фактически нет) — на аналоговый пин просто подастся какое-то напряжение и всё, а мы, следуя графикам из спецификации интерпретируем его, например, как 100 ppm бензола.

Таким образом, из всего вышесказанного можно сделать вывод — чтобы можно было получить от датчика более менее корректные значения и правильно их интерпретировать — придётся серьезно «попотеть». Но, у меня ещё пять дней вынужденных выходных, поэтому в следующий раз (завтра) я попытаюсь соединить воедино устройство Arduino и программку на Delphi, чтобы проанализировать работу MQ135 и попытаться вытащить из его работы хоть какие-то полезные данные.

Применение:

  • Анализатор воздуха;
  • Алкотестеры;

Пример для типа подключения 1:

int8_t gasPin = A0;                       // Определяем номер вывода, к которому подключен модуль

void setup() {
  Serial.begin(9600);                     // Инициируем передачу данных на скорости 9600 бит/сек
  pinMode(gasPin, INPUT);                 // назначаем вывод, к которому подключен датчик, работать в режиме входа
}
void loop() {
  Serial.print("Gas volume: ");           // выводим текст в монитор порта
  Serial.println(analogRead(gasPin));     // выводим значение с датчика
  delay(1000);                            // ждём секунду
}

Пример для типа подключения 2:

int8_t gasPin = A0;                       // Определяем номер вывода, к которому подключен модуль
int8_t gasPwr = 8;                        // Определяем номер вывода, к которому подключено управление нагревателя модуля
void setup() {
  Serial.begin(9600);                     // Инициируем передачу данных на скорости 9600 бит/сек
  pinMode(gasPin, INPUT);                 // назначаем вывод, к которому подключен датчик, работать в режиме входа
}

void loop() {
  if (analogRead(gasPin) < 550) {         // если значение с датчика ниже порога, то
    digitalWrite(gasPwr, LOW);            // выключаем питание с нагревателя и
    Serial.println("GasPwr OFF");         // выводим текст в монитор порта
  } else {                                // если значение с датчика выше порога, то
    digitalWrite(gasPwr, HIGH);           // включаем питание нагревателя,
    Serial.print("Gas volume: ");         // выводим текст в монитор порта
    Serial.println(analogRead(gasPin));   // выводим значение с датчика
  }
  delay(1000);                            // ждём секунду
}

Проект сборки детектора углекислого газа с датчиком mq-135 на платформе ардуино

Перед сборкой следует подготовить следующее:

  • платформа Ардуино Уно;
  • датчик MQ-135;
  • зуммер (любое звуковое сигнальное устройство);
  • LCD дисплей 16×2;
  • батарейка 9 вольт;
  • два трёхжильных шлейфа;
  • два резистора 1 кОм;
  • плата расширения Troyka Shield.
Про анемометры:  Датчик углеводородных газов MQ-2 [База знаний "УмныеЭлементы"]

Плата Тройка Шилд:

Центром построения электронной системы контроля за качеством воздуха является плата расширения «Тройка». Панель имеет сеть контактных отверстий, через которые можно подключать различные приборы. По периметру панели расположены группы тройных контактов «S-V-G», к которым трёхжильными шлейфами подключают датчик углекислого газа и платформу Ардуино, где:

  • S — аналоговый или цифровой сигнал;
  • V — питание с рабочим напряжением;
  • G — масса (земля).

Плата Тройка Шилд и датчик с обозначением контактов:

Датчик газа подключают к управляющей платформе проводами двух шлейфов. Как это сделать, видно на нижнем фото.

Схема подсоединения MQ-135 к панели Troyka Shield:

Проект сборки детектора углекислого газа с инфракрасным датчиком mh-z19

Прибором MQ-135 может стать датчик MH-Z19. Модуль оснащён двумя выходами, совместимыми с 5-вольтовой логикой. Измеритель может работать в одном из диапазонов газовой насыщенности СО2 от 0 до 2000 ppm и от 0 до 5000 ppm.

Датчик MH-Z19:

Датчик соединяется через панель Troyka Shield c любой платформой Ардуино. В отличие от MQ-135, китайский инфракрасный детектор страдает некоторой инерционностью показаний данных. При изменении уровня содержания в атмосфере углекислого газа, прибору требуется около минуты для коррекции показаний. Положительным является то, что срок службы MH-Z19 намного больше вышеуказанного аналога, но и стоит он дороже.

Спецификация:

  • Входное напряжение питания: 5 В (постоянного тока)
  • Потребляемый ток: 130 … 140 мА (в активном режиме)
  • Потребляемый ток: 0,5 … 0,8 мА (в режиме энергосбережения)
  • Сигнал на выходе: от 1,2 В ±0.5 до Vcc-4% (зависит от концентрации измеряемых газов)
  • Рабочая температура: 0 … 50 °C
  • Габариты: 30×30 мм

Все модули линейки “Trema” выполнены в одном формате

Способ – 1 :  используя проводной шлейф и piranha uno

Используя провода «Папа — Мама», подключаем  напрямую к контроллеру Piranha UNO.

Способ – 2 :  используя trema set shield

Модуль можно подключить к любому из аналоговых входов Trema Set Shield.

Способ – 3 :  используя проводной шлейф и shield

Используя 3-х проводной шлейф, к  Trema Shield, Trema-Power Shield, Motor Shield, Trema Shield NANO и тд.

Узнаем значение нагрузочного сопротивления

Учитывая, что датчики MQ135 и аналогичные им могут устанавливаться на различные платы с разными нагрузочными сопротивлениями, RL нам придётся узнавать опытным путем. На плате моего датчика стоит резистор с маркировкой «102», что означает 1 кОм.

CO2 — диоксид углерода тяжелее воздуха, поэтому он имеет способность скапливаться в нижних слоях атмосферы помещений и представляет угрозу для органов дыхания человека. Поэтому нужно вовремя определить опасный уровень загазованности в пространстве, где находятся люди. Самый распространённый вид детекторов СО2 — это датчик серии MQ.

Модель MQ-135 — электрохимический прибор. Он построен на принципе изменения сопротивления чувствительного химического элемента устройства при соприкосновении с углекислым газом. Элемент представляет собой керамическую трубку, на покрытие которой из оксида алюминия (Al2O3) нанесена тонкая плёнка диоксида олова (SnO2).

Модуль датчика газа:

Для нормального функционирования датчик должен находиться постоянно в нагретом состоянии. Нагреватель внутри трубки доводит её поверхность до нужного уровня температуры, при которой чувствительный слой при соприкосновении с молекулами углекислого газа меняет своё сопротивление.

Под сеткой кроме трубки находятся 6 контактных головок. Две из них питают нагревательную спиральку внутри трубки током. Остальные две пары соединены проволочками и служат для дополнительного анализа состояния сопротивления элемента.

Что находится под защитной сеткой MQ-135:

Изменение характеристик тока, протекающего через устройство, фиксируются платой Ардуино. Процессор, обрабатывая информацию о превышении безопасного уровня СО2, отдаёт команды на включение звуковой сигнализации (зуммера), и на реле включения вытяжной вентиляции. Таким образом датчик выполняет функцию контроля за безопасным уровнем загазованности углекислым газом помещения.

Следует учитывать то, что датчик рассчитан на эксплуатацию при влажности 65% и температуре окружающего воздуха 20 °С. При влажности 95% прибор перестаёт адекватно реагировать на изменение содержания СО2. Кроме этого большую роль играет срок службы детектора.

Оцените статью
Анемометры
Добавить комментарий