En este circuito vamos a crear un detector básico de llamas. Usaremos un sensor infrarojo de llamas, que funciona detectando una longitud de onda muy específica de unos 760 nm, que son características de las llamas, aunque son relativamente fácil de engañar y pueden dar falsos positivos con ciertas luces. Pero es barato. Cuando se encienda una llama, arduino hará sonar un buzzer y cuando estas llamas se apaguen dejarán de sonar
Circuito
Lo normal para leer este sensor de llamas es usar un divisor de tensión, donde la resistencia debería ser unos 400K o 500K, en su defecto hemos utilizado 4 resistencias de 100K conectadas en serie, y estas a su vez conectadas en serie con el sensor a través de su cátodo, y las resistencias han sido conectadas a GND. Entre la primera resistencia y el sensor hemos conectado ese punto a la puerta analógica A0 de arduino para tener una lectura clara. Y en la salida digital 9 con PWM hemos conectado el buzzer.
si utilizas un módulo como el KY026, solo tienes que retirar las 4 resistencias y el LED sensor, y conectar el + al positivo, el G a GND, y en teoría el A0 a la entrada A0, pero en mi caso, no funcionaba, y entonces conecté D0 a la entrada analógica A0 y funcionó bien, utilizando el mismo código que os muestro a continuación.
Código
El código es simple, solo tenemos que leer la caída de tensión en el divisor y mandar una señal acústica con el buzzer en cuanto el valor de la lectura de A0 sobrepase un cierto umbral.
En el void setup simplemente declaramos el pin 9 como una salida.
En el void loop hemos declarado una variable local v y le hemos asignado el valor analógico leído en A0. Luego tenemos un if que si el valor de la variable v es mayor que 10, llame a la función beep() con una pausa de 200 ms
La función beep que se llama con un valor tipo char sin signo, que es la pausa o duración de pitido y silencio, lo que hace es que escribe un señal analógica de tono 20Hz en el pin 9, espere el tiempo de la pausa, que es el número que se pasa al llamar a la función, en este caso, 200 ms, luego escribimos un tono de 0 Hz es decir, el buzzer deja de sonar, esperamos la misma pausa y vuelta a empezar.
A continuación pongo un código, para comprobar el uso del módulo KY-026 que en mi caso viene configurado o seriegrafiado al reves, es decir la salida digital es analógica y la salida analógica es la digital. He visto fotos en internet, y es posible que venga configurado al revés, aunque no sé por que motivo.
Hemos cogido el código anterior hemos añadido la inicialización del puerto serie. Hemos declarado el pin digital 7 como pin de entrada. Luego en el loop, hemos creado una variable más a la que hemos llamado x y le hemos asignado como valor la lectura en el pin 7, eso nos permite saber que hay en el pin 7 en cada momento, y lo monitoreamos con las instrucciones Serial.print que nos muestra las lecturas de la entrada analógica A0 y del pin digital 7.
El resto es igual. Cuando hemos conectado el circuito hemos descubierto que la entrada analógica se mueve entre 5 o 6 y cuando se detecta una llama esta pasa a 1021 y que la entrada digital esta siempre en 1 y cuando se detecta la llama pasa a 0 y se enciende un segundo LED en el módulo sensor.
Como ya he comentado, mi módulo viene seriegrafiado como el de la imagen de arriba, y sin embargo, para que funcione, he tenido que conectar el A0 a pin 7 y el D0 al pin A0, de la otra forma no funcionaba. Os dejo el vídeo para que lo veáis.


