Ардуино: инфракрасный датчик огня

На этом уроке мы разберем подключение к Ардуино Уно весьма нестандартного датчика, который призван помочь нам в обнаружении открытого пламени!

Конечно, пламя можно обнаружить, например, с помощью термодатчика. Ведь все что горит, часто нагревается до огромной температуры. Но у этого варианта есть два отрицательных момента. Во-первых, термодатчик может пострадать, если его подносить очень близко к огню. Да и не очень удобно это — тыкаться во все датчиком. А во-вторых, термодатчик не сможет зафиксировать именно пламя! То есть детектирование будет опосредованным, что не всегда приемлемо.

Другой вариант — использовать тепловизор на основе микроболометров. Такие устройства позволяют в реальном времени строить температурную карту всех видимых поверхностей. Но тепловизор слишком дорогой для хобби-проектов, и пламя он опять-таки детектирует не напрямую.

Применение

Robot_Candle

Датчик огня используется в роботах-пожарных. Для этих роботов устраиваются целые соревнования, задача участников в которых заключается в поиске и тушении огонька в лабиринте.

Именно наш датчик огня позволит в будущем создать простого и эффективного робота-пожарного для подобных соревнований.

Инфракрасный датчик огня улавливает излучение в диапазоне 760 — 1100 нм, свойственное пламени свечи, например. На практике, такой датчик реагирует не только на пламя, но и на солнце, и даже на комнатные лампы. Чтобы избежать паразитной засветки, фотодиод необходимо закрывать с боковых сторон непрозрачным материалом. Для лучшей фильтрации посторонних источников света, при детектировании пламени таким датчиком, применяют алгоритм детектирования низкой частоты. Это возможно благодаря тому, что пламя свечи меняет свою интенсивность с частотой 15-20 Гц.

Список необходимых компонентов

Для выполнения простого примера с инфракрасным датчиком огня, потребуется Ардуино-совместимый контроллер, зуммер и немного проводов вилка-розетка. Необходимые компоненты можно добавить в корзину прямо здесь, и затем оформить заказ в нашем интернет-магазине.

В корзину
В корзину
В корзину
В корзину

Подключение

У цифрового датчика пламени, который мы подключаем, есть всего три вывода:

  • Vcc — питание +5В;
  • Gnd — земля;
  • Out — сигнал.

Vcc и Gnd датчика подключаем к соответствующим выводам Ардуино Уно, а Out бросаем на любую свободную ногу. В нашем случае, соединяем Out c цифровым входом №2. Принципиальная схема подключения выглядит следующим образом.

flame_схема

Внешний вид макета

flame_bb

Теперь, когда датчик подключен, можно смело писать программу!

Программа

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

int flamePin = 2;
int buzzPin = 11;

void setup() {
  pinMode( flamePin, INPUT );
  pinMode( buzzPin, OUTPUT );
}

void loop() {
  if( !digitalRead( flamePin ) )
    digitalWrite( buzzPin, HIGH );
  else
    digitalWrite( buzzPin, LOW );
}

Записываем программу на Ардуино Уно, достаем зажигалку с крестовой отверткой, и готовимся к последнему этапу — настройке чувствительности датчика.

Дело в том, что на плате датчика пламени есть подстроечный потенциометр, с помощью которого мы и будем настраивать порог чувствительности. Для этого, включаем Ардуино Уно в USB, чтобы запитать нашу схему, поджигаем огонь в 10 сантиметрах от датчика, и начинаем крутить потенциометр, пока зуммер не запищит.

Если правильно собрать схему, залить программу, и настроить чувствительность, получится примерно следующее.

До встречи, на следующем уроке!


Изменено:

Ардуино: инфракрасный датчик огня: 14 комментариев

  1. Робот-пожарник должен кататься и разводить огонь, а тушить призваны пожарные. *зануда_мод_офф*

  2. Спасибо! Почти то, что я ищу. Подскажите, а если необходимо наоборот, сигнализировать отсутствие пламени? Как это сделать? Спасибо!

  3. Собственно здравствуйте, а допустим мне на выходе нужно получить дискрет (т.е. что-бы определенное реле замкнуло при появлении пламени, и держало его пока оно не пропадет) возможно такое сделать? И допускается ли использовать вместо Arduino UNO — NANO, занимаемое место критично. Спасибо заранее.

    • По количеству выводов Nano идентично с Uno (за исключением пары дополнительных аналоговых входов у Nano), так что можно смело использовать. Насчет реле, то тут два варианта. Первый — просто подключить датчик напрямую к реле. Второй — использовать программу из урока. Только подключить не зуммер, а реле к ноге №11.

      • На счет зуммера тоже думал что можно так сделать, откровенно говоря казалось что это топорно будет выглядеть). Про подключение датчика напрямую к реле вы имели в виду последовательно после датчика управляющую обмотку включить? Чтобы при открытии фото-датчика через обмотку реле начал протекать ток, и оно сработало?

        • Почти так. Напрямую выход датчика к катушке реле подключать не стоит. Обычно в промежутке ставят транзистор в режиме ключа, так как катушке нужно достаточно много тока. Плюс, дополнительно можно сделать опторазвязку. Вообще, на стандартных модулях реле (которые на плате) уже есть и транзистор и оптопара.

    • Так просто крутите серво мотор в разные стороны, постоянно проверяя значение на датчике. Как только датчик дает сигнал — прекращаем крутить серву и включаем насос.

  4. Здравствуйте. Мне тоже нужен датчик на отсутствие пламени (для контроля за газовым котлом). Нет ли у вас уже готового решения? Писать программы и программировать я не умею.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

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