Датчик mq 135 от дыма сигарет. Датчики газа серия MQ (Trema-модуль v2.0). Примеры программ для Arduino

ОПИСАНИЕ ТОВАРА: "MQ-135 ДАТЧИК ГАЗА"

"GAS SENSOR MQ135 " датчик, используемый для анализа чистоты окружающего воздуха. Например, в Вашем авто. "Датчик газа MQ-135 " реагирует на содежание таких газов, как NO 2 -оксид азота, CO 2 - оксид углерода, пары бензола и алкоголя, а также - как анализатор дыма. Датчик газа MQ-135 называется анализатором чистоты воздуха, потому что он не работает на какой-то один газ. А определяет общее содержание ВРЕДНЫХ ГАЗОВ в воздухе. Принцип действия простой - изменение сопротивления (а значит и значения выходного напряжения) в зависимости от объемного содержания вредных газов в воздухе. Вывод "DO" - цифровой сигнал позволяет использовать сам "датчик газа " без "Платы контроллера Ардуино " напрямую с "Модулем Реле ". Т.е. высокий уровень 5 вольт - включить Реле и низкий уровень "0 вольт" - выключить Реле. "AO" -аналоговый сигнал на выходе Модуля Датчика газа позволяет анализировать процентное содержание вредных газов и, при необходимости, принимать какие-то определенные действия при помощи различных "Модулей Ардуино ". Калибровать Датчик надо только один раз при первом включении. Скачать Библиотеку для работы с Датчиком газа можете

Более полную информацию Вы можете найти в приложенном PDF-файле.

В нашем магазине существует гибкая система скидок для постоянных и оптовых покупателей. Цену и наличие уточняйте по телефону. Заказать доставку по Москве Вы можете на сайте компании "Dostavista ".

Описание

Универсальный датчик, обнаруживающий в воздухе бензол, спирт, пыль, дым. Аналого - цифровой модуль позволяет как получать данные о содержании газов к которым восприимчив газоанализатор, так и работать напрямую с устройствами, выдавая цифровой сигнал о превышении/уменьшении порогового значения. Имеет регулятор чувствительности, что позволяет подстраивать датчик под нужды конкретного проекта. Модуль имеет два светодиода: первый (красный) - индикация питания, второй (зеленый) - индикация превышения/уменьшения порогового значения.

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

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

Диапазон измерений: 0,001 - 0,1 %

Технические характеристики

    Напряжение питания: 5 В

    Потребляемый ток: 150 мА

    Время прогрева при включении: 1 мин

Физические размеры

    Модуль (Д х Ш х В): 35 х 20 х 21 мм

Плюсы использования

    Высокая чувствительность

    Короткое время отклика

    Удобный в использовании модуль за счет наличия цифрового и аналогового выводов

Минусы использования

    Перед использованием требует долгого прогрева (не менее 24 часов)

    Для снятия показаний требуется прогрев (не менее 1 минуты)

    Высокое энергопотребление (желательно дополнительное питание)

Пример подключения и использования

В примере демонстрируется подключение датчика и вывод полученных данных в монитор Serial - порта. (Пример тестировался на контроллере Smart UNO)

Схема подключения:

Скетч для загрузки:

const int analogSignal = A0; //подключение аналогового сигналоьного пина const int digitalSignal = 8 ; //подключение цифрового сигнального пина boolean noGas; //переменная для хранения значения о присутствии газа int gasValue = 0 ; //переменная для хранения количества газа void setup() { pinMode (digitalSignal, INPUT ) ; //установка режима пина Serial .begin (9600 ) ; //инициализация Serial порта } void loop() { noGas = digitalRead (digitalSignal) ; //считываем значение о присутствии газа gasValue = analogRead (analogSignal) ; // и о его количестве //вывод сообщения Serial .print ("There is " ) ; if (noGas) Serial .print ("no gas" ) ; else Serial .print ("gas" ) ; Serial .print (", the gas value is " ) ; Serial .println (gasValue) ; delay (1000 ) ; //задержка 1 с }

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

Датчик газа MQ-135 подключается к управляющей электронике по 5 проводам. Для подключения используются два . Для быстрого подключения модуля к Iskra JS или Arduino используйте . С можно обойтись без лишних проводов.

Примеры программ для Arduino

Для обладателей платформ Arduino выведем в Serial-порт текущее значение вредных газов в ppm , управляя нагревателем. Для запуска примера скачайте и установите библиотеку TroykaMQ .

mq135Heater.ino #include #define PIN_MQ135 A0 // имя для пина, к которому подключен нагреватель датчика #define PIN_MQ135_HEATER 11 // создаём объект для работы с датчиком // и передаём ему номер пина выходного сигнала и нагревателя Serial.begin (9600 ) ; // включаем нагреватель mq135.heaterPwrHigh () ; Serial.println ("Heated sensor" ) ; } void loop() { // если прошёл интервал нагрева датчика // и калибровка не была совершена if (! mq135.isCalibrated () && mq135.heatingCompleted () ) { mq135.calibrate () ; // если известно сопротивление датчика на чистом воздухе // mq135.calibrate(160); Serial.print ("Ro = " ) ; Serial.println (mq135.getRo () ) ; } // если прошёл интевал нагрева датчика // и калибровка была совершена if (mq135.isCalibrated () && mq135.heatingCompleted () ) { Serial.print ("\t CO2: " ) ; Serial.print (mq135.readCO2 () ) ; Serial.println (" ppm" ) ; delay(100 ) ; } }

К платам Arduino c 5 вольтовой логикой датчик можно подключить используя всего один . Для этого установите перемычку на разъём «выбор питания нагревателя».

Выведем в Serial-порт текущее значение вредных газов в ppm , при этом нагреватель всегда включён.

mq135.ino // библиотека для работы с датчиками MQ (Troyka-модуль) #include // имя для пина, к которому подключен датчик #define PIN_MQ135 A0 // создаём объект для работы с датчиком и передаём ему номер пина MQ135 mq135(PIN_MQ135) ; void setup() { // открываем последовательный порт Serial.begin (9600 ) ; // перед калибровкой датчика прогрейте его 60 секунд // выполняем калибровку датчика на чистом воздухе mq135.calibrate () ; // при знании сопративления датчика на чистом воздухе // можно его указать вручную, допустим 160 // mq135.calibrate(160); // выводим сопротивление датчика в чистом воздухе (Ro) в serial-порт Serial.print ("Ro = " ) ; Serial.println (mq135.getRo () ) ; } void loop() { // выводим отношения текущего сопротивление датчика // к сопротивлению датчика в чистом воздухе (Rs/Ro) Serial.print ("Ratio: " ) ; Serial.print (mq135.readRatio () ) ; // выводим значения газов в ppm Serial.print ("\t CO2: " ) ; Serial.print (mq135.readCO2 () ) ; Serial.println (" ppm" ) ; delay(100 ) ; }

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

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

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

Способ - 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 и тд.



Питание:

Входное напряжение питания 5 В постоянного тока, подаётся на выводы «V» (Vcc) и «G» (GND) модуля.

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

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

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

Примеры:

Пример для Типа подключения 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); // ждём секунду }

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

int8_t gasPin = A0; // Определяем номер вывода, к которому подключен модуль int8_t gasPwr = 8; // Определяем номер вывода, к которому подключено управление нагревателя модуля void setup() { Serial.begin(9600); // Инициируем передачу данных на скорости 9600 бит/сек pinMode(gasPin, INPUT); // назначаем вывод, к которому подключен датчик, работать в режиме входа } void loop() { if (analogRead(gasPin) < 550) { // если значение с датчика ниже порога, то digitalWrite(gasPwr, LOW); // выключаем питание с нагревателя и Serial.println("GasPwr OFF"); // выводим текст в монитор порта } else { // если значение с датчика выше порога, то digitalWrite(gasPwr, HIGH); // включаем питание нагревателя, Serial.print("Gas volume: "); // выводим текст в монитор порта Serial.println(analogRead(gasPin)); // выводим значение с датчика } delay(1000); // ждём секунду }

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

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

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

По поводу необходимой обвязки нам говорит, что достаточно всего одного сопротивления:

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

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

Питается датчик от 5В, потребляет (по документации) менее 800 мВт. При этом надо понимать, что кушает он прилично, и львиная доля потребляемого тока идет на подогрев чувствительного элемента. Температура которого после нескольких часов работы выше предела регистрации бытовым термометром (т.е. больше 42C), на ощупь датчик теплый, но не обжигающий.

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

Исходя из вышесказанного понятно, что в автономных системах применять датчик нецелесообразно: будучи постоянно включенным вместе с Arduino Mega, MQ135 этой модификации скушал аккумулятор в 10 Ач (ну, плюс-минус китайских Ач) менее чем за сутки. И, конечно, понятно, что если особенно прижмет сделать «автономку», включаться можно эпизодически - так это пожалуйста, я не запрещаю.

Но ест он все равно много. Измеренный мультиметром потребляемый ток составляет около 130 мА.

Размеры датчика (примерно) (ВхШхГ): 22х20х32 мм. Ноги датчика, как видите, по какой-то причине не обкусаны:

Как эта штуковина работает? Вот честно, я не знаю. Наверное, там какая-то магия и радужные единороги, но в документации почему-то говорится о том, что регистрируемые датчиком газы влияют на сопротивление принудительно подогреваемого измерительного элемента. Который подходит для обнаружения (согласно документации): аммиака (NH3), окисей азота (NOx), алкоголя (не указано какого, можно думать о всех спиртах), бензола, CO2, дыма и, как принято - etc.

Результат выдается в аналоговом виде на пин A0 и в дискретном (после компаратора) - на пин D0.

Отсюда вывод: аналоговый выход датчика подходит для наблюдения динамики качества воздуха, тогда как цифровой (D0) - для оповещения о превышении некоторого порога.

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

Ну вот хоть так:

#define analogPin A0 // аналоговый выход MQ135 подключен к пину A0 Arduino #define digitalPin 3 // цифровой выход подключен к пину 3 float analogValue; // для аналогового значения byte digitalValue; // для цифрового значения, можно, кстати и boolean, но не суть void setup() { Serial.begin(9600); // инициализация последовательного порта pinMode(analogPin, INPUT); // режим работы аналогового пина pinMode(digitalPin, INPUT); // режим работы цифрового пина delay(1000); // устаканимся } void loop() { analogValue = analogRead(analogPin); // чтение аналогового значения digitalValue = digitalRead(3); // чтение цифрового значения Serial.print("Current value: "); // вывод аналогового значения в последовательный порт Serial.println(analogValue); Serial.print("Threshold: "); // вывод цифрового значения в аналоговый порт Serial.println(digitalValue); delay(5000); // задержка, чтобы не мельтешило перед глазами }

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

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

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

Вот так выглядит «подышать в трубочку»:

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

Теория, которая стоит за библиотекой гласит следующее: диоксид углерода, он же CO2 - четвертый по распространенности газ в атмосфере Земли. Остальные регистрируемые датчиком вещества в газообразном состоянии встречаются (на наше счастье) гораздо, гораздо реже. Но при этом чувствительность ко всем этим газам у MQ135 примерно одинаковая, что, в принципе, позволяет использовать его в первую очередь как датчик CO2.

В результате пользоваться библиотекой очень просто, но есть нюансы. Первый вытекает из той же документации по датчику, которая настаивает на 24-часовом прогреве датчика перед его реальным использованием. Второй же заключается в том, что по умолчанию библиотека рассчитана на нагрузочное сопротивление в 10 кОм, тогда как мой экземпляр платы укомплектован резистором в 1 кОм.

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

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

Вот комбинированный код, чтобы посмотреть текущие и/или калибровочные данные:

#include // подключение библиотеки #define analogPin A0 // аналоговый выход MQ135 подключен к пину A0 Arduino MQ135 gasSensor = MQ135(analogPin); // инициализация объекта датчика void setup() { Serial.begin(9600); // последовательный порт для отображения данных delay(1000); // устаканимся } void loop() { float ppm = gasSensor.getPPM(); // чтение данных концентрации CO2 Serial.println(ppm); // выдача в последовательный порт float rzero = gasSensor.getRZero(); // чтение калибровочных данных Serial.println(rzero); // выдача в последовательный порт delay(5000); // просто задержка, чтобы не мельтешило перед глазами }

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

На всякий случай сообщаю, что «добавляем в библиотеку» означает редактирование приведенных ниже строк в файле MQ135.h библиотеки MQ135:

/// The load resistance on the board #define RLOAD 1.0 /// Calibration resistance at atmospheric CO2 level #define RZERO 396.57

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

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

Но хочу заметить, что датчик выдает довольно стабильные показания, которые также очень неплохо соотносятся с происходящим. К примеру, на приведенной ниже иллюстрации видно, как показания довольно резко пошли наверх, когда в комнате закрыли окно (около 18:00), и как они не менее стремительно стали снижаться, когда окно открыли (около 20:00):

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

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

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

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

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

Планирую купить +50 Добавить в избранное Обзор понравился +44 +76
gastroguru © 2017