Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
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> |