Модуль датчика MQ-135 и его подключение к Orange Pi PC


Этот модуль (датчик газа) уже обозревался тут, я немного дополню, приведу несколько домашних тестов. Расскажу о нестандартном подключении датчика к Orange Pi PC (OPi).
Модуль построен на основе датчика MQ-135. Касалось бы чего там выдумывать в данный модуль встроен компаратор — выставляй нужный уровень срабатывания и жди когда он сработает. Мне же хотелось наблюдать непрерывный процесс — аналоговый сигнал с датчика. Здесь нас ждет разочарование у OPi на разъеме GPIO нет АЦП. Конечно, можно приобрести внешний модуль АЦП, но его у меня нет. Кроме того, данный модуль я планирую использовать с ESP8266 и поместить всё это в кочегарку на даче. АЦП у ESP8266 есть, но с ESP8266 я пока на стадии размышлений, а OPi я уже неплохо освоил.
Поэтому решил использовать OPi и протестировать датчик, понять чего ожидать от него. Первым делом надо построить АЦП. Сразу скажу, ничего высокоточного мне не надо и даже просто точного. Достаточно прикидочных значений, т. е. на что реагирует, как сильно реагирует и т.п. Хорошо, что в деле АЦП ничего придумывать не надо все придумано до нас. Воспользуемся одним из способов, например, «АЦП последовательного приближения» (см. тут). Для этого надо регистр последовательного приближения, ЦАП и компаратор. Компаратор у нас уже есть, надо только слегка изменить схему. ЦАП — реализуем на основе ШИМ и RC цепочки. Регистр последовательного приближения — легко реализуется программно.
Приведу схему кратко, для понимания изменений.

Полную принципиальную схему модуля можно найти в интернете или по ссылке на другой обзор. Изменяем схему, а именно удаляем переменный резистор (R5), на его место впаиваем RC (R1,C1) цепочку. Кроме того нагрузочное сопротивление 1 кОм (R2), меняем на 6.8 кОм (R6), для увеличения сигнала с датчика. Для смещения уровня выходного напряжения компаратора к 3.3 В установлен резистор R4. ШИМ (на 10 бит) реализую программно, аналогично тому как я делал раньше.
Детали использую обычные, поэтому с эстетической точки зрения внешний вид модуля пострадал.
Внешний вид

Постоянная времени RC цепочки довольно большая, это конечно увеличивает время преобразования, что мне не критично, но зато уменьшает, хоть и неокончательно, влияние всяких программных задержек. Должен признаться, что линейного преобразования у меня не получилось, как известно напряжение на конденсаторе при заряде через резистор от фиксированного источника напряжения изменяется по экспоненте. Значит и результат пропорционален ей же. Код программы можно посмотреть тут (на C/C++). Сигнал записывался в файл, потом строился график.
Теперь перейдем к тестам. На что же реагирует датчик? Если верить описанию, то много на что. Я перевел с китайского (с помощью Google) характеристику.
Характеристика

Видим, что сильней всего реагирует на ацетон, толуол, алкоголь.
На всякий случай данные (из интернета) с предельными концентрациями, того на что реагирует датчик.
ПДК

Это каких концентраций надо боятся.
Проверим работу, но я первым делом естественно подышал, реагирует, но на что?
Дыхание

Нет, алкоголь я не употреблял тем более остальное. Мое предположение это в основном влажность. Да, в описании про это сказано — реагирует на влажность и температуру. Проверим, над кружкой с чаем.
Влажность

Эффект есть. Расстояние до кружки примерно 10-15 см (на глаз).
Теперь алкоголь (водка) — намоченная ватка.

Расстояние такое же. Реакция довольно сильная.
Теперь ацетон (у жены взял средство для снятия лака).

Расстояние такое же.
Но самая сильная реакция была на газ из зажигалки.

Пламя не зажигал, просто открыл клапан. Сигнал ушел в «зашкал». Значит этим датчиком вполне можно контролировать утечку газа. Если не ошибаюсь, недорогие датчики утечки газа тоже на основе SnO2.
Суммируем, да — датчик дешевый и слишком универсальный, реагирует много на что, но с другой стороны все на что он реагирует явно не полезно. Датчиком можно пользоваться как индикатором общего состояния воздуха в помещении, т. к. ухудшение ведет к увеличению сигнала однозначно. Проветривание же наоборот — уменьшает сигнал.
Проветривание

Однако, для получения с датчика данных в ppm (parts per million — частей на миллион ) его надо калибровать. Предложенный метод калибровки по CO2, на мой взгляд не убедительный. Для калибровки надо хотя бы две точки. Можно воспользоваться методом предложенным в описании к датчику по аммиаку (фу...) или по алкоголю (да!). Да, еще не забыть про компенсацию температуры и влажности. Другой вопрос, надо ли всё это делать? Что он в результате будет показывать, датчик то не селективный. Есть и другие датчики из серии MQ, как бы специализированные под разные газы, но все они на SnO2, т. е. характеристики у них будут примерно одинаковы. Что же до способа подключения датчика к OPi, то он, на мой взгляд, вполне имеет право на жизнь, используем всего два контакта и получаем АЦП. Для внешнего модуля АЦП с шиной I2C контактов надо больше, правда там может быть несколько каналов. Но если надо один и не быстрый, то почему нет? Может кому то будет интересно познакомится с принципами работы АЦП.
+
avatar
+1
Интересно. +
Фото подключения к Orange Pi PC еще сфотографируйте крупным планом с распиновкой.
+
avatar
  • Jury_78
  • 25 декабря 2016, 17:17
0
У меня к OPi много что подключено. Для АЦП использовал следующие контакты выход ШИМ 15, вход 16. Забыл… это ж программные номера. На разъёме это 15 — 8 контакт, 16 — 10 контакт. Естественно можно использовать и другие.
+
avatar
  • Aloha_
  • 25 декабря 2016, 17:05
0
Отравления датчика при большой концентрации не наступает я так понимаю. Про ресурс что известно?
Можно прикрутить счетчик моточасов, что бы заменить датчик через пару лет.
+
avatar
  • Jury_78
  • 25 декабря 2016, 17:19
0
Тут вопрос, что значит большая концентрация? По сроку службы в описании не нашел, в интернете встречал цифру 5 лет.
+
avatar
+1
Очень рад обзору!
Про концентрацию и ресурс вот что могу заметить.
Специализированный датчик СО, с громадной автономностью (без нагрева, АА батареек хватало на год), попал на поверку метрологам. Ничегошеньки эти профессионалы о его фактических характеристиках не смогли заявить, но датчик не выдержал знакомства с «поверочными газовыми смесями».


На фото эскиз преобразователя — про него ничего не известно.
До поверки датчик исправно пищал на сигарету в 5 л кастрюле, после поверки ни разу больше 1 промилле не показал.
Про показания в кочегарке.

1. До поверки этот датчик показывал вблизи работающего газового котла от половины допустимого предела 30 промилле (удачный пуск котла от фитиля) до пятикратного превышения этого предела (пламя после пуска разгоралось странным способом).
Т.е. диапазон в кочегарке у котла был 15-150 промилле.
2. Такие же датчики у булерьяна показывали 15 (нормальное горение) до 300 промилле (неправильное горение при подбрасывании дров).
Как называется «мой» преобразователь, и что он измеряет, не знаю — но давно хочу узнать.
Кто даст ссылку?
+
avatar
  • Jury_78
  • 25 декабря 2016, 18:24
0
На самом датчике никаких надписей?
+
avatar
0
Голый
+
avatar
  • abyrwalg
  • 25 декабря 2016, 18:58
0
без нагрева, АА батареек хватало на год
очень сомневаюсь; просто он включается очень-очень редко, а полноценный прогрев производит ещё реже (только если есть подозрения на превышение).
Но всё равно, год — неправдоподобно долго! батарейки от саморазряда должны были уже сдохнуть)
Датчик — думаю, из той же серии, так как никаких° других физических принципов измерения нет.
+
avatar
0
Никаких дополнительных электродов для нагрева у него нет.
Включен он всегда — на сигарету реагирует через 15 секунд.
А вот то, что он может измерять не содержание СО, а какой-то побочный параметр, более вероятно — достаточно всего лишь оформить датчик ожидаемым образом, да и гнать его на мировой рынок.
+
avatar
  • abyrwalg
  • 25 декабря 2016, 22:45
0
такой? www.jd.ru/13637.html

датчик именно как вы нарисовали — два ленточных вывода, приваренных?

ни одна надпись на основной плате не гуглится? чипы какие?

про поставленную выше «°»: статья в википедии 'Пожарный газовый извещатель'
чуть более чем бесполезна; английская тоже оперирует $$$-ценами из прошлого, для «подходящих» технологий… Загадка!
+
avatar
0
Да, и жыды тоже продает именно такой датчик.
Предполагаю, что и с таким же преобразователем, имеющим два приваренных ленточных вывода.
Как выводы расположены, нарисовано на эскизе.
Надписи на плате не гуглил (даже мысли не было такой) — недотумкал этого сделать.
Схема осталась работоспособной, только датчик перестал реагировать на дым.
+
avatar
  • dop2000
  • 25 декабря 2016, 17:08
+2
Вы бы дописали в заголовок, что это газовый сенсор. А то гуглить пришлось.
+
avatar
  • Jury_78
  • 25 декабря 2016, 17:19
0
Сделал.
+
avatar
  • biko65
  • 25 декабря 2016, 17:10
+1
ППЦ. Нужно весь обзор пролистать, что бы понять, что же это за датчик.
Почему бы в заголовке не прописать сразу или хотя бы в первом же абзаце?
+
avatar
  • vanenzo
  • 25 декабря 2016, 18:02
0
Названия достаточно
+
avatar
0
Если бы не ваша ссылка на другой обзор, дочитав до конца так и не понял, это датчик чего. Спасибо за обзор, сохранил в бортовой журнал, ставлю плюс.
+
avatar
  • c2d
  • 25 декабря 2016, 18:07
+3
Самое интересное, что видел на базе этого датчика — реализацию авто-контроля воздуха в авто. Датчик ставится в короб воздушного фильтра и типа едешь за воняющим ведром, автоматом заслонка срабатывает. На бензиновый выхлоп хорошо реагирует, а вот на дизель почему-то не очень. Ну и разумеется к плате климата подпаяться надо, ардуино, все дела…
вот даже ссылочку нарыл: www.drive2.ru/l/8341756/
+
avatar
  • Jury_78
  • 25 декабря 2016, 18:22
+1
а вот на дизель почему-то не очень
Одно время дизель считался экологически чистым двигателем… :)
+
avatar
  • c2d
  • 25 декабря 2016, 18:42
0
ну там вопрос скорее в точности датчика, что-то вот он как-то не на все чувствителен. А дизельный выхлоп по заключению ВОЗ провоцирует рак.
комиссия пришла к выводу о необходимости поднять уровень опасности дизельного выхлопа для человека с «по всей вероятности является канцерогеном» до «однозначно является канцерогеном».
От така кхм, фигня малята.
+
avatar
+1
opi не жирно на такой прибор? Тоже делал датчик, но на MQ-2 и stm32. Заодно еще bmp180 пристроил.
+
avatar
  • Jury_78
  • 25 декабря 2016, 18:34
0
Это ж не на совсем.
+
avatar
  • NE_XT
  • 25 декабря 2016, 18:51
0
Канечно жирно, автор апельсинку рекламирует, а датчик использует как повод. ( эт даже козе понятно)
+
avatar
  • abyrwalg
  • 25 декабря 2016, 19:07
+3
коза точно сочла бы упоминание об отсутствии АЦП — рекламой
(хотя, «пиар плохим не бывает»:)
+
avatar
  • tklim
  • 26 декабря 2016, 15:32
0
Это круто, плюс-минус также как зацепить датчик на ком-порт. Или как малинке делали ЧМ передатчик в вещательном диапазоне просто проводком на одной ноге.
А с ардуиной или внешним АЦП — то банальщина
+
avatar
  • ybynty
  • 26 декабря 2016, 02:57
0
С stm32 не все готовы связываться.
+
avatar
0
а куда деваться. демоплаты уже дешевле ардуин, да и программировать их реально проще.
+
avatar
  • beerok
  • 25 декабря 2016, 19:59
0
Кто-то пробовал собирать на базе Оранж систему сигнализации с датчиками движения, открытия дверей и проч.? Это возможно?
+
avatar
  • Jury_78
  • 25 декабря 2016, 20:44
0
Возможно, но боюсь надежность будет не высокая.
+
avatar
  • c2d
  • 25 декабря 2016, 21:06
0
Мажордомо на распберри ставится, возможно и на пиписинку можно замутить. Я так понимаю туда хоть что можно интегрировать, и датчики и джисм маяки — чем не сигналка?
+
avatar
  • Jury_78
  • 25 декабря 2016, 21:25
0
Все эти компьютеры работают по управлением ОС, насколько надежны они вопрос. Но если не предъявлять особых требований, то можно многое.
+
avatar
  • Willis
  • 25 декабря 2016, 21:44
0
Можно ли уточнить в чем их ненадежность? Тоже рассматривал подобные задачи — в принципе, если не нужна операционка реального времени, то датчики и подключить к ним можно и сервер держать для сбора и отображения данных можно. И с безопасностью все прекрасно: ssh по сертификату, iptables есть.
+
avatar
  • Jury_78
  • 25 декабря 2016, 21:51
0
Вы можете быть уверены, что ОС будет работать без сбоев? Насколько надежна сама плата? У меня, например, неоднократно зависала.
+
avatar
  • Willis
  • 25 декабря 2016, 22:44
0
У нас тут в обсуждениях кто-то схемку на RC приводил — простой вочдог на перезагрузку по питанию на случай зависания. А еще раньше рассказывали как делают опрос извне охранной системы, да еще и по разным каналам связи.
В итоге: да, можно быть уверенным в том, что если система online, то она работоспособна. В противном случае мы немедленно получаем оповещение от внешних сервисов что система недоступна.
Звучит громоздко, но это вполне по силам сделать человеку который желает, изучает и понемногу осуществляет задуманное.
+
avatar
  • Jury_78
  • 25 декабря 2016, 23:44
0
Все это можно делать, если как говорится — овчинка стоит выделки.
+
avatar
  • Willis
  • 26 декабря 2016, 00:33
0
На днях приехал NanoPi Neo: $10 сама плата и $6 доставка. Запустился, припаял к нему датчик BMP180, установил софт и он стал показывать температуру, давление и ненужную высоту. Для мониторинга температуры в помещении от устройства больше и не надо. Висит оно на витой паре, доступно по SSH.
Делать на ардуино? Оно может и подороже будет, а тут полноценная операционка, можно интегрировать в IT среду.
+
avatar
  • FloX
  • 27 декабря 2016, 06:41
0
на есп такое надо делать. зачем для этого Пи?
+
avatar
  • Willis
  • 27 декабря 2016, 09:42
0
Ethernet ports в серверной ну просто завались, а вот с WiFi не особо, плюс помехи от сопутствующего оборудования. И к linux прикручивается заббикс, что тоже приносит пользу.
На esp думаю датчики по дому раскидать — как раз нужна автономность и беспроводная связь.
+
avatar
  • tklim
  • 26 декабря 2016, 15:29
0
Вы думаете, массовые «профессиональные сигнализации» работают без сбоев ?)
+
avatar
  • Jury_78
  • 26 декабря 2016, 17:18
0
Конечно правильней сравнивать количество сбоев.
+
avatar
  • Zhenya88
  • 25 декабря 2016, 21:32
0
На PiPC ставится без проблем. Подключаем протокол mqtt+masquitto и датчики на esp8266 (я использую Witty cloud) и все нормально работает.
Для параноиков можно настроить периодический/контрольный опрос датчиков и в случает отсутствия отклика слать смс кому скажешь.
Если же использовать на датчиках «глубокий сон» на Witty cloud, то можно сильно автономность от батареек поднять.
+
avatar
  • mike888
  • 25 декабря 2016, 22:38
0
На ардуине без проблем работает веб сервер, зачем городить огород для примитвных задач типа опроса датчиков или сигналки. Лучше конечно программу самому писать под тут же мегу или стм, кому что ближе, но вешать жрущую плату с осью, нет никакого смысла
+
avatar
  • pdaXimik
  • 26 декабря 2016, 09:28
0
Однако, для получения с датчика данных в ppm (parts per million — частей на миллион ) его надо калибровать.
В интернетах недавно встречал то ли курсач, то ли лабораторку на тему калибровки датчика серии MQ в тестовых газовых средах.
Итог — датчики не поддаются калибровке и не предназначены для сколько-нибудь точного определения концентрации.
+
avatar
  • abyrwalg
  • 26 декабря 2016, 12:21
0
если «недавно», то может быть поищете линк в истории посещённых сайтов?
Было бы очень любопытно ознакомиться…

Выше Nikatorov описывал ситуацию, когда после встречи с «тестовой газовой средой» показиметр (на неизвестном физическом принципе основанный:) перестал реагировать на внешние раздражители…
+
avatar
  • pdaXimik
  • 26 декабря 2016, 14:02
0
Это было месяц назад и с другого компьютера.
Суть — человек попытался выявить стабильность показаний в разных средах и условиях, контролируя по лабораторным приборам. Показания менялись в разных условиях и разное время. Вывод — только для определения присутствия, меняя чувствительность.
+
avatar
0
Подтверждаю высказывание
Показания менялись в разных условиях и разное время
: коротко и по делу описано все то, что наговорили метрологи о показометре СО.