Анализатор утечки газа на Arduino

Чуть не приключилась беда, придя домой с работы почувствовал запах газа, оказалось, что одно из соединений гибкой подводки газа к плите давала небольшую течь. Поменял прокладки, проверил качество соединения мыльным раствором, больше газом не пахнет. Решил для перестраховки таких случаев собрать примитивный анализатор утечки газа. Выбор пал на плату Arduino Uno, которая без дела лежала полгода. В этой заметке я расскажу о применении вышеуказанной платы с аналоговым датчиком газа MQ-6 datasheet от Hennan Hanwei Electronics, мы соберем простую схему с выводом полученных значений в серийный порт и простую свето-звуковую индикацию присутствия газа и напишем небольшой скетч.Соберем небольшую схему, нам понадобиться:

  1. Светодиод зеленого свечения — 1шт.
  2. Светодиод красного свечения  — 1шт.
  3. Пьезодинамик — 1шт.
  4. Резистор на 330Ω2шт.
  5. Arduino Uno (или другая) — 1шт.
  6. Датчик газа MQ-6- 1шт.

Датчик газа в сборе MQ-6Купленный мною датчик газа, смонтирован на небольшую плату и включает в себя подстроечный резистор для регулирования чувствительности. Схема подключения датчика газа MQ-6Вот что получилось в программе 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, мы вызовем терминал, в котором будем видеть полученные значения с нашего датчика.

Анализатор утечки газа на ArduinoБольшие значения появились после выпускания газа из зажигалки

Видео работы схемы

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

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Комментарии: 13
  1. Максим

    Хорошая задумка. А как сделать так, чтобы ардуино считывал с нескольких датчиков? Что в коде необходимо добавить?

  2. Vladimir (автор)

    Приветствую.
    В код нужно будет добавить дополнительный аналоговый pin (1-5).

  3. Максим

    Код будет выглядеть так?

    int sensorPin = 0;
    int sensorPin = 1;
    int sensorPin = 2;

    Влияет ли длина провода от сенсора на его показания?

    1. Vladimir (автор)

      Приветствую!
      Имена переменных должны быть разными
      int sensorPin0 = 0;
      int sensorPin1 = 1;
      int sensorPin2 = 2;

      далее нужно будет считать показания с датчиков
      gas0 = analogRead(sensorPin0);
      gas1 = analogRead(sensorPin1);
      gas2 = analogRead(sensorPin2);

      Про длину проводов ничего сказать не могу, но скорей всего конечно влияет, т.к. датчик аналоговый и дополнительное сопротивление конечно будет влиять на показания.
      P.S. В своих опытах учтите, что один датчик потребляет около 900 мВт

  4. Максим

    Спасибо большое за советы.
    Это получается один датчик потребляет 180 мА. Мда, от батареек это чудо питать явно нецелесообразно.

  5. David

    pinMode(greenled, OUTPUT);
    ​pinMode(redpin, OUTPUT);// тут опечатка у вас.  **redled**

    1. Vladimir (автор)

      Спасибо, Вы правы (исправил)

  6. Константин

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

  7. Константин

    MQ-9 подойдет

  8. nicksp

    На схеме ошибка: один вывод пьезодинамика подключен правильно (pin 10), а второй должен быть на GND, а не 5V.

    1. Vladimir (автор)

      Да, все верно Вы подметили! Спасибо!

  9. Артем

    А булели ли датчич mq-6 реагировать на природный газ, что в газовой плите?

    1. Vladimir (автор)

      Реагировать скорей всего будет, но лучше использовать датчик MQ-4

Добавить комментарий

Этот сайт защищен reCAPTCHA и применяются Политика конфиденциальности и Условия обслуживания Google.

:) :D :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.