Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
main:sensors:mq2 [2020/03/30 11:47]
smartadmin ↷ Страница перемещена из main:датчики:mq2 в main:sensors:mq2
main:sensors:mq2 [2021/02/16 12:45] (текущий)
smartadmin [Пример 3. Определение концентрации газа]
Строка 1: Строка 1:
-====== ​Модуль датчика углеводородных газов MQ-2 ======+====== ​Датчик углеводородных газов MQ-2 ======
 ===== Описание ===== ===== Описание =====
-Модуль датчика газа, основным элементом которого является газоанализатор MQ-2, позволяет выявить наличие ​в окружающем воздухе ​углеводородные газы (пропанметанн-бутан), ​дым, водород. Датчик ​можно использовать ​в проектах ​обнаружения утечек ​газа, ​задымления. Аналого - цифровой модуль ​позволяет как получать данные о содержании газов ​к которым восприимчив ​газоанализатор, так ​и работать напрямую с устройствами,​ выдавая цифровой сигнал о превышении/уменьшении ​порогового значения. Имеет регулятор чувствительности, что ​позволяет подстраивать датчик ​под нужды конкретного проекта. Модуль имеет два светодиода: первый (красный) - индикация питаниявторой (зеленый) - индикация превышения/уменьшения порогового значения. +В Вашем проекте нужно анализировать запахиконцентрацию ​газов, задымление? Может быть ​систему ​анализа ​качества воздуха ​в помещении?​ Или определения паров спирта в выдыхаемом воздухе? А может пожарная сигнализация? Тогда датчик MQ-2 будет отличным решением поставленных вопросов. MQ-2 - это довольно простой ​датчик ​для ​определения в воздухе концентрации угарного ​газа, метана, водорода, пропана, паров спирта, углеводородных газов ​(LPG - Liquefied petroleum gas - сжиженных углеводородных газов). 
 + 
 +Датчик MQ-2 является одним из самых популярных датчиков серии MQ. Обнаружение ​концентрации газов в датчике происходит ​за счёт измерения сопротивления ​чувствительного материала ​при взаимодействии газов с этим чувствительным материалом. Датчик обнаруживает ​концентрации углеводородных ​газов, паров спирта, пропана, ​метана, водорода ​и дыма примерно от 300 до 10000 миллионных долей (ppm - parts per million). 
 + 
 +Для описания ​количества газа в воздухе чаще всего пользуются либо процентным соотношением газа или миллионными долями. К примеру, Сто миллионных долей дыма означает, что если мы разобьём весь ​объём ​воздуха ​на 1'​000'​000 ​частей, то 100 из этих частей будут ​являться частями дыма, а 999'​900 частей какие-то другие газы.
  
 Основным рабочим элементом датчика является нагревательный элемент,​ за счет которого происходит химическая реакция,​ в результате которой получается информация о концентрации газа. В процессе работы датчик должен нагреваться - это нормально. Также необходимо помнить,​ что за счет нагревательного элемента,​ датчик потребляет большой ток, поэтому рекомендуется использовать внешнее питание. Основным рабочим элементом датчика является нагревательный элемент,​ за счет которого происходит химическая реакция,​ в результате которой получается информация о концентрации газа. В процессе работы датчик должен нагреваться - это нормально. Также необходимо помнить,​ что за счет нагревательного элемента,​ датчик потребляет большой ток, поэтому рекомендуется использовать внешнее питание.
Строка 8: Строка 12:
  
 Обратите внимание,​ что показания датчика подвержены влиянию температуры и влажности окружающего воздуха. Поэтому в случае использования датчика в изменяющейся среде, будет необходима компенсация этих параметров. Обратите внимание,​ что показания датчика подвержены влиянию температуры и влажности окружающего воздуха. Поэтому в случае использования датчика в изменяющейся среде, будет необходима компенсация этих параметров.
-  + 
-Диапазоны ​измерений: + 
-  * 0-1% - пропан +==== Питание нагревателя ==== 
-  * 0,03-0,5% - бутан +Основным ​элементом датчика является нагреватель,​ он же является и основным ​потребителем энергии. Ввиду этого, на плате предусмотрен вывод питания нагревателя. Таким образом, можно ​управлять нагревателем для экономии энергопотребления. Если же такой задачи ​не требуетсяпросто объедините выводы **VDD** и **VH** с помощью перемычки,​ и нагреватель будет запитан от сигнала **+**.
-  * 0,05-2% - метан +
-  * 0,03-0,5% - водород+
  
 ==== Технические характеристики ==== ==== Технические характеристики ====
-  * Напряжение питания:​ 4,8 - 5,2 В+  * Напряжение питания нагревателя: 4,8 - 5,2 В
   * Потребляемый ток: 170 мА   * Потребляемый ток: 170 мА
   * Время прогрева при включении:​ 1 мин   * Время прогрева при включении:​ 1 мин
Строка 23: Строка 25:
   * Модуль (Д х Ш х В): 35 х 20 х 21 мм   * Модуль (Д х Ш х В): 35 х 20 х 21 мм
  
-==== Плюсы ​использования ==== +==== Таблица значений параметров ​==== 
-  * Оптимальное недорогое решение для ​проектов обнаружения газа и дыма +Для ​получения значения концентрации газа (см. пример 3), нужно установить соответствующие значения А и В для объекта ​датчика. 
-  Удобный ​в использовании модуль за счет наличия цифрового и аналогового выводов+^ Определяемый ​газ ​ ^ Значение А  ^ Значение В  
 +| Водород (H2)      | 987.99 ​     | -2.162 ​    | 
 +Углеводороды (LPG)      | 574.25 | -2.222 ​ | 
 +| Угарный ​газ ​ (CO)     | 36974  | -3.109 ​ | 
 +| Пары ​спирта (Alcohol) ​ | 3616.1 | -2.675 ​ | 
 +| Пропан  ​(Propane) ​ | 658.71 | -2.168 ​ | 
 +==== Файлы ​для загрузки ==== 
 +  * [[http://​files.smartelements.ru/​know_libs/​MQ2Lib.zip|Скачать библиотеку (MQ2Lib)]] 
 +  * [[http://​files.smartelements.ru/​know_libs/​MQUnifiedsensor.zip|Скачать библиотеку (MQUnifiedsensor)]] 
 +  * [[http://​files.smartelements.ru/​datasheet/​MQ2.pdf|Скачать даташит ​на датчик MQ2]]
  
-==== Минусы ​использования ==== +===== Примеры подключения и использования ​===== 
-  ​* ​Перед использованием требует долгого прогрева (не менее 24 часов) +==== Пример ​1. Концентрация газов ​====
-  * Для снятия показаний требуется прогрев (не менее 1 минуты) +
-  * Высокое энергопотребление (желательно дополнительное питание)+
  
-===== Пример подключения и использования ===== +В примере демонстрируется подключение датчика и вывод полученных данных в монитор Serial - порта. ​Таким образом можно ​измерить значение концентрации газов в среде с присутствием газов и в среде с их отсутствием. После этого делать вывод о наличии газов.
-В примере демонстрируется подключение датчика и вывод полученных данных в монитор Serial - порта. ​ример тестировался на контроллере Smart UNO)+
  
 ^ Что нужно ​                                                                                                                         ^ Кол-во,​ шт  ^ ^ Что нужно ​                                                                                                                         ^ Кол-во,​ шт  ^
-| [[http://​smartelements.ru/​collection/​kontrollery/​product/​kontroller-smart-uno|Контроллер Smart UNO]]                                       ​| 1           | +| [[https://​smartelements.ru/​collection/​kontrollery/​product/​kontroller-smart-uno|Контроллер Smart UNO]] | 1           | 
-| [[http://​smartelements.ru/​collection/​datchiki-i-sensory/product/modul-datchika-uglevodorodnyh-gazov-mq-2|Модуль датчика углеводородных газов MQ-2]] ​ | 1           | +| [[https://​smartelements.ru/​collection/​shildy/product/sensor-shield|Sensor shield]] ​ | 1           | 
-| [[http://​smartelements.ru/​collection/​provoda-i-kabeli/​product/​nabor-provodov-20-sht-20sm-papa-mama|Провода папа-мама]] ​            ​| ​4           |+| [[|Датчик углеводородных газов MQ-2]] ​ | 1           | 
 +| [[https://​smartelements.ru/​collection/​provoda-i-kabeli/​product/​shleyf-mama-mama-h3-20-sm|Шлейф мама-мама]] ​            ​| ​1          ​|
  
 **Схема подключения:​** **Схема подключения:​**
-{{ главная:датчики:mq2.jpg |}}+{{ :main:​sensors:mq2.png?​nolink ​|}}
  
 **Скетч для загрузки:​** **Скетч для загрузки:​**
 <file Arduino> <file Arduino>
-const int analogSignal = A0; //​подключение ​аналогового ​сигналоьного ​пина +const int analogSignal = A0; // подключение сигналоьного ​вывода
-const int digitalSignal = 8; //​подключение цифрового сигнального пина +
-boolean noGas; //​переменная ​для хранения значения о присутствии газа +
-int gasValue = 0; //​переменная для хранения количества газа+
  
 +int gasValue = 0; // переменная для хранения количества газа
 + 
 void setup() { void setup() {
-  ​pinMode(digitalSignal,​ INPUT); //​установка режима пина +  Serial.begin(9600);​ // инициализация Serial порта 
-  ​Serial.begin(9600);​ //​инициализация Serial порта + 
 } }
 + 
 void loop() { void loop() {
-  ​noGas digitalRead(digitalSignal); //считываем значение ​о присутствии газа +  ​gasValue ​analogRead(analogSignal); // чтение ​данных ​о количестве ​газа 
-  gasValue = analogRead(analogSignal);​ // и о его количестве + 
   //​вывод сообщения   //​вывод сообщения
-  Serial.print("​There is "); +  Serial.print("​The gas value is ");
-  if (noGas) Serial.print("​no gas"​);​ +
-  else Serial.print("​gas"​);​ +
-  Serial.print(",​ the gas value is ");+
   Serial.println(gasValue);​   Serial.println(gasValue);​
-  ​+ 
   delay(1000);​ //​задержка 1 с   delay(1000);​ //​задержка 1 с
 } }
 </​file>​ </​file>​
  
 +==== Пример 2. Определение количества газа ====
 +
 +В данном примере используется простая библиотека для работы с датчиком.
 +В примере демонстрируется подключение датчика и вывод полученных данных по отдельным компонентам в монитор Serial - порта. Таким образом можно измерить значения для углеводородных газов, углекислого газа и уровня дыма.
 +
 +^ Что нужно ​                                                                                                                         ^ Кол-во,​ шт  ^
 +| [[https://​smartelements.ru/​collection/​kontrollery/​product/​kontroller-smart-uno|Контроллер Smart UNO]] | 1           |
 +| [[https://​smartelements.ru/​collection/​shildy/​product/​sensor-shield|Sensor shield]] ​ | 1           |
 +| [[|Датчик углеводородных газов MQ-2]] ​ | 1           |
 +| [[https://​smartelements.ru/​collection/​provoda-i-kabeli/​product/​shleyf-mama-mama-h3-20-sm|Шлейф мама-мама]] ​            | 1          |
 +
 +**Схема подключения:​**
 +{{ :​main:​sensors:​mq2.png?​nolink |}}
 +
 +**Скетч для загрузки:​**
 +<file Arduino>
 +#include <​MQ2Lib.h>​ // подключение библиотеки
 +
 +int pin = A0; // вывод подключения к контакту S датчика
 +float lpg = 0; // хранение данных об углеводородных газах
 +float co = 0; // хранение данных об угарном газе
 +float smoke = 0; // хранение данных о дыме
 +
 +MQ2 mq2(pin); // создание объекта датчика
 +
 +void setup()
 +{
 +  Serial.begin(9600);​ // инициализация Serial-порта
 +  mq2.begin();​ // инициализация датчика
 +}
 +
 +void loop()
 +{
 +  //​Чтение данных и вывод в сериал-порт:​
 +  //lpg - об углеводородных газах
 +  lpg = mq2.readLPG();​
 +  Serial.print("​LPG : ");
 +  Serial.println(lpg);​
 +  ​
 +  //co - об угарном газе
 +  co = mq2.readCO();​
 +  Serial.print("​CO : ");
 +  Serial.println(co);​
 +  ​
 +  //smoke - о дыме
 +  smoke = mq2.readSmoke();​
 +  Serial.print("​Smoke : ");
 +  Serial.println(smoke);​
 +  Serial.println("​-----"​);​
 +  Serial.println();​
 +
 +  delay(2000);​ // задержка 2 секунды
 +}
 +</​file>​
 +
 +==== Пример 3. Определение концентрации газа ====
 +
 +В данном примере используется уже более сложная универсальная библиотека для работы со многими видами датчиков газа.
 +В примере демонстрируется подключение датчика и вывод полученных данных по отдельным компонентам в монитор Serial - порта. Таким образом можно измерить значения для газов, которые описаны в **Таблице значений параметров** (в описании к этой статье).
 +
 +^ Что нужно ​                                                                                                                         ^ Кол-во,​ шт  ^
 +| [[https://​smartelements.ru/​collection/​kontrollery/​product/​kontroller-smart-uno|Контроллер Smart UNO]] | 1           |
 +| [[https://​smartelements.ru/​collection/​shildy/​product/​sensor-shield|Sensor shield]] ​ | 1           |
 +| [[|Датчик углеводородных газов MQ-2]] ​ | 1           |
 +| [[https://​smartelements.ru/​collection/​provoda-i-kabeli/​product/​shleyf-mama-mama-h3-20-sm|Шлейф мама-мама]] ​            | 1          |
 +
 +**Схема подключения:​**
 +{{ :​main:​sensors:​mq2.png?​nolink |}}
 +
 +**Скетч для загрузки:​**
 +<file Arduino>
 +#include <​MQUnifiedsensor.h>​ // подключение библиотеки
 +
 +#​define ​        ​Board ​                  ​("​Arduino UNO") // имя контроллера
 +#​define ​        ​Pin ​                    ​(A0) ​ // пин подключения контакта S датчика
 +#​define ​        ​Type ​                   ("​MQ-2"​) // тип датчика
 +#​define ​        ​Voltage_Resolution ​     (5) // количество Вольт платы
 +#​define ​        ​ADC_Bit_Resolution ​     (10) // разрешение АЦП (в битах) для плат UNO/​MEGA/​NANO
 +#​define ​        ​RatioMQ2CleanAir ​       (9.83) //RS / R0 = 9.83 ppm 
 +
 +
 +MQUnifiedsensor MQ2(Board, Voltage_Resolution,​ ADC_Bit_Resolution,​ Pin, Type); // создание объекта датчика
 +
 +
 +void setup() {
 +
 +  Serial.begin(9600);​ // инициализация последовательного порта
 +
 +  // установка математической модели для вычисления концентрации газов в PPM
 +  // и константы для каждого из определяемых газов ​
 +  MQ2.setRegressionMethod(1);​ //_PPM =  a*ratio^b
 +  MQ2.setA(574.25);​ // конфигурация значения А
 +  MQ2.setB(-2.222);​ // конфигурация значения В 
 +
 +  MQ2.init(); ​
 +  // калибровка датчика
 +  float calcR0 = 0;
 +  for(int i = 1; i<=10; i ++)
 +  {
 +    MQ2.update();​ // обновление данных
 +    calcR0 += MQ2.calibrate(RatioMQ2CleanAir);​
 +    Serial.print("​."​);​
 +  }
 +  MQ2.setR0(calcR0/​10);​
 +  Serial.println(" ​ done!."​);​
 +  ​
 +  if(isinf(calcR0)) {
 +    Serial.println("​Warning:​ Conection issue founded, R0 is infite (Open circuit detected) please check your wiring and supply"​); ​
 +    while(1);
 +  }
 +  if(calcR0 == 0){
 +    Serial.println("​Warning:​ Conection issue founded, R0 is zero (Analog pin with short circuit to ground) please check your wiring and supply"​); ​
 +    while(1);
 +  }
 +
 +  MQ2.serialDebug(true);​ // вывод отладочных сообщений
 +}
 +
 +void loop() {
 +  MQ2.update();​ // обновление данных (чтение с аналогового порта)
 +  MQ2.readSensor();​ // сенсор читает концентрацию,​ используя установленную модель и данные параметров А и В, установленные ранее
 +  MQ2.serialDebug();​ // вывод отладочной таблицы в сериал порт
 +  delay(500); // задержка в 500 мс
 +}
 +</​file>​