Разбираемся с датчиками 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 у потолка.

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

Рассмотрим еще один датчик для обнаружения  утечки газа. Это датчик угарного газа MQ-7 (рис. 4.29).
Разбираемся с датчиками CO и метана MQ-4 и MQ-7 | Многобукфф
Рис. 4.29. Датчик угарного газа MQ-7.

Основным источником выделения угарного гоза СО, является сгорание углеродного топлива при недостаточном количестве кислорода. Углерод “не догорает” и вместо углекислого газа CO2, в атмосферу выбрасывается угарный газ CO. Источником СО в доме, при неправильной эксплуатации, могут выступать дровяные печи, газовые конфорки, газовые котлы и прочая отопительная техника, работающая на углеродном топливе. В выхлопе бензинового двигателя автомобиля содержание СО может быть до 3%, а по гигиеническим нормам его должно быть не более 20 мг/м³ (около 0,0017%).
Угарный газ (CO) чрезвычайно ядовит, но при этом не обладает ни цветом, ни запахом. Попав в помещение с угарным газом, вы только по косвенным симптомам поймете, что подвергаетесь воздействию яда. Сначала головная боль, головокружение, одышка, сердцебиение, потом посинение трупа. Угарный газ соединяется с гемоглобином крови, отчего последний перестает переносить кислород тканям вашего организма, и первым страдает головной мозг и нервная система.Во-вторых, при определенных концентрациях он образует взрывоопасную смесь.
Поэтому датчик угарного газа – важный и необходимый компонент при построении “умного дома”.

Рассмотрим подключение датчика MQ-7 к плате Arduino Mega и модулю NodeMcu ESP8266.

4.6.1. Подключение датчика MQ-7 к плате Arduino Mega

Подключение датчика MQ-7 к плате Arduino Mega мы будем производить по аналоговому входу. Питание для датчика берем также с платы Arduino. Схема соединений представлена на рис. 4.30.
Разбираемся с датчиками CO и метана MQ-4 и MQ-7 | Многобукфф
Рис. 4.30. Схема подключений датчика MQ-7 к плате Arduino Mega

Загрузим на плату Arduino Mega скетч получения данных с датчика MQ-7 и вывода в последовательный порт Arduino. Процедуры определения по данным, приходящим с аналогового входа ppmcarbonmonoxide().
Содержимое скетча представлено в листинге 4.12.
Листинг 4.12

#include<TroykaMQ.h>#define INTERVAL_GET_DATA 2000  #define MQ7PIN         A11MQ7 mq7(MQ7PIN);

unsignedlong millis_int1=0;
 
voidsetup(){
  
  Serial.begin(9600);
  
  mq7.calibrate();
  mq7.getRo();
}
 
voidloop(){
   if(millis()-millis_int1 >= INTERVAL_GET_DATA) {
      float  carbonmonoxide= get_data_ppmcarbonmonoxide();
      
      Serial.print("carbonmonoxide=");
      Serial.print(carbonmonoxide);
      Serial.println(" ppm ");
      
      millis_int1=millis();
   }
}

floatget_data_ppmcarbonmonoxide(){

  Serial.println(mq7.readRatio());
  float value=mq7.readCarbonMonoxide();
  
  return value;
}

Загрузим скетч на плату Arduino Mega, откроем монитор последовательного порта и увидите вывод данных о содержании угарного газа CO.
Разбираемся с датчиками CO и метана MQ-4 и MQ-7 | Многобукфф

Рис. 4.31. Вывод данных датчика MQ-7 в монитор последовательного порта.

Скачать данный скетч можно на сайте www.anemometers.ru по ссылке.

4.6.2. Подключение датчика MQ-7 к модулю NodeMcu ESP8266

Теперь рассмотрим подключение датчика MQ-7 к модулю NodeMcu ESP8266. Датчик MQ-7  подключаем к входу y3 мультиплексора. Для выбора аналогового входа мультиплексора используем контакты D5, D7, D8 модуля Node Mcu. Схема соединений представлена на рис. 4.32.
Разбираемся с датчиками CO и метана MQ-4 и MQ-7 | Многобукфф
Рис. 4.32. Схема подключений датчика MQ-7 к NodeMcu ESP8266

Загрузим на модуль NodeMcu скетч получения данных с датчика MQ-7 и вывода в последовательный порт Arduino. Для выбора аналогового входа мультиплексора y3 подаем на контакты D5, D7 высокого уровня HIGH, на контакт D8 сигнал низкого уровня LOW. Процедура определения содержание угарного гоза СО в  ppm –  ppmcarbonmonoxide().
Содержимое скетча представлено в листинге 4.13.
Листинг 4.13

#include<TroykaMQ.h>#define INTERVAL_GET_DATA 2000  #define MQ7PIN         A0MQ7 mq7(MQ7PIN);

unsignedlong millis_int1=0;
 
voidsetup(){
  
  pinMode(14,OUTPUT);
  pinMode(13,OUTPUT);
  pinMode(15,OUTPUT);  
  
  Serial.begin(9600);
  
  digitalWrite(14,HIGH);
  digitalWrite(13,HIGH);
  digitalWrite(15,LOW);    
  
  mq7.calibrate();
  mq7.getRo();
}
 
voidloop(){
   if(millis()-millis_int1 >= INTERVAL_GET_DATA) {
      
      digitalWrite(14,HIGH);
      digitalWrite(13,HIGH);
      digitalWrite(15,LOW);     
      float  carbonmonoxide= get_data_ppmcarbonmonoxide();
      
      Serial.print("carbonmonoxide=");
      Serial.print(carbonmonoxide);
      Serial.println(" ppm ");
      
      millis_int1=millis();
   }
}

floatget_data_ppmcarbonmonoxide(){
  Serial.println(mq7.readRatio());
  float value=mq7.readCarbonMonoxide();
  return value;
}

Загрузим скетч на модуль Node Mcu, откроем монитор последовательного порта и видим вывод данных, получаемых с датчика MQ-7 (рис. 4.33).
Разбираемся с датчиками CO и метана MQ-4 и MQ-7 | Многобукфф

Рис. 4.33. Вывод данных датчика MQ-7 в монитор последовательного порта

Скачать данный скетч можно на сайте www.anemometers.ru по ссылке .

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

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

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

Если же требуется детектирование других газов, но с применением недорогих устройств, то доступных вариантов на текущий момент (лето 2022 года) не так много, если не сказать прямо, что их совсем мало. Альтернативой можно считать использование серии MQ, правда обходиться придется только порогами значений (о точности перевода в 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-7 | arduino технологии

Угарный газ (монооксид углерода) – очень опасный газ, так как не имеет ни вкуса, ни запаха, прозрачен и при этом смертельно токсичен.

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

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

Сейчас продается много готовых готовых датчиков-измерителей угарного газа и дыма как в российских магазинах:

так и за границей:

Я покупал большинство из них и все они хорошо справляются с поставленной задачей – вовремя предупреждать об опасной концентрации газа CO.

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

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

К разработке своего датчика стоит отнестись очень серьезно, потому что от работы этого прибора может зависеть ваша жизнь. Стоит заранее продумать:

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

Приведу ссылки на проверенных продавцов, у которых я заказывал датчик MQ-7:

Подключается датчик очень просто: разъемы GND и VCC подключаются соответственно к пинам GND и 5V на Arduino, а разъем A0 – к любому свободному аналоговому пину.

Рассмотрим простой код получения данных с сенсора:

#define MQ7_A A3

void setup()
{
  Serial.begin(9600);
  pinMode(MQ7_A, INPUT);
}

void loop()
{
  int ppm = analogRead(MQ7_A);
  Serial.print("ppm = ");
  Serial.println(ppm);
  delay(5000);
}

Открыв консоль сериального порта, каждые 5 секунд мы увидим значение показания сенсора.

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

Как подключить кнопку без использования сопротивления можно посмотреть в заметке “Использование простой кнопки”.

Ну а пример работы со спикером есть в проектах “Простой будильник на Arduino Uno” и “Интерактивная елочная игрушка”.

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

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

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

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

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

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

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

Про анемометры:  Основы производства датчиков уровня жидкости

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

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

Несмотря на другой внешний вид, внутренности 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 можно отнести их крайне и категорически демократичную цену. А вот минусов намного больше:

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

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

Подключение

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

Для подключения к Arduino или Iskra JS рекомендуем использовать Troyka Shield.

Возьмите Troyka Slot Shield и избавьтесь от проводов — два комплекта ножек надёжно фиксируют модуль на шилде.

Модуль физически совместим с breadboard’ом.

Ресурсы

Видеообзор датчиков газа серии mq:

Разбираемся с датчиками CO и метана MQ-4 и MQ-7 | Многобукфф

Характеристики

  • Напряжение питания нагревателя: 5 В
  • Напряжение питания датчика: 3,3–5 В
  • Потребляемый ток: 150 мА
  • Габариты: 25,4×25,4 мм

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

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

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

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

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

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

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

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

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

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

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

Шаг 1. комплектующие и инструменты

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

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

Инструменты:

  1. пистолет для горячего клея
  2. острый нож
  3. металлическая линейка
  4. некоторые инструменты рисования (в зависимости от ваших личных предпочтений)

Комплектующие:

  1. Arduino Nano
  2. USB-кабель
  3. Датчик газа MQ-4
    Разбираемся с датчиками CO и метана MQ-4 и MQ-7 | Многобукфф
  4. Дисплей (семисегментный индикатор)
    Разбираемся с датчиками CO и метана MQ-4 и MQ-7 | Многобукфф
  5. Картон или другой материал для корпуса (вы можете использовать прилагаемый чертеж и распечатать его на толстой бумаге) или заказать трехмерный

Шаг 2. делаем корпус

Самый простой вариант сделать корпус – использовать картон. Можно воспользоваться рисунком ниже для создания корпуса.

Шаг 3. монтаж деталей детектора газа

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

Как можно заметить были использованы небольшие кусочки картона, склеенные для прокладок и монтажных опор. Это особенно важно, если вы хотите, чтобы кнопка сброса на ардуине работала правильно. Обязательно надежно закрепляйте детали на месте, но все равно держите электронные контакты и кнопки чистыми.

Шаг 4. подключение

Как только у вас появятся все детали, вы можете их подключить. Подключите ардуино к датчику и дисплею в соответствии с приведенными ниже фото.

Подключение датчика (сенсора)

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

Подключение делаем следующим образом:

7-сегментный дисплейАрдуино цифр. выходы
a2
b3
c4
d6
e7
f9
g8
DP5

Шаг 5. загрузка кода

Ардуино детектор газа нужно запрограммировать, это очень легко сделать. Мы используем программное обеспечение, представленное на официальном сайте Ардуино – www.arduino.cc.

Возьмите код или файл ниже и загрузите его в arduino.

int sensorValue;
int num;


      void setup()
      {
          pinMode(2, OUTPUT);
          pinMode(3, OUTPUT);
          pinMode(4, OUTPUT);
          pinMode(5, OUTPUT);
          pinMode(6, OUTPUT);
          pinMode(7, OUTPUT);
          pinMode(8, OUTPUT);
          pinMode(9, OUTPUT);
          Serial.begin(9600);      // sets the serial port to 9600
       }


      void loop()
      {
        sensorValue = analogRead(0);       // read analog input pin 0
        
              if (sensorValue < 400)      // if there is little or no gas detected display blinking lights
              {
                
                  digitalWrite(2, LOW);
                  digitalWrite(3, LOW);
                  digitalWrite(4, LOW);
                  digitalWrite(6, LOW);
                  digitalWrite(7, LOW);
                  digitalWrite(8, LOW);
                  digitalWrite(9, LOW);
                
              digitalWrite(3, LOW);
              digitalWrite(8, HIGH);
              delay(500);
              digitalWrite(8, LOW);
              digitalWrite(6, HIGH);
              delay(500);
              digitalWrite(6, LOW);
              digitalWrite(3, HIGH);
              delay(500);
              }
              else
              {
                  if (sensorValue >= 900)               // the value of the gas measurement between 400 and 900 is displayed (this part refers to the cases below) 
                  {num = 9;}
                  else if (sensorValue >= 800)
                  {num = 8;}
                  else if (sensorValue >= 700)
                  {num = 7;}
                  else if (sensorValue >= 600)
                  {num = 6;}
                  else if (sensorValue >= 500)
                  {num = 5;}
                  else if (sensorValue >= 400)
                  {num = 4;} 
              }
              
              if (sensorValue > 700)                // if there is a lot of gas detected, the dot on the led display will blink
              {
              digitalWrite(5, HIGH);
              delay(100);
              digitalWrite(5, LOW);
              delay(100);
              }  
        
        
                  switch (num)
                  {
                  case 9:
                  digitalWrite(2, LOW);
                  digitalWrite(3, HIGH);
                  digitalWrite(4, HIGH);
                  digitalWrite(6, HIGH);
                  digitalWrite(7, HIGH);
                  digitalWrite(8, HIGH);
                  digitalWrite(9, HIGH);
                  break;
                  case 8:
                  digitalWrite(2, HIGH);
                  digitalWrite(3, HIGH);
                  digitalWrite(4, HIGH);
                  digitalWrite(6, HIGH);
                  digitalWrite(7, HIGH);
                  digitalWrite(8, HIGH);
                  digitalWrite(9, HIGH);
                  break;
                  case 7:
                  digitalWrite(2, LOW);
                  digitalWrite(3, LOW);
                  digitalWrite(4, HIGH);
                  digitalWrite(6, LOW);
                  digitalWrite(7, HIGH);
                  digitalWrite(8, HIGH);
                  digitalWrite(9, HIGH);
                  break;
                  case 6:
                  digitalWrite(2, HIGH);
                  digitalWrite(3, HIGH);
                  digitalWrite(4, HIGH);
                  digitalWrite(6, HIGH);
                  digitalWrite(7, HIGH);
                  digitalWrite(8, HIGH);
                  digitalWrite(9, LOW);
                  break;
                  case 5:
                  digitalWrite(2, LOW);
                  digitalWrite(3, HIGH);
                  digitalWrite(4, HIGH);
                  digitalWrite(6, HIGH);
                  digitalWrite(7, HIGH);
                  digitalWrite(8, HIGH);
                  digitalWrite(9, LOW);
                  break;
                  case 4:
                  digitalWrite(2, LOW);
                  digitalWrite(3, LOW);
                  digitalWrite(4, HIGH);
                  digitalWrite(6, HIGH);
                  digitalWrite(7, HIGH);
                  digitalWrite(8, LOW);
                  digitalWrite(9, HIGH);
                  break;
                  }
        
        
      }

Шаг 6. тестирование

Теперь вы можете проверить свой детектор газа! Финальный вариант работы нашего детектора газа Ардуино можно увидеть на видео ниже:

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

Оцените статью
Анемометры
Добавить комментарий