ФОРУМ КУПИТЬ

Последние статьи

ВСЕ СТАТЬИ

Определяем угарный газ с помощью электрохимического датчика

15/05/2020 17:40:55

Монооксид углерода (окись углерода, оксид углерода, CO, угарный газ) - высокотоксичный газ, не имеющий вкуса, цвета и запаха. Опасен тем, что отравление происходит незаметно. Человек просто теряет сознание, засыпает. Иногда внезапно, не понимая, что происходит. И все. Очень часто отравление угарным газом заканчивается для человека плохо. А потому в частных домах, где используются котлы, печи, камины, следует подумать об установке детектора CO. И хотя многие современные отопительные приборы, сжигающие топливо, снабжены различными элементами защиты, например, датчиками обратной тяги, иногда лучше перебдеть. Не зря в некоторых странах установка сигнализаторов CO в частных домах с котлами является обязательной.

Для того, чтобы добавить в систему домашней автоматизации функцию контроля за наличием в воздухе угарного газа, можно приобрести на Алиэкспрессе аналоговый датчик MQ-7, который стоит меньше 2 долларов. Он подключается к АЦП-портам контроллера. На этом статью можно было бы закончить. Но нет, я хотел бы рассказать о другом, более дорогом и сложном датчике, но потенциально более перспективном и интересном.

Грубо говоря, существуют два типа датчиков газа: полупроводниковые и электрохимические.
Полупроводниковые датчики, такие как MQ-7, состоят из чувствительного тонкопленочного полупроводникового слоя и нагревателя. Нагреватель разогревает чувствительный слой, который при определенной температуре начинает реагировать на газ, изменяя свое сопротивление. Температура нагревателя очень высокая и может достигать 400-500 градусов.
Электрохимические датчики состоят из катализатора, который помещен в жидкий электролит. Катализатор обеспечивает взаимодействие газа с электролитом и возникновение электрохимической реакции при комнатной температуре.

Полупроводниковые датчики (MQ7) дешевы и доступны. Но у них есть недостатки. Высокая температура работы. Конечно, при 400 градусах маловероятно воспламенение метана (природного газа), который может оказаться в воздухе котельной, но как-то неприятно... Ведь критическая температура где-то уже близко. Как следствие наличия нагревательного элемента, полупроводниковые датчики характеризуются высоким потреблением. Кроме того, перед началом работы полупроводниковый датчик нужно "прожечь" в течение длительного времени, чтобы он вышел на рабочие параметры. В добавок датчик потребует для питания напряжение не ниже 5В. Но главный недостаток большинства полупроводниковых сенсоров газа - низкая селективность. В силу конструкции датчик сложно "настроить" на определенный вид газа. Другие содержащиеся в воздухе газы могут искажать значения и приводить в итоге к ложным сигналам тревоги. В довершение ко всему, со временем полупроводниковые сенсоры деградируют, что выражается в снижении чувствительности к детектируемому газу.

Электрохимические датчики - почти полная противоположность. Они существенно, в разы дороже полупроводниковых. Но не требуют подогревателя, почти ничего не потребляют, работают от напряжения 3.3В, быстро выходят на рабочий режим, имеют очень высокую чувствительность и высокую селективность к тому газу, на который рассчитаны. Главный минус электрохимических датчиков - зависимость показаний от температуры. Но эта зависимость всегда известна и ее можно скомпенсировать с помощью программного обеспечения.

ULPSM-CO 968-001 (CO Sensor from SPEC Sensors)
Модуль ULPSM-CO 968-001 от SPEC Sensors

Я решил попробовать подключить к контроллеру MegaD-2561 электрохимический датчик угарного газа американской компании Spec Sensors. Характеристики, указанные на сайте производителя, обнадеживают:

  • Диапазон измерений: 0-500 ppm
  • Минимальный порог срабатывания: 2 ppm
  • Разрешающая способность: 1 ppm
  • Погрешность: <3%

Так как датчик аналоговый, я подключил его к порту контроллера с функцией АЦП и запитал от 3.3В. Поехали!

Но далеко уехать не удалось... АЦП порт микроконтроллера регистрировал хаотичные на первый взгляд значения от 300 до 700. Осциллограф показал наличие на выходе выраженной синусоиды, форма и амплитуда которой, к слову, никак не менялась от применения различных RC-фильтров.
Я предположил, что раз сенсор характеризуется сверхнизким потреблением (менее 45 микроВатт), значит он потенциально чувствителен к качеству питания. В целях эксперимента запитываю датчик от элемента питания CR2032. Но на выходе та же синусоида! Отключаю контроллер от блока питания, а датчик от батарейки и подключаю все к внешнему аккумулятору. И, чудо! - на выходе прямая. Может быть, датчик разрабатывался исключительно для портативных устройств, работающих от батареек? Служба поддержки американского производителя предложила попробовать заземлить контроллер при питании от сети. Действительно подключение заземления почти сглаживало синусоиду. С этим уже можно было работать. Но такое решение подойдет не для всех. Не в каждом доме, даже если дом частный, присутствует полноценное заземление. Я почти потерял надежду завести этот датчик при питании контроллера от сети, как вдруг чисто экспериментально обратил внимание на одну любопытную особенность. Даже без заземления датчик стабилизировал свои показания, если расположить его рядом с какой-нибудь железякой. И чем массивнее железяка, тем более стабильны показания. Единственное условие - эта железяка должна быть соединена с землей контроллера! Мистика...

Стабилизация показания датчика CO с помощью железки
Стабилизация показаний датчика с помощью DIN-рейки

Да нет никакой мистики. У этого эффекта вероятно есть свое физическое объяснение. Очевидно, синусоида каким-то образом связана с частотой работы сети 50Гц. Но я не стал углубляться в теорию, а просто прикрутил датчик через изолирующую прокладку к куску DIN-рейки длиной 10 см. Значения, получаемые через АЦП порт контроллера и в этом случае имели разброс от 490 до 540, но их усреднение позволяло добиться отклонения всего в 1-2 единицы.

Для программной корректировки показаний я считываю данные 30 раз с небольшой паузой и усредняю.

<?php
for ( $i = 0; $i < 30; $i++ )
{
    $vals[] = file_get_contents('http://192.168.0.14/sec/?pt=36&cmd=get');
    usleep(10000);
}

$max = max($vals);
$min = min($vals);
$avg = array_sum($vals) / count($vals);

echo "Min: $min<br>";
echo "Avg: $avg<br>";
echo "Max: $max<br>";
?>

При комнатной температуре среднее значение ($avg) получается в районе 516 единиц, а при увеличении концентрации CO возрастает и превышает 517-518 единиц.
В принципе этого достаточно, чтобы подать сигнал тревоги. Но как все же посчитать значение PPM? Для этого необходимо воспользоваться формулой, которая описана в документации. В программной реализации она выглядит так.

if ( $avg > 517 )
$val = $avg - 517;
else
$val = 0;

$raw_val = ($val / 1024 * 3.4); // Разница в Вольтах между нормальным и текущим напряжением на выходе датчика
$ppm = round($raw_val / 100E3 * (1E9 / 1) / 2.27, 2);

517 - это пороговое значение АЦП порта для моего датчика, работающего при комнатной температуре в отсутствии CO.
Если текущее значение превышает 517, необходимо рассчитать разницу в Вольтах и подставить ее в формулу.
В данной формуле обращает на себя внимание коэффициент 2.27. Это калибровочный коэффициент, указанный на наклейке, прикрепленной к обратной стороне датчика.

CO Sensor калибровочный коэффициент
Датчики CO от SPEC Sensors калибруются при производстве

Важно помнить, что показания электрохимических датчиков зависят от температуры. В диапазоне от +15 до +25 поправку в целом можно не делать. Но при температуре свыше 25 градусов желательно предусмотреть простую поправку: 1.4 ppm/C, чтобы предотвратить генерацию ложных сигналов тревоги со стороны программного обеспечения Умного Дома в жару.

Но даже без всяких поправок на температуру, резкое изменение показаний свыше 40-50 ppm и более стоит воспринимать самым серьезным образом.

Пара слов о тестировании датчика. В домашних условиях получить угарный газ, пригодный для длительного тестирования датчика в полном диапазоне PPM и сложно и опасно. Но простую проверку все же можно осуществить. Специалисты фирмы производителя из Ньюарка, города близ Нью-Йорка, предлагают следующий простой способ. Необходимо взять банку из под соленых огурцов, зажечь и сразу потушить в ней пару спичек, а затем накрыть этой банкой датчик. Контроллер в считанные секунды начнет фиксировать показания датчика свыше 50-70 ppm.

Производитель заявляет, что ожидаемый срок службы датчика составляет 10 лет. При этом чувствительный к газу элемент датчика является сменным.

К большому сожалению необходимость дополнительной обработки данных на стороне сервера при питании контроллера от сети не позволяет использовать описанный датчик в автономном режиме, используя доступную для АЦП портов контроллера MegaD-2561 функцию термостата. Тем не менее, чувствительность, высокая селективность и безопасность датчика позволяют рассматривать его в качестве альтернативы китайским MQ-7, выполненным по полупроводниковой технологии.
 

 

Автор: Andrey_B
Любое использование материалов сайта возможно только с разрешения автора и с обязательным указанием источника.



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

(необязательно, не отображается на сайте)


Сортировка комментариев: Последние сверху | Первые сверху