Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
main:sensors:mq135 [2021/02/15 15:53] smartadmin [Пример подключения и использования] |
main:sensors:mq135 [2021/02/17 10:26] (текущий) 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 | | ||
Строка 32: | Строка 32: | ||
| Аммоний (NH4) | 102.2 | -2.473 | | | Аммоний (NH4) | 102.2 | -2.473 | | ||
| Ацетон | 34.668 | -3.369 | | | Ацетон | 34.668 | -3.369 | | ||
+ | |||
+ | |||
+ | ==== Файлы для загрузки ==== | ||
+ | * [[http://files.smartelements.ru/know_libs/MQ135.zip|Скачать библиотеку (MQ135)]] | ||
+ | * [[http://files.smartelements.ru/know_libs/MQUnifiedsensor.zip|Скачать библиотеку (MQUnifiedsensor)]] | ||
+ | * [[http://files.smartelements.ru/datasheet/MQ135.pdf|Скачать даташит на датчик MQ135]] | ||
Строка 72: | Строка 78: | ||
</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: | Строка 92: | ||
{{ :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; // хранение данных об угарном газе | + | **1.** Оставьте датчик газа включенным на примерно 24 часа. |
- | float smoke = 0; // хранение данных о дыме | + | |
+ | **2.** Поместите датчик на свежий воздух (или хорошо проветриваемое помещение) при температуре 20°С и примерной влажности 35%. | ||
+ | |||
+ | **3.** Измерьте корректирующее значение с помощью скетча: | ||
+ | |||
+ | <file Arduino> | ||
+ | #include "MQ135.h" // подключение библиотеки | ||
+ | #define MQ135PIN A0 // вывод контроллера к которому подключен датчик | ||
- | MQ2 mq2(pin); // создание объекта датчика | + | 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: | Строка 163: | ||
В данном примере используется уже более сложная универсальная библиотека для работы со многими видами датчиков газа. | В данном примере используется уже более сложная универсальная библиотека для работы со многими видами датчиков газа. | ||
- | В примере демонстрируется подключение датчика и вывод полученных данных по отдельным компонентам в монитор 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: | Строка 179: | ||
#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.6 ppm |
- | MQUnifiedsensor MQ2(Board, Voltage_Resolution, ADC_Bit_Resolution, Pin, Type); // создание объекта датчика | + | MQUnifiedsensor MQ135(Board, Voltage_Resolution, ADC_Bit_Resolution, Pin, Type); // создание объекта датчика |
Строка 162: | Строка 195: | ||
// установка математической модели для вычисления концентрации газов в 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(); |
// калибровка датчика | // калибровка датчика | ||
+ | Serial.print("Calibrating please wait."); | ||
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: | Строка 221: | ||
} | } | ||
- | 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> |