Разбираемся с датчиками CO и метана MQ-4 и MQ-7 — Подручные Записки

Разбираемся с датчиками CO и метана MQ-4 и MQ-7 — Подручные Записки Анемометр

Что такое ppm

Чтобы как следует оперировать со значениями, которые я буду приводить ниже, нужно для себя уяснить единицы измерений. У нас, на территории бывшего Советского Союза, показатели принято измерять в процентах (%) или же непосредственно в массе к объему (мг/м3). А вот в некоторых зарубежных странах применяет такой показатель как ppm.

Сокращение ppm расшифровывается как parts per million или в вольном переводе «частей на миллион» (хорошо, что тут не используют фунты на галлоны и империалы к саженям). В принципе, от процента показатель не сильно отличается, вернее, отличается только размерность. 1 ppm = 0,0001%, соответственно 3% = 30.000 ppm.

Перевод из процентов или ppm в мг/м3 уже сложнее, тут нужно учитывать молярную массу газа, давление и температуру. В целом формула для пересчета выглядит следующим образом P x VM=R x T, где P – давление, VM – молярный объем, R – универсальная газовая постоянная, T – абсолютная температура в Кельвинах (не Цельсиях и не Фаренгейтах).

CO: 3% = 30.000 ppm = 34695.52 мг/м3CO2: 3% = 30.000 ppm = 54513.22 мг/м3

Данные приведены для нормального атмосферного давления и комнатной температуры. Обратите внимание, что CO2 при сравнимом процентном соотношении почти вдвое тяжелее CO. Напомню, что молекула CO2 содержит на один атом больше, отсюда и разница. И именно благодаря этой разнице CO2 скапливается в низинах, а CO у потолка.

Описание выводов

  • VCC — Питание модуля « »
  • GND — Питание модуля «-»
  • DO — Цифровой вывод
  • AO — Аналоговый вывод

Arduino-kit | электронные конструкторы и наборы, контроллеры, модули и датчики

Рис. 22.1. Схема подключения датчика MQ4

Напишем скетч, считывающий показания с датчика MQ4 и выводящий показания в монитор последовательного порта. Если аналоговое значение с датчика превысит 750 (опасный уровень), будем зажигать светодиод, подключенный к цифровому выводу 8. Содер- жимое скетча показано в листинге 22.1.

constint analogInPin = A1;
constint ledPin = 8; int sensorValue = ; voidsetup()
{
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
}
voidloop()
{
sensorValue = analogRead(analogInPin); if (sensorValue >= 750) 
digitalWrite(ledPin, HIGH); elsedigitalWrite(ledPin, LOW); 
Serial.print("sensor = " );
Serial.println(sensorValue); 
delay(1000);
}

Порядок подключения:

1. Подключаем датчик MQ4 к плате Arduino по схеме на рис. 22.1.
2. Загружаем в плату Arduino скетч из листинга 22.1.
3. Открываем монитор последовательного порта Arduino IDE.
4. После подачи питания датчику необходимо время, чтобы выйти на рабочий режим, примерно 10–15 секунд. Это время нужно, чтобы нагреватель внутри датчика поднял температуру до необходимого значения.
5. Подносим газовую зажигалку к датчику и открываем газ, наблюдаем изменение показаний от датчика MQ4 в мониторе последовательного порта Arduino IDE.

Листинги программскачать

Main.c

#include "main.h"
#include "adc.h"
#include "gpio.h"
#include "mq4.h"

int ppm_def;  //ppm без коррекций
int ppm_adv;  //ppm с поправкой на изменение среды
int ppm_full;  //ppm с поправкой на изменение среды и среду калибровки

float mq4_temp_cal = 20; //температура при которой проведена калибровка
float mq4_hum_cal = 33; //влажность при которой проведена калибровка
extern float mq4_calib_value; //значение коррекции для RsRo
extern float mq4_calib_value2; //значение коррекции для RsRo c учетом среды калибровки

int mq4_Ro = MQ4_RO_DEF; //сопротивление датчика при 1000ppm корректируется калибровкой 
extern int mq4_Rs;   //сопротивление датчика в текущий момент
extern int mq4_adc_value; //значение АЦП
extern float mq4_volts; //вольт АЦП  
extern float  mq4_RsRo; //соотношение послежнего измерянного сопр. с сопр. 1000 ppm

//ПЕРЕМЕННЫЕ АТМОСФЕРНОГО ДАТЧИКА:
float tf = 0.0f, hf = 0.0f; //значения текущих показателей влажности и температуры

int main(void)
{
 HAL_Init();
 MX_GPIO_Init();
 MX_ADC1_Init();
}

while (1)
{
 //запускаем расчеты в разных форматах:
 ppm_def = mq4_default_work();              
 ppm_adv = mq4_advanced_work(tf,hf);
 ppm_full= mq4_full_work(tf,hf,mq4_temp_cal,mq4_hum_cal);
 //нажимаем кнопку для калибровки: 
  if(HAL_GPIO_ReadPin(KEY_1_GPIO_Port, KEY_1_Pin)==GPIO_PIN_RESET) 
   {
   mq4_Ro = mq4_calib_Ro(); //калибровка 
   mq4_temp_cal = tf;   //записываем температуру при которой проведена калибровка
   mq4_hum_cal = hf;   //записываем влажность при которой проведена калибровка
   }
}

Mq4.c

mq4.c
#include "mq4.h"
#include "adc.h"
#include "math.h"

int mq4_Rs; //текущее сопротивление датчика
int mq4_adc_value; //значение АЦП
float mq4_volts; //вольт АЦП
float mq4_RsRo; //соотношение измерянного сопр. с сопр. 1000 ppm
float mq4_calib_value;  //значение коррекции для RsRo
float mq4_calib_value2; //значение коррекции для RsRo (с поправкой на среду калибровки)

extern int mq4_Ro; //сопротивление при концентрации 1000ppm 
extern int mq4_temp_cal; //температура при которой проведена калибровка 
extern int mq4_hum_cal; //влажность при которой проведена калибровка 

Mq4.h

#ifndef MQ4_H_
#define MQ4_H_

int mq4_default_work (void); //РРМ без температурной компенсации
int mq4_advanced_work (float temp, float hum); //РРМ с применением компенсации
int mq4_full_work (float temp, float hum, float temp_cal, float hum_cal); //РРМ с применением компенсации и условий калибровки
int mq4_calib_Ro(void); //калибровка 
int mq4_get_adc (void); //функция возвращает десятичное значение, снятое с АЦП

#define MQ4_ADC hadc1 //АЦП к которому подключен датчик
#define MQ4_ADC_PRECISION 4096 //разрядность АЦП в целых значениях (4096 = 12 bit)
#define MQ4_REFERENCE_VOLTAGE 3.3f //опорное напряжение АЦП
#define MQ4_STATIC_RESISTOR 20000 //RL - использованный постоянный резистор делителя 
#define MQ4_RO_DEF 13600 //Ro - сопротивление при 1000 ppm (RsRo=1), значение  
#define MQ4_HUM_WEIGHT 0.3f //вес влажности в функции коррекции (смещение по у) 
#define MQ4_AIR_RSRO 4.4f //соотношение RsRo для чистого воздуха (в даташите к датчику)
#endif /* MQ4_H_ */

Альтернативы?

Если датчики MQ так уж плохи, то есть ли какая альтернатива для использования в домашних проектах? На самом деле есть. Даже много. Методов измерения концентрации газов не один и не два. Только вот датчики, обладающие высокой точностью, стоят приличных денег.

Один из вариантов миниатюрного датчика CO2 с инфракрасным методом измерения. Датчик MH-Z19.

Однако, совсем недавно на рынке, усилиями все тех же трудолюбивых товарищей, появились инфракрасные детекторы. Да, они пока далеко не для всех газов, но как минимум СО2ловят без значимых энергетических затрат и с высокой селективностью. В таких датчиках используются недисперсийный инфракрасный метод определения концентрации газа.

Если же требуется детектирование других газов, но с применением недорогих устройств, то доступных вариантов на текущий момент (лето 2022 года) не так много, если не сказать прямо, что их совсем мало. Альтернативой можно считать использование серии MQ, правда обходиться придется только порогами значений (о точности перевода в ppm я уже высказался выше).

Сигнализатор CO. Применяется электрохимичский датчик и измерение в ppm.

Многие сразу же возразят, дескать, я лично использовал такой датчик, и он работает. В качестве примеров приводят опыты сродни «подышать на датчик», подержать вокруг него руку, пустить облачко сигаретного дыма. Да, показания датчика сразу же изменятся, значения поползут вверх.

Да, датчик отразит то, что он нагрелся, то что увеличилась влажность, то, что в атмосфере стало больше углерода и меньше кислорода. Но насколько больше, какое количество исследуемого газа сейчас в атмосфере и самое важное какого именно газа? Вот на этот вопрос ответ при помощи датчиков серии MQ дать уже нельзя.

Аналоговый датчик

Тут пользователь получает уже не просто сам датчик, а датчик, установленный на плату, с установленным резистором. Подключать его уже можно (и нужно) к измерителю напряжения напрямую, без каких-либо промежуточных резисторов. В этом случае доступно только измерение напряжения, так как вкупе с резистором вся схема работает как обыкновенный делитель напряжения.

Аналоговый датчик

Использование аналогового датчика на плате удобно тем, что изготовитель уже установил нужный резистор на плату и возможно даже провел некую калибровку всей конструкции. В отдельных аналоговых датчиках применяется подстроечный резистор и пользователь волен сам произвести калибровку, а в некоторых такая опция отсутствует. Понятное дело, что лучше брать версию с возможностью подстройки.

Вариант калибровки датчика и преобразования показаний в ppm

Блуждая по сети в поисках решения по калибровке и получения достоверных результатов с датчика, я наткнулся на весьма любопытный пост от некоего Davide Gironi, который столкнулся с точно такой же проблемой, как и я. Davide попытался разобраться, каким образом можно получить с его датчика MQ-135 (Air Quality) показания в виде ppm.

Про анемометры:  Купить газовые котлы отопления по низким ценам в интернет-магазине. Заказать недорого газовый отопительный котел с доставкой по Москве и России.

Согласно исследованиям, проведенным блоггером для калибровки, достаточно иметь представление о концентрации какого-то газа в атмосфере и опираясь на эти данные попробовать подобрать резистор для попадания в нужный сектор по графику. Davide использовал датчик MQ-135 который предназначен для определения качества воздуха, среди контролируемых газов которого есть и CO2.

Затем, после калибровки он набросал небольшой код, позволяющий получить искомые ppm исходя из полученных в результате калибровки данных. Я не буду приводить здесь код, желающие могут ознакомиться с ним самостоятельно, но сводится он примерно к этому:

float ppm = ((10000.0 / 4096.0) * raw_adc) 200;

Приведенный выше код, между прочим, из примера для датчика MQ-4 с цифровым интерфейсом I2C. Заметьте, что это лучше, чем ничего. Ведь многие просто не в состоянии дойти и до такого преобразования и ограничиваются лишь просто некими пороговыми значениями.

Датчики близнецы

И в завершение я хочу подвести итог. Я расстроен тем, что такие доступные по цене датчики никоим образом не могут быть использованы в каком-либо более-менее серьезном проекте. Да, можно потренироваться в программировании и в подключении датчиков, но вот искомые достоверные значения, получить с их помощью уже не выйдет. И ценность датчиков очень скоро устремится к нулю.

Более того, я лично убежден, что все датчики MQ не имеют достаточного уровня селективности, отличаются только внешним дизайном и рекомендациями по подбору резисторов. Датчики реагируют на все содержащее углерод и тем сильнее реагируют, чем более активен углерод в соединении и чем он легче вступает в реакцию с подложкой.

Я не верю, что производитель добавляет в подложку дополнительные элементы, повышающие селективность и при этом ничего не пишет в спецификацию. Зато я предполагаю, что один датчик можно превратить в другой, путем использования разных резисторов и смотрения на графики сопротивления и концентрации.

Графики показаний с датчиков MQ-4 и MQ-7 лежащих рядом друг с другом на столе

А ведь все началось с того, что я подключил два датчика (MQ-4 и MQ-7) к одному устройству и начал заливать результаты их работы на ThingSpeak. Один из датчиков должен измерять уровень ядовитого СО, а второй показывать сколько есть в воздухе метана.

Меня очень заинтересовали графики, которые повторяли друг друга больше чем почти полностью. Да, один датчик выдавал показания на уровне 100-150 единиц, а второй на уровне 350-400. Пики и плато совпадали по времени от разных датчиков, а всплески лишь оттеняли неминуемую закономерность.

График корреляции показаний датчиков MQ-4 и MQ-7 лежащих на одном столе

Я свел показания обоих датчиков в единый график корреляции и понял, что они показывают одни и те же результаты, правда в разных диапазонах. И задался вопросом – зачем мне датчик метана, который реагирует на все? Начиная от угарного газа и заканчивая алкоголем. Зачем мне датчик СО, который помимо самого СО еще больше реагирует на LPG и водород? Вот именно – незачем.

Update. Прежде чем выкинуть в помойку ненужные датчики, я решил парочку из них разобрать и посмотреть, что же у них внутри. Итак:

Внутренности датчика MQ-4

Как видно, у датчика шесть ножек. От двух из них через центр трубочки из серебристого вещества проходит нагревательная спиралька. Четыре других ножки держат по две тонких проволочки, очевидно для анализа изменяющегося сопротивления.

Внутренности датчика MQ-7

Несмотря на другой внешний вид, внутренности MQ-7 идентичны внутренностям MQ-4. А нагреваемая бобышка сероватого цвета, есть ни что иное, как искомый оксид олова, который при нагревании и присутствии углерода или водорода (как раз те самые газы) частично восстанавливается, стремясь стать металлическим оловом, и соответственно изменяет свое сопротивление.

Конструкция электрохимических датчиков

Самый распространенный вид датчиков MQ. И распространен он широко исключительно благодаря своей дешевизне. Я провел небольшое исследование, дабы попробовать разобраться в вопросе электрохимических датчиков немного больше, чем большинство любителей самостоятельно собрать какое-нибудь устройство.

Электрохимический датчик построен на принципе изменения сопротивления некоего элемента при взаимодействии с другим элементом. Иными словами, происходит химическая реакция между этими двумя элементами, в результате чего меняется сопротивление подложки.

Вот и состоит электрохимический датчик из некой подложки с чувствительным материалом, нагревателя подложки и собственно выводных контактов. Сверху на датчик натянута металлическая сетка, все же подложка ощутимо греется, да и всяческие газы горючие могут быть вокруг датчика, тот же CO.

Схема электрохимического датчика

В сети можно насчитать пару десятков производителей плат с электрохимическими датчиками серии MQ. Но производитель у всех датчиков (не плат) один – китайская компания HANWEI. Компания выпускает весомый ассортимент различных устройств для детектирования газов и всего с ними связанного. Но сенсоров серии MQ среди номенклатуры нет, возможно, что продукция слишком уж мелкая, чтобы вывешивать ее на сайт.

Будучи по натуре любопытным персонажем, я покопался в спецификациях HANWEI и свел все доступные датчики серии MQ, материал подложки и тип детектирования в единую таблицу.

ДатчикГазПодложка
MQ-2LPGSnO2
MQ-3AlcoholSnO2
MQ-4CH4SnO2
MQ-5LPG, natural gasSnO2
MQ-6LPG, propaneSnO2
MQ-7COSnO2
MQ-9CH4, LPGSnO2
MQ-131O3SnO2
MQ-135Air QualitySnO2
MQ-136Air QualitySnO2
MQ-137Air QualitySnO2
MQ-138Multi-purposeSnO2
MQ-303AAlcohol???
MQ-306LPG, LNG???

За исключением 300-й серии датчиков MQ все они используют один и тот же материал для подложки. Именно для той самой подложки которая и определяет концентрацию газа в атмосфере, именно для той подложки, которая меняет свое сопротивление. Во всех датчиках она используется одна и та же. У 300-й серии информация о чувствительном материале скромно опущена.

Несмотря на единую конструкцию и используемый чувствительный элемент, нельзя сказать, что все датчики у производителя одинаковые. Они отличаются формой и такими параметрами, как, например, напряжение питания нагревателя. Снимать показания с подобных датчиков можно при помощи омметра, измеряя сопротивление, которое меняется в зависимости от концентрации измеряемого газа.

Прошу заметить, что все датчики имеют определенный и весьма небольшой срок жизни, который составляет порядка 5 лет. Причем 5 лет — это не только непосредственно работа, но и хранение. А если ваш датчик хранится без соответствующей упаковки, то срок его годности еще меньше.

Дело в том, что чувствительный химический элемент, без нагрева, будет насыщаться углеродом, который постепенно его весь и разрушит. Именно по этой причине новые датчики рекомендуется «прокаливать» держа в рабочем состоянии на протяжении суток, а еще лучше двух.

Если приглядеться к списку измеряемых газов или назначению датчиков, то видно, что все они, так или иначе, завязаны на углерод (метан, природный газ, пропан, угарный газ, сжиженный газ, алкоголь и даже датчики качества воздуха измеряют наличие углерода в соединениях в воздухе).

И только датчик озона (MQ-131) стоит особняком, хотя и использует тот же самый чувствительный элемент с SnO2. Дело в том, что все датчики серии MQ рассчитаны на работу в атмосфере со стабильным уровнем кислорода. Спецификация говорит нам, что содержание кислорода должно быть 21%, что есть некая усредненная норма.

А если кислорода меньше или больше, то показания будут плавать, вплоть до полной неспособности датчика выдавать вразумительные результаты при содержании кислорода на уровне 2% и ниже. Еще бы, в этом случае углерод совсем никак выгорать на подложке не будет, окислителя-то недостаточно. Видимо, на этом эффекте и рассчитано измерение озона электрохимическим датчиком.

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

Но точность показаний датчиков серии MQ зависит не только от кислорода. Показания хорошо меняются в зависимости от влажности воздуха и от его температуры. Расчетные показатели даны для влажности в 65% и температуры 20 градусов Цельсия. А при влажности выше 95% датчик перестанет адекватно выдавать показания.

Помимо показателей окружающей среды на точность показаний датчиков MQ не хуже остальных параметров влияет еще и срок службы самих датчиков. Со временем их показания плывут. «Засоряется» продуктами измерения чувствительный слой, изменяются характеристики нагревателя и изменяется сопротивление при эталонных показателях.

В какую сторону оно изменяется непонятно, но производитель рекомендует, во-первых, проводить калибровку датчика после покупки и первичного «отжига», а затем проводить регулярные перекалибровки на протяжении всего срока службы датчика. А единственный нормальный способ калибровки — сравнение результатов показания датчика с уже откалиброванным прибором.

Про анемометры:  Газ контроль конфорок: как это работает, в чем преимущества и недостатки

Заявление о невозможности нормальной калибровки датчиков

«И как же мне узнать, какова концентрация того или иного газа при помощи сенсора MQ?» — вопросит нетерпеливый читатель? Поскольку в большинстве случаев потребитель использует измеритель напряжения, впрочем с сопротивлением все аналогично, но меньше на один шаг, то у потребителя существует потребность в том, как вольты или кванты ЦАПа Arduino перевести в заветные ppm или хотя б проценты. Проделать сию операцию можно исключительно при помощи невнятных графиков из спецификации на датчик.

График: сопротивление в зависимости от концентрации газов.

Взглянув на график из спецификации видно, что, во-первых, в нем есть как минимум одна логарифмическая область. А, во-вторых, помимо основного газа, датчик преспокойно улавливает еще и все остальные схожие (углеродсодержащие). Разобраться с графиком и понять какое ppm соответствует какому сопротивлению датчика — занятие для практикующих самураев, поскольку прямая пересекающая несколько разных логарифмических зон явно будет не прямой в реальности.

График зависимости сопротивления датчика MQ-7 от концентрации исследуемых газов.

На этом хочется подвести промежуточный итог. Итак, к плюсам датчиков серии MQ можно отнести их крайне и категорически демократичную цену. А вот минусов намного больше:

  • Фактически идентичные датчики использующие один и тот же чувствительный элемент и различающиеся используемым номиналом подстроечных резисторов.
  • Зависимость результатов измерения от множества факторов: температуры, влажности, концентрации кислорода.
  • Отсутствие заявляемой селективности по измеряемым газам, реагирует на все с углеродом (а, вполне возможно, и на другие элементы вступающие в реакцию с подложкой).
  • Высокое энергопотребление (нагреватель).
  • Необходимость в первичном «отжиге» датчика.
  • Нестабильность показаний по времени.
  • Необходимость первичной и повторяющейся калибровки.
  • Практическая невозможность получения осмысленных значений в виде ppm или %.

Ну что же, пойдем дальше.

Немного о температурной компенсации

Исходя из следующего графика даташита известно, что в зависимости от среды, в которой используется датчик, показания отклоняются от действительных:

Для более точного определения зависимости показателей от окружающей среды, также был построен график функции, датчик ограничен температурным диапазоном -10 оС … 50 оС (x=TEMP/10; y=RsRo(error) * 100):


График соответствует функции:

За основу взят график с влажностью 33% (он же, судя по пересечению 1, является калибровочным). Если обратить внимание на влажность, то 1% влажности смещает график на 0.3 по Y (в реальных значениях корректировки RsRo будет разделен на 100 – в графике применен коэффициент для наглядности).

Важное замечание: все это применяется, если калибровка проведена в чистом воздухе при влажности 33% и температуре 20 градусов.

Значение корректировки RsRo(error) которое нужно будет добавить к значениям RsRo для компенсации влияния среды, можно рассчитать по формуле:


Для расчета уже компенсированного значения:

Общие сведения

Датчик MQ7 (MQ-7), состоит из керамической трубки AL2O3 (оксида алюминия) и нанесенного на нее тонкого слоя SnO2 (диоксид олова). Внутри трубки находится нагревательный элемент, который осуществляет нагрев чувствительного слоя. Сам датчик состоят из пластмассового корпуса и сетки, изготовлено из нержавеющий стали, в нижней части расположены шесть выводов, четыре из которых используются для снятия показаний, а другие два, для нагрева.

Датчик установлен на печатную плату (30 мм х 19 мм) с синий маской, с другой стороны платы, расположено четыре вывода (шаг 2.54 мм), два контакта для подключения питания и два для считывания показаний (аналоговый и цифровой). Показания, аналогового сигнала «Вывод AO» , снимаются непосредственно с одного из вывода датчика MQ7, значение от 0 В . . .

5 В, а цифровой сигнал «Вывод DO», может устанавливается в лог «0» или лог «1» («0 В» или «5 В»), в зависимости от концентрации газа, чувствительность выхода, можно регулировать с помощью поворотного потенциометра. За преобразовании аналогового сигнала в цифровой отвечает встроенный компаратор LM393, который может выдать ток до 15 мА и дает возможность подключать модули модули реле без контроллеров.

Для визуализации, на плате расположены два светодиода, один светится при подачи питания, второй светится, когда на «Вывод DO», логическая «1» , то-есть сработал порог включения. Принципиальная схема и назначение каждого вывода датчика MQ7 (MQ-7), показана ниже.

Общие сведения:

Trema-модуль датчик газа MQ-2 и MQ-135 – способны определять концентрацию широкого спектра газов в воздухе (природные газы, углекислый и угарный газ, углеводороды, дым, пары спирта и бензина).

Trema-модуль датчик газа MQ-3 – способен определять концентрацию паров спирта в воздухе.

Trema-модуль датчик газа MQ-6 – способен определять концентрацию углеводородных газов в воздухе.

Модули построены на базе полупроводникового газоанализатора. Датчики отличаются повышенной чувствительностью и быстрой реакцией на увеличение концентрации детектируемых газов. Нагревательный элемент датчиков нагревает газочувствительную полупроводниковую плёнку, которая в нагретом состоянии, вступает в химические реакции с детектируемыми газами и способна менять своё электрическое сопротивление пропорционально концентрации этих газов в окружающем воздухе.

Переносим теорию в микроконтроллер

Для проверки датчика использован микроконтроллер STM32F407VET и библиотека HAL, значения для корректировки поступали с датчика BME280. В заголовочном файле определяем некоторые постоянные значения для нашего сетапа.

Питание

Выше я уже упоминал, что для работы нагревателя датчиков MQ требуется подводить к нему качественное питание и в достаточно объеме. По спецификации датчики потребляют около 150 мА. В реальности потребление может плавать в весьма широком пределе. В принципе, 150 мА не такой уж и большой ток до тех пор, пока устройство (или несколько) с таким потреблением не пытаются скрестить с чем-то вроде Arduino.

Подключив даже один такой датчик к питанию на плате, уже рискуешь получит неработоспособное устройство, которому не будет хватать напряжения для нормальной работы. При работе сами сенсоры нагреваются, не существенно, но градусов до сорока вполне могут раскочегариться.

Для обеспечения нормальной работоспособности нагревателя и как следствие самого датчика необходимо подавать питание отдельно для этих датчиков. Например, использовать независимый источник питания на 1 или 2 А и 5V для питания датчиков (не все датчики потребляют 5V). Либо использовать специальную плату, преобразующую напряжение 9-12V в требуемое для питания датчиков.

Дишманский пульт мониторинга CO из платы Arduino, датчика MQ7 и планшета.

В любом случае с источником тока, обладающим нужной мощностью, придется повозиться. Хотя возможен вариант, когда датчик подключается напрямую к плате (например, Arduino). Но в этом случае ничего большего к ней подключать не рекомендуется.

Подключение:

В комплекте имеется кабель для быстрого и удобного подключения к Trema Shield.

  • Аналоговый выход модуля «S» (Signal) – подключается к любому аналоговому входу Arduino и предназначен для снятия показаний модуля.
  • Цифровой вход модуля «EN» (Enable) – подключается к любому выходу Arduino и предназначен для управления режимами работы модуля («1» – активный режим, «0» – режим энергосбережения).
  • Если вход «EN» оставить неподключённым, то модуль будет находиться в активном режиме пока есть питание.

Модуль удобно подключать 3 способами, в зависимости от ситуации:

Подробнее о модуле:

Уровень напряжения на аналоговом выходе «S» (Signal) прямо пропорционален концентрации детектируемых газов. Цифровой вход «EN» (Enable) можно не использовать – тогда модуль будет работать постоянно.

Если подключить вход модуля «EN» к любому выходу Arduino, то модулем можно управлять: логическая «1» подключит нагревательный элемент датчика к шине питания и модуль будет регистрировать концентрацию газов, логический «0» отключит нагревательный элемент и модуль перейдёт в режим энергосбережения.

Преобразование значений ацп в ppm

На выходах делителя АЦП мы снимаем значение напряжения (Uadc) исходя из которого можем рассчитать сопротивление датчика Rs (зная номинал второго резистора делителя RL), т.е. определить, что именно нам передает датчик:

Имея значение Rs мы уже можем определить концентрацию газа по графику из даташита. Для определения концентрации используется нехитрое соотношение Rs/Ro. Ro в данном случае – сопротивление элемента датчика при концентрации детектируемого газа 1000 ppm.

Применение:

  • Анализатор воздуха;
  • Алкотестеры;

Пример для типа подключения 1:

int8_t gasPin = A0;                       // Определяем номер вывода, к которому подключен модуль

void setup() {
  Serial.begin(9600);                     // Инициируем передачу данных на скорости 9600 бит/сек
  pinMode(gasPin, INPUT);                 // назначаем вывод, к которому подключен датчик, работать в режиме входа
}
void loop() {
  Serial.print("Gas volume: ");           // выводим текст в монитор порта
  Serial.println(analogRead(gasPin));     // выводим значение с датчика
  delay(1000);                            // ждём секунду
}

Примеры использования

Определение значения ppm:

Про анемометры:  Газовый котел БОРИНСКОЕ АОГВ-23,2 (Б) EUROSIT (23,2 кВт) – характеристики, отзывы, плюсы-минусы, конкуренты и все цены в обзоре

Работа функции расчета температурной компенсации (в данном случае при одинаковой влажности):

Коррекция значений при калибровке в нестандартных условиях:

Разбираемся с датчиками co и метана mq-4 и mq-7

20220814_100333В бытность появления у меня набора Arduino, в поисках объекта для автоматизации, я как-то сам собой задумался над тем, что неплохо бы получать информацию о том, не является ли опасным уровень CO (угарный газ) в зимнее время в котельной загородного дома. В холодные зимние деньки и особенно ночи, газовое оборудование работает в интенсивном режиме и жжет природный газ для поддержания теплоты в доме. А вдруг у меня плохая вентиляция? Или в трубе застрял валенок? И каждый раз входя в котельную и находясь там некоторое время, я подвергаю свою драгоценную жизнь опасности. Да и от утечек природного газа тоже никто не застрахован. Тут вообще можно полдома взорвать, просто включив свет. Их хорошо бы тоже контролировать и как-то отслеживать.

Поэтому было решено собрать систему по мониторингу уровня CO и метана в воздухе котельной на основе Arduino или совместимой платы. Помимо простой сигнализации, хотелось бы собирать еще и статистику, например, о том, как связаны концентрации опасных газов с работой газового оборудования.

В принципе, задача реализуется на современном уровне культуры и техники, причем за очень небольшие деньги. В качестве источника расхода природного газа я использовал импульсы со встроенного в газовый счетчик датчика, а для анализа воздуха применил два чрезвычайно популярных в среде разработчиков Arduino датчика MQ-4 и MQ-7. MQ4 «нюхает» воздух на предмет содержания метана, а MQ7 проводит измерения в отношении CO.

Но для того чтобы пойти дальше, оказалось, что нужно конкретно углубиться в детали. Поскольку мало кто из пользователей Arduino и аналогов понимает, что это за датчики такие MQ-4 и MQ-7, и как ими вообще пользоваться. Ну так, приступим потихоньку к увлекательному повествованию.

Различие со и co2

Для начала стоит разобраться что же такое есть CO и в чем его отличие от CO2. Во-первых, CO это монооксид углерода, который также называют угарным газом, окисью углерода или оксидом углерода (II). СО газ весьма коварный. Он чрезвычайно ядовит, но при этом не обладает ни цветом, ни запахом.

Попав в помещение с угарным газом, вы только по косвенным симптомам поймете, что подвергаетесь воздействию яда. Сначала головная боль, головокружение, одышка, сердцебиение, потом посинение трупа. Угарный газ соединяется с гемоглобином крови, отчего последний перестает переносить кислород тканям вашего организма, и первым страдает головной мозг и нервная система.

Во-вторых, окись углерода отличное топливо и может гореть не хуже других горючих газов. При определенных концентрациях он образует взрывоопасную смесь, которая готова разнести в щепки любой объем, где скопился газ вперемешку с кислородом. Да, монооксид углерода легче воздуха, поэтому активно проникает на второй, третий и последующие этажи зданий.

Основным источником выделения СО, как ни странно, является сгорание углеродного топлива при недостаточном количестве кислорода. Углерод «не догорает» и вместо углекислого газа CO2, в атмосферу выбрасывается угарный газ CO. В бытовом понимании отличным источником СО, при неправильной эксплуатации, могут выступать дровяные печи, газовые конфорки, газовые котлы и прочая отопительная техника, работающая на углеродном топливе.

В общем, угарный газ штука коварная и легко получаемая. Достаточно засорить дымоход и можно смело отправляться к праотцам, растопив печурку на ночь.

Спецификация:

  • Входное напряжение питания: 5 В (постоянного тока)
  • Потребляемый ток: 130 … 140 мА (в активном режиме)
  • Потребляемый ток: 0,5 … 0,8 мА (в режиме энергосбережения)
  • Сигнал на выходе: от 1,2 В ±0.5 до Vcc-4% (зависит от концентрации измеряемых газов)
  • Рабочая температура: 0 … 50 °C
  • Габариты: 30×30 мм

Все модули линейки “Trema” выполнены в одном формате

Способ – 1 :  используя проводной шлейф и piranha uno

Используя провода «Папа — Мама», подключаем  напрямую к контроллеру Piranha UNO.

Способ – 2 :  используя trema set shield

Модуль можно подключить к любому из аналоговых входов Trema Set Shield.

Способ – 3 :  используя проводной шлейф и shield

Используя 3-х проводной шлейф, к  Trema Shield, Trema-Power Shield, Motor Shield, Trema Shield NANO и тд.

Цифровой датчик

Казалось бы, если датчик цифровой, то он должен выдавать информацию в цифровом виде. Однако, все цифровые датчики с сенсорами MQ, что мне попадались, не имели такой возможности. «Цифровой» в их названии означает только то, что датчик имеет цифровой выход, который переключается в режим HIGH при превышении некоего порога концентрации измеряемого газа.

Датчик с цифровым и аналоговым интерфейсом

Понятное дело, что на платах цифрового датчика уже распаяны все резисторы. А у хороших датчиков присутствуют еще и подстроечные резисторы, доступные для настройки датчика. Один применяется для настройки сенсора, а второй для установки порога для цифрового выхода.

Цифровой датчик с цифровой шиной

Пожалуй, это самый Hi End среди подобных датчиков. Подключение и передача данных осуществляется посредством цифровой шины I2C. И к одному устройству съема информации (например, Arduino) можно подключить аж сотню таких датчиков. Только нужно иметь в виду, что датчики потребляют весьма много тока и его необходимо подавать отдельно. Настроечный резистор, само собой, присутствует.

Цифровой датчик с цифровым интерфейсом

Судя по коду примера, предлагаемого производителем датчиков, сам датчик посылает данные в сыром виде и уже программно они переводятся в значения ppm. В целом от аналогового варианта датчик отличается только наличием цифровой шины.

Цифровой или аналоговый?

Рынок знает свое дело и если на какой-то продукт есть спрос, то этот спрос будет удовлетворен. Рано или поздно, но будет обязательно. А с использованием шустрых китайских товарищей спрос удовлетворяется скорее рано, чем поздно. Так и появилось великое множество производителей с Китаю, производящие готовые платы с электрохимическими датчиками серии MQ. Давайте рассмотрим по возрастающей, какие могут быть вообще варианты поставки.

Чистый датчик

Самый простой и самый дешевый вариант. В поставке присутствует только сам электрохимический датчик и больше ничего. Подключать его к системе с измерением напряжения (например, к аналоговому порту Arduino) нужно через нагрузочный резистор. Резистор лучше всего использовать с возможностью подстройки при калибровке. Номиналы резистора указываются в спецификации (DataSheet) на датчик.

Датчик MQ-4

При альтернативном способе измерения можно воспользоваться омметром и измерять сопротивление выходов датчика, а потом пересчитывать его в нужные результаты согласно все той же спецификации.

Заключение

  1. Принципы, описанные в статье, подходят для работы и с другими датчиками. В том числе точными датчиками TGS2611 (стоимость превышает в 15-20 раз рассмотренный MQ-4). Для адаптации кода к другим датчикам необходимо внести изменения в header-файл и формулу степенной функции определения ppm (функция по контрольным точкам определена программой Graph 4.4.2).
  2. Требовать высокой точности от датчика стоимостью 1$ не приходиться, возможно для надежных устройств следует обратить внимание на датчики более дорогих серий.
  3. В среде, чистой от детектируемого газа, показатель RsRo может смещаться на 0,5…0,8, в зависимости от разных факторов (в перую очередь температуры). Таблица коррекции применима только в состоянии детектирования (наличия детектируемого газа около 1000 ppm), т.е. не применима для режима ожидания, где действуют совсем другие соотношения. Конечно же, можно проследить закономерность, но особого смысла в этом нет – в любом из случаев показатели 4…5 RsRo свидетельствуют о отсутствии газов.
  4. Температурная коррекция в рабочем режиме действительно необходима. Поправку на влажность можно либо исключить, либо снизить «вес» процента влажности в header-файле (и выровнять стартовую позицию по Y).
  5. Коррекция с поправкой на температуру, при которой проведена калибровка, сомнительна. Желательно калибровать датчик в условиях согласно даташиту (20 градусов Цельсия, 33% влажности (или 65% с со смещением графика зависимости влажности)).
  6. Селекция дыма действительно соответствует даташиту и определяет задымление начиная с 3.8 RsRo. При непосредственном контакте с дымом — почти стабильно 2.6, и иногда проваливалось до 1.2…1.5.
  7. При сборке делителя имеет смысл обратить внимание на качество пайки, фильтры и погрешность резистора RL (даташит рекомендует использовать 20 кОм, или в пределах 10…47 кОм). Выбирать по ключевому слову High Precision Resistor.
Оцените статью
Анемометры
Добавить комментарий

Adblock
detector