Наткнулся на интересный датчик MQ9, с его помощью можно определять в воздухе уровень угарного или углеводородных (пропан, метан, этилен и тд) газов. Использовать его можно в качестве сигнализации при утечках газа. Работать с датчиком очень просто, поэтому я добавил в статью еще и описание 7-сегментного 4-разрядного индикатора TM1637. Индикатор уже имеет микросхему управления, поэтому использовать его тоже очень просто – будем выводить на нем уровень газа в помещении.
Как работает датчик газа MQ9
Датчик MQ9 использует свойство диоксида олова(SnO2), в зависимости от загазованности помещения меняется электропроводимость. Таким образом, используя это свойство можно подавать напряжение на датчик, а потом считывать его. Чем больше напряжение на выходе, тем выше уровень газа в воздухе.
MQ9 имеет 4 ноги, две из которых — это питание (GND и VCC), и две – выходы (цифровой и аналоговый). AO – аналоговый выход, с помощью аналогового пина arduino можно получить значение от 0 до 1024, где 1024 будет максимальный уровень загазованности помещения. DO – это цифровой выход, на который передаются логические 0 или 1, в зависимости от уровня газа. Критический уровень можно регулировать с помощью подстрочного резистора на датчике.
Ниже приведено фото датчика с подписанными ножками.
7-сегментный 4-рязрядный индикатор TM1637
Индикатор TM1637 очень прост в использовании, поскольку уже имеет «на борту» микросхему управления. Поэтому для управления достаточно всего два цифровых пина и питания 5 вольт. Чтобы выводить данные на дисплей индикатора удобно использовать готовую библиотеку, скачать ее можно тут: библиотека для TM1637.
Ниже приведено фото TM1637 с подписанными ножками.
Что использовалось в проекте:
- Arduino (я использовал arduino uno, но можно любую другую). Покупал тут: arduino uno
- Датчик уровня газа MQ9. Покупал тут: MQ9
- Индикатор TM1637. Покупал тут: 7-сегментный 4-разрядный индикатор TM1637
Скетч индикатора газа на arduino с помощью MQ9 и TM1637
Ниже приведен скетч с подробными комментариями, а также его можно скачать себе на компьютер: скачать.
// подключение библиотеки для работы с дисплеем #include "TM1637.h" // пины дисплея #define CLK 3 #define DIO 2 // создание объекта для работы с дисплеем TM1637 tm1637(CLK,DIO); // пин для получения аналогового значения с датчика MQ9 #define MQ_PIN A0 // переменная для хранения значения, полученного с датчика MQ9 float mqValue; // переменная для хранения уровня газа в процентах float mqPercents; void setup() { // инициализация дисплея tm1637.init(); tm1637.set(BRIGHT_TYPICAL); Serial.begin(9600); } void loop() { // получаем значение от датчика MQ9 mqValue = analogRead(MQ_PIN); // переводим значение в проценты mqPercents = mqValue/1024 * 100; // вывод процентов на дисплей tm1637.display(mqPercents / 1000); // вывод данных в консоль Serial.print("GAS: "); Serial.print(mqPercents); Serial.println("%"); // ждем секунду delay(1000); }
Послесловие
Видео работающего прототипа можно посмотреть на видео:
А можно полученные проценты сохранить в exel? Чтобы фиксировать показания в зависимости от времени
Можно, вот тут можно посмотреть пример записи данных в эксель http://vk-book.ru/peredacha-dannyx-v-excel-iz-arduino/
Для работы с MQ-9 не надо ни каких библиотек добавлять?
Нет, библиотеки не нужны, значение можно получать с аналогового выхода с помощью функции analogRead
Добрый день, не подскажете как дополнить код добавив в схему пищалку(зуммер) с срабатыванием по пороговому значению.
Добрый день! Пищалку можно включать всего с одного аналогового пина. В коде сделать проверку по критическому уровню и в этот момент пищать
Спасибо! Можно ли узнать из показаний угарный или углеводородный газ?