Как работает датчик газа/дыма MQ2? Подключение к Arduino

Как работает датчик газа/дыма MQ2? Подключение к Arduino

Задумывались ли вы, как научить Arduino «нюхать» воздух? С модулем датчика газа MQ2 вы можете дать своему проекту виртуальный нос, способный обнаруживать широкий спектр газов, включая LPG, дым, спирт, пропан, водород, метан и даже угарный газ.

Подумайте, сколько интересных проектов можно создать с этим датчиком. Хотите построить монитор качества воздуха в помещении, способный обнаруживать опасные газы? Заинтересованы в создании алкотестера для научного проекта? Или, возможно, хотите разработать систему раннего оповещения, которая может уловить дым до начала пожара? Датчик MQ2 делает все эти идеи возможными!

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

Давайте начнём и сделаем ваш следующий проект немного «умнее»!

Датчик газа MQ2

MQ2 — один из самых популярных датчиков семейства MQ. Он относится к типу MOS (Metal Oxide Semiconductor — полупроводник на основе оксида металла). Такие датчики также называют хеморезисторами, потому что они работают, изменяя своё электрическое сопротивление при контакте с определёнными газами.

How MQ2 Gas/Smoke Sensor Works? & Interface it with Arduino

Датчик газа MQ2 работает от 5 вольт постоянного тока и потребляет около 800 милливатт энергии. Он может обнаруживать несколько типов газов, включая LPG (сжиженный нефтяной газ), дым, спирт, пропан, водород, метан и угарный газ. Датчик способен определять эти газы при их концентрации от 200 до 10 000 частей на миллион (ppm).

Что такое PPM?

PPM означает «частей на миллион» (parts per million) — это распространённая единица измерения концентрации определённого газа в воздухе. Она просто представляет соотношение молекул одного газа среди миллиона общих молекул газа в воздухе. Например, если в воздухе 500 ppm угарного газа, это означает, что из каждых 1 000 000 молекул газа 500 являются угарным газом, а остальные 999 500 — другими газами.

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

Внутреннее устройство датчика газа MQ2

MQ2 — это датчик с нагревательным элементом, что означает использование тепла для обнаружения газов. Поскольку он работает с горючими газами, безопасность очень важна. Именно поэтому датчик обёрнут двумя слоями тонкой сетки из нержавеющей стали, известной как «взрывозащитная сетка». Эта сетка предотвращает возможность возгорания или взрыва от нагревательного элемента внутри датчика при наличии горючих газов.

How MQ2 Gas/Smoke Sensor Works? & Interface it with Arduino

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

How MQ2 Gas/Smoke Sensor Works? & Interface it with Arduino

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

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

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

How MQ2 Gas/Smoke Sensor Works? & Interface it with Arduino

Сам чувствительный элемент выглядит как маленькая трубка. Он изготовлен из керамики на основе оксида алюминия (Al2O3) с тонким покрытием из диоксида олова (SnO2).

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

Керамическое основание также выполняет важную функцию — обеспечивает равномерное распределение тепла и поддерживает датчик при правильной рабочей температуре.

Подведём итог:

  • Внешняя сетка (взрывозащитная сетка): Слои сетки из нержавеющей стали для безопасности и фильтрации.

  • Система нагрева: Никель-хромовая катушка и керамическая трубка из оксида алюминия для генерации и распределения тепла.

  • Система измерения: Платиновые провода и покрытие из диоксида олова для обнаружения газов и измерения изменений сопротивления.

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

Когда вы включаете датчик газа MQ2, он начинает нагревать свой внутренний полупроводниковый слой из диоксида олова (SnO2) до высокой температуры. При этой высокой температуре молекулы кислорода из воздуха прилипают (или адсорбируются) на поверхности диоксида олова. Эти адсорбированные молекулы кислорода «забирают» свободные электроны из диоксида олова, создавая «область обеднения электронов» вблизи поверхности. Это делает диоксид олова высокорезистивным, и через него может проходить лишь малый электрический ток.

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

How MQ2 Gas/Smoke Sensor Works? & Interface it with Arduino

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

Обзор оборудования модуля датчика газа MQ2

Датчик газа MQ2 прост в использовании и обеспечивает как цифровой выход (указывающий на наличие газов), так и аналоговый выход (показывающий концентрацию газа в воздухе).

How MQ2 Gas/Smoke Sensor Works? & Interface it with Arduino

Аналоговый выход (вывод AO) изменяется в зависимости от концентрации газа. При большей концентрации газа выходное напряжение увеличивается. При меньшей — уменьшается. Анимация ниже демонстрирует зависимость между концентрацией газа и выходным напряжением.

How MQ2 Gas/Smoke Sensor Works? & Interface it with Arduino

Этот аналоговый сигнал также поступает на компаратор LM393, который сравнивает его с опорным напряжением, установленным потенциометром на модуле.

  • Когда концентрация газа превышает установленный уровень, компаратор выдаёт сигнал LOW на цифровом выводе (DO).

  • Когда концентрация газа ниже установленного уровня, выдаётся сигнал HIGH.

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

How MQ2 Gas/Smoke Sensor Works? & Interface it with Arduino

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

How MQ2 Gas/Smoke Sensor Works? & Interface it with Arduino

На модуле также есть два индикаторных светодиода:

  • Светодиод питания загорается при подаче питания на модуль

  • Светодиод состояния загорается, когда концентрация газа превышает установленный порог

Технические характеристики

Вот технические характеристики:

Рабочее напряжение

5V

Сопротивление нагрузки

20 KΩ

Сопротивление нагревателя

33Ω ± 5%

Потребление нагревателя

<800mw

Сопротивление чувствительного элемента

10 KΩ – 60 KΩ

Диапазон концентраций

200 – 10000ppm

Время прогрева

Более 24 часов

Распиновка модуля датчика газа MQ2

Датчик газа MQ2 чрезвычайно прост в использовании и требует всего четыре вывода для подключения.

How MQ2 Gas/Smoke Sensor Works? & Interface it with Arduino

VCC обеспечивает питание датчика. Подключите его к выходу 5V Arduino.

GND — это вывод заземления.

AO (аналоговый выход) выдаёт переменное напряжение, соответствующее концентрации газа. Чем больше газа в воздухе, тем выше выходное напряжение, и чем меньше газа — тем ниже. Подключите этот вывод к аналоговому входу Arduino (например, A0).

DO (цифровой выход) выдаёт сигнал LOW, когда концентрация газа превышает порог, установленный потенциометром, и сигнал HIGH, когда концентрация ниже. Подключите его к цифровому входному выводу Arduino.

Калибровка датчика газа MQ2

Поскольку MQ2 — датчик с нагревательным элементом, он требует специальной подготовки перед началом корректной работы.

Если вы не использовали датчик MQ2 более месяца, его нужно прогреть в течение 24–48 часов. Этот длительный период прогрева необходим, потому что датчик должен достичь нормального рабочего состояния после длительного простоя.

Однако если вы использовали датчик недавно, достаточно прогреть его в течение 5–10 минут перед повторным использованием.

При первом включении датчика в период прогрева он может выдавать неверные показания. Не волнуйтесь! По мере нагрева и стабилизации показания становятся более точными.

Эксперимент 1 — Измерение концентрации газа через аналоговый выход (AO)

В этом первом эксперименте мы научимся измерять концентрацию газа в воздухе с помощью аналогового выхода датчика газа MQ2.

Схема подключения

Давайте начнём с подключения модуля датчика газа MQ2 к Arduino.

Подключите вывод VCC датчика к выводу 5V Arduino, а вывод GND — к одному из выводов GND Arduino. Наконец, подключите вывод AO (аналоговый выход) датчика к аналоговому входу A0 Arduino.

Вот краткая справочная таблица подключений:

MQ2 SensorArduino
VCC5V
GNDGND
AOA0

Схема подключения показана на изображении ниже.

How MQ2 Gas/Smoke Sensor Works? & Interface it with Arduino

Определение порогового значения

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

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

  • Когда датчик находится в чистом воздухе (без газа).

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

#define MQ2pin 0

float sensorValue;  //variable to store sensor value

void setup() {
  Serial.begin(9600);  // sets the serial port to 9600
  Serial.println("MQ2 warming up!");
  delay(20000);  // allow the MQ2 to warm up
}

void loop() {
  sensorValue = analogRead(MQ2pin);  // read analog input pin 0

  Serial.print("Sensor Value: ");
  Serial.println(sensorValue);

  delay(2000);  // wait 2s for next reading
}

После запуска кода откройте монитор последовательного порта в Arduino IDE. Подвергните датчик воздействию газа и запишите число в мониторе. Затем уберите газ или дайте датчику побыть в чистом воздухе и запишите это число тоже.

Вы можете увидеть примерно такие значения:

  • 100, когда газа нет

  • 400, когда газ присутствует

How MQ2 Gas/Smoke Sensor Works? & Interface it with Arduino

Эти значения дают нам приблизительное представление о поведении датчика.

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

Код Arduino

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

/* Change the threshold value with your own reading */
#define Threshold 400

#define MQ2pin 0

float sensorValue;  //variable to store sensor value

void setup() {
  Serial.begin(9600);  // sets the serial port to 9600
  Serial.println("MQ2 warming up!");
  delay(20000);  // allow the MQ2 to warm up
}

void loop() {
  sensorValue = analogRead(MQ2pin);  // read analog input pin 0

  Serial.print("Sensor Value: ");
  Serial.print(sensorValue);

  if (sensorValue > Threshold) {
    Serial.print(" | Gas detected!");
  }

  Serial.println("");
  delay(2000);  // wait 2s for next reading
}

После загрузки и запуска кода вы должны увидеть чёткое сообщение от Arduino при наличии газа.

How MQ2 Gas/Smoke Sensor Works? & Interface it with Arduino

Эксперимент 2 — Обнаружение газа через цифровой выход (DO)

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

Схема подключения

Мы используем ту же схему из первого эксперимента с одним небольшим изменением. Отключите провод от аналогового входа A0 Arduino. Затем подключите вывод DO (цифровой выход) модуля датчика MQ2 к цифровому выводу 8 Arduino.

Вот краткая справочная таблица подключений:

MQ2 SensorArduino
VCC5V
GNDGND
DO8

Схема подключения показана на изображении ниже.

How MQ2 Gas/Smoke Sensor Works? & Interface it with Arduino

Установка порога

На датчике MQ2 есть небольшой потенциометр. Он позволяет установить порог концентрации газа — точку, при которой датчик переключает свой цифровой выход. Когда концентрация газа превышает эту точку, датчик включит светодиод состояния и установит цифровой выход (вывод DO) в LOW.

How MQ2 Gas/Smoke Sensor Works? & Interface it with Arduino

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

Вот и всё! Порог установлен.

Код Arduino

Теперь загрузите скетч ниже на Arduino.

#define MQ2pin 8

int sensorValue;  //variable to store sensor value

void setup() {
  Serial.begin(9600);  // sets the serial port to 9600
  Serial.println("MQ2 warming up!");
  delay(20000);  // allow the MQ2 to warm up
}

void loop() {
  sensorValue = digitalRead(MQ2pin);  // read digital output pin
  Serial.print("Digital Output: ");
  Serial.print(sensorValue);

  // Determine the status
  if (sensorValue) {
    Serial.println("  |  Gas: -");
  } else {
    Serial.println("  |  Gas: Detected!");
  }

  delay(2000);  // wait 2s for next reading
}

После запуска скетча Arduino будет считывать цифровой сигнал с датчика и выводить результат в монитор последовательного порта.

How MQ2 Gas/Smoke Sensor Works? & Interface it with Arduino