MQ-4 купить в Москве – датчик газа (метан, природный газ) для Arduino с доставкой по России и СНГ

MQ-4 купить в Москве - датчик газа (метан, природный газ) для Arduino с доставкой по России и СНГ Анемометр

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;   //записываем влажность при которой проведена калибровка
   }
}

Mq-4 – датчик газа (метан, природный газ)

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

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

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

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

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-4 (метан, природный газ)

Вы можете купить Датчик газа MQ-4 (метан, природный газ) в нашем магазине 3DIY по доступной цене с доставкой по всей России. Датчик газа MQ-4 (метан, природный газ): описание, фото, характеристики, отзывы покупателей.

Про анемометры:  Ультразвуковой анемометр на двух HC-SR04

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

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

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


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

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

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

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


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

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

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

Подключение датчика газа mq-4 к микроконтроллеру – как подключить – avr – проекты на микроконтроллерах avr

 Гуляя по каталогам китайских продавцов на E-bay случайно наткнулся на датчик газа MQ-4. Этот датчик предназначен для определения концентрации метана (CH4) в воздухе. А так как этот газ является основным компонентом бытового газа, иметь подобный датчик весьма полезно – можно собрать детектор утечки газа или что-нибудь подобное. В общем интересная штучка, особенно радует цена в $4,5 и аналоговый интерфейс общения  – проблем с подключением не возникнет.

 Для подключения датчика под его пузом имеются 6 выводов, 4 из которых дублируют друг друга. Поэтому для подключения используется всего 4 вывода: 

Н-Н это выводы нагревателя. К нему подводится напряжение 5 вольт, причем неважно постоянное или переменное.

А-А и В-В это электроды. Сигнал можно снимать с любого из них. Например, на схеме ниже питание подведено к A-A, а сигнал снимается с электрода B-B. Но можно и наоборот – запитывать к B-B, а сигнал снимать с А-А. Работать будет в обоих случаях. В этом сенсор чем-то похож на вакуумную электронную лампу 

MQ-4 купить в Москве - датчик газа (метан, природный газ) для Arduino с доставкой по России и СНГ

 Резистором RL настраивается чувствительность датчика. Рекомендуется ставить в диапазоне 10к. Чувствительность датчика, если верить документации составляет от 200 до 10000 ppm (что это?)

Про анемометры:  Определение температуры и молекулярная физика. Его показания температуры

  В даташите на MQ-4 приведен график, по которому видно, что помимо метана, датчик очень хорошо реагирует на пропан (LPG), и в меньшей степени на газообразный водород, угарный газ и пары алкоголя 

MQ-4 купить в Москве - датчик газа (метан, природный газ) для Arduino с доставкой по России и СНГ

 А вообще в семействе датчиков MQ-x имеются сенсоры специально предназначенные для обнаружения этих газов. Вот некоторые из них:

 MQ-3 – сенсор паров алкоголя

 MQ-5 и MQ-6 – предназначены для обнаружения пропана/бутана

 MQ-7 – чувствителен к угарному газу (имхо, заслуживает отдельного внимания)

 MQ-8 – специализируется по водороду H2

 и т.д. список можно дополнить еще парой-тройкой датчиков, все они легко гуглятся.

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

MQ-4 купить в Москве - датчик газа (метан, природный газ) для Arduino с доставкой по России и СНГ

 Датчик подключается к ADC0 (PortC.0). В качестве опорного напряжения АЦП используется внутренний ИОН на 2,54 вольта. Поэтому на резисторах R5-R6 собран делитель напряжения, чтобы на вход АЦП попадало не больше 2,5 вольт. Резистор R7 дополнительная подтяжка к земле согласно схеме из даташита, его я взял 3,3 килоома – что было под рукой.

Набросал небольшую программку для ATmega8, частота тактирования 1 МГц

$regfile = “m8def.dat”
$crystal = 1000000
$baud = 1200

‘конфигурация АЦП
Config Adc = Single , Prescaler = Auto , Reference = Internal

‘подключение светодиодов
Config Portb.= Output
Config Portb.= Output
Config Portb.= Output
Config Portb.= Output

Dim W As Integer                        ‘для хранения значения полученного с АЦП

Do

‘запуск и считывание показаний с датчика
 Start Adc
 W = Getadc(0)                          ‘датчик подключён к PortC.0

‘в зависимости от значения показаний зажгем светодиоды индикации
If W < 700 Then
 Portb = &B00000000                     ‘значение меньше порога срабатывания, все гуд
End If

If W > 700 And W < 750 Then             ‘низкий уровень загазованности
 Portb = &B00000010
End If

If W > 750 And W < 800 Then             ‘средний уровень
 Portb = &B00000110
End If

If W > 850 And W < 900 Then             ‘загазовано чуть меньше чем полностью
 Portb = &B00001110
End If

If W > 900 Then                         ‘караул!
 Portb = &B00011110
End If

Print W                                 ‘отсылаем показания в UART

Wait 1

Loop

End

 Показания с датчика будут считываться с частотой 1 раз в секунду. И в зависимости от показаний будет гореть определенное количество светодиодов или не будут гореть вовсе. Значения порогов я взял после пробного испытания и вывода показаний в UART. 

Про анемометры:  Больные лазерные датчики

 Тестовая схема собранная на макетке

MQ-4 купить в Москве - датчик газа (метан, природный газ) для Arduino с доставкой по России и СНГ

Припаянный датчик

MQ-4 купить в Москве - датчик газа (метан, природный газ) для Arduino с доставкой по России и СНГ

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

MQ-4 купить в Москве - датчик газа (метан, природный газ) для Arduino с доставкой по России и СНГ

 После подачи питания, датчику необходимо время чтобы выйти на рабочий режим, примерно 10-15 секунд. Это время нужно чтобы нагреватель внутри датчика поднял температуру до необходимого значения. Кстати, сам датчик во время работы тоже не слабо нагревается, по ощущениям градусов до 50-и. Так что без паники, это норма 🙂

Ссылка на датчик

Скомпилированная прошивка

Даташит на датчик MQ-4

Категория: Как подключить | Добавлено: 06.12.2022Просмотров: 43074 | Комментарии: 34
| Теги:
| Рейтинг: 4.9/9

Полезные ссылки

  • Даташит датчика MQ-4
  • Ссылка на скачивание Graph 4.4.2 необходима для определения формулы зависимости Rs/Ro. Полностью бесплатна.

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

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

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

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

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

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

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

Заключение

  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.
Оцените статью
Анемометры
Добавить комментарий