MQ-2 и Ардуино

29-05-2020, 18:03 0 комментариев
На повестке дня еще один увлекательный и практичный проект – подключение датчика дыма MQ-2 к Arduino. Почему увлекательный – нет надобности пояснять, а вот о практичности стоит выразиться подробнее. Рассматриваемый сегодня модуль универсален, он способен определить не только уровень дыма (как результата горения), но и водорода, спирта + различных углеводородных газов (метана, пропана, бутана, сжиженного нефтяного газа и т.д.). В условиях современных офисов и многоквартирных домов установка таких девайсов особо актуальна и жизненно необходима, не так ли?

Внешний вид детектора газа показан ниже:
Пройдемся по техническим характеристикам устройства для понимания его возможностей:
  • напряжение: 5V;
  • мощность: <800мВт;
  • сопротивление нагрузки и нагревателя: 20кОм и 33 Ом ± 5%;
  • параметры сопротивления чувствительности : 10 кОм - 60 кОм;
  • диапазон показателей концентрации: 200 - 10000 ppm;
  • имеется опция выбора режима питания.
Как работает датчик, отлично показано на скриншоте:
Важно! При первом применении следует настроить, т.е. откалибровать прибор. Для этого можно подержать сенсор рядом с источником дыма, при этом поворачивая потенциометр таким образом, пока на детекторе не зажжётся красный светодиод. Потенциометр крутим по часовой стрелке для увеличения чувствительности.
Ну а теперь перейдем непосредственно к простой сборке проекта. Для ее реализации будем применять такие аппаратные элементы:
  1. Модуль MQ-2.
  2. Troyka Shield.
  3. Комплект соединительных проводов.
Схема подключения будет следующей:
Для управления и дальнейшей прошивки нам понадобится скачать и инсталлировать библиотеку TroykaMQ.
Для ее применения открываем среду разработки Arduino IDE, идем по пути: Скетч > Подключить библиотеку > Добавить .ZIP. Открываем архив с софтом (который ранее скачали). Готово!

Зальем скетч:
// библиотека для работы с датчиками 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);
  }
}
Попробуем подключить детектор дыма MQ-2 к Ардуино. «Железо», которое нам понадобится: микроконтроллер Ардуино UNO, датчик MQ-2, макетная плата, зуммер, 2 светодиода (красный, зеленый), несколько резисторов на 220 Ом, соединительные провода.
Результат:
Пример кодов:
/*******
 
 Подробнее о проекте на:
 http://randomnerdtutorials.com/

*******/

int redLed = 12;
int greenLed = 11;
int buzzer = 10;
int smokeA0 = A5;
// здесь задаем пороговое значение:
int sensorThres = 400;

void setup() {
  pinMode(redLed, OUTPUT);
  pinMode(greenLed, OUTPUT);
  pinMode(buzzer, OUTPUT);
  pinMode(smokeA0, INPUT);
  Serial.begin(9600);
}

void loop() {
  int analogSensor = analogRead(smokeA0);

  Serial.print("Pin A0: ");  //  "Контакт A0: " 
  Serial.println(analogSensor);
  // проверяем, не превышено ли пороговое значение: 
  if (analogSensor > sensorThres)
  {
    digitalWrite(redLed, HIGH);
    digitalWrite(greenLed, LOW);
    tone(buzzer, 1000, 200);
  }
  else
  {
    digitalWrite(redLed, LOW);
    digitalWrite(greenLed, HIGH);
    noTone(buzzer);
  }
  delay(100);
}
Планируете проектирование системы контроля качества воздуха? Намерены все сделать правильно, но использовать надежное оборудование? Сенсор, о котором мы говорили, вам точно подойдет и пригодится! Пользуйтесь смело!
Поделись в социальных сетях:
О авторе
Калугин Антон

Программист микроконтроллеров с 8-ми летним стажем, работал в таких компаниях как IBM, ASUS, Microsoft.

В комментариях с радостью отвечу на ваши вопросы.

Все статьи автора
Похожие новости

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

В этой информационной статье разбираем подключение сенсора угарного газа MQ-7 к Ардуино. Мы уже говорили о подобных модулях, оценивали их высокую практичность...

Сегодня у нас на рассмотрении подключение MQ-135 к Arduino и все, что с ним связано. Данная тема и в особенности модуль сенсора выбраны не случайно, ведь в...

В этой статье мы рассмотрим подключение ADS1115 к Ардуино. Речь идет о 16-битном аналого-цифровом преобразователе, оснащенном 4 входами непосредственно для...

Сегодня на повестке дня обсуждение темы, как подключить радиомодуль NRF24L01 к Ардуино. Почему выбран для обзора именно этот модуль? – Он легок в сборке,...

Оставить комментарий