Чуть не приключилась беда, придя домой с работы почувствовал запах газа, оказалось, что одно из соединений гибкой подводки газа к плите давала небольшую течь. Поменял прокладки, проверил качество соединения мыльным раствором, больше газом не пахнет. Решил для перестраховки таких случаев собрать примитивный анализатор утечки газа. Выбор пал на плату 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, о чем обязательно будет статья.
Хорошая задумка. А как сделать так, чтобы ардуино считывал с нескольких датчиков? Что в коде необходимо добавить?
Приветствую.
В код нужно будет добавить дополнительный аналоговый pin (1-5).
Код будет выглядеть так?
int sensorPin = 0;
int sensorPin = 1;
int sensorPin = 2;
Влияет ли длина провода от сенсора на его показания?
Приветствую!
Имена переменных должны быть разными
int sensorPin0 = 0;
int sensorPin1 = 1;
int sensorPin2 = 2;
далее нужно будет считать показания с датчиков
gas0 = analogRead(sensorPin0);
gas1 = analogRead(sensorPin1);
gas2 = analogRead(sensorPin2);
Про длину проводов ничего сказать не могу, но скорей всего конечно влияет, т.к. датчик аналоговый и дополнительное сопротивление конечно будет влиять на показания.
P.S. В своих опытах учтите, что один датчик потребляет около 900 мВт
Спасибо большое за советы.
Это получается один датчик потребляет 180 мА. Мда, от батареек это чудо питать явно нецелесообразно.
pinMode(greenled, OUTPUT);
pinMode(redpin, OUTPUT);// тут опечатка у вас. **redled**
Спасибо, Вы правы (исправил)
Спасибо очень нужная схемка как раз с двумя датчиками. У меня остался электронный клапан на входной газовой трубу (рабочий) от старой сигнализации(китайская была ставил застройщик), во его еще подключить чтоб при утечки газ закрывался. У меня есть модуль с двумя реле для arduini к нему можно подключить это клапан, не подскажите что еще прописать в скетчи чтоб при срабатывании датчика реле замыкались и срабатывал клапан (при высоких концентрациях как с интенсивностью пищалки) и куда подсоединить его.
MQ-9 подойдет
На схеме ошибка: один вывод пьезодинамика подключен правильно (pin 10), а второй должен быть на GND, а не 5V.
Да, все верно Вы подметили! Спасибо!
А булели ли датчич mq-6 реагировать на природный газ, что в газовой плите?
Реагировать скорей всего будет, но лучше использовать датчик MQ-4