Início›Módulos›Sensor de Chama
⬤ Intermédio · Grupo 6 — Infravermelhos e Ótica

🔥 Sensor de Chama

⏱️ 30 min 🧩 Sensor chama · Digital + Analógico 📦 Módulo #1

Nesta página

🔬 Sobre o Sensor de Chama

O sensor de chama deteta radiação infravermelha na gama espectral de 760–1100 nm — a frequência característica das chamas. Tem saída digital (limiar ajustável) e analógica (intensidade contínua). O potenciómetro na PCB ajusta a sensibilidade da saída digital.

Espectro
760–1100 nm
IR próximo — chamas
Saída digital
DO
LOW quando chama detectada
Saída analógica
AO
0–1023 proporcional à intensidade
Ângulo
60°
Campo de visão
Distância
~80 cm
Deteta chama de vela até ~80 cm
Sensibilidade
Ajustável
Potenciómetro na PCB
⚠️
Segurança em contexto escolar: Nunca uses fogo real para testar o sensor sem supervisão do professor. Uma fonte IR de substituição (comando TV, LED IR) activa o sensor de forma segura para testes em laboratório.

🔌 Pinagem

VCCAlimentação → 5V do Arduino
GNDMassa → GND do Arduino
DOSaída digital → D3 (LOW = chama detectada)
AOSaída analógica → A0 (intensidade IR)

💻 Deteção Digital — Alarme Simples

ex_chama_digital.ino
#define CHAMA_D  3    // Saída digital DO
#define LED_PIN  13
#define BUZZER   8

void setup() {{
  pinMode(CHAMA_D, INPUT);
  pinMode(LED_PIN, OUTPUT);
  pinMode(BUZZER,  OUTPUT);
  Serial.begin(9600);
}}

void loop() {{
  bool chama = (digitalRead(CHAMA_D) == LOW);  // LOW = detectou

  if (chama) {{
    digitalWrite(LED_PIN, HIGH);
    digitalWrite(BUZZER,  HIGH);
    Serial.println("⚠ CHAMA DETECTADA!");
    delay(500);
    digitalWrite(BUZZER, LOW);
    delay(500);
  }} else {{
    digitalWrite(LED_PIN, LOW);
    digitalWrite(BUZZER,  LOW);
  }}
}}

📊 Leitura Analógica — Intensidade da Chama

ex_chama_analogico.ino
#define CHAMA_A  A0   // Saída analógica AO
#define LIMIAR   600  // Ajusta conforme o ambiente

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

void loop() {{
  int ir = analogRead(CHAMA_A);   // Maior valor = mais IR = mais chama
  int pct = map(ir, 0, 1023, 0, 100);

  Serial.print("IR: "); Serial.print(ir);
  Serial.print("  Intensidade: "); Serial.print(pct); Serial.println("%");

  if (ir > LIMIAR) {{
    Serial.println("ALERTA: sinal IR elevado");
  }}
  delay(200);
}}
ℹ️
Nota sobre a saída analógica: na maioria dos módulos de chama, o valor analógico é inversamente proporcional à intensidade IR — menor valor = mais IR = mais chama. Testa o teu módulo com o Serial Plotter para confirmar o sentido.

🚨 Sistema de Alarme Completo

ex_alarme_chama.ino
#include <DHT.h>
#define CHAMA_D  3
#define CHAMA_A  A0
#define DHT_PIN  2
#define LED_R    12  // LED vermelho — alarme
#define LED_G    11  // LED verde — sistema OK
#define BUZZER   8
#define TEMP_MAX 35.0

DHT dht(DHT_PIN, DHT11);
unsigned long ultimoAlerta = 0;

void setup() {{
  pinMode(CHAMA_D, INPUT);
  pinMode(LED_R, OUTPUT); pinMode(LED_G, OUTPUT);
  pinMode(BUZZER, OUTPUT);
  dht.begin(); Serial.begin(9600);
  digitalWrite(LED_G, HIGH);  // Sistema OK ao início
}}

void loop() {{
  bool chama = (digitalRead(CHAMA_D) == LOW);
  float temp = dht.readTemperature();
  bool tempAlta = !isnan(temp) && temp > TEMP_MAX;

  bool alerta = chama || tempAlta;

  digitalWrite(LED_G, !alerta);
  digitalWrite(LED_R,  alerta);

  if (alerta && (millis() - ultimoAlerta > 1000)) {{
    digitalWrite(BUZZER, HIGH); delay(300); digitalWrite(BUZZER, LOW);
    ultimoAlerta = millis();
    Serial.print("ALARME:");
    if (chama)   Serial.print(" CHAMA");
    if (tempAlta) Serial.print(" TEMP_ALTA");
    Serial.println();
  }}
  delay(200);
}}

🏆 Para ir mais longe

Kit B 37 · PR.FT6_15 · Arduino UNO · Raspberry Pi · Início · led.dge.medu.pt