Під час появи у мене набору Arduino, у пошуках об'єкта для автоматизації, я якось сам собою задумався над тим, що непогано б отримувати інформацію про те, чи не є небезпечним рівень CO (чадний газ) у зимовий час у котельні заміського будинку. У холодні зимові дні і особливо ночі, газове обладнання працює в інтенсивному режимі і палить природний газ для підтримки теплоти в будинку. А раптом у мене погана вентиляція? Чи в трубі застряг валянок? І щоразу входячи в котельню і перебуваючи там деякий час, я наражаю своє дороге життя на небезпеку. Та й від витоку природного газу теж ніхто не застрахований. Тут взагалі можна півбудинку підірвати, просто увімкнувши світло. Їх добре б також контролювати і якось відстежувати.

Тому було вирішено зібрати систему моніторингу рівня CO і метану в повітрі котельні на основі Arduino або сумісної плати. Крім простої сигналізації, хотілося б збирати ще й статистику, наприклад про те, як пов'язані концентрації небезпечних газів з роботою газового обладнання. У принципі завдання реалізується на сучасному рівні культури і техніки, причому за дуже невеликі гроші. Як джерело витрати природного газу я використовував імпульси з вбудованого в газовий лічильник датчика, а для аналізу повітря застосував два надзвичайно популярні серед розробників Arduino датчики MQ-4 і MQ-7. MQ4 «нюхає» повітря на предмет вмісту метану, а MQ7 проводить вимірювання щодо CO.

Але для того, щоб піти далі, виявилося, що потрібно конкретно заглибитись у деталі. Оскільки мало хто з користувачів Arduino та аналогів розуміє, що це за датчики такі MQ-4 та MQ-7, і як ними взагалі користуватися. Ну так, приступимо потихеньку до захоплюючої розповіді.

Що таке ppm

Щоб як слід оперувати зі значеннями, які я наводитиму нижче, потрібно для себе усвідомити одиниці вимірів. У нас, на території колишнього Радянського Союзу, показники прийнято вимірювати у відсотках (%) або безпосередньо в масі до обсягу (мг/м 3 ). А ось у деяких зарубіжних країнах застосовує такий показник, як ppm.

Скорочення ppm розшифровується як parts per million або у вільному перекладі "частин на мільйон" (добре, що тут не використовують фунти на галони та імперіали до сажнів). В принципі, від відсотка показник не сильно відрізняється, вірніше, відрізняється лише розмірність. 1 ppm = 0,0001% відповідно 3% = 30.000 ppm.

Переведення з відсотків або ppm мг/м 3 вже складніше, тут потрібно враховувати молярну масу газу, тиск і температуру. Загалом формула для перерахунку виглядає наступним чином P x V M = R x T, де P – тиск, V M – молярний об'єм, R – універсальна газова стала, T – абсолютна температура в Кельвінах (не Цельсіях і Фаренгейтах). Але щоб не мучити читача шкільним курсом хімії, одразу наведу кілька значень. А найдосвідченіші бурителі інтернетів можуть знайти на просторах великої мережі онлайн-калькулятори для самостійного розрахунку.

CO: 3% = 30.000 ppm = 34695.52 мг/м 3
CO 2 : 3% = 30.000 ppm = 54513.22 мг/м 3

Дані наведені для нормального атмосферного тиску та кімнатної температури. Зверніть увагу, що CO 2 при порівнянному відсотковому співвідношенні майже вдвічі важче за CO. Нагадаю, що молекула CO 2 містить один атом більше, звідси й різниця. І саме завдяки цій різниці CO 2 накопичується в низинах, а CO у стелі.

Відмінність СО та CO 2

Для початку варто розібратися що таке є CO і в чому його відмінність від CO 2 . По-перше, CO це монооксид вуглецю, який також називають чадним газом, окисом вуглецю або оксидом вуглецю (II). СО газ дуже підступний. Він надзвичайно отруйний, але при цьому не має ні кольору, ні запаху. Потрапивши в приміщення з чадним газом, ви тільки за непрямими симптомами зрозумієте, що зазнаєте впливу отрути. Спочатку головний біль, запаморочення, задишка, серцебиття, потім посиніння трупа. Чадний газ з'єднується з гемоглобіном крові, через що останній перестає переносити кисень тканинам вашого організму, і першим страждає головний мозок і нервова система.

По-друге, окис вуглецю відмінне паливо і може горіти не гірше за інші горючі гази. При певних концентраціях він утворює вибухонебезпечну суміш, яка готова рознести в тріски будь-який об'єм, де накопичився газ упереміш з киснем. Так, монооксид вуглецю легший за повітря, тому активно проникає на другий, третій і наступні поверхи будівель.

Основним джерелом виділення, як не дивно, є згоряння вуглецевого палива при недостатній кількості кисню. Вуглець «не догоряє» і замість вуглекислого газу CO 2 в атмосферу викидається чадний газ CO. У побутовому розумінні чудовим джерелом ЗІ, при неправильній експлуатації, можуть виступати дров'яні печі, газові конфорки, газові котли та інша опалювальна техніка, що працює на вуглецевому паливі. Не варто забувати і про автомобілі, у вихлопі бензинового двигуна може бути до 3%, а за гігієнічними нормами його повинно бути не більше 20 мг/м³ (близько 0,0017%).

Загалом, чадний газ штука підступна і легко одержувана. Достатньо засмічити димар і можна сміливо вирушати до предків, розтопивши печурку на ніч.

CO 2 він ж діоксид вуглецю, вуглекислий газ, двоокис вуглецю, оксид вуглецю (IV) або просто вугільний ангідрид, не менш цікавий газ. З вуглекислим газом ми зустрічаємося набагато частіше у повсякденному житті, ніж з чадним газом. Ми п'ємо газовану воду, де розчиняють діоксид вуглецю. Ми користуємося сухим льодом для збереження морозива в парку спекотного літнього полудня, ми нарешті видихаємо двоокис вуглецю в божевільних обсягах. Та й природні об'єкти, типу вулканів, боліт чи сміттєзвалищ здатні генерувати неабияку кількість вуглекислого газу.

Але не варто думати, що CO 2 газ ніжніший і безпечніший за газ CO. Високі концентрації CO 2 призводять до не менш тяжких наслідків, аж до смерті. А підняти концентрацію можна легко і невимушено лише закривши кватирку в спальні на ніч. Більше того, на відміну від CO, вугільний ангідрид важчий за повітря і небезпечно накопичується в низинах, підвалах, підполах та інших несподіваних місцях. Документально зафіксовано випадки загибелі людей, які випадково потрапляють до лощин повних вуглекислого газу, що натік із сусіднього вулкана. Двигун автобуса глухне, повітря починає бракувати і все. CO 2 газ теж без кольору, запаху та смаку, тому його наявність визначити органолептично майже і неможливо, крім як контролювати настання явно вираженої ядухи.

І той, і інший гази складаються лише з двох видів елементів. З кисню (О) та вуглецю (С), питання лише у кількості атомів кисню. Обізнаний читач може здогадатися, що один газ на інший може перетворюватися з легкістю незвичайною. Так, може, але не зовсім легко і не зовсім звичайною. Потрібно докладати зусиль. Так, наприклад, у каталітичних нейтралізаторах сучасних бензинових автомобілів відбувається процес допалювання (перетворення) CO на CO 2 . Процес відбувається при високій температурі та в присутності каталізаторів (наприклад, платини). Можливий і зворотний процес, але знову ж таки непростий.

До речі, в інтернет є сайт CO2.Earth, що відображає динаміку та поточну концентрацію вуглекислого газу в атмосфері Землі. Так, концентрація не така вже й низька. Адже при накопиченні вуглекислого газу в районі 2-4% людина втрачає працездатність, відчуває сонливість та слабкість. А при концентраціях близько 10% починає відчуватися ядуха.

Ми трохи відхилилися від теми, але висновок тут такий: не варто плутати два різні гази, так само як і наслідки від них, але контролювати їхню присутність в атмосфері приміщень однозначно варто.

Конструкція електрохімічних датчиків

Найпоширеніший вид датчиків MQ. І поширений він широко лише завдяки своїй дешевизні. Я провів невелике дослідження, щоб спробувати розібратися в питанні електрохімічних датчиків трохи більше, ніж більшість любителів самостійно зібрати якийсь пристрій.

Електрохімічний датчик побудований принципом зміни опору якогось елемента при взаємодії з іншим елементом. Іншими словами, відбувається хімічна реакція між цими двома елементами, у результаті змінюється опір підкладки. Начебто все просто. Але для того, щоб реакція проходила нормально, а датчик був не одноразовий, чутливу частину датчика необхідно тримати в підігрітому стані.

Ось і складається електрохімічний датчик із якоїсь підкладки з чутливим матеріалом, нагрівача підкладки та власне вивідних контактів. Зверху на датчик натягнута металева сітка, все ж таки підкладка відчутно гріється, та й усілякі гази горючі можуть бути навколо датчика, той же CO. Для цього сітка і потрібна. Безпека понад усе. До речі, натягувати сітку на небезпечні елементи при застосуванні у вибухонебезпечних середовищах вигадав якийсь Гумфрі Деві ще для шахтарів на початку IXX століття.

У мережі можна нарахувати пару десятків платників з електрохімічними датчиками серії MQ. Але виробник у всіх датчиків (не плат) один – китайська компанія HANWEI. Компанія випускає вагомий асортимент різних пристроїв для детектування газів та всього з ними пов'язаного. Але сенсорів серії MQ серед номенклатури немає, можливо, що продукція занадто дрібна, щоб вивішувати її на сайт.

Будучи за вдачею цікавим персонажем, я покопався в специфікаціях HANWEI і звів усі доступні датчики серії MQ, матеріал підкладки та тип детектування в єдину таблицю.

Датчик

Газ

Підкладка

MQ-2 LPG SnO 2
MQ-3 Alcohol SnO 2
MQ-4 CH 4 SnO 2
MQ-5 LPG, natural gas SnO 2
MQ-6 LPG, propane SnO 2
MQ-7 CO SnO 2
MQ-9 CH 4 , LPG SnO 2
MQ-131 O 3 SnO 2
MQ-135 Air Quality SnO 2
MQ-136 Air Quality SnO 2
MQ-137 Air Quality SnO 2
MQ-138 Multi-purpose SnO 2
MQ-303A Alcohol ???
MQ-306 LPG, LNG ???

За винятком 300-ї серії датчиків MQ, всі вони використовують один і той же матеріал для підкладки. Саме для тієї самої підкладки яка визначає концентрацію газу в атмосфері, саме для тієї підкладки, яка змінює свій опір. У всіх датчиках вона використовується та сама. У 300 серії інформація про чутливий матеріал скромно опущена.

Незважаючи на єдину конструкцію і чутливий елемент, що використовується, не можна сказати, що всі датчики у виробника однакові. Вони відрізняються формою та такими параметрами, як, наприклад, напруга живлення нагрівача. Знімати показання з подібних датчиків можна за допомогою омметра, вимірюючи опір, який змінюється залежно від концентрації газу, що вимірюється. Або додавши навантажувальний резистор вимірювати напругу (як додавати резистор вказано прямо в специфікації на датчики).

Прошу зауважити, що всі датчики мають певний і вельми невеликий термін життя, що становить близько 5 років. Причому 5 років - це безпосередньо робота, а й зберігання. А якщо ваш датчик зберігається без відповідного пакування, то термін його придатності ще менший. Справа в тому, що чутливий хімічний елемент, без нагріву, буде насичуватися вуглецем, який поступово його весь і зруйнує. Саме з цієї причини нові датчики рекомендується «прожарювати» тримаючи в робочому стані протягом доби, а ще краще за дві. Той вуглець, що встиг в'їстися в оксид олова (IV), «вигорить» і датчик зможе визначати показання з вищою точністю.

Якщо придивитися до списку вимірюваних газів або призначення датчиків, то видно, що всі вони так чи інакше зав'язані на вуглець (метан, природний газ, пропан, чадний газ, скраплений газ, алкоголь і навіть датчики якості повітря вимірюють наявність вуглецю в сполуках в повітрі). І тільки датчик озону (MQ-131) стоїть особняком, хоча і використовує той самий чутливий елемент з SnO 2 . Справа в тому, що всі датчики серії MQ розраховані на роботу в атмосфері зі стабільним рівнем кисню. Специфікація говорить нам, що вміст кисню має бути 21%, що є певна усереднена норма. А якщо кисню менше або більше, то показання плаватимуть, аж до повної нездатності датчика видавати зрозумілі результати при вмісті кисню на рівні 2% і нижче. Ще б пак, в цьому випадку вуглець зовсім ніяк вигоряти на підкладці не буде, окислювача недостатньо. Очевидно, на цьому ефекті і розрахований вимір озону електрохімічним датчиком.

Але точність показань датчиків серії MQ залежить лише від кисню. Показання добре змінюються залежно від вологості повітря та його температури. Розрахункові показники дано для вологості 65% і температури 20 градусів Цельсія. А за вологості вище 95% датчик перестане адекватно видавати показання. Шкода, що тільки не вказана в специфікації яка вологість використовується: відносна або абсолютна. Інтуїція підказує, що все ж таки відносна.

Крім показників навколишнього середовища на точність показань датчиків MQ не гірше за інші параметри впливає ще й термін служби самих датчиків. Згодом їх свідчення пливуть. «Засмічується» продуктами вимірювання чутливий шар, змінюються характеристики нагрівача та змінюється опір при еталонних показниках. В яку сторону воно змінюється незрозуміло, але виробник рекомендує, по-перше, проводити калібрування датчика після покупки та первинного відпалу, а потім проводити регулярні перекалібрування протягом усього терміну служби датчика. А єдиний нормальний спосіб калібрування – порівняння результатів показання датчика з вже відкаліброваним приладом. Зрозуміло, що такого приладу немає ні в кінцевого споживача-приватника (а профі використовуватимуть дещо інші датчики, дорожче), ні у багатьох виробників плат. Деякі виробники про це заявляють чесно прямо на своєму сайті:

"І як же мені дізнатися, яка концентрація того чи іншого газу за допомогою сенсора MQ?" - Запитає нетерплячий читач? Оскільки в більшості випадків споживач використовує вимірювач напруги, втім з опором все аналогічно, але менше на один крок, то у споживача існує потреба в тому, як вольти або кванти ЦАП Arduino перевести в заповітні ppm або хоча б відсотки. Виконати цю операцію можна тільки за допомогою невиразних графіків зі специфікації на датчик.

Подивившись графік зі специфікації видно, що, по-перше, у ньому є як мінімум одна логарифмічна область. А, по-друге, крім основного газу, датчик спокійнісінько вловлює ще й інші схожі (вуглецевмісні). Розібратися з графіком і зрозуміти яке ppm відповідає якому опору датчика - заняття для самураїв, оскільки пряма перетинає кілька різних логарифмічних зон явно буде не прямий в реальності.

На цьому хочеться підбити проміжний підсумок. Отже, до плюсів датчиків серії MQ можна віднести їхню вкрай і категорично демократичну ціну. А ось мінусів набагато більше:

  • Фактично ідентичні датчики використовують один і той же чутливий елемент і розрізняються номіналом підстроювальних резисторів.
  • Залежність результатів виміру від багатьох чинників: температури, вологості, концентрації кисню.
  • Відсутність селективності по вимірюваних газах, що заявляється, реагує на все з вуглецем (а, цілком можливо, і на інші елементи вступають в реакцію з підкладкою).
  • Високе енергоспоживання (нагрівач).
  • Необхідність первинного «відпалу» датчика.
  • Нестабільність показань у часі.
  • Необхідність первинного і калібрування, що повторюється.
  • Практична неможливість отримання осмислених значень як ppm чи %.

Цифровий чи аналоговий?

Ринок знає свою справу і якщо на якийсь продукт є попит, цей попит буде задоволений. Рано чи пізно, але обов'язково. А з використанням спритних китайських товаришів попит задовольняється швидше за рано, ніж пізно. Так і з'явилося безліч виробників з Китаю, які виготовляють готові плати з електрохімічними датчиками серії MQ. Давайте розглянемо по зростаючій, які можуть бути варіанти поставки.

Чистий датчик

Найпростіший і найдешевший варіант. У постачанні є тільки сам електрохімічний датчик і більше нічого. Підключати його до системи з вимірюванням напруги (наприклад, аналогового порту Arduino) потрібно через навантажувальний резистор. Резистор найкраще використовувати з можливістю підстроювання при калібруванні. Номінали резистора вказуються у специфікації (DataSheet) на датчик.

При альтернативному способі вимірювання можна скористатися омметром і вимірювати опір виходів датчика, а потім перераховувати його в потрібні результати згідно з тією ж специфікацією.

Тут користувач отримує не просто сам датчик, а датчик, встановлений на плату, з встановленим резистором. Підключати його вже можна (і потрібно) безпосередньо до вимірювача напруги, без будь-яких проміжних резисторів. У цьому випадку є лише вимірювання напруги, тому що разом з резистором вся схема працює як звичайний дільник напруги.

Використання аналогового датчика на платі зручно тим, що виробник вже встановив потрібний резистор на плату і навіть провів деяку калібрування всієї конструкції. В окремих аналогових датчиках застосовується підстроювальний резистор і користувач може сам зробити калібрування, а в деяких така опція відсутня. Зрозуміло, що краще брати версію з можливістю підстроювання.

Цифровий датчик

Здавалося б, якщо датчик цифровий, він повинен видавати інформацію у цифровому вигляді. Однак, всі цифрові датчики з сенсорами MQ, що траплялися мені, не мали такої можливості. «Цифровий» в їхній назві означає тільки те, що датчик має цифровий вихід, який перемикається в режим HIGH при перевищенні якогось порога концентрації газу, що вимірюється. А основний знімання значень користувач здійснює тим же аналоговим способом, як і зі звичайним аналоговим датчиком.

Зрозуміло, що на платах цифрового датчика вже розпаяно всі резистори. А у хороших датчиків присутні ще й підстроювальні резистори, доступні для налаштування датчика. Один застосовується для налаштування сенсора, а другий для встановлення порога цифрового виходу. А на найкращих є ще й якийсь підсилювач сигналу, корисний у разі коли датчик віддалений від вимірювального приладу і є ризик зловити перешкоди на довгий кабель.

Цифровий датчик із цифровою шиною

Мабуть, це найбільший Hi End серед подібних датчиків. Підключення та передача даних здійснюється за допомогою цифрової шини I 2 C. І до одного пристрою знімання інформації (наприклад Arduino) можна підключити аж сотню таких датчиків. Тільки потрібно мати на увазі, що датчики споживають багато струму і його необхідно подавати окремо. Настроювальний резистор, само собою, присутній.

Судячи з коду прикладу, запропонованого виробником датчиків, сам датчик посилає дані у сирому вигляді і вже програмно вони переводять у значення ppm. Загалом від аналогового варіанта датчик відрізняється лише наявністю цифрової шини.

живлення

Вище я вже згадував, що для роботи нагрівача датчиків MQ потрібно підводити до нього якісне живлення і достатньо обсягом. За специфікацією датчики споживають близько 150 мА. Насправді споживання може плавати в дуже широкій межі. У принципі, 150 мА не такий вже й великий струм доти, доки пристрій (або кілька) з таким споживанням не намагаються схрестити з чимось на зразок Arduino. Підключивши навіть один такий датчик до живлення на платі, вже ризикуєш отримає непрацездатний пристрій, якому не вистачатиме напруги для нормальної роботи. При роботі самі рецептори нагріваються, не значно, але градусів до сорока цілком можуть розкочегаритися. Якщо порівняти цю температуру з 60-70 градусами на стабілізаторі, який живить ці датчики, то температуру сенсорів можна вважати стерпною.

Для забезпечення нормальної працездатності нагрівача та як наслідок самого датчика необхідно подавати живлення окремо для цих датчиків. Наприклад, використовувати незалежне джерело живлення на 1 або 2 А та 5V для живлення датчиків (не всі датчики споживають 5V). Або використовувати спеціальну плату, що перетворює напругу 9-12V на необхідне живлення датчиків.

У будь-якому випадку з джерелом струму, що має потрібну потужність, доведеться повозитися. Хоча можливий варіант, коли датчик безпосередньо підключається до плати (наприклад, Arduino). Але в цьому випадку нічого більшого до неї не рекомендується підключати.

Варіант калібрування датчика та перетворення показань у ppm

Блукаючи по мережі в пошуках рішення щодо калібрування та отримання достовірних результатів з датчика, я натрапив на дуже цікавий пост від якогось Davide Gironi, який зіткнувся з такою самою проблемою, як і я. Davide спробував розібратися, як можна отримати з його датчика MQ-135 (Air Quality) показання у вигляді ppm.

Згідно з дослідженнями, проведеними блогером для калібрування, достатньо мати уявлення про концентрацію якогось газу в атмосфері та спираючись на ці дані спробувати підібрати резистор для потрапляння в потрібний сектор за графіком. Davide використовував датчик MQ-135, який призначений для визначення якості повітря, серед контрольованих газів якого є і CO 2 . І саме вуглекислий газ найбільше цікавив блогера. Використовуючи інформацію із сайту co2now.org, він зміг обчислити необхідний номінал резистора. Погодьтеся, що метод дуже далекий від ідеалу, але все одно краще ніж нічого.

Потім, після калібрування він накидав невеликий код, що дозволяє отримати шукані ppm виходячи з отриманих в результаті калібрування даних. Я не наводитиму тут код, бажаючі можуть ознайомитися з ним самостійно, але зводиться він приблизно до цього:

float ppm = ((10000.0 / 4096.0) * raw_adc) + 200;

Наведений вище код, між іншим, приклад з датчика MQ-4 з цифровим інтерфейсом I 2 C. Зауважте, що це краще, ніж нічого. Адже багато хто просто не в змозі дійти і до такого перетворення і обмежуються лише просто деякими граничними значеннями. Наприклад, при значенні 750 (одиниця вимірів відсутня, це квант), потрібно включати червоний світлодіод, в діапазоні 350-750 досить жовтого, а коли нижче 350 нехай горить зелений світлодіод.

Альтернативи?

Якщо датчики MQ такі вже погані, чи є якась альтернатива для використання в домашніх проектах? Насправді є. Навіть багато. Методів виміру концентрації газів не один і не два. Тільки ось датчики, що мають високу точність, коштують пристойних грошей. І часом від такої вартості настає амфібіотропна асфіксія. Різниця у вартості може досягати тисячі та десятки тисяч разів. Тут мимоволі задумаєшся.

Однак, зовсім недавно на ринку, зусиллями тих же працьовитих товаришів, з'явилися інфрачервоні детектори. Так, вони поки що далеко не для всіх газів, але як мінімум СО 2 ловлять без значних енергетичних витрат і з високою селективністю. У таких датчиках використовують недисперсійний інфрачервоний метод визначення концентрації газу.

Якщо ж потрібне детектування інших газів, але із застосуванням недорогих пристроїв, то доступних варіантів на даний момент (літо 2016 року) не так багато, якщо не сказати прямо, що їх зовсім мало. Альтернативою можна вважати використання серії MQ, щоправда, обходитися доведеться тільки порогами значень (про точність перекладу в ppm я вже висловився вище).

Багато хто відразу ж заперечить, мовляв, я особисто використав такий датчик, і він працює. Як приклади наводять досліди схожі «подихати на датчик», потримати навколо нього руку, пустити хмарку сигаретного диму. Так, показання датчика відразу зміняться, значення поповзуть вгору. Так, датчик відобразить те, що він нагрівся, те, що збільшилася вологість, те, що в атмосфері стало більше вуглецю і менше кисню. Але наскільки більше, яка кількість досліджуваного газу зараз в атмосфері і найважливіше якого саме газу? Ось це питання відповідь з допомогою датчиків серії MQ дати вже не можна. Краще придбати звичайний побутовий сигналізатор небезпечних газів, того ж СО. За цілком порівнянні гроші ви отримаєте пристрій заводського виконання, з гучною сигналізацією та низьким споживанням енергії.

Датчики близнюки

І на завершення я хочу підбити підсумок. Я засмучений тим, що такі доступні за ціною датчики жодним чином не можуть бути використані в більш-менш серйозному проекті. Так, можна потренуватися в програмуванні і в підключенні датчиків, але шукані достовірні значення, отримати з їх допомогою вже не вийде. І цінність датчиків дуже скоро прямує до нуля.

Більше того, я особисто переконаний, що всі датчики MQ не мають достатнього рівня селективності, відрізняються лише зовнішнім дизайном та рекомендаціями щодо підбору резисторів. Датчики реагують на все, що містить вуглець і тим сильніше реагують, чим активніший вуглець у з'єднанні і чим він легше вступає в реакцію з підкладкою. Я не вірю, що виробник додає до підкладки додаткові елементи, що підвищують селективність і при цьому нічого не пише в специфікацію. Натомість я припускаю, що один датчик можна перетворити на інший шляхом використання різних резисторів і перегляду на графіки опору та концентрації.

Адже все почалося з того, що я підключив два датчики (MQ-4 і MQ-7) до одного пристрою і почав заливати результати їх роботи на ThingSpeak. Один з датчиків повинен вимірювати рівень отруйного, а другий показувати скільки є в повітрі метану. Мене дуже зацікавили графіки, які повторювали один одного більше, ніж майже повністю. Так, один датчик видавав показання лише на рівні 100-150 одиниць, а другий лише на рівні 350-400. Піки і плато збігалися за часом від різних датчиків, а сплески лише відтіняли неминучу закономірність.

Я звів показання обох датчиків у єдиний графік кореляції і зрозумів, що вони показують одні й ті самі результати, щоправда, у різних діапазонах. І запитав – навіщо мені датчик метану, який реагує на все? Починаючи від чадного газу та закінчуючи алкоголем. Навіщо мені датчик СО, який, крім самого СО, ще більше реагує на LPG і водень? Ось саме – нема чого.

Update. Перш ніж викинути в смітник непотрібні датчики, я вирішив парочку з них розібрати і подивитися, що ж у них усередині. Отже:

Внутрішності датчика MQ-4

Як видно, у датчика шість ніжок. Від двох із них через центр трубочки із сріблястої речовини проходить нагрівальна спіралька. Чотири інших ніжки тримають по дві тонкі тяганини, очевидно для аналізу змінного опору.

Внутрішності датчика MQ-7

Незважаючи на інший зовнішній вигляд, нутрощі MQ-7 ідентичні нутрощам MQ-4. А бобишка сірого кольору, що нагрівається, є ні що інше, як шуканий оксид олова, який при нагріванні і присутності вуглецю або водню (якраз ті самі гази) частково відновлюється, прагнучи стати металевим оловом, і відповідно змінює свій опір.

Багато хто знає, що співробітники автоінспекції у випадках підозри алкогольного застосування використовують якийсь агрегат, про який говорять "дунути в трубочку". Сьогодні спробуємо зробити аналог такого пристрою на основі датчика MQ-3, тільки ось не варто саме в такій ситуації використовувати його як еталонний, тому що в його чутливості знаходяться не тільки пари алкоголю, але і пари бензину, метану і гексану, але до цих газів у нього чутливість менша, максимальний відгук лише до алкоголю. Крім цього, є ще одні граблі - показання датчика також залежні від зовнішніх факторів, таких як температура, вологість. У разі серйозного підходу до застосування алкогольного тестера варто здійснити компенсацію цих факторів. Взагалі область застосування контролем ступеня алкогольного сп'яніння не обмежується, не знаю для чого взагалі був розроблений цей датчик MQ-3, але їх можна застосовувати в місцях, де необхідний контроль концентрації подібного газу в повітрі, наприклад при перевезенні алкогольної продукції такий датчик дасть сигнал і пошкодження партії продукції (якщо пляшка розіб'ється, то алкоголь почне випаровуватися і заповнювати парами простір, як тільки межа буде досягнута - датчик спрацює і дасть сигнал тривоги водієві або ще комусь), або при виробництві, що вимагає витрати спирту, при перевищенні витрати концентрація в повітрі зросте і датчик спрацює, давши сигнал та зниження витрати і так далі, так алкоголь необхідний при виробництві парфумерії. Зазвичай застосування обмежується лише фантазією інженера.

Так ось сам датчик виглядає так:

Датчик має 6 висновків: висновки H – це нитка розжарення (виготовлена ​​з Ni-Cr), пари A та B – це вихід сигналу датчика.

Чутливим шаром для парів алкоголю в цьому датчику є оксид олова, а електроди виготовлені із золота і платини. До речі про ціну датчика, цей параметр помітно залежить від матеріалів, необхідних виготовлення датчика.

Параметри датчика MQ-3:

  • напруга живлення котушки, що нагріває - 5 вольт
  • напруга живлення датчика - 5 вольт
  • потужність нагріваючої котушки - до 750 мВт
  • опір котушки, що нагріває, 33 Ом +-5%
  • область виявлення парів датчиком – 0,05 мг/л – 10 мг/л
  • споживання струму – приблизно 150 мА

Перед повноцінним застосуванням датчика в схемі його необхідно прогріти протягом 24 годин, підключивши 5 вольт до котушки, що нагріває. Це необхідно для стабілізації показань датчика (мабуть, стабілізуються хімічні процеси після процесу виготовлення). І таким чином, перед застосуванням датчика його необхідно трохи прогріти. Наступний цикл прогріву після 24 годинного періоду можна зменшити до однієї хвилини. У процесі роботи саме через нагрівальний елемент датчик може бути або теплий, або трохи гарячий - це нормально.

Конструкція датчика є якимось корпусом з висновками знизу і сіточкою зверху. Через сіточку пари алкоголю потрапляють на чутливий елемент, де протікає хімічна реакція, що перетворює фізичну величину електричну. По суті чутливий елемент огороджений тільки сіточкою від зовнішнього світу, тому датчик в цілому також чутливий до фізичного забруднення брудом, пилом і так далі (мабуть, тому прилади а ля "дунути в трубочку" оснащені саме трубочкою, щоб взаємодіяти тільки з диханням піддослідного, виключаючи зовнішні забруднення, зокрема і газові).

Датчик MQ-3 можна придбати як окремо лише один датчик, так і у вигляді модуля, оснащеного компаратором. Вартість подібної речі може змінюватись від 3 доларів і вище залежно від настрою продавця. Датчики можна знайти на торгових інтернет майданчиках aliexpress та ebay.

Крім датчика MQ-3 модуль оснащений компаратором, підстроювальним резистором для регулювання порога спрацьовування компаратора та світлодіодом на виході мікросхеми компаратора для індикації досягнення порога. Модуль має висновки для живлення, виведення компаратора і висновок, безпосередньо під'єднаний до виходу датчика.

Перед початком розгляду схеми визначника концентрації слід зазначити те що, що з використанням показання датчика необхідно обов'язково калібрувати. Чому? При підключенні до живлення датчик залежно від вмісту алкоголю у повітрі даватиме на виході пропорційний рівень сигналу. Так щоб визначити як збалансована ця пропорція (скільки вольт припадає на концентрацію, скажімо в 1 мг/л) необхідно дати датчику саме таку концентрацію (або іншу) і визначити співвідношення. Далі використовувати цей коефіцієнт для перетворення показань датчика цифри. Без калібрування точні дані отримати можна тільки навмання або знімати показання характеру є пари алкоголю, їх немає, їх багато, їх мало, тобто "на око" визначити.

Отже, приступимо до схеми тестера парів алкоголю:

Схема побудована на мікроконтролері Atmega8. Даний мікроконтролер можна використовувати як у корпусі DIP-28, так і у SMD виконанні в корпусі TQFP-32. Резистор R4 необхідний для запобігання мимовільному перезапуску мікроконтролера у разі випадкових перешкод на виведенні PC6. Резистор R4 підтягує плюс живлення цього висновку, надійно створюючи потенціал у ньому. Для індикації використовується рідкий кристалічний (РК або LCD) дисплей. Мною застосовано великий дисплей 2004 (4 рядки по 20 символів), проте вся інформація поміститься на дисплеї 1602 (2 рядки по 16 символів), з цим розрахунком було написано прошивку.Змінний резистор R2 необхідний для налаштування контрасту символів на дисплеї. Обертанням движка цього резистора досягаємо найбільш чітких для нас показань на екрані. Підсвічування РК дисплея організовано через виведення "А" та "К" на платі дисплея. Підсвічування включається через резистор, що обмежує струм R1. Чим більше номінал, тим тьмяніше підсвічуватиметься дисплей. Однак нехтувати цим резистором не варто, щоб уникнути псування підсвічування. Робота схеми передбачає роботу модуля АЦП мікроконтролера, тому його живлення необхідний дросель L1 і конденсатор C4 задля забезпечення стабільної роботи модуля - фільтрації перешкод з харчування. Резистор R6 необхідний обмеження струму, що проходить через світлодіод. До речі, світлодіод можна замінити на інший прилад або електричний ланцюг, що спрацьовує при перевищенні межі концентрації парів алкоголю, встановленої за допомогою кнопок S3 і S5. Інтервал налаштування цього параметра становить плюс або мінус 0,05 мг/л за одне натискання кнопки. Резистор R8 також обмежує струм, що проходить через нагрівальну котушку датчика MQ-3. Це трохи знижує максимальний струм через цю котушку та підвищує надійність схеми. Сигнал від датчика алкоголю надходить на вхід мікроконтролера АЦП, який безперервно відстежує потенціал на цьому висновку. Далі в мікроконтролері значення АЦП переводиться в напругу і концентрацію алкоголю з урахуванням калібрувальних коефіцієнтів (їх можна задати кнопками S2 і S4).

Виробник обіцяє лінійну характеристику показань датчика MQ-3. Це спрощує калібрування, необхідно ввести лише два коефіцієнти, що коригують показання. Для цього ми будемо використовувати просту шкільну формулу y=k*x+b де y -концентрація алкоголю, x - напруга від датчика, b - усунення робочого діапазону (при нульовій концентрації напруга завжди буде більше 0), k - коефіцієнт переведення напруги в концентрацію. З коефіцієнтом k найбільша проблема, тому що його можна задати або придумавши з голови, або сигналу датчика від еталонного джерела концентрації. Обидва коефіцієнти можна встановити кнопками пристрою. Калібрування b повинна відбуватися при концентрації повністю нуль у стані спокою, при натисканні коефіцієнт b буде збережений і відніматися від поточного значення, таким чином при нульовій концентрації на екрані вийде значення нуль, а не яке-небудь мале значення (або не дуже мале). Коефіцієнт k задає відношення напруги до концентрації алкоголю, тобто скільки вольт доведеться концентрація в 1 мг/л. Саме при цьому значенні варто калібрувати пристрій (природно, можна і при іншій концентрації калібрувати, але тоді це потрібно передбачити в прошивці мікроконтролера).

  1. поточне значення АЦП мікроконтролера
  2. напруга порахована з урахуванням коефіцієнта b (спочатку при включенні b=0, необхідно калібрувати перед кожним використанням)
  3. значення межі концентрації, яка встановлюється кнопками пристрою
  4. значення концентрації алкоголю в мг/л перерахованої через напругу з урахуванням коефіцієнта k

Вся схема споживатиме близько 200 мА або більше, тому, щоб не гріти повітря, запропоновано використовувати імпульсний стабілізатор напруги на мікросхемі MC34063. Однак можна застосувати будь-який інший стабілізатор або мікросхему стабілізатора відповідно до її підключення до схеми.

Всі резистори у схемі можна застосовувати потужність 0,25 Вт або типорозміру 1206 у СМД виконанні.

Схема була зібрана на макетній платі для мікроконтролера Atmega8:

На макеті датчик MQ-3 підключено до окремого джерела живлення 5 вольт від іншого порту USB комп'ютера.

Хоча модуль датчика парів алкоголю використовується у вигляді модуля, але використовується тільки висновок, з'єднаний безпосередньо з датчиком MQ-3. Нічого, крім нього, у модулі більше не використовується.

Для програмування мікроконтролера необхідно знати конфігурацію ф'юз бітів:

До статті додається прошивка для мікроконтролера, документація на датчик MQ-3, проект (версія 8) (датчик замінений потенціометром для зміни показань та їх відстеження), а також невелике відео, що демонструє роботу пристрою (при піднесенні пляшки зі спиртом до датчика показання починають змінюватися і при досягненні межі спалахує світлодіод, далі пляшка забирається і показання починають зменшуватися, проте через інерційність датчика показання зменшуються досить повільно, особливо наближаючись до нуля).

Список радіоелементів

Позначення Тип Номінал Кількість ПриміткаМагазинМій блокнот
IC1 МК AVR 8-біт

ATmega8

1 До блокноту
IC2 DC/DC імпульсний конвертер

MC34063A

1 До блокноту
VD1 Діод Шоттки

1N5819

1 До блокноту
U1 Датчик газуMQ-31 До блокноту
C1, C4, C5 Конденсатор0.1 мкФ3 До блокноту
C2 100 мкФ1 До блокноту
C3 Конденсатор220 пФ1 До блокноту
C6 Електролітичний конденсатор1000 мкФ1 До блокноту
R1 Резистор

22 Ом

1 До блокноту
R2 Підстроювальний резистор10 ком1 До блокноту
R3 Резистор

0.3 Ом

1 Або дещо в паралель До блокноту
R4 Резистор

10 ком

1 До блокноту
R5 Резистор

Алкотестер або алкометр – це електронний пристрій, який використовується для оцінки концентрації алкоголю у зразку видихуваного повітря людиною. За цими даними визначається кількість алкоголю у крові випробуваного. Цей прилад зазвичай використовується дорожньою поліцією та медичним персоналом. Втім, він може бути корисним і для автолюбителів для адекватної оцінки власного стану.



Алкотестер можна купити, хоча не скрізь, та й коштують вони недешево. Тому є сенс зробити алкотестер самостійно на основі популярної серед радіоаматорів плати Arduino.


Саморобний алкотестер досить простий у збиранні. Головним чином він складається з плати Arduino та датчика спирту MQ-3. Для індикація концентрації алкоголю в повітрі, що видихається людиною, служать світлодіоди в кількості десяти штук. До них послідовно підключені резистори опором 220 Ом для обмеження струму. Ці світлодіоди підключені до цифрового порту Arduino (лінії D0-D9). Схему підключення компонентів саморобного алкотестера наведено на малюнку нижче.



Кілька слів тут слід присвятити датчику MQ-3. MQ-3 – датчик спирту, показаний на зображенні нижче. Він використовується для оцінки кількості алкоголю, присутнього в повітрі, що видихається. Цей сенсор спеціально призначений для виявлення алкоголю, тому він дуже чутливий у цьому плані та швидко реагує на алкоголь. Цей датчик також може виявляти бензин, але його чутливість до бензол дуже мала. MQ-3 має 6 контактів, з яких два служать для активації нагрівача, і 4 контакти забезпечують живлення та передачу сигналів. Нагрівач забезпечує необхідний робочий стан.



Виведення AD0 модуля датчика MQ-3 підключається до аналогового входу A0, з якого ми збираємося прочитати інформацію про концентрацію спирту. Чутливість сенсора налаштовується змінним резистором, встановленого на платі модуля датчика MQ-3.


Нижче наведено код (скетч) для роботи саморобного алкотестера на основі Arduino.


const int analogPin = 0; // для зчитування даних датчика MQ-3 const int totalLed = 10; // кількість світлодіодів для індикації int ledPins = (11,10,9,8,7,6,5,4,3,2); // Виводи, що підключаються до світлодіодів, void setup() ( for (int currentLed = 0; currentLed< totalLed; currentLed++) { pinMode(ledPins, OUTPUT); // линии для светодиодов работают на выход }} void loop() { int sensorReading = analogRead(analogPin); // считывание данных с датчика int ledLevel = map(sensorReading, 500, 1023, 0, totalLed); for (int currentLed = 0; currentLed < totalLed; currentLed++) { if (currentLed < ledLevel) { digitalWrite(ledPins, HIGH); } else { digitalWrite(ledPins, LOW); } } }