Подключение дымового датчика к ардуино

Подключение датчика дыма к ардуино

Подключение датчика дыма MQ 2 к ардуино.

В этой статье мы узнаем, как подключить датчик дыма MQ-2 к Arduino и как считывать данные с датчика дыма в среде IDE Arduino.
Датчик дыма MQ-2 используется в тех проектах на ардуино, в которых нужно определить наличие дыма. Например в системах пожарных сигнализаций. мы подключим датчик дыма к арудино и напишем программу , которая сообщает о превышении порогового значения задымления в помещении.
Подключение датчика дыма MQ-2 к ардуино.
Пин GND датчика подключается к GND ардуино.
Пин VCC датчика подключается к 5V ардуино.
Пин AO датчика подключается к A0 ардуино.
Подробнее со схемой подключения датчика MQ-2 к Arduino можно ознакомится на рисунке.


При работе датчик дыма может нагреваться.

Программирование датчика MQ-2 в среде разработки IDE Arduino.

Разберем программу в среде IDE arduino, которая считывает данные с датчика дыма, сравнивает значение с пороговым и выводит информацию о превышении порога в компорт.
Переменная для записи значения с датчика огня. int dmsensor
Перед запуском нужно откалибровать датчик дыма, чтобы получить пороговое значение. Для этого необходимо сложить его значение без дыма и с дымом и разделить на 2. Подробнее о калибровке датчиков ардуино. Полученное срденее занчение запишем в перменную porog
int porog = 100;
Переменная для хранения порогового значения датчика дыма, с которым сравнивается значения с датчика для определения есть или нет дым.
Данные датчика считываются с аналогового порта, к которому он подключен с помощью команды
переменная = analogRead(порт, к которому подсоединен датчик);
Условие если значения датчика больше, чем переменная для сравнения porog, то выводим в компорт фразу Дым.
if (porog
Условие если значения датчика меньше, чем переменная для сравнения porog, то выводим в ком порт фразу Дыма нет.
if (porog > dmsensor) <
Serial.println(“Дыма нет”);
>
Полный код программы IDE arduino для определения наличия дыма c помощью датчика MQ-2.
int dmsensor //переменная для хранения значения с датчика MQ-2
int porog = 100 // переменная для сравнения значений
void setup() <
Serial.begin(9600);
>
void loop() <
dmsensor = analogRead(A0); // запись значения датчика в переменную
if (porog dmsensor) <
Serial.println(дыма нет);
>
delay(1000);
>

Полезно почитать по теме датчик дыма arduino
Проект пожарной сигнализации на ардуино

Источник

Подключение 2х проводного дымового пожарного извещателя к Ардуино (Пожарная сигнализация на Ардуино)

ИП 212-45 и ARDUINO MEGA
После публикации про подключение 4х проводного дымового пожарного извещателя к Ардуино появились вопросы: как подключить к ардуино 2х проводный дымовой пожарный извещатель (датчик). Предлагаю вам свою версию решения данного вопроса. Для теста я использовал извещатель пожарный дымовой оптико-электронный ИП 212-45. Ниже приведены интересующие нас характеристики, взятые из паспорта на извещатель, для подключения его к Ардуино.

Технические характеристики ИП 212-45

Итак, как мы видим, питание у нас 9-30 В. Я рекомендую использовать резервированный источник питания на 12В. Этого нам хватит для питания всех устройств сигнализации: извещателей, оповещателей и т.д. плюс саму ардуинку можно запитать от 12В. Далее, идея в общем-то та же что и при подключении 4х проводного извещателя. Собираем делитель напряжения, но в данном случае извещатель мы будем подключать не ко второму плечу делителя, т.к. там у нас напряжение не должно превышать 5В, а к первому плечу, на котором мы будем обеспечивать питание шлейфа. Снимать напряжение мы будем со второго плеча. Т.е. за счет изменения сопротивления на 1 плече (подключение оконечного резистора, сработка извещателя) делитель будет создавать разные падения на плечах, чем мы и воспользуемся.
Давайте взглянем на штатную схему подключения ИП 212-45 к приборам:
Схема подключения ИП212-45 к приборам, с использованием добавочного резистора .

Из схемы видно, что извещатель запитывается через контакты 2 и 4 (3). Теперь, зная все это мы получаем вот такую схему подключения 2х проводного дымового пожарнго извещателя к ардуино.
Схема подключения 2х проводного дымового пожарнго извещателя к ардуино

Что мы тут видим? Аналоговый вход А0 используется для измерения напряжения на 2м плече делителя. Цифровой выход D2 коммутирует напряжение источника питания и выполняет 2 задачи:

  • Перезапуск извещателя, когда он вошел в режим «Пожар»;
  • Отключение питания от цепи при появлении короткого замыкания на 1 плече делителя (на шлейфе).

Последний пункт не менее важен чем первый. Если на шлейфе появится короткое то все сопротивление 1 плеча устремится к нулю и, соответственно, все будет падать на втором плече. Напряжение на аналоговом входе будет приблизительно равно напряжению источника питания т.е. не совместимое с жизнью для контроллера… Поэтому в скетче нужно особое внимание уделить обработке состояния шлейфа «Короткое замыкание», и тут же перевести пин в состояние LOW если оно возникло.

Для защиты аналогового входа контроллера можно применить следующую схему:
Схема подключения 2х проводного дымового пожарнго извещателя к ардуино с защитой от перенапряжения.
В этом случае мы добавляем в схему защитный TVS диод или как его еще называют — супрессор или трансил (VD), добавляем PolySwitch предохранитель (F), а так же заменяем оптореле на простое реле (К1), так как при пробое TVS диода ток потечет большой и выход оптореле может сгореть, либо можно использовать оптореле которое пропускает 1А.
Зачем это нужно?
Если ваша Ардуино «заснула» или занята более важными задачами, нежели контроль напряжения на аналоговом входе, например висит в delay(), (есть библиотека, которая позволяет уйти от delay() для выполнения задержки Задержка в ARDUINO без delay(), с проверкой millis() на переполнение.), то без защиты входа от перенапряжения, в случае короткого замыкания на шлейфе, все у нас сгорит.
Как это работает?
При штатной работе схемы TVS диод закрыт и на цепь практически не влияет. Небольшой ток протекает через PolySwitch предохранитель, не вызывая его нагрева и изменения сопротивления.
При коротком замыкании на шлейфе TVS диод пробивается отводя излишек напряжения на землю, ток через него резко увеличивается, в результате этого происходит нагрев PolySwitch предохранителя, его проводимость резко падает, и цепь практически обесточивается. После того, как КЗ на шлейфе будет снято PolySwitch остынет и опять начнет проводить. Вместо TVS диода и PolySwitch предохранителя можно использовать устройство которое объединяет оба компонента в себе, оно называется PolyZen. Однако не следует пренебрегать и софтовой защитой. Обязательно обесточивайте цепь с помощью Ардуино.

Теперь краткое пояснение что у нас происходит в шлейфе. Разделим весь процесс на 3 этапа:

1. Выбор начального напряжения и тока в цепи.
Так как при параллельном включении сопротивлений общее сопротивление будет меньше меньшего мы понимаем что начальное падение напряжения на 1 плече делителя (далее, для краткости, плечи делителя назовем 1ПД и 2ПД), без включения в цепь извещателя, добавочного и оконечного резисторов будет максимальным, а на 2ПД — минимальным. На этом этапе мы подбираем номиналы резисторов делителя исходя из напряжения источника питания и желаемого тока в цепи.

2. Подключение оконечного резистора для контроля целостности шлейфа.
На этом этапе на параллельно 1ПД включаем оконечный резистор. Соответственно, падение напряжения на 1ПД уменьшается, на 2ПД увеличивается.

3. Подключение извещателя через добавочный резистор.
На этом этапе на параллельно 1ПД и оконечному резистору мы включаем добавочный резистор через извещатель. Пока извещатель находится в дежурном режиме — ничего не изменится, т.к. его сопротивление стремится к бесконечности. При переходе извещателя в состояние «Пожар», как нам обещает паспорт, его сопротивление упадет до величины не более 1000 Ом и сумма сопротивлений извещателя и добавочного резистора включится в цепь. Падение напряжения на 1ПД уменьшается еще раз, а на 2ПД снова увеличится.

Таким образом отслеживая падение напряжения на 2ПД мы и контролируем состояние шлейфа:

  • Обрыв — начальное напряжение;
  • Норма — напряжение при подключенном оконечном резисторе;
  • Пожар — напряжение при подключенном оконечном, дополнительном резисторе, и сопротивлении извещателя;
  • Короткое — напряжение источника питания, значение АЦП будет равно 1023 (особое внимание на это состояние. )

Как подбирать номиналы резистров? Конечно по закону Ома. Формулы я тут расписывать не буду. Для ленивых я сделал табличку в екселе, которая при вводе начальных данных сама рассчитывает номиналы и отображает интересующие токи и напряжения в цепи. Что нужно помнить:

  • Максимальное напряжение на аналоговом входе ардуино (2ПД) не должно быть более 5 вольт, а лучше меньше, так как надо еще КЗ отслеживать;
  • Минимальное напряжение в шлейфе (1ПД) должно находится в пределах 9 — 30 Вольт;
  • Максимальный ток через извещатель должен быть не более 20мА (по паспорту);
  • От себя могу добавить что при маленьком токе извещатель не блокируется в режиме «Пожар».

Источник

Arduino – подключение датчика дымовых газов CG312 MQ2

GeekElectronics » Arduino от А до Я » Arduino – подключение датчика дымовых газов CG312 MQ2

Ко мне в руки попал датчик дымовых газов CG312 MQ2, который позволяет определять наличие отдельных компонентов газовых смесей и будет реагировать на дым, пропан, бутан, метан, водород и пары алкоголя.

В этой статье я опишу процесс подключения этого датчика к контроллеру Arduino и выложу пример скетча для считывания показаний.

Назначение выводов датчика CG312 MQ2

Подключение датчика газов CG312 MQ2 к Arduino

  • “S” – сигнальный вывод датчикаCG312MQ2 подключаем к A0 Arduino
  • “+” – “+” питания датчикаCG312MQ2 подключаем к +5V Arduino
  • “-“ — “-“ питания датчикаCG312MQ2 подключаем к GND Arduino

Пример подключения датчика CG312 MQ2 к контроллеру Arduino Nano будет выглядеть так:

Проверочный скетч для работы с датчиком CG312 MQ2

Данный пример будет выводить в Монитор порта показания с датчика CG312 MQ2 и зажигать светодиод на 13 дискретном выводе, если их значения превысят 600.

const int analogInPin = A0;
const int ledPin = 13;
int sensorValue = 0;

void setup() <
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
Serial.println(«CG312 MQ2 Test» );
>

void loop() <
sensorValue = analogRead(analogInPin);
if (sensorValue >= 600)
<
digitalWrite(ledPin, HIGH);
>
else
<
digitalWrite(ledPin, LOW);
>

Serial.print(«CG312 MQ2 value= » );
Serial.println(sensorValue);

Эти датчики я собираюсь использовать в своей метеостанции. Один установлю на кухне — для обнаружения утечек газа, а второй на балконе, чтобы отлавливать неприятные моменты, когда непогашенный окурок начинает разгораться.

Можно еще установить в туалете, для анализа качества пищи, но это уже лишнее :)

Источник

Проект 5. Детектор дыма

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

Описание работы:

Для начала работы подключите питание к Arduino. И поместите устройство в комнату, в которой предварительно могут появиться нежелательные газы. Зеленый светодиод постоянно горит сигнализируя о том, что в комнате нет дыма. Как только датчик оказывается в зоне поражения дымом, зеленый светодиод гаснет, а красный светодиод высвечивает сигнал SOS, а зуммер сигнализирует SOS. Необходимо подождать некоторое время после подключения устройства к питанию, чтобы нагревательный элемент датчика прогрелся до нужной температуры и выдавал адекватные показания.

Нам понадобится:

  • Arduino Uno х 1шт.
  • Trema Set Shield х 1шт.
  • Trema-модуль датчик газа х 1шт.
  • Trema-модуль зуммер х 1шт.
  • Trema-модуль зеленый светодиод х 1шт.
  • Trema-модуль красный светодиод х 1шт.

Для реализации проекта нам не нужно устанавливать никаких библиотеки.

Схема сборки:

  • Устанавливаем Trema Set Shield в Arduino Uno.
  • Устанавливаем зеленый Trema-модуль светодиод в 1 посадочную площадку.

  • Устанавливаем красный Trema-модуль светодиод в 3 посадочную площадку.

  • Полученные результат представлен ниже на рисунке.

Код программы:

Алгоритм работы:

В начале скетча (до кода setup) выполняются следующие действия:

  • Объявляем пины для работы с Trema-модуль датчиком газа, Trema-модуль светодиодами, Trema-модуль зуммером.
  • Объявляем переменную, которые задействованы в программе.
  • Объявляем функцию.

В коде setup выполняются следующие действия:

  • Переводим выводы светодиодов и зуммера в режим выхода.

В коде loop выполняются следующие действия:

  • Считываем показания датчика дыма.
  • Сравниваем показания с допустимым пределом. Если показания дыма больше предельного уровня, то сообщаем о задымлении, а именно гасим зеленый светодиод и сигнализируем о тревоге функцией «Sos()». В ней мы гасим и зажигаем красный светодиод, а так же включаем и выключаем зуммер с периодичностью соответствующей команде SOS.
  • Если показания дыма меньше предельного уровня, то постоянно светит зеленый светодиод, а красный светодиод и зуммер выключены.
  • Можно раскомментировать строку, связанную с задержкой. Тогда полученные данные с датчика дыма будут дольше приходить для сравнения.
  • Можно менять уровень по которому срабатывает тревога. Для этого в скетче необходимо переменную предельного уровня «ultimateLevel» изменить на то значение, которое вам необходимо.

Источник

Adblock
detector