Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия Следующая версия Следующая версия справа и слева | ||
main:sensors:mq135 [2021/02/15 15:45] 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), пыль, дым. | ||
Строка 23: | Строка 23: | ||
* Модуль (Д х Ш х В): 35 х 20 х 21 мм | * Модуль (Д х Ш х В): 35 х 20 х 21 мм | ||
- | ==== Плюсы использования ==== | + | ==== Таблица значений параметров ==== |
- | * Высокая чувствительность | + | Для получения значения концентрации газа (см. пример 3), нужно установить соответствующие значения А и В для объекта датчика. |
- | * Короткое время отклика | + | ^ Определяемый газ ^ Значение А ^ Значение В ^ |
- | * Удобный в использовании модуль за счет наличия цифрового и аналогового выводов | + | | Углекислый газ (CO2) | 110.47 | -2.862 | |
+ | | Пары толуола | 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() { | ||
+ | gasValue = analogRead(analogSignal); // чтение данных о количестве газа | ||
+ | |||
+ | //вывод сообщения | ||
+ | Serial.print("The gas value is "); | ||
+ | Serial.println(gasValue); | ||
+ | |||
+ | 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-135]] | 1 | | ||
+ | | [[https://smartelements.ru/collection/provoda-i-kabeli/product/shleyf-mama-mama-h3-20-sm|Шлейф мама-мама]] | 1 | | ||
+ | |||
+ | **Схема подключения:** | ||
+ | {{ :main:sensors:mq2.png?nolink |}} | ||
+ | |||
+ | <WRAP center round tip 60%> | ||
+ | Для повышения точности измерений датчиком ++++ воспользуйтесь этими советами | | ||
+ | |||
+ | Для более точного измерения концентрации углекислого газа, рекомендуется проделать следующие шаги: | ||
+ | |||
+ | **1.** Оставьте датчик газа включенным на примерно 24 часа. | ||
+ | |||
+ | **2.** Поместите датчик на свежий воздух (или хорошо проветриваемое помещение) при температуре 20°С и примерной влажности 35%. | ||
+ | |||
+ | **3.** Измерьте корректирующее значение с помощью скетча: | ||
+ | |||
+ | <file Arduino> | ||
+ | #include "MQ135.h" // подключение библиотеки | ||
+ | #define MQ135PIN A0 // вывод контроллера к которому подключен датчик | ||
+ | |||
+ | MQ135 gasSensor = MQ135(MQ135PIN); | ||
+ | |||
+ | void setup() | ||
+ | { | ||
+ | Serial.begin(9600); // инициализация последовательного порта | ||
+ | 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() { | ||
- | noGas = digitalRead(digitalSignal); //считываем значение о присутствии газа | ||
- | gasValue = analogRead(analogSignal); // и о его количестве | ||
- | //вывод сообщения | + | } |
- | Serial.print("There is "); | + | </file> |
- | if (noGas) Serial.print("no gas"); | + | |
- | else Serial.print("gas"); | + | **4.** Откройте монитор порта и скопируйте значение. |
- | Serial.print(", the gas value is "); | + | |
- | Serial.println(gasValue); | + | **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); // инициализация последовательного соединения | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
| | ||
- | delay(1000); //задержка 1 с | + | float ppm = gasSensor.getPPM(); // получение значения концентрации углекислого газа от датчика |
+ | delay(1000); // задержка в 1 сек | ||
+ | Serial.print("CO2 ppm value : "); // вывод поясняющей надписи | ||
+ | Serial.println(ppm); // вывод значения в монитор порта | ||
+ | |||
+ | } | ||
+ | </file> | ||
+ | |||
+ | ==== Пример 3. Определение концентрации газа ==== | ||
+ | |||
+ | В данном примере используется уже более сложная универсальная библиотека для работы со многими видами датчиков газа. | ||
+ | В примере демонстрируется подключение датчика и вывод полученных данных по отдельным компонентам в монитор Serial - порта. Таким образом можно измерить значения для газов, которые описаны в **Таблице значений параметров** (в описании к этой статье). В данном примере будет измерена концентрация аммония (NH4). | ||
+ | |||
+ | ^ Что нужно ^ Кол-во, шт ^ | ||
+ | | [[https://smartelements.ru/collection/kontrollery/product/kontroller-smart-uno|Контроллер Smart UNO]] | 1 | | ||
+ | | [[https://smartelements.ru/collection/shildy/product/sensor-shield|Sensor shield]] | 1 | | ||
+ | | [[|Датчик углеводородных газов MQ-135]] | 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-135") // тип датчика | ||
+ | #define Voltage_Resolution (5) // количество Вольт платы | ||
+ | #define ADC_Bit_Resolution (10) // разрешение АЦП (в битах) для плат UNO/MEGA/NANO | ||
+ | #define RatioMQ135CleanAir (3.6) //RS / R0 = 3.6 ppm | ||
+ | |||
+ | |||
+ | MQUnifiedsensor MQ135(Board, Voltage_Resolution, ADC_Bit_Resolution, Pin, Type); // создание объекта датчика | ||
+ | |||
+ | |||
+ | void setup() { | ||
+ | |||
+ | Serial.begin(9600); // инициализация последовательного порта | ||
+ | |||
+ | // установка математической модели для вычисления концентрации газов в PPM | ||
+ | // и константы для каждого из определяемых газов | ||
+ | MQ135.setRegressionMethod(1); //_PPM = a*ratio^b | ||
+ | MQ135.setA(102.2); // конфигурация значения А | ||
+ | MQ135.setB(-2.473); // конфигурация значения В | ||
+ | |||
+ | MQ135.init(); | ||
+ | // калибровка датчика | ||
+ | float calcR0 = 0; | ||
+ | for(int i = 1; i<=10; i ++) | ||
+ | { | ||
+ | MQ135.update(); // обновление данных | ||
+ | calcR0 += MQ135.calibrate(RatioMQ135CleanAir); | ||
+ | Serial.print("."); | ||
+ | } | ||
+ | MQ135.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); | ||
+ | } | ||
+ | |||
+ | MQ135.serialDebug(true); // вывод отладночных сообщений | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | MQ135.update(); // обновление данных (чтение с аналогового порта) | ||
+ | MQ135.readSensor(); // сенсор читает концентрацию, используя установленную модель и данные параметров А и В, установленные ранее | ||
+ | MQ135.serialDebug(); // вывод отладочной таблицы в сериал порт | ||
+ | delay(500); // задержка в 500 мс | ||
} | } | ||
</file> | </file> |