#7 Эксперимент “Пожарный извещатель”
В наше время, наверное у каждого дома есть пожарный извещатель. Он может не только предупредить о возникновении возгорания, но дать сигнал к его автоматическому тушению, ведь некоторые из таких противопожарных модулей работают вкупе с системами пожаротушения. Кроме того, есть датчики, которые могут передать сигнал о пожаре напрямую в пожарную службу или прислать уведомление на мобильный телефон. На сегодняшний день, такие модули очень распространены и зачастую встречаются в системах “Умного дома”.
В качестве чувствительных элементов в таких модулях используются следующие датчики:
- Тепловые датчики;
- Дымовые датчики;
- Датчики пламени.
В современных пожарных модулях могут быть использованы несколько видов датчиков сразу. Сегодня мы будем работать с одним из этих датчиков – датчиком пламени и попробуем создать настоящий пожарный извещатель, который будет посылать сигнал о возникновении открытого пламени в зоне его видимости.
Перед выполнением эксперимента прочтите:
СБОРКА УСТРОЙСТВА НА МАКЕТНОЙ ПЛАТЕ
Нам понадобятся следующие компоненты:
- Arduino Uno;
- USB-кабель для подключения к компьютеру;
- Беспаечная макетная плата;
- 1 датчик пламени;
- 1 светодиод любого цвета;
- 1 пьезодинамик;
- 1 резистор, номиналом 10 кОм;
- 1 резистор, номиналом 220 Ом;
- 7 соединительных проводов разных цветов.
Соберите устройство по следующей схеме:
Схема устройства на макетной плате |
Принципиальная схема устройства |
С первого взгляда, датчик пламени похож на обычный светодиод, правда чёрного цвета. Но не стоит пытаться “зажечь” его, это может привести к выходу датчика из строя.
Обратите внимание:
- Длинная ножка нашего датчика подключается к земле через резистор в 10 кОм, по схеме простейшего делителя напряжения. С этой же ноги и снимается сигнал, который мы будем получать на пине A0;
- Питание подключается ко второй – короткой ножке. В качестве питания можно использовать как пин на 5 В, так и пин на 3,3 В;
- Светодиод и пиезодинамик в данной схеме, подключены стандартным образом. К каким конкретно пинам их подключать – не важно. В нашем случае, светодиод подключён к 9-му цифровому пину Arduino, а пьезодинамик – к 8-му;
- При желании, вы можете вынести датчик за пределы макетной платы. Для этого воспользуйтесь удлинительными проводами, которые идут в комплекте набора. Таким образом вы сможете направлять датчик на открытое пламя и тестировать его, не перемещая всю схему целиком.
ПРОГРАММИРОВАНИЕ
В нашем эксперименте мы будем получать аналоговый сигнал и, в зависимости от его величины, включать или выключать нашу свето-шумовую сигнализацию, состоящую из светодиода и пьезодинамика. При получении аналогового сигнала следует помнить: полученные значения будут лежать в диапазоне [0 … 1023], но в то же время практически ни один датчик не выдаст крайних значений – 0 и 1023. В нашем случае наш датчик будет регистрировать излучение с длинной волны в диапазоне [700 … 1100 нм], и конечно же, да же при отсутствии открытого пламени поблизости, датчик будет выдавать какие-то значения. Мы будем называть их фоновыми. После того, как мы направим датчик на источник огня, значения, получаемые с датчика должны значительно вырасти.
Мы должны своими глазами увидеть разницу между фоновым сигналом и сигналом, который датчик выдаст в присутствии открытого огня. Тогда мы сами сможем задать порог чувствительности – то значение сигнала, при котором фоновый шум “превращается” в сигнал регистрации открытого пламени. Давайте для начала посмотрим на фоновые значения датчика. Для этого мы будем посылать значение сигналов датчика в последовательный порт нашего компьютера, а далее видеть их на экране в мониторе последовательного порта.
Запустите Arduino IDE и выберите [Инструменты] ⇒ [ArduBlock].
Для передачи сигнала в последовательный порт компьютера, воспользуемся блоком [в последовательный порт], который находится в разделе [Коммуникации]:
Где, [message] – сообщение, которое будет передано в порт. Передать в порт можно не только текстовые сообщения, но и численное значение сигнала с какого-либо пина Arduino. Мы будем передавать в порт значение с пина A0, к которому подключен датчик пламени, поэтому часть блока с надписью [message] нам не понадобится, выбросим её, а на её место поставим блок [аналоговый порт], с номером нашего пина – Ao. При этом параметр [новая линия] отвечает за переход на новую строку. Если параметр имеет значение [ИСТИНА], то каждое новое значение, полученное с датчика будет выводиться в новой строке.
Как видите, блоки имеют разную форму. Для того, чтобы склеить их, можно использовать блок [клей] нужной формы, находящийся в разделе [Коммуникации]:
Добавим полученную конструкцию к блоку [Программа] и поставим задержку в 1000 мс, чтобы значения датчика посылались в порт 1 раз в секунду:
Алгоритм готов. Подключите собранное устройство к Arduino и загрузите в него программу. После того, как программа загружена и устройство начало работу, можно заметить как на плате Arduino началь мигать светодиод с маркировкой TX. Это индикатор передачи данных, он мигает каждый раз, когда Arduino передают данные в последовательный порт вашего компьютера. Давайте теперь посмотрим на полученные данные. Для этого, нажмите кнопку [Монитор последовательного порта]:
Перед вами откроется окно, в которое будут приходить данные с последовательного порта, к которому подключена ваша плата Arduino. Обратите внимание, для того, чтобы порт работал корректно, значение скорости передачи данных должно стоять на [9600 бод]. Если скорость передачи указана правильно, то вы начнёте 1 раз в секунду получать значения сигнала с порта A0 вашей платы Arduino:
Значения, которые посылает датчик в данный момент являются фоновыми. А теперь, давайте проверим – как датчик реагирует на открытый огонь? На следующем скриншоте можно увидеть, как изменяются данные датчика при зажигании спички в непосредственной близости от него. Зажжённую спичку мы держали на расстоянии в 30 см, 60 см, 1 м, 1,5 м и 2 м:
Как вы видите, в момент зажигания спички, значения, посылаемые датчиком, многократно возрастали. Для расстояния в 30 см, мы получили значение 834, для 60 см – 394, для 1 метра – 220, для 1,5 метров – 148, для 2 метров – 81.
Теперь давайте определим порог срабатываний датчика. Фоновые значение в “спокойном” состоянии не превышали 10-ти, для надёжности увеличим наш порог чувствительности до 20-ти. Таким образом, при аналоговом сигнале с датчика со значением 20 и выше, Arduino будет давать команду на включение сигнализации. Для проверки условия достижения порога, будем использовать блок [если]. Удалите ненужные блоки из вашего алгоритма и соберите следующую конструкцию:
Значок “>=” читается как “больше или равно”. А значит условие будет выполняться, если значения с датчика, подключённого к пину A0, будут больше или равны 20. Теперь составим алгоритм для нашей сигнализации. Здесь всё просто, нам нужно просто включать и выключать светодиод и издавать звуковой сигнал пьезодинамиком:
Наша программа готова! Загрузите её в Arduino и проверьте работу программы. Теперь, при обнаружении открытого пламени на расстоянии до 2-х метров, наша сигнализация должна мигать светодиодом и “пищать” на ноте “ля” первой октавы с задержками в 0,2 секунды.
ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОГО ВЫПОЛНЕНИЯ
Задание 1:
Добавьте к нашему пожарному извещателю кнопку включения и выключения. Дополнительно, добавьте к устройству ещё один светодиод зелёного цвета, который будет играть роль индикатора работы датчика.
Задание 2*:
Добавьте в схему устройства потенциометр и измените программу таким образом, чтобы увеличивать и уменьшать порог чувствительности датчика с помощью него, как это делается в готовых модулях с датчиком пламени.
Для того, чтобы получить сертификат, подтверждающий успешное прохождение курса – выполняйте тесты в конце занятий. | Пройти проверочный тест |