Как вывести несколько значений на датчике газа MQ-2

newuser22
Offline
Зарегистрирован: 05.05.2020

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

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

#define smokePin A0   

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

newuser22
Offline
Зарегистрирован: 05.05.2020

Забыл указать, что использую плату Ардуино Уно.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Мне тоже интересно, подпишусь.

rkit
Offline
Зарегистрирован: 23.11.2016

никак

newuser22
Offline
Зарегистрирован: 05.05.2020

Нашел решение. Необходимо подключить стороннюю библиотеку 

#include <TroykaMQ.h>

и вывести каждое значение отдельно

Serial.print("Ratio: ");
  Serial.print(mq2.readRatio());
  // выводим значения газов в ppm
  Serial.print("\tLPG: ");
  Serial.print(mq2.readLPG());
  Serial.print(" ppm");
  Serial.print("\tMethane: ");
  Serial.print(mq2.readMethane());
  Serial.print(" ppm");
  Serial.print("\tSmoke: ");
  Serial.print(mq2.readSmoke());
  Serial.print(" ppm");
  Serial.print("\tHydrogen: ");
  Serial.print(mq2.readHydrogen());
  Serial.println(" ppm");
  delay(100);

 

nik182
Offline
Зарегистрирован: 04.05.2015

Загляните в мануал на датчик. Там черным по белому написано, что он одновременно реагирует на все эти газы. Разделить ни как нельзя. Библиотека обманывает. Не ведитесь на развод. 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

newuser22 пишет:

Нашел решение. Необходимо подключить стороннюю библиотеку 

#include <TroykaMQ.h>

и вывести каждое значение отдельно

Serial.print("Ratio: ");
  Serial.print(mq2.readRatio());
  // выводим значения газов в ppm
  Serial.print("\tLPG: ");
  Serial.print(mq2.readLPG());
  Serial.print(" ppm");
  Serial.print("\tMethane: ");
  Serial.print(mq2.readMethane());
  Serial.print(" ppm");
  Serial.print("\tSmoke: ");
  Serial.print(mq2.readSmoke());
  Serial.print(" ppm");
  Serial.print("\tHydrogen: ");
  Serial.print(mq2.readHydrogen());
  Serial.println(" ppm");
  delay(100);

 

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Библиотека просто приводит разные газы к правильным значениям. Но это действует только для моногаза. Т.е. если у Вас только метан, например. MQ2.cpp:

#include "MQ2.h"

MQ2::MQ2(uint8_t pin)
  : BaseMQ(pin) {
}

MQ2::MQ2(uint8_t pin, uint8_t pinHeater)
  : BaseMQ(pin, pinHeater) {
}

unsigned long MQ2::readLPG() {
  return readScaled(-0.45, 2.95);
}

unsigned long MQ2::readMethane() {
  return readScaled(-0.38, 3.21);
}

unsigned long MQ2::readSmoke() {
  return readScaled(-0.42, 3.54);
}

unsigned long MQ2::readHydrogen() {
  return readScaled(-0.48, 3.32);
} 

 

newuser22
Offline
Зарегистрирован: 05.05.2020

Блин, понял. Спасибо большое!

А есть датчики которые определяют газы по отдельности для ардуино уно? 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Посмотрел текст библиотеки. Достойное решение! :-)

newuser22
Offline
Зарегистрирован: 05.05.2020

ЕвгенийП пишет:

Посмотрел текст библиотеки. Достойное решение! :-)

Да я уже понял что не прав. Спасибо за помощь!

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

newuser22 пишет:

Блин, понял. Спасибо большое!

А есть датчики которые определяют газы по отдельности для ардуино уно? 

Посмотрите всю линейку MQ по моему 2-9

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Нет, они все мультигазовые, просто отдельные чуток заточены на один газ, а другие - на другой. Но, вот 4-ый, например, вроде заточен на природный газ, но на взвесь цемента и на запах ацетона реагирует только в путь - проверено.

А так - таблица MQ - вот она:

MQ-2 - пропан-бутан, изо-бутан, пропан, метан, спирт, водород, дым. Воспламеняющиеся и горючие газы.
MQ-3 - спирт, этанол, дым
MQ-4 - метан, природный газ, сжатый природный газ
MQ-5 - сжиженный нефтяной газ, природный газ, газолин
MQ-6 - пропан-бутан, изо-бутан, пропан
MQ-7 - Угарный газ
MQ-8 - Водород
MQ-9 - угарный газ, горючие газы.
MQ131 - Озон
MQ135 - Качество воздуха. Бензол, алкоголь, дым.
MQ136 - Сероводород
MQ137 - Аммиак
MQ138 - Бензол, толуол, спирт, ацетон, пропан, Формальдегид, газообразный водород.
MQ214 - метан, природный газ.
MQ216 - природный газ, угольный газ.
MQ303A - спирт, этанол, дым (так же, как MQ-3, но напряжение нагревателя ниже)
MQ306A - сжиженный нефтяной газ, бутан (как MQ6, но напряжение нагревателя ниже)
MQ307A - угарный газ (как MQ7, но напряжение нагревателя ниже)
MQ309A - угарный газ, горючие газы. (MQ-9, но напряжение нагревателя ниже)
MG811 - двуокись углерода (СО2).
AQ-104 - Контроль качества воздуха
AQ-2 - воспламеняющиеся газы, дым
AQ-3 - алкоголь, бензол
AQ-7 - Угарный газ