Эта страница только для чтения. Вы можете посмотреть исходный текст, но не можете его изменить. Сообщите администратору, если считаете, что это неправильно. ====== Датчик пламени ====== ===== Описание ===== Датчик пламени позволяет определить наличие открытого пламени в зоне его видимости. Результатом работы датчика является аналоговый сигнал. В зависимости от расстояния до пламени и/или его мощности, пропорционально будет изменяться и уровень выходного сигнала. Максимальное значение ~1023 - означает, что датчик находится рядом с пламенем и/или его сила велика. В свою очередь минимальное значение ~0 - означает большую удаленность от пламени и/или его маленькую силу. При использовании не подносите датчик вплотную к открытому пламени - это приведет к его расплавлению и выходу из строя. Инфракрасный датчик улавливает диапазон волны от 760 до 1100 нм. При использовании датчика стоит быть осторожным, так как датчик улавливает и солнечный свет, и даже свет от ламп, что может привести к ложным выводам об обнаружении пламени. Пламя имеет особенность - интенсивность изменения длины волны очень высокая (от 15 до 20 Гц), что позволяет программно отсеивать свет от посторонних источников. Один из вариантов программной фильтрации можно увидеть в примере 2. ==== Технические характеристики ==== * Напряжение питания 3,3 - 5 В * Потребляемый ток 20 мкА * Длина волны 760 - 1100 нм * Угол обзора 30° ==== Физические размеры ==== * Модуль (Д х Ш х В): 30 х 20 х 6 мм ==== Плюсы использования данного датчика ==== * Недорогое практичное решение * Прост в использовании ==== Минусы использования данных датчиков ==== * Улавливают свет солнца и ламп, что может привести к ложному срабатыванию (для решения данной проблемы необходима программная обработка данных) ===== Примеры использования ===== **Пример 1.** В примере демонстрируется получение значений с цифрового и аналогового выводов. Вывод полученных значений в монитор Serial-порта. (Примеры тестировались на контроллерах Smart UNO) ^ Что нужно ^ Кол-во, шт ^ | [[httpss://smartelements.ru/collection/kontrollery/product/kontroller-smart-uno|Контроллер Smart UNO]] | 1 | | [[httpss://smartelements.ru/collection/shildy/product/sensor-shield|Sensor shield]] | 1 | | [[httpss://smartelements.ru/collection/datchiki-i-sensory/product/datchik-plameni|Датчик пламени]] | 1 | | [[httpss://smartelements.ru/collection/provoda-i-kabeli/product/shleyf-mama-mama-h3-20-sm|Шлейф х3]] | 1 | **Схема подключения:** {{ :main:sensors:датчик_пламени_.png?nolink |}} **Скетч для загрузки:** <file Arduino> const int flameSensor = A0; //пин подключения датчика пламени int flame = 0; //переменная для хранения количества света void setup() { Serial.begin(9600); //инициализация Serial порта } void loop() { flame = analogRead(flameSensor); // чтение данных с датчика //вывод сообщения Serial.print("The flame value is "); Serial.println(flame); delay(100); //задержка 100 мс } </file> **Пример 2.** В примере демонстрируется программная обработка аналогового сигнала для принятия решения о наличии пламени. Так как датчик довольно чувствителен к свету, чтобы повысить вероятность определения пламени, необходимо измерить как часто меняется длина волны. Если она меняется часто, сделать вывод о том что обнаружено пламя. (Примеры тестировались на контроллерах Smart UNO) ^ Что нужно ^ Кол-во, шт ^ | [[httpss://smartelements.ru/collection/kontrollery/product/kontroller-smart-uno|Контроллер Smart UNO]] | 1 | | [[httpss://smartelements.ru/collection/shildy/product/sensor-shield|Sensor shield]] | 1 | | [[httpss://smartelements.ru/collection/datchiki-i-sensory/product/datchik-plameni|Датчик пламени]] | 1 | | [[httpss://smartelements.ru/collection/provoda-i-kabeli/product/shleyf-mama-mama-h3-20-sm|Шлейф х3]] | 1 | **Схема подключения:** {{ :main:sensors:датчик_пламени_.png?nolink |}} **Скетч для загрузки:** <file Arduino> const int analogSignal = A0; //подключение аналогового сигнального пина const int digitalSignal = 8; //подключение цифрового сигнального пина boolean noFlame; //переменная для хранения значения об отсутствии света int flame = 0; //переменная для хранения количества света int newFlame = 0; //переменная для хранения количества света (новое измерение) void setup() { pinMode(digitalSignal, INPUT); //установка режима пина Serial.begin(9600); //инициализация Serial порта } void loop() { noFlame = digitalRead(digitalSignal); //считываем значение об отсутствии света flame = analogRead(analogSignal); // и о его количестве if (!noFlame) { //если цифровой датчик сообщает о том что есть сигнал int count = 0; //счетчик количества смены интенсивности for (int i = 1; i <= 10; i++ ){ //сделаем замер 10 раз подряд delay(10); //задержка 10 мс newFlame = analogRead(analogSignal); //получение данных о количестве света спустя 10 мс if (flame != newFlame) count++; //посчитать изменение количества света flame = newFlame; //присвоить переменной flame значение newFlame } if (count > 5) Serial.println("Fire alarm! There is flame!!!"); //сделать вывод о присутствии огня } delay(1000); //задержка 1 сек } </file>