Как работает датчик газа/дыма mq-2? и его взаимодействие с arduino

Содержание

Работа схемы

Схема устройства представлена на следующем рисунке.

В проектируемой нами схеме мы использовали датчик газа MQ2, способный определять присутствие дыма в воздухе. ЖК дисплей 16×2 используется для отображения количества дыма в воздухе (в единицах PPM). Микросхема LM358 используется для конвертирования выхода датчика газа в цифровую форму (опционально). Зуммер используется как сигнализация и срабатывает когда содержание дыма в воздухе становится больше 1000 PPM.

В схеме мы использовали компаратор для сравнения выходного напряжения датчика дыма с заранее определенным значением напряжения, выход компаратора подсоединен к контакту D7 платы Arduino. Также выход датчика дыма подсоединен к аналоговому контакту A0 платы Arduino. Зуммер подключен к контакту D9. Соединения с ЖК дисплеем такие же в примерах среды Arduino IDE (12, 11, 5, 4, 3, 2). Остальные необходимые соединения показаны на приведенной схеме.

Примечание: в схеме нам необходимо замкнуть все три контакта J2 header чтобы вычислять количество PPM дыма.

Примеры программ для Arduino

mq2Heater.ino
// библиотека для работы с датчиками MQ (Troyka-модуль)
#include <TroykaMQ.h>
 
// имя для пина, к которому подключен датчик
#define PIN_MQ2         A0
// имя для пина, к которому подключен нагреватель датчика
#define PIN_MQ2_HEATER  13
 
// создаём объект для работы с датчиком
// и передаём ему номер пина выходного сигнала и нагревателя
MQ2 mq2(PIN_MQ2, PIN_MQ2_HEATER);
 
void setup()
{
  // открываем последовательный порт
  Serial.begin(9600);
  // включаем нагреватель
  mq2.heaterPwrHigh();
  Serial.println("Heated sensor");
}
 
void loop()
{
  // если прошёл интервал нагрева датчика
  // и калибровка не была совершена
  if (!mq2.isCalibrated() && mq2.heatingCompleted()) {
    // выполняем калибровку датчика на чистом воздухе
    mq2.calibrate();
    // выводим сопротивление датчика в чистом воздухе (Ro) в serial-порт
    Serial.print("Ro = ");
    Serial.println(mq2.getRo());
  }
  // если прошёл интервал нагрева датчика
  // и калибровка была совершена
  if (mq2.isCalibrated() && mq2.heatingCompleted()) {
    // выводим отношения текущего сопротивление датчика
    // к сопротивлению датчика в чистом воздухе (Rs/Ro)
    Serial.print("Ratio: ");
    Serial.print(mq2.readRatio());
    // выводим значения газов в ppm
    Serial.print("LPG: ");
    Serial.print(mq2.readLPG());
    Serial.print(" ppm ");
    Serial.print(" Methane: ");
    Serial.print(mq2.readMethane());
    Serial.print(" ppm ");
    Serial.print(" Smoke: ");
    Serial.print(mq2.readSmoke());
    Serial.print(" ppm ");
    Serial.print(" Hydrogen: ");
    Serial.print(mq2.readHydrogen());
    Serial.println(" ppm ");
    delay(100);
  }
}

К платам Arduino c 5 вольтовой логикой датчик можно подключить используя всего один трёхпроводной шлейф. Для этого установите перемычку на разъём «выбор питания нагревателя».


Выведем в Serial-порт текущее значение вредных газов в , при этом нагреватель всегда включён.

mq2.ino
// библиотека для работы с датчиками MQ (Troyka-модуль)
#include <TroykaMQ.h>
 
//имя для пина, к которому подключен датчик
#define PIN_MQ2  A0
// создаём объект для работы с датчиком и передаём ему номер пина
MQ2 mq2(PIN_MQ2);
 
void setup()
{
  // открываем последовательный порт
  Serial.begin(9600);
  // перед калибровкой датчика прогрейте его 60 секунд
  // выполняем калибровку датчика на чистом воздухе
  mq2.calibrate();
  // выводим сопротивление датчика в чистом воздухе (Ro) в serial-порт
  Serial.print("Ro = ");
  Serial.println(mq2.getRo());
}
 
void loop()
{
  // выводим отношения текущего сопротивление датчика
  // к сопротивлению датчика в чистом воздухе (Rs/Ro)
  Serial.print("Ratio: ");
  Serial.print(mq2.readRatio());
  // выводим значения газов в ppm
  Serial.print("LPG: ");
  Serial.print(mq2.readLPG());
  Serial.print(" ppm ");
  Serial.print(" Methane: ");
  Serial.print(mq2.readMethane());
  Serial.print(" ppm ");
  Serial.print(" Smoke: ");
  Serial.print(mq2.readSmoke());
  Serial.print(" ppm ");
  Serial.print(" Hydrogen: ");
  Serial.print(mq2.readHydrogen());
  Serial.println(" ppm ");
  delay(100);
}

What is MQ2 Gas Sensor?

MQ2 is one of the commonly used gas sensors in MQ sensor series. It is a Metal Oxide Semiconductor (MOS) type Gas Sensor also known as Chemiresistors as the detection is based upon change of resistance of the sensing material when the Gas comes in contact with the material. Using a simple voltage divider network, concentrations of gas can be detected.

MQ2 Gas sensor works on 5V DC and draws around 800mW. It can detect LPG, Smoke, Alcohol, Propane, Hydrogen, Methane and Carbon Monoxide concentrations anywhere from 200 to 10000ppm.

Here are the complete specifications

Operating voltage 5V
Load resistance 20 KΩ
Heater resistance 33Ω ± 5%
Heating consumption <800mw
Sensing Resistance 10 KΩ – 60 KΩ
Concentration Scope 200 – 10000ppm
Preheat Time Over 24 hour

What is 1 ppm equal to?

When measuring gases like carbon dioxide, oxygen, or methane, the term concentration is used to describe the amount of gas by volume in the air. The 2 most common units of measurement are parts-per-million, and percent concentration.

Parts-per-million (abbreviated ppm) is the ratio of one gas to another. For example, 1,000ppm of CO means that if you could count a million gas molecules, 1,000 of them would be of carbon monoxide and 999,000 molecules would be some other gases.

Internal structure of MQ2 Gas Sensor

The sensor is actually enclosed in two layers of fine stainless steel mesh called Anti-explosion network. It ensures that heater element inside the sensor will not cause an explosion, as we are sensing flammable gases.

It also provides protection for the sensor and filters out suspended particles so that only gaseous elements are able to pass inside the chamber. The mesh is bound to rest of the body via a copper plated clamping ring.

This is how the sensor looks like when outer mesh is removed. The star-shaped structure is formed by the sensing element and six connecting legs that extend beyond the Bakelite base. Out of six, two leads (H) are responsible for heating the sensing element and are connected through Nickel-Chromium coil, well known conductive alloy.

The remaining four leads (A & B) responsible for output signals are connected using Platinum Wires. These wires are connected to the body of the sensing element and convey small changes in the current that passes through the sensing element.

The tubular sensing element is made up of Aluminum Oxide (AL2O3) based ceramic and has a coating of Tin Dioxide (SnO2). The Tin Dioxide is the most important material being sensitive towards combustible gases. However, the ceramic substrate merely increases heating efficiency and ensures the sensor area is heated to a working temperature constantly.

So, the Nickel-Chromium coil and Aluminum Oxide based ceramic forms a Heating System; while Platinum wires and coating of Tin Dioxide forms a Sensing System.

Как работает датчик газа?

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

В присутствии восстановительных газов поверхностная плотность адсорбированного кислорода уменьшается, так как он реагирует с восстановительными газами. Из-за чего электроны высвобождаются в диоксид олова, что позволяет току свободно течь через датчик.

Внешний вид модуля

Конструктивно датчик представляет собой печатную плату 30*21 мм, высота датчика примерно 20 мм, масса 7,3 г.

Датчик MQ2 внешний вид

На печатной плате имеются четыре крепежных отверстия. Чувствительный элемент данного устройства имеет вид усеченного конуса с диаметром около 20 мм в нижней части и 12 мм в верхней.

Датчик MQ2 внешний вид снизу

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

Датчик MQ2

Для подключения устройство имеет 4-х контактный штырьковый разъем. Два проводника служат для подачи электропитания, модуль потребляет ток 115 мА (150 мА по данным производителя) при напряжении 5 В. Два других проводника представляют собой аналоговый и цифровой выходы датчика. На цифровом выходе происходит смена сигнала с высокого логического уровня на низкий при достижении заданного уровня загрязнения. Порог срабатывания можно устанавливать подстроечным резистором. На аналоговом выходе уровень напряжения меняется от 0,1 до 4 вольта в зависимости от уровня загрязнения. При срабатывании датчика у него на плате загорается красный светодиод.

Элементы платы

Датчик газа MQ-7

Датчик MQ-7 относиться к полупроводниковым приборам. Принцип работы датчика основан на изменении сопротивления тонкопленочного слоя диоксида олова SnO2 при контакте с молекулами определяемого газа. Чувствительный элемент датчика состоит из керамической трубки с покрытием Al2O3 и нанесенного на неё чувствительного слоя диоксида олова. Внутри трубки проходит нагревательный элемент, который нагревает чувствительный слой до температуры, при которой он начинает реагировать на определяемый газ. Чувствительность к разным газам достигается варьированием состава примесей в чувствительном слое.

Выбор режима питания нагревателя

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

  • Нагреватель датчика постоянно включён. Таким образом можно обойтись одним трёхпроводным шлейфом.
  • Управление нагревателем программно.

1 группа

  • Сигнальный (S) — Выходной сигнал сенсора. Подключите к аналоговому входу микроконтроллера.
  • Питание (V) — Питание датчика. Соедините с рабочим напряжением микроконтроллера.
  • Земля (G) — Соедините с пином микроконтроллера.

2 группа

  • Сигнальный (E) — Управление питанием нагревателя. Подключите к цифровому пину микроконтроллера.
  • Питание (H) — Питание нагревателя. Соедините с пином .
  • Земля (G) — Соедините с пином микроконтроллера.

Что такое датчик газа MQ-2?

MQ-2 является одним из наиболее часто используемых датчиков газа из серии датчиков MQ. Это датчик газа типа металл-оксид-полупроводник (МОП, MOS), также известный как химрезистор (химический резистор), поскольку обнаружение основано на изменении сопротивления чувствительного материала, когда газ вступает в контакт с этим материалом. Используя простую цепь делителя напряжения, можно измерить концентрацию газа.

Рисунок 2 – Датчик газа MQ-2

Датчик газа MQ-2 работает при постоянном напряжении 5 В и потребляет около 800 мВт. Он может обнаруживать концентрации LPG (сжиженного нефтяного газа), дыма, алкоголя, пропана, водорода, метана и угарного газа от 200 до 10000 ppm (миллионных долей).

Чему равен 1 ppm?

При измерении газов, таких как углекислый газ, кислород или метан, термин концентрация используется для описания количества газа по объему в воздухе. Двумя наиболее распространенными единицами измерения являются миллионная доля (ppm) и процентная концентрация.

Миллионная доля (сокращенно ppm) – это соотношение одного газа к другому. Например, 1000 ppm CO означает, что если бы вы могли сосчитать миллион молекул газа, 1000 из них были бы моноокисью углерода, а 999 000 молекул – какими-то другими газами.

Вот полный список технических характеристик:

Технические характеристика датчика газа MQ-2
Рабочее напряжение 5 В
Сопротивление нагрузки 20 кОм
Сопротивление нагревателя 33 Ом ± 5%
Потребляемая мощность мВт
Сопротивление чувствительности 10 кОм — 60 кОм
Измерение концентрации 200 — 10000 ppm
Время разогрева более 24 часов

Для более подробной информации, пожалуйста, обратитесь техническому описанию.

Скачать техническое описание MQ-2

Совет

Датчик чувствителен к нескольким газам – но не может сказать, какой из них он обнаружил! Это нормально; большинство датчиков газа такие. Таким образом, он лучше всего подходит для измерения изменений концентрации известного газа, а не для определения концентрация какого газа изменилась.

Схема проекта

Схема подключения датчика MQ-135 к плате Arduino представлена на следующем рисунке.

Как видите, схема достаточно проста, в ней необходимо подключить к плате Arduino датчик MQ-135 и OLED дисплей. Датчик газа MQ-135 и OLED дисплей оба запитываются от контактов +5V и GND платы Arduino. Аналоговый выход датчика MQ-135 подключен к контакту A0 платы Arduino Nano. OLED дисплей подключен к плате Arduino Nano по интерфейсу SPI, схема их соединений показана в следующей таблице.

OLED дисплей Плата Arduino
GND Ground
VCC 5V
D0 10
D1 9
RES 13
DC 11
CS 12

После сборки схемы на макетной плате у нас получилась конструкция следующего вида:

Пример для Espruino

В качестве мозга для считывания показаний с датчика рассмотрим платформы из серии Espruino, например Iskra JS.

Схема устройства

Подключите датчик качества воздуха к пинам шины I²C — SDA и SCL платформы Iskra JS. Для коммуникации используйте выходной провод от сенсора совместно с
соединительными проводами «папа-папа».

Для быстрой сборки и отладки устройства возьмите плату расширения Troyka Shield, которая надевается сверху на Iskra JS методом бутерброда. Для коммуникации используйте выходной провод от сенсора.

Исходный код

sensor-co2-ccs811-with-case-espruino-read-data.js
// настраиваем шину I²C
PrimaryI2C.setup({sda SDA, scl SCL});
// подключаем библиотеку CCS811 для работы с датчиком качества воздуха
var gas = require("CCS811").connectI2C(PrimaryI2C);
// каждую секунду выводим показания качества воздуха:
// количество углекислого газа и летучих органических веществ в воздухе
setInterval(function() {
  print(gas.get());
}, 1000);

После загрузки скрипта, в консоль будет выводиться количество углекислого газа в и летучих органических веществ в .

Подключение и настройка

Датчик газа MQ-4 подключается к управляющей электронике по 5 проводам. Для подключения используются два трёхпроводных шлейфа. Для быстрого подключения модуля к Iskra JS или Arduino используйте Troyka Shield.

С Troyka Slot Shield можно обойтись без лишних проводов.

Пример программы для Arduino

mq4Heater.ino
// библиотека для работы с датчиками MQ (Troyka-модуль)
#include <TroykaMQ.h>
 
// имя для пина, к которому подключен датчик
#define PIN_MQ4         A0
// имя для пина, к которому подключен нагреватель датчика
#define PIN_MQ4_HEATER  13
 
// создаём объект для работы с датчиком
// и передаём ему номер пина выходного сигнала и нагревателя
MQ4 mq4(PIN_MQ4, PIN_MQ4_HEATER);
 
void setup()
{
  // открываем последовательный порт
  Serial.begin(9600);
  // включаем нагреватель
  mq4.heaterPwrHigh();
  Serial.println("Heated sensor");
}
 
void loop()
{
  // если прошёл интервал нагрева датчика
  // и калибровка не была совершена
  if (!mq4.isCalibrated() && mq4.heatingCompleted()) {
    // выполняем калибровку датчика на чистом воздухе
    mq4.calibrate();
    // выводим сопротивление датчика в чистом воздухе (Ro) в serial-порт
    Serial.print("Ro = ");
    Serial.println(mq4.getRo());
  }
  // если прошёл интервал нагрева датчика
  // и калибровка была совершена
  if (mq4.isCalibrated() && mq4.heatingCompleted()) {
    // выводим отношения текущего сопротивление датчика
    // к сопротивлению датчика в чистом воздухе (Rs/Ro)
    Serial.print("Ratio: ");
    Serial.print(mq4.readRatio());
    // выводим значения газов в ppm
  // выводим значения газов в ppm
  Serial.print(" Methane: ");
  Serial.print(mq4.readMethane());
  Serial.println(" ppm ");
  delay(100);
  }
}

К платам Arduino c 5 вольтовой логикой датчик можно подключить используя всего один трёхпроводной шлейф. Для этого установите перемычку на разъём «выбор питания нагревателя».


Выведем в Serial-порт текущее значение вредных газов в , при этом нагреватель всегда включён.

mq4.ino
// библиотека для работы с датчиками MQ (Troyka-модуль)
#include <TroykaMQ.h>
 
//имя для пина, к которому подключен датчик
#define PIN_MQ4  A0
// создаём объект для работы с датчиком и передаём ему номер пина
MQ4 mq4(PIN_MQ4);
 
void setup()
{
  // открываем последовательный порт
  Serial.begin(9600);
  // перед калибровкой датчика прогрейте его 60 секунд
  // выполняем калибровку датчика на чистом воздухе
  mq4.calibrate();
  // выводим сопротивление датчика в чистом воздухе (Ro) в serial-порт
  Serial.print("Ro = ");
  Serial.println(mq4.getRo());
}
 
void loop()
{
  // выводим отношения текущего сопротивление датчика
  // к сопротивление датчика в чистом воздухе (Rs/Ro)
  Serial.print("Ratio: ");
  Serial.print(mq4.readRatio());
  // выводим значения метана в ppm
  Serial.print(" Methane: ");
  Serial.print(mq4.readMethane());
  Serial.println(" ppm ");
  delay(100);
}

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

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

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

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

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

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

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

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

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

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

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

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

Теперь нужно воспользоваться компьютером, скачать из сети и установить в Serial port Arduino Uno библиотеку TroykaMQ, и текущее значение углекислого газа. Так как нагреватель нужно держать всё время во включённом состоянии, то можно подключить датчик только одним шлейфом.

Подключение MQ-135 одним шлейфом:

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

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

Датчик MH-Z19:

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

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

Подключение и настройка

Датчик газа MQ9 подключается к управляющей электронике по 5 проводам. Для подключения используются два трёхпроводных шлейфа. Для быстрого подключения модуля к Iskra JS или Arduino используйте Troyka Shield.

С Troyka Slot Shield можно обойтись без лишних проводов.

Пример программы для Arduino

mq9Heater.ino
// библиотека для работы с датчиками MQ (Troyka-модуль)
#include <TroykaMQ.h>
 
// имя для пина, к которому подключен датчик
#define PIN_MQ9         A0
// имя для пина, к которому подключен нагреватель датчика
#define PIN_MQ9_HEATER  13
 
// создаём объект для работы с датчиком
// и передаём ему номер пина выходного сигнала и нагревателя
MQ9 mq9(PIN_MQ9, PIN_MQ9_HEATER);
 
void setup()
{
  // открываем последовательный порт
  Serial.begin(9600);
  // запускаем термоцикл
  // в течении 60 секунд на нагревательный элемент подаётся 5 вольт
  // в течении 90 секунд — 1,5 вольта
  mq9.cycleHeat();
}
 
void loop()
{
  // если прошёл интервал нагрева датчика
  // и калибровка не была совершена
  if (!mq9.isCalibrated() && mq9.atHeatCycleEnd()) {
    // выполняем калибровку датчика на чистом воздухе
    mq9.calibrate();
    // выводим сопротивление датчика в чистом воздухе (Ro) в serial-порт
    Serial.print("Ro = ");
    Serial.println(mq9.getRo());
    // запускаем термоцикл
    mq9.cycleHeat();
  }
  // если прошёл интевал нагрева датчика
  // и калибровка была совершена
  if (mq9.isCalibrated() && mq9.atHeatCycleEnd()) {
    // выводим отношения текущего сопротивление датчика
    // к сопротивлению датчика в чистом воздухе (Rs/Ro)
    Serial.print("Ratio: ");
    Serial.print(mq9.readRatio());
    // выводим значения газов в ppm
    Serial.print(" LPG: ");
    Serial.print(mq9.readLPG());
    Serial.print(" ppm ");
    Serial.print(" Methane: ");
    Serial.print(mq9.readMethane());
    Serial.print(" ppm ");
    Serial.print(" CarbonMonoxide: ");
    Serial.print(mq9.readCarbonMonoxide());
    Serial.println(" ppm ");
    delay(100);
    // запускаем термоцикл
    mq9.cycleHeat();
  }
}

Пример работы для Arduino и XOD

В качестве мозга для считывания показаний с датчика рассмотрим платформу из серии Arduino, например Uno.

  • Как начать работу с Arduino?

  • Как начать работу с XOD?

Схема устройства

Подключите датчик качества воздуха к пинам шины I²C — SDA и SCL платформы Arduino Uno. Для коммуникации используйте выходной провод от сенсора совместно с
соединительными проводами «папа-папа».

Для быстрой сборки и отладки устройства возьмите плату расширения Troyka Shield, которая надевается сверху на Arduino Uno методом бутерброда. Для коммуникации используйте выходной провод от сенсора.

Код для Arduino IDE

sensor-co2-ccs811-with-case-arduino-read-data.ino
// библиотека для работы с датчиком качества воздуха CCS811
#include "Adafruit_CCS811.h"
 
// создаём объект для работы с датчиком
Adafruit_CCS811 ccs;
 
void setup() {
  // открываем Serial-порт
  Serial.begin(9600);
  Serial.println("Amperka CCS811 test...");
  // если датчик не прошел проверку, дальше не идем и крутимся в цикле
  if(!ccs.begin()){
    Serial.println("Failed to start sensor! Please check your wiring.");
    while(1);
  }
}
 
void loop() {
  // если пришли новые данные
  if(ccs.available()) {
    // считываем данные
    if(!ccs.readData()) {
      // выводим в Serial-порт показания концентрации CO2
      // и количество летучих органических веществ
      Serial.print("CO2: ");
      Serial.print(ccs.geteCO2());
      Serial.print("ppm, TVOC: ");
      Serial.println(ccs.getTVOC());
    } else {
      Serial.println("ERROR...");
      while(1);
    }
  }
  delay(500);
}

После загрузки скетча, в Serial-порт будет выводиться количество углекислого газа в и летучих органических веществ в .

Внутренняя структура датчика газа MQ-2

Датчик фактически заключен в два слоя тонкой сетки из нержавеющей стали, которая называется «антивзрывной сеткой» (anti-explosion network). Она гарантирует, что нагревательный элемент внутри датчика не вызовет взрыва, когда мы ищем легковоспламеняющиеся газы.

Рисунок 3 – Внешние компоненты датчика газа MQ-2

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

Рисунок 4 – Внутренняя структура с чувствительным элементом и соединительными выводами

Так выглядит датчик при удалении внешней сетки. Звездообразная структура образована из чувствительного элемента и шести соединительных ножек, которые выходят за пределы бакелитового основания. Из шести два вывода (H) отвечают за нагрев чувствительного элемента и соединены через катушку из никель-хромовой проволоки, хорошо известного проводящего сплава.

Остальные четыре вывода (A и B), отвечающие за выходные сигналы, подключены с использованием платиновых проводов. Эти провода соединены с корпусом чувствительного элемента и передают небольшие изменения тока, который проходит через чувствительный элемент.

Рисунок 5 – Чувствительный элемент – керамика на основе оксида алюминия с покрытием из диоксида олова

Трубчатый чувствительный элемент изготовлен из керамики на основе оксида алюминия (Al2O3) и покрыт диоксидом олова (SnO2). Диоксид олова здесь является наиболее важным материалом, будучи чувствительным к горючим газам. Керамическая подложка просто увеличивает эффективность нагрева и обеспечивает постоянное нагревание площади датчика до рабочей температуры.

Рисунок 6 – Внутренняя структура чувствительного элемента датчика газа MQ-2

Итак, никель-хромовая катушка и керамика на основе оксида алюминия образуют систему подогрева; в то время как платиновые проволоки и покрытие из диоксида олова образуют сенсорную систему.

Исходный код программы (скетча)

Arduino

/*
* Interfacing MQ135 Gas Senor with Arduino
* Author: Ashish
* Website: www.circuitdigest.com
* Date: 11-11-2020
*/
// сопротивление нагрузочного резистора на плате датчика
#define RLOAD 22.0
#include «MQ135.h»
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // ширина OLED дисплея в пикселах
#define SCREEN_HEIGHT 64 // высота OLED дисплея в пикселах
// Declaration for SSD1306 display connected using software SPI (default case):
#define OLED_MOSI 9
#define OLED_CLK 10
#define OLED_DC 11
#define OLED_CS 12
#define OLED_RESET 13
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT,
OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
MQ135 gasSensor = MQ135(A0);
int val;
int sensorPin = A0;
int sensorValue = 0;
void setup() {
Serial.begin(9600);
pinMode(sensorPin, INPUT);
display.begin(SSD1306_SWITCHCAPVCC);
display.clearDisplay();
display.display();
}
void loop() {
val = analogRead(A0);
Serial.print («raw = «);
Serial.println (val);
// float zero = gasSensor.getRZero();
// Serial.print («rzero: «);
//Serial.println (zero);
float ppm = gasSensor.getPPM();
Serial.print («ppm: «);
Serial.println (ppm);
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(18,43);
display.println(«CO2»);
display.setCursor(63,43);
display.println(«(PPM)»);
display.setTextSize(2);
display.setCursor(28,5);
display.println(ppm);
display.display();
display.clearDisplay();
delay(2000);
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56

/*
* Interfacing MQ135 Gas Senor with Arduino
* Author: Ashish
* Website: www.circuitdigest.com
* Date: 11-11-2020
*/
// сопротивление нагрузочного резистора на плате датчика
#define RLOAD 22.0
#include «MQ135.h»
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // ширина OLED дисплея в пикселах
#define SCREEN_HEIGHT 64 // высота OLED дисплея в пикселах
// Declaration for SSD1306 display connected using software SPI (default case):
#define OLED_MOSI   9
#define OLED_CLK   10
#define OLED_DC    11
#define OLED_CS    12
#define OLED_RESET 13

Adafruit_SSD1306display(SCREEN_WIDTH,SCREEN_HEIGHT,

OLED_MOSI,OLED_CLK,OLED_DC,OLED_RESET,OLED_CS);

MQ135gasSensor=MQ135(A0);

intval;

intsensorPin=A0;

intsensorValue=;

voidsetup(){

Serial.begin(9600);

pinMode(sensorPin,INPUT);

display.begin(SSD1306_SWITCHCAPVCC);

display.clearDisplay();

display.display();

}

voidloop(){

val=analogRead(A0);

Serial.print(«raw = «);

Serial.println(val);

// float zero = gasSensor.getRZero();

// Serial.print («rzero: «);

//Serial.println (zero);

floatppm=gasSensor.getPPM();

Serial.print(«ppm: «);

Serial.println(ppm);

display.setTextSize(2);

display.setTextColor(WHITE);

display.setCursor(18,43);

display.println(«CO2»);

display.setCursor(63,43);

display.println(«(PPM)»);

display.setTextSize(2);

display.setCursor(28,5);

display.println(ppm);

display.display();

display.clearDisplay();

delay(2000);

}

Обзор аппаратного обеспечения – модуль датчика газа MQ-2

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

Рисунок 8 – Модуль датчика газа MQ-2

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

Рисунок 9 – Выходной сигнал модуля датчика газа MQ-2

Аналоговый сигнал от датчика газа MQ-2 поступает на высокоточный компаратор LM393 (впаян в нижней стороне модуля) для оцифровки. Рядом с компаратором имеется небольшой потенциометр, который можно покрутить, чтобы отрегулировать чувствительность датчика. Вы можете использовать его для регулировки концентрации газа, при которой датчик его обнаруживает.

Исходный код программы

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

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

#include <LiquidCrystal.h> // подключение библиотеки для работы с ЖК дисплеем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); }}

Калибровка модуля датчика газа MQ-2

Чтобы откалибровать датчик газа, вы можете держать датчик газа рядом с дымом/газом, который вы хотите обнаруживать, и поворачивать потенциометр, пока на модуле не начнет светиться красный светодиод. Поворачивайте потенциометр по часовой стрелке, чтобы увеличить чувствительность, или против часовой стрелки, чтобы уменьшить чувствительность.

Рисунок 10 – Потенциометр регулировки чувствительности модуля датчика газа MQ-2

Компаратор на модуле постоянно проверяет, достиг ли аналоговый выходной сигнал (A0) порогового значения, установленного потенциометром. Когда он пересекает пороговое значение, цифровой выход (D0) выдаст высокий логический уровень, и загорится светодиодный индикатор. Эта настройка очень полезна, когда вам нужно при достижении определенного порога запустить какое-то действие. Например, когда концентрация дыма пересекает пороговое значение, вы можете включить или выключить реле или дать команду включить вентиляцию или спринклерную систему пожаротушения.

Элементы платы

Датчик газа MQ5

Датчик MQ5 относиться к полупроводниковым приборам. Принцип работы датчика основан на изменении сопротивления тонкопленочного слоя диоксида олова SnO2 при контакте с молекулами определяемого газа. Чувствительный элемент датчика состоит из керамической трубки с покрытием Al2O3 и нанесенного на неё чувствительного слоя диоксида олова. Внутри трубки проходит нагревательный элемент, который нагревает чувствительный слой до температуры, при которой он начинает реагировать на определяемый газ. Чувствительность к разным газам достигается варьированием состава примесей в чувствительном слое.

Выбор режима питания нагревателя

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

  • Нагреватель датчика постоянно включён. Таким образом можно обойтись одним трёхпроводным шлейфом.
  • Управление нагревателем программно.

1 группа

  • Сигнальный (S) — Выходной сигнал сенсора. Подключите к аналоговому входу микроконтроллера.
  • Питание (V) — Питание датчика. Соедините с рабочим напряжением микроконтроллера.
  • Земля (G) — Соедините с пином микроконтроллера.

2 группа

  • Сигнальный (E) — Управление питанием нагревателя. Подключите к цифровому пину микроконтроллера.
  • Питание (H) — Питание нагревателя. Соедините с пином .
  • Земля (G) — Соедините с пином микроконтроллера.

Подготовка датчика MQ-135 к измерению углекислого газа

Датчик газа MQ-135 способен обнаруживать широкий диапазон различных газов в окружающем воздухе: NH3, NOx, алкоголь, бензол, дым и углекислый газ (CO2). Датчик MQ-135 можно купить как в виде модуля, так и в виде отдельного датчика. В нашем проекте мы будем использовать его в виде модуля для измерения концентрации CO2 в единицах PPM (parts per million – частей на миллион). Схема модуля датчика MQ-135 показана на следующем рисунке:

В этой схеме весьма важную роль играет нагрузочный резистор RL – его сопротивление может изменяться в зависимости от концентрации газа. В соответствии с даташитом на датчик MQ-135 сопротивление нагрузочного резистора может изменяться от 10 кОм до 47 кОм. Даташит рекомендует чтобы вы калибровали датчик для 100ppm NH3 или для 50ppm концентрации алкоголя в воздухе и использовали значение нагрузочного резистора RL примерно 20 кОм. Но если вы внимательно посмотрите на плату модуля MQ-135, то вы увидите что значение резистора RL на ней составляет 1 кОм (102).

Поэтому, чтобы корректно измерять концентрацию CO2, вам необходимо заменить этот резистор 1 кОм на резистор сопротивлением 22 кОм.