Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
Следующая версия Следующая версия справа и слева
main:sensors:mq135 [2020/03/30 11:47]
smartadmin ↷ Страница перемещена из main:датчики:mq135 в main:sensors:mq135
main:sensors:mq135 [2021/02/15 15:53]
smartadmin [Пример подключения и использования]
Строка 1: Строка 1:
-====== ​Модуль датчика газа MQ-135 ======+====== ​Датчик газа MQ-135 ======
 ===== Описание ===== ===== Описание =====
-Универсальный датчик,​ обнаруживающий в воздухе ​бензол,​ спирт, пыль, дымАналого - цифровой ​модуль позволяет как получать данные о содержании газов к которым восприимчив ​газоанализатор, так и работать напрямую с устройствами,​ выдавая цифровой сигнал о превышении/уменьшении ​порогового значения. Имеет регулятор чувствительности, что ​позволяет подстраивать датчик ​под нужды конкретного проекта. Модуль имеет два светодиодапервый (красный) - индикация питаниявторой (зеленый) - индикация превышения/уменьшения порогового значения.+Вам нужно оценить качество воздуха? Воспользуйтесь ​датчиком газа MQ135который хорошо ​обнаруживает концентрацию углекислого газа (CO2) в воздухе. ​Помимо углекислого газа датчик обнаруживает в воздухе угарный газ ​(CO), ацетон, аммоний, ​спирт (Alcohol), пыль, дым
 + 
 +Датчик является ​одним из популярных датчиков серии MQ. Обнаружение ​концентрации газов в датчике происходит ​за счёт измерения сопротивления ​чувствительного материала ​при взаимодействии газов с этим чувствительным материалом. Датчик обнаруживает ​концентрации углеводородных ​газов, паров спирта, пропана, ​метана, водорода ​и дыма ​примерно от 300 до 10000 миллионных долей (ppm - parts per million). 
 + 
 +Для описания ​количества газа в воздухе чаще всего пользуются либо процентным соотношением газа или миллионными долями. К примеру, Сто миллионных долей дыма означает, что если мы разобьём ​весь ​объём воздуха ​на 1'​000'​000 ​частей, то 100 из этих частей будут ​являться частями дыма, а 999'​900 частей какие-то другие газы.
  
 Основным рабочим элементом датчика является нагревательный элемент,​ за счет которого происходит химическая реакция,​ в результате которой получается информация о концентрации газа. В процессе работы датчик должен нагреваться - это нормально. Также необходимо помнить,​ что за счет нагревательного элемента,​ датчик потребляет большой ток, поэтому рекомендуется использовать внешнее питание. Основным рабочим элементом датчика является нагревательный элемент,​ за счет которого происходит химическая реакция,​ в результате которой получается информация о концентрации газа. В процессе работы датчик должен нагреваться - это нормально. Также необходимо помнить,​ что за счет нагревательного элемента,​ датчик потребляет большой ток, поэтому рекомендуется использовать внешнее питание.
Строка 9: Строка 13:
 Обратите внимание,​ что показания датчика подвержены влиянию температуры и влажности окружающего воздуха. Поэтому в случае использования датчика в изменяющейся среде, будет необходима компенсация этих параметров. Обратите внимание,​ что показания датчика подвержены влиянию температуры и влажности окружающего воздуха. Поэтому в случае использования датчика в изменяющейся среде, будет необходима компенсация этих параметров.
  
-Диапазон измерений: 0,001 - 0,1 % +==== Питание нагревателя ==== 
 +Основным элементом датчика - является нагреватель,​ он же является и основным ​потребителем энергии. Ввиду этого, на плате предусмотрен вывод питания нагревателя. Таким образом, можно управлять нагревателем для экономии энергопотребления. Если же такой задачи не требуетсяпросто объедините выводы VDD и VH с помощью перемычкии нагреватель будет запитан от сигнала +.
 ==== Технические характеристики ==== ==== Технические характеристики ====
   * Напряжение питания:​ 5 В   * Напряжение питания:​ 5 В
Строка 19: Строка 23:
   * Модуль (Д х Ш х В): 35 х 20 х 21 мм   * Модуль (Д х Ш х В): 35 х 20 х 21 мм
  
-==== Плюсы ​использования ==== +==== Таблица значений параметров ​==== 
-  * Высокая чувствительность +Для получения значения концентрации газа (см. пример 3), нужно установить соответствующие значения А и В для объекта датчика. 
-  * Короткое время отклика +^ Определяемый газ  ^ Значение А  ^ Значение В  ^ 
-  * Удобный в использовании модуль за счет наличия цифрового и аналогового выводов+| Углекислый газ (CO2)      | 605.18 ​     | -3.937 ​    | 
 +| Пары толуола       | 44.947 | -3.445 ​ | 
 +| Угарный газ  (CO)     | 605.18 ​ | -3.937 ​ | 
 +| Пары спирта (Alcohol) ​ | 77.255 | -3.18  | 
 +| Аммоний ​ (NH4)  | 102.2 | -2.473 ​ | 
 +| Ацетон  | 34.668 | -3.369 ​ |
  
-==== Минусы использования ==== 
-  * Перед использованием требует долгого прогрева (не менее 24 часов) 
-  * Для снятия показаний требуется прогрев (не менее 1 минуты) 
-  * Высокое энергопотребление (желательно дополнительное питание) 
  
-===== Пример подключения и использования ===== + 
-В примере демонстрируется подключение датчика и вывод полученных данных в монитор Serial - порта. ​ример тестировался на контроллере Smart UNO)+ 
 +===== Примеры подключения и использования ===== 
 +==== Пример 1. Концентрация газов ==== 
 + 
 +В примере демонстрируется подключение датчика и вывод полученных данных в монитор Serial - порта. ​Таким образом можно ​измерить значение концентрации газов в среде с присутствием газов и в среде с их отсутствием. После этого делать вывод о наличии газов.
  
 ^ Что нужно ​                                                                                                                         ^ Кол-во,​ шт  ^ ^ Что нужно ​                                                                                                                         ^ Кол-во,​ шт  ^
-| [[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-gaza-mq-135|Модуль датчика газа MQ-135]] ​ | 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-135]] ​ | 1           | 
 +| [[https://​smartelements.ru/​collection/​provoda-i-kabeli/​product/​shleyf-mama-mama-h3-20-sm|Шлейф мама-мама]] ​            ​| ​1          ​|
  
 **Схема подключения:​** **Схема подключения:​**
-{{ главная:датчики:mq135.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>​
 +
 +==== Пример 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 ​                    ​(A2) ​ // пин подключения контакта 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>​ </​file>​