Программирование, радиоэлектроника,
саморазвитие и частичка из моей жизни здесь...

Подключаем анализатор газов MQ-135 к Raspberry Pi используя PCF8591

Познакомимся с простым датчиком MQ-135, который поможет определить уровень вредных веществ в воздухе. Подключим анализатор газов MQ-135 к Raspberry Pi используя АЦП PCF8591, напишем простую тестовую программу для наблюдения за сигналом из датчика, а также для выполнения определенного действия при достижении установленного критического уровня.

Содержание:

Анализатор газов MQ-135

MQ-135 - достаточно компактный и недорогой датчик, который умеет анализировать уровень вредных веществ в воздухе. Он поможет определить в воздухе наличие следующих веществ:

  • Углекислый газ (в нормальных условиях это бесцветный газ, без запаха, двуоксид углерода - CO2);
  • Угарный газ (бесцветный ядовитый газ без вкуса и запаха, монооксид углерода - CO);
  • Аммиак (в нормальных условиях это бесцветный газ с резким характерным запахом, нитрид водорода - NH3);
  • Бензол (жидкость без цвета со специфическим сладковатым запахом, органическое соединение - C6H6);
  • Оксид азота (бесцветный газ который незначительно растворим в воде, монооксид азота - NO);
  • Пары спирта (органические соединения, существует целый класс спиртов, спирт содержат алкогольные напитки);
  • Дым (газ выдкляющийся при сгорании различных веществ, прохождения химических реакций);
  • и другие...

Внешний вид датчика MQ-135

Рис. 1. Внешний вид датчика MQ-135.

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

Основные технические характеристики и плюсы датчика:

  • Высокая чувствительность;
  • Высокая скорость реакции;
  • Стабильность и долговечность;
  • Питание нагревательного элемента от 5В;
  • Сопротивление нагревательного элемента - 33 Ом;
  • Ток потребляемый нагревателем от источника питания 5В - 150мА (мощность 800 мВт);
  • Небольшие размеры (18мм в диаметре, 17мм в высоту + 6мм высота пинов).

Датчик содержит 6 ножек - две из них используются для питания нагревателя, а остальные 4 для снятия сигнала с сенсора.

Структура и принцип работы датчика газов MQ-135

Рис. 2. Структура и принцип работы датчика газов MQ-135, на рисунке обозначены:

  • 1 - чувствительный к газам слой (SnO2);
  • 2 - электрод (Au);
  • 3 - токопроводящие линии для соединения с электродом (Pt);
  • 4 - катушка нагревателя (Ni-Cr);
  • 5 - керамическая трубка (Al2O3);
  • 6 - сетка из стальных проводников для защиты в случае взрыва внутри датчика;
  • 7 - сжимающее кольцо (никелированная медь);
  • 8 - резиновая основа;
  • 9 - пины для подключения датчика (никелированная медь).

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

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

Подключаем датчик MQ-135

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

Внешний вид модуля с датчиком MQ-135

Рис. 3. Внешний вид модуля с датчиком MQ-135 и схемой сравнения.

Модуль содержит 4 вывода:

  • VCC - питание 5В;
  • GND - земля (минус);
  • AO - аналоговый выход датчика (Analog Output);
  • DO - цифровой выход датчика (Digital Output).

Цифровой выход датчика подключен к компаратору, при помощи которого мы можем оценить значение с датчика и получить на выходе низкий (0В) или высокий (5В) уровень. Для регулировки порога срабатывания на платке установлен переменный резистор.

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

В эксперименте я буду использовать аналоговый выход датчика MQ-135, подключенный к АЦП на основе PCF8591, работу с которым я описывал в прошлой статье. Анализировать данные работы АЦП будет мини-компьютер Raspberry Pi.

Схема подключения модулей приведена ниже:

Принципиальная схема подключения модулей MQ-135 и PCF8591 к Raspberry Pi

Рис. 4. Принципиальная схема подключения модулей MQ-135 и PCF8591 к Raspberry Pi.

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

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

Ток потребления модуля MQ-135 (по большей части нагревателя в нем) составляет примерно 150мА (I=U/R=5В/33Ом=0,151А), поэтому питание можно взять с пина 2 (+5В) на разъеме GPIO.

Важно помнить что линию питания 5В в Raspberry Pi нельзя перегружать, если нужно питать какой-то модуль от 5В и с потребляемым током более 0,3А-0,5А то лучше не пожалеть пару центов и собрать отдельный стабилизатор напряжения, например на микросхеме L7805 (розничная стоимость менее 0,5$).

Внешний вид подключенных модулей MQ-135 и PCF8591 к Raspberry Pi

Рис. 5. Внешний вид подключенных модулей MQ-135 и PCF8591 к Raspberry Pi по проведенной выше схеме.

Программа для анализа состояния датчика MQ-135

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

Суть работы новой версии программы заключается вот в чем:

  • Постоянно выводим в консоль текущее значение с датчика газов (числа от 0 до 255, от меньшей концентрации до большой);
  • При достижении некоторого установленного значения концентрации газов - зажигаем светодиод D1.

Создадим новый файл для программы на Питоне и откроем его в редакторе nano:

nano /tmp/mq-135-pcf8591-test.py

Скопируем приведенный ниже код в файл:

#!/usr/bin/env python
# Program for gas sensor MQ135 + ADC-DAC PCF8591P
# 2016 http://ph0en1x.net

import os
import time
from smbus import SMBus

DEV_ADDR = 0x48
adc_channel = 0b1000010 # 0x42 (input AIN2 for ADC + use DAC)
dac_channel = 0b1000000 # 0x40

bus = SMBus(1)          # 1 - I2C bus address for RPi rev.2

while(1):
    os.system('clear')
    print("Press Ctrl C to stop...\n")
    # read sensor value from ADC
    bus.write_byte(DEV_ADDR, adc_channel)
    bus.read_byte(DEV_ADDR)
    bus.read_byte(DEV_ADDR)
    value = bus.read_byte(DEV_ADDR)
    print 'AIN value = ' + str(value)
    # compare value from ADC and set value in DAC
    if value > 120:
        bus.write_byte_data(DEV_ADDR, dac_channel, 220)
    else:
        bus.write_byte_data(DEV_ADDR, dac_channel, 0)
    # pause 100 milliseconds
    time.sleep(0.1)

Для выхода из редактора жмем CTRL+X, для подтверждения сохранения файла жмем Y и ЕНТЕР, возможно кто-то еще не знает этого )).

Запускаем программу командой в консоли:

python /tmp/mq-135-pcf8591-test.py

Вывод выполняющейся программы в окне консоли

Рис. 6. Вывод выполняющейся программы в окне консоли.

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

Чтобы изменить числовой порог свечения светодиода, к примеру для значения 70, нужно изменить строчку кода "if value > 120:" на "if value > 70:" - теперь программа будет реагировать на превышение знечения 70 на входе AIN2 АЦП свечением светодиода.

Засветить светодиод это очень просто, что еще можно придумать? - можно настроить отправку электронного письма (или электронных писем) в случае достижения заданного порога вредных газов в воздухе, включить воспроизведение какого-то MP3-файла на Raspberry Pi и много других вещей.

Заключение

Ниже приведено видео работы модуля с MQ-135, подключенного к малинке и АЦП PCF8591. Для теста срабатывания датчика использован дихлорэтан (клей для пластмассы и оргстекла), вернее его капелька нанесенная на кончик маленькой отвертки, этих испарений вполне достаточно чтобы датчик зафиксировал наличие в воздухе ядовитого вещества.

Полезные материалы:

0 635 Железо
Комментарии к публикации (2):
Catcher #1Catcher
06 Ноябрь 2016 08:25

А как считывать данные с цифрового выхода модуля датчика?

0
ph0en1x #2ph0en1x
06 Ноябрь 2016 13:00

С цифровым выходом все намного проще, его подключаем к любому из свободных входов GPIO через нормализатор напряжения и программно считываем значение:

  • Высокий уровень (из датчика +5В, на пине GPIO 3,3В) - датчик сработал, уровень вредных вещест превышает установленную норму;
  • Низкий уровень (0В) - датчик в ожидании.

Установить порог срабатывания датчика (появления 5В на выводе DO) можно используя переменный резистор с обратной стороны датчика.

Очень важно: на выходе DO датчика газов MQ-135 напряжение достигает 5В (напряжение питания датчика), а на вход GPIO в Raspberry Pi можно подавать уровень не выше 3,3В, поэтому нужно рассчитать и собрать простой делитель напряжения на двух резисторах, который из уровня 5В сделает 3В (нормализирует его для GPIO).

0