Датчик паров спирта MQ-3
Описание
Хотите собрать собственный алкотестер, чтобы проверить своих коллег или друзей? Или для самоконтроля? Или нужно контролировать пары бензина, чтобы не создавать взрывоопасную ситуацию? Воспользуйтесь датчиком газа MQ-3, который хорошо обнаруживает пары спирта (Alcohol) в воздухе. Помимо паров спирта датчик обнаруживает в воздухе сжиженный природный газ (LPG), угарный газ (CO), метан (CH4), пары бензина и гексан (C6H14).
Датчик является одним из популярных датчиков серии MQ. Обнаружение концентрации газов в датчике происходит за счёт измерения сопротивления чувствительного материала при взаимодействии газов с этим чувствительным материалом. Датчик обнаруживает концентрации углеводородных газов, паров спирта, пропана, метана, водорода и дыма примерно от 300 до 10000 миллионных долей (ppm - parts per million).
Для описания количества газа в воздухе чаще всего пользуются либо процентным соотношением газа или миллионными долями. К примеру, Сто миллионных долей дыма означает, что если мы разобьём весь объём воздуха на 1'000'000 частей, то 100 из этих частей будут являться частями дыма, а 999'900 частей какие-то другие газы.
Основным рабочим элементом датчика является нагревательный элемент, за счет которого происходит химическая реакция, в результате которой получается информация о концентрации газа. В процессе работы датчик должен нагреваться - это нормально. Также необходимо помнить, что за счет нагревательного элемента, датчик потребляет большой ток, поэтому рекомендуется использовать внешнее питание.
Перед началом использования рекомендуется прогреть датчик, т.е. оставить его включенным на сутки. Это поможет достичь стабильных показаний в процессе его дальнейшей работы.
Обратите внимание, что показания датчика подвержены влиянию температуры и влажности окружающего воздуха. Поэтому в случае использования датчика в изменяющейся среде, будет необходима компенсация этих параметров.
Питание нагревателя
Основным элементом датчика - является нагреватель, он же является и основным потребителем энергии. Ввиду этого, на плате предусмотрен вывод питания нагревателя. Таким образом, можно управлять нагревателем для экономии энергопотребления. Если же такой задачи не требуется, просто объедините выводы VDD и VH с помощью перемычки, и нагреватель будет запитан от сигнала +.
Технические характеристики
- Напряжение питания: 5 В
- Потребляемый ток: 150 мА
- Время прогрева при включении: 1 мин
Физические размеры
- Модуль (Д х Ш х В): 35 х 20 х 21 мм
Таблица значений параметров
Для получения значения концентрации газа (см. пример 2), нужно установить соответствующие значения А и В для объекта датчика.
Определяемый газ | Значение А | Значение В |
---|---|---|
Пары спирта (Alcohol) | 0.3934 | -1.504 |
Бензин | 4.8387 | -2.68 |
Сжиженный природный газ (LPG) | 44771 | -3.245 |
Метан (CH4) | 2*10(в степени 31) | 19.01 |
Угарный газ (CO) | 521853 | -3.821 |
Гексан (C6H14) | 7585.3 | -2.849 |
Файлы для загрузки
Примеры подключения и использования
Пример 1. Концентрация газов
В примере демонстрируется подключение датчика и вывод полученных данных в монитор Serial - порта. Таким образом можно измерить значение концентрации газов в среде с присутствием газов и в среде с их отсутствием. После этого делать вывод о наличии газов.
Что нужно | Кол-во, шт |
---|---|
Контроллер Smart UNO | 1 |
Sensor shield | 1 |
Датчик паров спирта MQ-3 | 1 |
Шлейф мама-мама | 1 |
Схема подключения:
Скетч для загрузки:
const int analogSignal = A0; // подключение сигналоьного вывода int gasValue = 0; // переменная для хранения количества газа void setup() { Serial.begin(9600); // инициализация Serial порта } void loop() { gasValue = analogRead(analogSignal); // чтение данных о количестве газа //вывод сообщения Serial.print("The gas value is "); Serial.println(gasValue); delay(1000); //задержка 1 с }
Пример 2. Определение концентрации газа
В данном примере используется уже более сложная универсальная библиотека для работы со многими видами датчиков газа. В примере демонстрируется подключение датчика и вывод полученных данных по отдельным компонентам в монитор Serial - порта. Таким образом можно измерить значения для газов, которые описаны в Таблице значений параметров (в описании к этой статье). В данном примере будет измерена концентрация бензина.
Что нужно | Кол-во, шт |
---|---|
Контроллер Smart UNO | 1 |
Sensor shield | 1 |
Датчик паров спирта MQ-3 | 1 |
Шлейф мама-мама | 1 |
Схема подключения:
Скетч для загрузки:
#include <MQUnifiedsensor.h> // подключение библиотеки #define Board ("Arduino UNO") // имя контроллера #define Pin (A0) // пин подключения контакта S датчика #define Type ("MQ-3") // тип датчика #define Voltage_Resolution (5) // количество Вольт платы #define ADC_Bit_Resolution (10) // разрешение АЦП (в битах) для плат UNO/MEGA/NANO #define RatioMQ3CleanAir (60) //RS / R0 = 70 ppm MQUnifiedsensor MQ3(Board, Voltage_Resolution, ADC_Bit_Resolution, Pin, Type); // создание объекта датчика void setup() { Serial.begin(9600); // инициализация последовательного порта // установка математической модели для вычисления концентрации газов в PPM // и константы для каждого из определяемых газов MQ3.setRegressionMethod(1); //_PPM = a*ratio^b MQ3.setRL(200.0); // установка параметров резистора MQ3.setA(4.8387); // конфигурация значения А MQ3.setB(-2.68); // конфигурация значения В MQ3.init(); // калибровка датчика Serial.print("Calibrating please wait."); float calcR0 = 0; for(int i = 1; i<=10; i ++) { MQ3.update(); // обновление данных calcR0 += MQ3.calibrate(RatioMQ3CleanAir); Serial.print("."); } MQ3.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); } MQ3.serialDebug(true); // вывод отладочных сообщений } void loop() { MQ3.update(); // обновление данных (чтение с аналогового порта) MQ3.readSensor(); // сенсор читает концентрацию, используя установленную модель и данные параметров А и В, установленные ранее MQ3.serialDebug(); // вывод отладочной таблицы в сериал порт delay(500); // задержка в 500 мс }