Codice Arduino e video: modulo sensore di fiamma per Arduino
In questo tutorial esploreremo come utilizzare un modulo sensore di fiamma con un Arduino. Il sensore di fiamma rileva la presenza di una fiamma e può attivare un allarme o un indicatore quando ciò avviene. Al termine di questo progetto avrai un sistema funzionante che risponde al rilevamento della fiamma con un avviso sonoro e un'indicazione visiva.


Il modulo sensore di fiamma funziona usando un LED a infrarossi per rilevare le fiamme. Quando viene rilevata una fiamma, il modulo emette un segnale che può essere utilizzato per attivare altri componenti, come un cicalino o un LED. Questo progetto comporterà il collegamento del sensore di fiamma all'Arduino e la scrittura di un semplice programma per gestire l'ingresso e l'uscita.
Per comprendere meglio il codice e il cablaggio, ti consiglio di guardare il video associato (nel video a 00:00).
Hardware spiegato
I componenti principali di questo progetto includono il modulo sensore di fiamma, una scheda Arduino e un buzzer o un LED per gli avvisi. Il sensore di fiamma ha quattro pin: un pin di uscita digitale (DO), un pin di uscita analogica (AO), un pin di alimentazione (VCC) e un pin di massa (GND). Il pin di uscita digitale invia un segnale HIGH quando viene rilevata una fiamma, mentre l'uscita analogica fornisce valori variabili in base all'intensità della fiamma.
L'Arduino legge l'uscita digitale per determinare se è presente una fiamma. Quando il sensore rileva una fiamma, l'Arduino può quindi attivare un allarme o una luce utilizzando un pin di uscita. La sensibilità del rilevamento della fiamma può essere regolata tramite un potenziometro integrato sul modulo.
Dettagli della scheda tecnica
| Produttore | Generico |
|---|---|
| Numero di parte | LM393 |
| Tensione logica/IO | 5 V |
| Tensione di alimentazione | 2-36 V |
| Corrente di uscita (per canale) | 20 mA |
| Corrente di picco (per canale) | 50 mA |
| Linee guida sulla frequenza PWM | Non applicabile |
| Soglie logiche d'ingresso | 0.8 V (basso), 2.0 V (alto) |
| Caduta di tensione / RDS(on)/ saturazione | 0,2 V |
| Limiti termici | 125 °C |
| Pacchetto | TO-220 |
| Note / varianti | Sensibilità regolabile |
- Assicurare un'adeguata alimentazione con tensione compresa tra 2 e 36 V per il modulo.
- Assicurati che il LED a infrarossi del sensore sia libero da ostruzioni per una rilevazione ottimale della fiamma.
- Utilizzare un dissipatore se il modulo opera vicino ai limiti di corrente di picco.
- Fai attenzione al cablaggio per evitare cortocircuiti o collegamenti errati.
- Regolare la sensibilità utilizzando il potenziometro integrato per diverse applicazioni.
- Verificare che l'uscita di allarme sia in grado di gestire il carico collegato (buzzer/LED).
Istruzioni di cablaggio


Per collegare il modulo sensore di fiamma all'Arduino, inizia collegando il pin VCC del sensore di fiamma al pin 5V dell'Arduino. Poi, collega il pin GND del sensore a uno dei pin GND dell'Arduino. Il pin di uscita digitale (DO) del sensore di fiamma dovrebbe essere collegato al pin digitale 2 dell'Arduino, che chiameremoFLAMEnel codice. Infine, collega un dispositivo di allarme, come un buzzer, al pin digitale 8 dell'Arduino, indicato comeALARM.
Accertati che tutte le connessioni siano sicure, poiché connessioni allentate possono portare a comportamenti incoerenti. Se vuoi usare l'uscita analogica, collega il pin di uscita analogica (AO) a un pin analogico dell'Arduino, come A0, ma questo è opzionale per la funzionalità di base. Nel video vengono anche discussi metodi alternativi di cablaggio (nel video a 02:30).
Esempi di codice e guida passo-passo
Il frammento di codice seguente inizializza il sensore di fiamma e configura il monitor seriale:
#define FLAME 2 // connect DO pin of sensor to this pin
#define ALARM 8 // pin 8 for Alarm
void setup() {
Serial.begin(9600);
Serial.println("Robojax.com Fire Module Test");
pinMode(FLAME, INPUT); // define FLAME input pin
pinMode(ALARM, OUTPUT); // define ALARM output pin
}Qui definiamo i pin del sensore di fiamma e dell'allarme e inizializziamo la comunicazione seriale a 9600 baud. Questo ci permette di stampare messaggi sul monitor seriale per il debug.
Successivamente, leggiamo il sensore di fiamma nel ciclo principale:
void loop() {
int fire = digitalRead(FLAME); // read FLAME sensor
if(fire == HIGH) {
digitalWrite(ALARM, HIGH); // set the buzzer ON
Serial.println("Fire! Fire!");
} else {
digitalWrite(ALARM, LOW); // Set the buzzer OFF
Serial.println("Peace");
}
delay(200);
}Questa parte del codice verifica lo stato del sensore di fiamma. Se rileva una fiamma (HIGH), attiva l'allarme e stampa "Fire! Fire!" sul monitor seriale. Se non c'è fiamma (LOW), spegne l'allarme e stampa "Peace". Il loop include un ritardo di 200 millisecondi, che può essere regolato per modificare la sensibilità della rilevazione.
Dimostrazione / Cosa aspettarsi
Quando il sistema viene alimentato, il monitor seriale visualizzerà "Robojax.com Fire Module Test" seguito da "Peace" fino a quando non viene rilevata una fiamma. Una volta rilevata la fiamma, il cicalino suonerà e il LED si accenderà, indicando una condizione di incendio. Puoi testare la sensibilità del sensore regolando il potenziometro sul modulo. Fai attenzione ai falsi positivi, ad esempio quelli causati da segnali infrarossi dei telecomandi (nel video a 04:15).
Marcatori temporali del video
- 00:00- Introduzione al modulo del sensore di fiamma
- 02:30- Istruzioni di cablaggio
- 04:15- Dimostrazione del rilevamento di fiamme
/*
* This is code for a Flame Sensor module for Arduino.
* Watch the video https://youtu.be/OZkZIP3KlHQ
* Other Arduino libraries and videos https://robojax.com
* *
Flame Sensor module for Arduino
Written by Ahmad Shamshiri for Robojax.com
on January 18, 2018 at 22:21 in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: This code is "AS IS" and for educational purposes only.
*
*
*/
/*
What does it do?
When the infrared diode sees the flame, it sends the digital output DO to
also, the level of flame is represented with the analog output.
*/
// 4 Infrared Obstacle code for Robojax.com
#define FLAME 2 // connect DO pin of sensor to this pin
#define ALARM 8 // pin 8 for Alarm
void setup() {
Serial.begin(9600);
Serial.println("Robojax.com Fire Module Test");
pinMode(FLAME, INPUT);//define FLAME input pin
pinMode(ALARM, OUTPUT);//define ALARM output pin
// Flame sensor code for Robojax.com
}
void loop() {
// Flame sensor code for Robojax.com
int fire = digitalRead(FLAME);// read FLAME sensor
if( fire == HIGH)
{
digitalWrite(ALARM,HIGH);// set the buzzer ON
Serial.println("Fire! Fire!");
}else{
digitalWrite(ALARM,LOW); // Set the buzzer OFF
Serial.println("Peace");
// Flame sensor code for Robojax.com
}
delay(200);
}
Risorse e riferimenti
-
EsternoLM393 scheda tecnica (PDF)ti.com
File📁
Nessun file disponibile.