Содержание
- Товары, используемые в проекте
- Внешний вид модуля
- Подключение к Ардуино-платформе
- Испытание газового детектора
- Источники
- Что измеряет сенсор
- Устройство
- Представленные на рынке модели
- Схемы подключения датчика давления жидкости
- Схемы подключения датчика давления воздуха
- Использование стороннего аналогового датчика давления
- Резюмируя
- Видео по теме
- Описание
- Характеристики
Главная > Проекты > Подключение датчика газа MQ-2 к Arduino
Датчик газа MQ-2 позволяет регистрировать концентрацию таких газов как водород, дым и горючие углеводородные газы (метан, пропан, бутан). Датчик относится к распространенному семейству датчиков MQ. Это семейство датчиков, благодаря своей низкой стоимости и простоте использования завоевало популярность. Датчик имеет аналоговый и цифровой выход. На цифровой выход сигнал подается при превышении определенного порога концентрации газа, который настраивается подстроечным резистором. Датчик прост в подключении, имеет высокую чувствительность и малое время отклика.
Датчик представляет из себя небольшую плату, с передней стороны которой расположен чувствительный газоанализатор (детектор), а на обратной стороне располагаются 4 ножки для подключения датчика, индикаторы питания и выходного сигнала, а также потенциометр.
Применяют датчики MQ-2 в системах умного дома, в системах обнаружения газа или дыма на промышленных или частных объектах, в автомобильных вентиляционных фильтрах и т.д.
Характеристики
- Напряжение питания: 5В;
- Потребляемый ток (ток нагревателя): 180мА;
- Диапазон чувствительности 300-10000 ppm;
- Газ, для которого нормируется датчик: изобутан, 1000ppm;
- Время отклика: менее 10 с;
- Рабочая температура: от -10 до +50 °C;
- Рабочая влажность воздуха: не более 95% RH;
- Интерфейс: аналоговый и цифровой;
Принцип работы
Принцип работы датчика основан на чувствительном детекторе из смеси оксидов алюминия и олова, в котором за счет нагревания происходит химическая реакция. Именно поэтому в процессе работы газоанализатор существенно нагревается, так что не стоит пугаться. В результате химической реакции изменяется сопротивление элемента и передается сигнал. В зависимости от чувствительности элемента к определенным газам достигается эффект их обнаружения.
Концентрация газа измеряется в ppm. Она расшифровывается, как parts per million (частей на миллион). Таким образом 1ppm соответствует концентрации в 0,0001%. Что бы получить точное значение измеренной концентрации газа ppm, необходимо выполнить сложное нелинейное преобразование напряжения на аналоговом выходе датчика по таблицам преобразования из документации на датчик, с учетом температуры окружающего воздуха.
С помощью потенциометра можно изменять порог чувствительности цифрового выхода датчика. Имейте ввиду что для разных газов порог чувствительности будет не один и тот же.
Индикаторы, расположенные на датчике, уведомляют нас подключенном питании и превышении порога чувствительности цифрового выхода.
Подключение
Подключить датчик можно к плате Arduino или напрямую к модулю реле. В первом случае используется аналоговый выход А0 датчика, который подключают к аналоговому входу на плате Arduino. В случае с реле используют цифровой выход датчика.
Внимание. Не подавайте на датчик напряжение питания более 5В, избегайте попадания влаги и щелочи на газоанализатор, избегайте обморожения датчика при очень низких температурах.
Схема подключения представлена на картинке ниже:
Программный код для Arduino IDE
Пример исходного кода проверки работоспособности датчика для Arduino представлен ниже. Код выводит в монитор порта текущее значение АЦП аналогового входа и информацию о превышении порогового значения. В строчке кода #define smokePin A0 вы можете задать номер пина Arduino, к которому подключен аналоговый выход датчика. Пороговое значение концентрации газа в воздухе вы можете задать самостоятельно.
#define smokePin A0 // определяем аналоговый выход к которому подключен датчик int sensorThres = 400; // пороговое значение АЦП, при котором считаем что газ есть void setup() { Serial.begin(9600); // Устанавливаем скорость порта 9600 бод } void loop() { int analogSensor = analogRead(smokePin); // считываем значения АЦП с аналогового входа // к которому подключен датчик Serial.print (analogSensor); // выводим в порт значение АЦП сигнала с датчика // Проверяем, достигнуто ли пороговое значение if (analogSensor > sensorThres) { // если значение больше допустимого... Serial.println(" Gaz!"); // выводим в порт надпись, что газ есть } else { // иначе... Serial.println(" normal"); // выводим в порт надпись, что газа нет } delay(500); // задержка в 500 миллисекунд. }
Товары, используемые в проекте
Датчик газа MQ-2 (дым, горючие газы) 203
руб.
Uno R3 Arduino совместимый контроллер с USB кабелем 780
руб.
Uno R3 CH340G Arduino совместимый контроллер с USB кабелем 490
руб.
Mega 2560 REV3 Arduino совместимый контроллер с USB кабелем 1267
руб.
Этот датчик, по утверждению продавца, позволяет определять факт наличия в воздухе метана, пропана, бутана, водорода и дыма, а также примерно оценивать концентрацию этих веществ в атмосфере. Датчик приобретен на Ru.aliexpress.com
Внешний вид модуля
Конструктивно датчик представляет собой печатную плату 30*21 мм, высота датчика примерно 20 мм, масса 7,3 г.
На печатной плате имеются четыре крепежных отверстия. Чувствительный элемент данного устройства имеет вид усеченного конуса с диаметром около 20 мм в нижней части и 12 мм в верхней.
Верхняя часть чувствительного элемента механически не очень прочна и вполне может быть смята при транспортировке, к полной неработоспособности датчика, это приводит не всегда, но доверять показаниям смятого датчика не стоит.
Для подключения устройство имеет 4-х контактный штырьковый разъем. Два проводника служат для подачи электропитания, модуль потребляет ток 115 мА (150 мА по данным производителя) при напряжении 5 В. Два других проводника представляют собой аналоговый и цифровой выходы датчика. На цифровом выходе происходит смена сигнала с высокого логического уровня на низкий при достижении заданного уровня загрязнения. Порог срабатывания можно устанавливать подстроечным резистором. На аналоговом выходе уровень напряжения меняется от 0,1 до 4 вольта в зависимости от уровня загрязнения. При срабатывании датчика у него на плате загорается красный светодиод.
Подключение к Ардуино-платформе
По заявлениям продавца датчик адаптирован для совместной работы с аппаратной платформой Arduino [1], в целом с этим можно согласиться.
Для подключения работы с датчиком надо написать программу для Arduino. В простейшем случае программа, просто опрашивает датчик 1 раз в секунду и выводит показания в последовательный порт. Вот архив.
// MQ2
Испытание газового детектора
Для тестирования будем использовать зажигалку, заправленную пропан-бутановой смесью.
Полезное: Многофункциональный датчик для Ардуино APDS-9960
В отсутствии примеси, определяемых газов, на аналоговом выводе датчика имеется низкий уровень напряжения, а на цифровой установлен в режим логической единицы.
Если из зажигалки выпустить немного газа рядом с датчиком, то показания датчика тут же изменятся. Напряжение на аналоговом выходе сильно возрастает, а на цифровом выводе появляется логический сигнал низкого уровня.
При работе датчик MQ2 заметно нагревается. Производитель рекомендует прогреть датчик в течении 20 с перед началом работы. Видимо с этим связано то, что постепенно уровень напряжения на аналоговом канале падает с начального значения в 1,5 В до примерно 0,2 В. Но этот процесс занимает не 20 секунд, а примерно пол часа. При размещении датчика следует иметь в виду, что метан и, тем белее, водород имеют плотность меньше плотности воздуха, а потому будут собираться в верхней части помещения. Метан является основным компонентом природного газа, который подается по газовой распределительной сети. Так же себя поведет и горячий, насыщенный дымом, воздух при пожаре. Пропан и бутан, которые используются в горелках с баллонным питанием, гораздо плотнее воздуха и будут собираться в нижней части помещения. Так же интересную информацию по аналогичным датчикам можно найти в других источниках [2-3].
Источники
- http://radioskot.ru/publ/nachinajushhim/arduino_uno_dlja_nachinajushhikh/22-1-0-1055
- http://caravaning.in.ua/forum/viewtopic.php?p=128850
- http://cxem.net/arduino/arduino117.php
Специально для сайта 2 Схемы — Denev.
Конец двадцатого века был временем взрывного роста технологий, которое выразилось не сколько разработкой новых устройств, а скорее расширением возможностей привычных механизмов. Примером тут может служить обыденный выключатель света. Если раньше все его функции состояли в подаче тока и прекращению хода электричества к устройствам потребления, — теперь он может сообщать в конгломерат домашней техники, работающей в единой сети, о своем статусе, или менять состояние по удаленным командам.
Расширение функционала стало доступным за счет широкого использования микроконтроллеров. В своей основе — они представляют собой миниатюрные компьютеры, ориентированные на управление внешними устройствами в рамках своей программы и происходящих вокруг факторов. Информацию о последних логический модуль получает за счет специализированных датчиков.
Существует не так много моделей микроконтроллеров, служащих базой «умной» техники. Среди них определенной популярностью пользуется Arduino, в качестве достаточно универсальной основы создания интеллектуального оборудования. Своей известности микроконтроллер обязан не только быстродействием или удобством подключения внешних компонентов, но и широтой их моделей, представленной на рынке. Среди последних, богатый выбор сенсоров, устройств индикации, средств интерфейса и получения команд, сетевых и коммуникационных плат, а также управляющих внешней аппаратурой узлов.
Собственно, чувствительные элементы платформы и будут рассмотрены в теле статьи, а конкретно один из них — датчик давления Ардуино.
Что измеряет сенсор
Давление — некая физическая величина численно равная перпендикулярно направленной силе действующей на единицу площади поверхности. Сам датчик можно представить своеобразными очень чувствительными весами. Последнее замечание сделано по причине того, что и вода, и газы тоже имеют свою массу, которая влияет на поверхность под ними. На практике, за счет указанного фактора, можно определить глубину погружения (чем ниже, тем больше вес слоя воды) или высоту подъема в атмосферу (чем выше — тем меньше плотность, а значит и слабее воздействие). Кроме того, в отношении давления воздуха не стоит забывать о погодных колебаниях. Резкое падение названой характеристики атмосферы — к дождю или буре.
Опять же, насчет газов и частично жидкостей. Их можно сжимать. Но, уплотненные вещества будут стремиться вернуться в первоначальное состояние. И чем сильнее компрессия, тем мощнее будет конечное давление газа или жидкости внутри сосуда их содержащего.
Собственно, детектор Ардуино о котором идет речь, и измеряет силу воздействия на единицу площади сенсорного элемента прибора. Правда, в большинстве выпускаемых моделей, описанное — не все их функциональные возможности. Бонусом, у многих идет замер температуры окружающей среды, а у некоторых еще и влажности или ускорения.
Устройство
Суммарное количество чувствительных элементов датчика давления зависит от его модели. Главными остается пьезоэлементы, определяющие саму силу действия на свою плоскость. Физическая основа работы – возникновение электрического тока на внутренних кварцевых пластинах в результате их деформации при соприкосновении с влияющим фактором. В настоящем случае, о котором идет речь — газом или жидкостью.
Выработанное аналоговое напряжение идет в модуль АЦП преобразования, где его сила перекодируется в числовой вид и через интерфейсы датчика I2C и SPI отправляется на микроконтроллер. Библиотека функций, ориентированных на работу с конкретным сенсором, переводит полученные величины в понятный человеком вид, на основе единиц измерений давления в стандарте Си — Паскалях.
Все дополнительные измеряющие элементы конкретного устройства действуют похожим образом, конвертируя с помощью АЦП аналоговые значения в цифру, для последующей отправки их в Arduino.
Представленные на рынке модели
Датчики Arduino, относящиеся к давлению, делятся согласно средам применения и конструктивным особенностям, непосредственно связанным с получением конечного результата. Есть модели, защищенные от влаги и предназначенные для применения в жидкостях, другие работают только в качестве анероидов атмосферы, иные устанавливаются в разрыв движения потока, четвертые в качестве определителей внутреннего давления наполняющего емкость газа. Их всех объединяет наличие общих интерфейсов подключения к микроконтроллеру и низкое, не более нескольких милливатт (реже Ватт), потребление энергии.
Наименование | Питание (V) | Точность | Диапазон (hPa) | Интерфейсы | Примечание | |||
---|---|---|---|---|---|---|---|---|
SPI | I2C | UEXT | ||||||
Атмосферные | ||||||||
MOD-BMP085 | 1.8–3.6 | 0.03 hPa | 0.01 | 300–1100 (от 500 м ниже уровня моря до 9 км. высоты | –40..+85 | + | + | Измерение температуры |
GY-BMP280 | 3.3 | 0.12 hPa | 0.0016 | 300–1100 | –40..+85 | + | + | Измерение температуры до +65, с точностью 0.01 |
MD-PS002 | 5V | ±0.2% | –100–+150 | –40..+125 | + | Только не агрессивные среды | ||
Жидкостные | ||||||||
MS5803-02BA | 1.8–3.6 | 20 см жидкости | –40..+85 | + | + | |||
MS5803-07BA | 1.8–3.6 | –20..+85 | + | + | ||||
Open-Smart 5V G1/4 0-1.2 MPa Hydraulic Pressure Sensor for Non-Corrosive Water | 5 | 1.5 % | 1–2.4 мбар (max 3) | 0..+85 | Собственный коннектор, соединяемый к I2C через резистор, датчик оснащен термометром |
Конечно, в приведенном списке числятся далеко не все существующие модели. В нем указаны только те, которые обладают определенной популярностью и затребованы пользователями.
Схемы подключения датчика давления жидкости
Среди множества схем, демонстрирующих работу Arduino с датчиком давления жидкости, была выбрана наиболее простая, использующая минимум радиодеталей. С ее помощью можно проводить измерение глубины погружения или уровня заполнения сосуда водой. Итак, понадобится:
Элемент | Наименование/характеристики | Количество |
---|---|---|
Микроконтроллер | Arduino Nano/Uno или любой клон | 1 |
Экран | Display 2×16 ST7032 | 1 |
Датчик | MS5803 | 1 |
Резистор | 10 кОм | 2 |
Конденсатор | 0.1 мкФ | 1 |
Кнопка | Любая, без фиксации нажатия | 1 |
Библиотека работы с датчиком давления берется здесь: https://github.com/millerlp/MS5803_05
С экраном тут: https://yadi.sk/d/KKJwJ1VtDx9PCw
Принципиальная схема
Кнопка нужна для выбора режима отображения — однократное нажатие переключает вывод абсолютных и относительных данных, с сохранением состояния на последующих опросах датчика.
Скетч
Достаточно простая программа для микроконтроллера, заливаемая в него при помощи Arduino IDE: #DEFINE fButton_pin 2 #DEFINE LED_pin 13 #DEFINE DISPLAY_height 2 #DEFINE DISPLAY_width 16 #DEFINE DISPLAY_contrast 63 // Подключение библиотек и инициализация датчика вместе с дисплеем #include #include // Wire.h подключать не нужно он уже вызван в TroykaTextLCD.h MS_5803 S = MS_5803(512); TroykaTextLCD DISPLAY; // переменные программы float mmWater = 0; float TechAtmosphere = 0; float dObtainedValue = 0; float ObtainedValue = 0; void setup() { // параметры экрана DISPLAY.setContrast(DISPLAY_contrast); DISPLAY.begin(DISPLAY_width, DISPLAY_height); // Установка датчика в 0, FALSE функции блокирует отправку технической информации в консоль S.initializeMS_5803(FALSE); delay(1000); // ждем, пока он выполнит инициализацию // кнопка и светодиод показывающий режимы pinMode(fButton_pin, INPUT_PULLUP); pinMode(LED_pin, OUTPUT); } void loop() { // Инициировать сенсор в режим взятия показаний S.readSensor(); DISPLAY.setCursor(0, 0); // получить и высветить значения в верхней строчке экрана ObtainedValue = S.pressure(); DISPLAY.print(ObtainedValue); DISPLAY.print("mbar "); DISPLAY.print(S.temperature()); DISPLAY.print("C"); // действия при нажатии кнопки if (!digitalRead(fButton_pin)) { // Изменение режима работы светодиода на противоположный digitalWrite(LED_pin, !digitalRead(LED_pin)); dObtainedValue = ObtainedValue; } if (!digitalRead(LED_pin)) { // абсолютные значения mmWater = ObtainedValue * 1.019744288922 * 10; TechAtmosphere = ObtainedValue * 0.001019716212978; } else { // относительные значения mmWater = ((ObtainedValue - dObtainedValue) * 1.019744288922) * 10; TechAtmosphere = (ObtainedValue - dObtainedValue) * 0.001019716212978; } // отображаем на экране значения в технических атмосферах и см воды DISPLAY.setCursor(0, 1); DISPLAY.print(TechAtmosphere,3); DISPLAY.print("TA "); DISPLAY.print(mmWater,0); DISPLAY.print("mm"); delay(1000); DISPLAY.clear(); }
Схемы подключения датчика давления воздуха
Следующая конструкция построена на сенсоре-анероиде BMP180. Экран, в нее входящий, будет отображать текущее давление атмосферного воздуха и температуру окружающей среды. Для изготовления понадобятся:
Элемент | Наименование/характеристика | Количество |
---|---|---|
Микроконтроллер | Arduino UNO/Nano | 1 |
Датчик | BMP180 | 1 |
Экран | HD447080LCD-1602 | 1 |
Резистор | 100 Ом | 1 |
Регулируемый резистор | До 10 кОм | 1 |
Ну и конечно провода для связки всего названого в единую систему.
Библиотека, управляющая сенсором берется тут: https://github.com/adafruit/Adafruit-BMP085-Library
Принципиальная схема
Фотография итогового устройства:
Плата-шилд самодельная, для желающих повторить, она вблизи:
Датчик питается от 3.3V, соответственно и подключаются его контакты получения энергии (VCC и GND) к плате Arduino. Для передачи данных используются входы A5 (SCL) и A4(SDA). Дисплей с микроконтроллером соединяется согласно следующей таблицы:
Arduino | Экран |
---|---|
D6 | E и D4 вместе |
D4 | D5 |
D3 | D6 |
D2 | D7 |
GND | GND |
D7 | RS |
Скетч
Приведенная программа — всего лишь базис операций. Ее можно модифицировать по собственному разумению, добавляя функции отслеживания давления или температуры. Можно даже использовать конечное устройство, после необходимой модификации кода, в качестве своеобразного барометра, предупреждающего об идущей буре. Показания давления, в названом случае сильно упадут. #define mPAUSE 2500 #include #include #include Adafruit_BMP085 SENS; LiquidCrystal DISPLAY(7, 6, 5, 4, 3, 2); void setup() { DISPLAY.clear(); } void loop() { float p = SENS.readSealevelPressure()/101.325 * 0.76; DISPLAY.setCursor(1, 0); DISPLAY.print("T.= "); if ( SENS.readTemperature() < 10){ DISPLAY.print(" "); DISPLAY.print(SENS.readTemperature()); } else { DISPLAY.print(SENS.readTemperature(),1); } DISPLAY.write(0b11011111); //Значек градуса DISPLAY.print("C "); DISPLAY.setCursor(1, 1); DISPLAY.print("P.= p"); DISPLAY.print(p,0); DISPLAY.print("mmHg "); DELAY(mPAUSE); }
Использование стороннего аналогового датчика давления
Редко, но все же случаются ситуации, когда по каким-либо причинам использовать в схеме специализированный сенсор, рассчитанный на работу конкретно с Ардуино, не получается. Скажем, его невозможно найти сразу в близлежащих магазинах электроники, а ждать посылку долго. Выходом могут стать датчики давления, применяемые в автомобильной электронике. Их тоже можно связать непосредственно с микроконтроллером.
Примером послужит WABCO 4410400130 — сенсор указанного плана, используемый на большегрузных фурах. Единственное, требующее внимания в представленной схеме — питание у элемента раздельно с Arduino. В последнем, просто нет требуемых для запуска датчика +24 В. В связи с чем и приходится использовать дополнительный блок энергообеспечения, с правильными и достаточными характеристиками питания — 8–32 V постоянного тока, при минимуме 400 mА мощности.
Что касается соединения сенсора напрямую к плате микроконтроллера — в нем на выходе не более 5 В. И чем больше давление, тем меньший ток будет поступать на аналоговые контакты логического устройства. Вот только, на всякий случай, рекомендуется проверить изначальный выход мультиметром, с целью контроля варианта «пробития» сенсора, с возникновением обстоятельств беспрепятственного связывания OUT с минусом или плюсом питающей детектор линии.
Пример скетча получения информации с аналогового датчика: #include LiquidCrystal_I2C DISPLAY (0x27, 16, 2); #define Detector_Pin 0 #include void setup() { DISPLAY.init(); DISPLAY.clear; AnalogReference(DEFAULT); DISPLAY.setCursor (0,0); DISPLAY.print("Data:"); } void loop() { static int AVC = 0; AVC = (AVC * 3 + AnalogRead(Detector_Pin))/4; float v = AVC * 5.0 / 1024.0; float ObtainedValue = (v - 0.5) * 10/4; DISPLAY.setCursor(0,1); DISPLAY.print(" "); DISPLAY.setCursor(0,1); DISPLAY.print (ObtainedValue); }
Теперь, что касается данных получаемых на выходе скетча. Нужно провести их градацию с использованием классического манометра, оценив какие цифры идут от сенсора при разном давлении и ввести соответствующую формулу в тело программы.
И в окончании, технические характеристики WABCO 4410400130, для сравнения с похожими датчиками Arduino:
- Тип: пьезоэлемент
- Питание: 8–32 V
- Рабочая температура: −40..+80 °С
- Диапазон измерения: от 0 до 10 bar
- Точность: 0.2–0.3 %
- Предельное давление разрушения: 16 bar
Резюмируя
Надеемся, представленная информация дала достаточно сведений, чтобы выполнить подключение датчика давления любого вида к плате микроконтроллера Arduino. В сущности, ничего сложного нет, для всех вариантов изначальных сенсоров — специализированных цифровых или сторонних аналоговых. Даже количество дополнительных радиодеталей в схемах стремится к нулю.
Видео по теме
КОД ТОВАРА: 18477
Наличие: Нет
Бренд: KT
Корпус: Module
Цена: 200 руб розн. 159 руб опт. 144 руб спец. Спец. Цена только для постоянных покупателей!
Описание
Газоанализатор или Датчик газа MQ2 оснащен нагревательным элементом для проведения химичексой реакции. Станадартные условия для работы этого датчика это содержание кислорода 21% и температура окржающей среды примерно 20 градусов.
Датчик газа MQ2
полностью адаптирован с Ардуино и предназначен для обнаружения в воздухе таких газов, как;
пропан (propane) в концентрации: 200-5000 ppm, (200cm³/1m³-.)
бутан (butane): 300-5000 ppm
метан (methane): 5000-20000 ppm
водород (H2): 300-5000 ppm
Алкоголь (alcohol): 100-200 ppm
Для информации: многие заблуждаются, счита что промиле и ppm одно и тоже. Это не так. Потому что, Промиле – это одна тысячная доля. В то время как “ppm” это одна миллионная доля! Выше мы привели ссылку на Википедию.
Как правило, “датчик газа MQ2” в Ардуино применяется вкупе с исполняющими модулями (Модуль Реле и т.п.) или Модулями звуковой (зуммер) или световой (модуль светодиодный) сигнализации. Чувствительность датчика можно регулировать с помощью установленного на плате потенциометра.
Ниже приведен скетч подключения Датчика Ардуино с использованием только Аналогового интерфейса:
Контакты соединяем: 5VDC- Vcc (pin2 на датчике); A0 – S (pin1 на датчике); GND- земля
#define mic 5
#define analogInPin A0
void
setup
() {
pinMode
(analogInPin,
INPUT
);
Serial.begin(9600);
}
void
loop
() {
Serial.println(
analogRead
(analogInPin));
i
nt
sensorValue =
analogRead
(analogInPin);
int
range =
map
(sensorValue, 100, 145, 1, 4);
switch
(range) {
case
1:
analogWrite
(mic,100);
delay
(100);
analogWrite
(mic,0);
break
;
case
2:
analogWrite
(mic,50);
delay
(100);
analogWrite
(mic,0);
break
;
case
3:
analogWrite
(mic,30);
delay
(100);
analogWrite
(mic,0);
break
;
case
4:
analogWrite
(mic,20);
delay
(100);
analogWrite
(mic,0);
break
;
}
}
Для оптовых покупателей в нашем магазине существует гибкая система скидок. За консультацией обращайтесь по телефону (см.раздел “Контакты” или по E-mail). Информацию по наличию, пожалуйста, уточняйте по телефону.
Характеристики
- Напряжение питания: 5VDC
- Ток потребления: 160mA
- Диапазон температур: от -20℃ до 50℃
- Интрефейс: аналоговый
- Сопротивление датчика Rs: 3 KOHm – 30 KOhm
Чуть не приключилась беда, придя домой с работы почувствовал запах газа, оказалось, что одно из соединений гибкой подводки газа к плите давала небольшую течь. Поменял прокладки, проверил качество соединения мыльным раствором, больше газом не пахнет. Решил для перестраховки таких случаев собрать примитивный анализатор утечки газа. Выбор пал на плату Arduino Uno, которая без дела лежала полгода. В этой заметке я расскажу о применении вышеуказанной платы с аналоговым датчиком газа MQ-6 datasheet от Hennan Hanwei Electronics, мы соберем простую схему с выводом полученных значений в серийный порт и простую свето-звуковую индикацию присутствия газа и напишем небольшой скетч. Соберем небольшую схему, нам понадобиться:
- Светодиод зеленого свечения — 1шт.
- Светодиод красного свечения — 1шт.
- Пьезодинамик — 1шт.
- Резистор на 330Ω — 2шт.
- Arduino Uno (или другая) — 1шт.
- Датчик газа MQ-6- 1шт.
Купленный мною датчик газа, смонтирован на небольшую плату и включает в себя подстроечный резистор для регулирования чувствительности.
Вот что получилось в программе Fritzing.
Напишем скетч для Arduino:
/* Скетч для работы с сенсором газа */ int sensorPin = 0; // Пин, на котором у нас висит сенсор газа int redled = 2; // Пин с красным светодиодом int greenled = 4; // Пин с зеленым светодиодом int gas = 0; // Переменная для хранения значения газового сенсора void setup() { pinMode(greenled, OUTPUT); // Объявляем 2 и 4 пины, как выходы pinMode(redled, OUTPUT); Serial.begin(9600); // Инициализируем серийный порт } void loop() { gas = analogRead(sensorPin); // Получаем значения из датчика /* Далее работаем с данными из переменной gas, если ее значение более или равно 500, то включаем красный светодиод и проигрываем сигнал на 10 пине, зеленый светодиод гасим */ if (gas >= 500) { tone(10, 440, 200); digitalWrite(redled, HIGH); digitalWrite(greenled, LOW); } /* Если значение переменной gas больше 300, проигрываем сигнал на 10 пин с частотой 440 и продолжительностью 200мсек */ else if (gas > 300) { tone(10, 740, 200); } /* Если значение переменной gas меньше 300, прерываем тоновый сигнал на 10 пин, гасим красный светодиод, зажигаем зеленый */ else { noTone(10); digitalWrite(redled, LOW); digitalWrite(greenled, HIGH); } Serial.println(gas); // Пишем в серийный порт delay(1000); // Повторяем void loop каждую секунду }
Загрузим скетч в ардуино, если все сделано правильно, то зеленый светодиод (pin4) будет гореть, проверить работу датчика можно выпустив в него газ из зажигалки. Так же в скетче мы предусмотрели вывод значений в параллельный порт. Нажав комбинацию клавиш Shift+Ctl+M в среде разработки Arduino IDE, мы вызовем терминал, в котором будем видеть полученные значения с нашего датчика.
Большие значения появились после выпускания газа из зажигалки
Видео работы схемы
В дальнейшем планируется дополнить схему 10 сегментной светодиодной линейкой с использованием сдвиговых регистров M74HC595, о чем обязательно будет статья.
ли со статьей или есть что добавить?