detector-llama-arduino

Detector de llama con Arduino y sensor infrarrojo

¿Qué es un sensor de llama infrarrojo?

Un sensor de llama óptico es un dispositivo que permite detectar la existencia de combustión por la luz emitida por la misma. Esta luz puede ser detectada por un sensor óptico, y ser capturado por las entradas digitales y las entradas analógicas de Arduino.

La llama es un fenómeno de emisión de luz asociado a los procesos de combustión. La combustión es un proceso que desprende grandes cantidades de energía en forma de calor. Durante la reacción se generan compuestos intermedios que liberan parte de su energía mediante la emisión de luz.

El espectro de emisión de llama depende de los elementos que intervienen en la reacción. En el caso de combustión de productos con carbón en presencia del oxígeno tenemos dos picos característicos en ultravioleta en longitudes de onda de 185nm-260nm y en infrarrojo en longitudes de onda 4400-4600nm.

arduino-sensor-llama-espectro

Los sensores de llama son ampliamente utilizados en la industria. Muchas máquinas ejecutan procesos susceptibles de generar llamas, como por ejemplo procesos de mecanizado o de electroerosión. Frecuentemente se realizan en presencia de elementos combustibles como aceite o viruta.

Por este motivo se incorporan sensores de llaman como dispositivo de seguridad, permitiendo detener el proceso en caso de detectar cualquier indicio de combustión. Estos dispositivos se ajustan a las longitudes de onda características de la aparición de la llama y normalmente combinan las señales ultravioleta y de infrarrojo.

En el campo de los hobbies podemos encontrar sensores de llama baratos. Frecuentemente estos sensores constan únicamente de un sensor infrarrojo ajustado a 760-1100 nm. El ángulo de detección es de 60º, y la distancia de detección entre 0.40 m a 0.80.

Este tipo de sensores de llama infrarrojos suelen incorporar una placa de medición estándar con el comparador LM393, que permite obtener la lectura tanto como un valor analógico como de forma digital cuando se supera un cierto umbral, que se regula a través de un potenciómetro ubicado en la placa.

arduino-sensor-llama-sensitividad

Como vemos, las longitudes de onda de estos sensores baratos poco tienen que ver con las emisiones características de las llamas y de los sensores industriales. De hecho, son afectados incluso por la iluminación interior, dando lugar a numerosos falsos positivos.

Por tanto, la sensibilidad y fiabilidad de estos detectores baratos no son suficientes para considerarlos un auténtico dispositivo de seguridad, aunque pueden ser interesantes en pequeños proyectos de electrónica y con fines didácticos, como por ejemplo hacer sonar una alarma o activando un LED al detectar la llama de un mechero.

No empleéis sensores sin las certificaciones oportunas en montajes de los cuales dependan la seguridad de personas o equipamientos.

Precio

Los sensores de llama infrarrojos caseros son dispositivos baratos. Podemos encontrarlos, incluida la placa de medición, por 0,65€ en vendedores internacionales de Ebay y Aliexpress.

arduino-sensor-llama-componente

Esquema de montaje

El esquema eléctrico es sencillo. Alimentamos el módulo conectando GND y 5V a los pines correspondientes de Arduino.

Ahora si queremos usar la lectura digital, conectamos la salida DO a una de las entradas digitales de Arduino.

arduino-sensor-llama-esquema

Mientras que la conexión vista desde Arduino quedaría así,

arduino-sensor-llama-montaje

Si quisiéramos emplear el valor analógico, simplemente conectaríamos la salida AO del sensor a una entrada analógica de Arduino.

Ejemplos de código

El código necesario es igualmente sencillo. Si estamos empleando la señal digital, empleamos una entrada digital para leer el estado. En el ejemplo mostramos un mensaje por la pantalla, pero en un caso real ejecutaríamos las acciones oportunas.

const int sensorPin = 9;

void setup()
{
   Serial.begin(9600);
   pinMode(sensorPin, INPUT);
}

void loop()
{
   int humedad = digitalRead(sensorPin);

   //mandar mensaje a puerto serie en función del valor leido
   if (humedad == HIGH)
   {
      Serial.println("Detección");   
      //aquí se ejecutarían las acciones
   }
   delay(1000);
}

Si estamos empleando la señal analógica AO, leemos el valor mediante la entrada analógica, y usamos el puerto serie para mostrar el valor por pantalla. En un caso real, este valor se emplearía para ejecutar acciones, en lugar de mostrar el valor.

const int sensorPin = A0;

void setup() {
   Serial.begin(9600);
}

void loop() 
{
   int measure = analogRead(sensorPin);
   Serial.println(measure);
  
   if(measure < 500)
   {
      Serial.println("Detección");  
      //hacer las acciones necesarias
   }
   delay(1000);
}

Descarga el código

Todo el código de esta entrada está disponible para su descarga en Github. github-full