Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
Следующая версия Следующая версия справа и слева
main:sensors:mq135 [2021/02/15 15:53]
smartadmin [Пример подключения и использования]
main:sensors:mq135 [2021/02/16 12:44]
smartadmin [Пример 3. Определение концентрации газа]
Строка 1: Строка 1:
-====== Датчик газа MQ-135 ======+====== Датчик ​углекислого ​газа MQ-135 ======
 ===== Описание ===== ===== Описание =====
 Вам нужно оценить качество воздуха?​ Воспользуйтесь датчиком газа MQ135, который хорошо обнаруживает концентрацию углекислого газа (CO2) в воздухе. Помимо углекислого газа датчик обнаруживает в воздухе угарный газ (CO), ацетон,​ аммоний,​ спирт (Alcohol), пыль, дым. Вам нужно оценить качество воздуха?​ Воспользуйтесь датчиком газа MQ135, который хорошо обнаруживает концентрацию углекислого газа (CO2) в воздухе. Помимо углекислого газа датчик обнаруживает в воздухе угарный газ (CO), ацетон,​ аммоний,​ спирт (Alcohol), пыль, дым.
Строка 26: Строка 26:
 Для получения значения концентрации газа (см. пример 3), нужно установить соответствующие значения А и В для объекта датчика. Для получения значения концентрации газа (см. пример 3), нужно установить соответствующие значения А и В для объекта датчика.
 ^ Определяемый газ ​ ^ Значение А  ^ Значение В  ^ ^ Определяемый газ ​ ^ Значение А  ^ Значение В  ^
-| Углекислый газ (CO2)      | 605.18      | -3.937     |+| Углекислый газ (CO2)      | 110.47      | -2.862     |
 | Пары толуола ​      | 44.947 | -3.445 ​ | | Пары толуола ​      | 44.947 | -3.445 ​ |
 | Угарный газ ​ (CO)     | 605.18 ​ | -3.937 ​ | | Угарный газ ​ (CO)     | 605.18 ​ | -3.937 ​ |
Строка 72: Строка 72:
 </​file>​ </​file>​
  
-==== Пример 2. Определение количества газа ====+==== Пример 2. Определение количества ​углекислого ​газа ====
  
 В данном примере используется простая библиотека для работы с датчиком. В данном примере используется простая библиотека для работы с датчиком.
-В примере демонстрируется подключение датчика и вывод полученных данных ​по отдельным ​компонентам в монитор Serial - порта. Таким образом можно ​измерить значения для углеводородных газов, ​углекислого газа и уровня дыма.+В примере демонстрируется подключение датчика и вывод полученных данных о концентрации углекислого газа ​в монитор Serial - порта.
  
 ^ Что нужно ​                                                                                                                         ^ Кол-во,​ шт  ^ ^ Что нужно ​                                                                                                                         ^ Кол-во,​ шт  ^
 | [[https://​smartelements.ru/​collection/​kontrollery/​product/​kontroller-smart-uno|Контроллер Smart UNO]] | 1           | | [[https://​smartelements.ru/​collection/​kontrollery/​product/​kontroller-smart-uno|Контроллер Smart UNO]] | 1           |
 | [[https://​smartelements.ru/​collection/​shildy/​product/​sensor-shield|Sensor shield]] ​ | 1           | | [[https://​smartelements.ru/​collection/​shildy/​product/​sensor-shield|Sensor shield]] ​ | 1           |
-| [[|Датчик углеводородных газов MQ-2]]  | 1           |+| [[|Датчик углеводородных газов MQ-135]]  | 1           |
 | [[https://​smartelements.ru/​collection/​provoda-i-kabeli/​product/​shleyf-mama-mama-h3-20-sm|Шлейф мама-мама]] ​            | 1          | | [[https://​smartelements.ru/​collection/​provoda-i-kabeli/​product/​shleyf-mama-mama-h3-20-sm|Шлейф мама-мама]] ​            | 1          |
  
Строка 86: Строка 86:
 {{ :​main:​sensors:​mq2.png?​nolink |}} {{ :​main:​sensors:​mq2.png?​nolink |}}
  
-**Скетч для загрузки:​** +<WRAP center round tip 60%
-<file Arduino+Для ​повышения точности измерений датчиком ++++ воспользуйтесь этими советами 
-#include <​MQ2Lib.h>​ // подключение ​библиотеки+
  
-int pin = A0; // вывод подключения ​к контакту S датчика +Для более точного измерения концентрации углекислого газарекомендуется проделать следующие шаги:
-float lpg = 0; // хранение данных об углеводородных ​газах +
-float co = 0; // хранение данных об угарном газе +
-float smoke = 0; // хранение данных о дыме+
  
-MQ2 mq2(pin); // создание объекта датчика+**1.** Оставьте датчик газа включенным на примерно 24 часа. 
 + 
 +**2.** Поместите датчик на свежий воздух ​(или хорошо проветриваемое помещениепри температуре 20°С и примерной влажности 35%. 
 + 
 +**3.** Измерьте корректирующее ​значение ​с помощью скетча:​ 
 + 
 +<file Arduino>​ 
 +#include "​MQ135.h"​ // подключение ​библиотеки 
 +#define MQ135PIN A0    // вывод контроллера к которому подключен ​датчик 
 + 
 +MQ135 gasSensor = MQ135(MQ135PIN);​
  
 void setup() void setup()
 { {
-  Serial.begin(9600);​ // инициализация ​Serial-порта +  Serial.begin(9600);​ // инициализация ​последовательного ​порта 
-  ​mq2.begin(); // инициализация датчика+  ​Serial.println("​Calculating calibration value..."​); // вывод поясняющей надписи 
 +  float rzero = gasSensor.getRZero();​ // чтение корректирующего ​значения 
 +  delay(3000);​ // задержка 3 сек 
 +  Serial.print("​MQ135 RZERO Calibration Value : "); // вывод корректирующего значения 
 +  Serial.println(rzero);​ // в монитор порта
 } }
  
-void loop()+void loop() { 
 + 
 +
 +</​file>​ 
 + 
 +**4.** Откройте монитор порта и скопируйте значение. 
 + 
 +**5.** В нижеприведённом скетче,​ укажите полученное выше значение в строке:​ 
 +<​file>​ 
 +#define RZERO 251.63 ​   // определение значения коррекции вычислений 
 +</​file>​ 
 + 
 +++++ 
 +</​WRAP>​ 
 + 
 + 
 + 
 + 
 +**Скетч для загрузки:​** 
 +<file Arduino>​ 
 +#include "​MQ135.h"​ // подключение библиотеки 
 +#define MQ135PIN A0    // вывод контроллера к которому подключен датчик 
 +#define RZERO 251.63 ​   // определение значения коррекции вычислений 
 + 
 +MQ135 gasSensor = MQ135(MQ135PIN);​ // инициализация объекта датчика 
 + 
 +void setup()
 { {
-  //Чтение данных ​и вывод в сериал-порт: +  ​Serial.begin(9600); ​// инициализация ​последовательного соединения 
-  //lpg - об углеводородных газах +} 
-  lpg = mq2.readLPG();​ + 
-  ​Serial.print("​LPG : "); +void loop() {
-  ​Serial.println(lpg);+
   ​   ​
-  //co - об угарном газе +  ​float ppm = gasSensor.getPPM(); ​// получение значения концентрации углекислого газа от датчика 
-  ​co = mq2.readCO(); +  ​delay(1000); // задержка в 1 сек 
-  Serial.print("​CO : "); +  Serial.print("​CO2 ppm value : "​); ​// вывод поясняющей надписи 
-  Serial.println(co);+  Serial.println(ppm); // вывод значения в монитор порта
   ​   ​
-  //smoke - о дыме 
-  smoke = mq2.readSmoke();​ 
-  Serial.print("​Smoke : "); 
-  Serial.println(smoke);​ 
-  Serial.println("​-----"​);​ 
-  Serial.println();​ 
- 
-  delay(2000);​ // задержка 2 секунды 
 } }
 </​file>​ </​file>​
Строка 130: Строка 157:
  
 В данном примере используется уже более сложная универсальная библиотека для работы со многими видами датчиков газа. В данном примере используется уже более сложная универсальная библиотека для работы со многими видами датчиков газа.
-В примере демонстрируется подключение датчика и вывод полученных данных по отдельным компонентам в монитор Serial - порта. Таким образом можно измерить значения для газов, которые описаны в **Таблице значений параметров** (в описании к этой статье).+В примере демонстрируется подключение датчика и вывод полученных данных по отдельным компонентам в монитор Serial - порта. Таким образом можно измерить значения для газов, которые описаны в **Таблице значений параметров** (в описании к этой статье). В данном примере будет измерена концентрация аммония (NH4).
  
 ^ Что нужно ​                                                                                                                         ^ Кол-во,​ шт  ^ ^ Что нужно ​                                                                                                                         ^ Кол-во,​ шт  ^
 | [[https://​smartelements.ru/​collection/​kontrollery/​product/​kontroller-smart-uno|Контроллер Smart UNO]] | 1           | | [[https://​smartelements.ru/​collection/​kontrollery/​product/​kontroller-smart-uno|Контроллер Smart UNO]] | 1           |
 | [[https://​smartelements.ru/​collection/​shildy/​product/​sensor-shield|Sensor shield]] ​ | 1           | | [[https://​smartelements.ru/​collection/​shildy/​product/​sensor-shield|Sensor shield]] ​ | 1           |
-| [[|Датчик углеводородных газов MQ-2]]  | 1           |+| [[|Датчик углеводородных газов MQ-135]]  | 1           |
 | [[https://​smartelements.ru/​collection/​provoda-i-kabeli/​product/​shleyf-mama-mama-h3-20-sm|Шлейф мама-мама]] ​            | 1          | | [[https://​smartelements.ru/​collection/​provoda-i-kabeli/​product/​shleyf-mama-mama-h3-20-sm|Шлейф мама-мама]] ​            | 1          |
  
Строка 146: Строка 173:
  
 #​define ​        ​Board ​                  ​("​Arduino UNO") // имя контроллера #​define ​        ​Board ​                  ​("​Arduino UNO") // имя контроллера
-#​define ​        ​Pin ​                    (A2)  // пин подключения контакта S датчика +#​define ​        ​Pin ​                    (A0)  // пин подключения контакта S датчика 
-#​define ​        ​Type ​                   ("MQ-2") // тип датчика+#​define ​        ​Type ​                   ("MQ-135") // тип датчика
 #​define ​        ​Voltage_Resolution ​     (5) // количество Вольт платы #​define ​        ​Voltage_Resolution ​     (5) // количество Вольт платы
 #​define ​        ​ADC_Bit_Resolution ​     (10) // разрешение АЦП (в битах) для плат UNO/​MEGA/​NANO #​define ​        ​ADC_Bit_Resolution ​     (10) // разрешение АЦП (в битах) для плат UNO/​MEGA/​NANO
-#​define ​        RatioMQ2CleanAir ​       ​(9.83) //RS / R0 = 9.83 ppm +#​define ​        RatioMQ135CleanAir ​     ​(3.6) //RS / R0 = 3.ppm 
  
  
-MQUnifiedsensor ​MQ2(Board, Voltage_Resolution,​ ADC_Bit_Resolution,​ Pin, Type); // создание объекта датчика+MQUnifiedsensor ​MQ135(Board, Voltage_Resolution,​ ADC_Bit_Resolution,​ Pin, Type); // создание объекта датчика
  
  
Строка 162: Строка 189:
   // установка математической модели для вычисления концентрации газов в PPM   // установка математической модели для вычисления концентрации газов в PPM
   // и константы для каждого из определяемых газов ​   // и константы для каждого из определяемых газов ​
-  ​MQ2.setRegressionMethod(1);​ //_PPM =  a*ratio^b +  ​MQ135.setRegressionMethod(1);​ //_PPM =  a*ratio^b 
-  ​MQ2.setA(574.25); // конфигурация значения А +  ​MQ135.setA(102.2); // конфигурация значения А 
-  ​MQ2.setB(-2.222); // конфигурация значения В +  ​MQ135.setB(-2.473); // конфигурация значения В 
  
-  ​MQ2.init(); ​+  ​MQ135.init(); ​
   // калибровка датчика   // калибровка датчика
   float calcR0 = 0;   float calcR0 = 0;
   for(int i = 1; i<=10; i ++)   for(int i = 1; i<=10; i ++)
   {   {
-    ​MQ2.update(); // обновление данных +    ​MQ135.update(); // обновление данных 
-    calcR0 += MQ2.calibrate(RatioMQ2CleanAir);+    calcR0 += MQ135.calibrate(RatioMQ135CleanAir);
     Serial.print("​."​);​     Serial.print("​."​);​
   }   }
-  ​MQ2.setR0(calcR0/​10);​+  ​MQ135.setR0(calcR0/​10);​
   Serial.println(" ​ done!."​);​   Serial.println(" ​ done!."​);​
   ​   ​
Строка 187: Строка 214:
   }   }
  
-  ​MQ2.serialDebug(true);​ // вывод отладночных сообщений+  ​MQ135.serialDebug(true);​ // вывод отладночных сообщений
 } }
  
 void loop() { void loop() {
-  ​MQ2.update(); // обновление данных (чтение с аналогового порта) +  ​MQ135.update(); // обновление данных (чтение с аналогового порта) 
-  ​MQ2.readSensor();​ // сенсор читает концентрацию,​ используя установленную модель и данные параметров А и В, установленные ранее +  ​MQ135.readSensor();​ // сенсор читает концентрацию,​ используя установленную модель и данные параметров А и В, установленные ранее 
-  ​MQ2.serialDebug();​ // вывод отладочной таблицы в сериал порт+  ​MQ135.serialDebug();​ // вывод отладочной таблицы в сериал порт
   delay(500); // задержка в 500 мс   delay(500); // задержка в 500 мс
 } }
 </​file>​ </​file>​