Guide to 5-Channel Flame Sensor Module
5-Channel Flame Sensor Module
Multi-directional Flame Detection for Arduino and Robotics Projects
Introduction
The 5-Channel Flame Sensor Module is an infrared detection system capable of identifying flame sources from multiple directions. With five independent IR receivers arranged in a 180° arc, it provides directional flame detection for fire prevention systems, robotics, and safety applications.
Key Features
Multi-directional
Five independent detection channels covering 180°
Analog Output
Provides intensity readings for precise flame location
Adjustable Sensitivity
Potentiometers for each channel’s detection threshold
Easy Integration
Works with 3.3V or 5V systems including Arduino
Technical Specifications
| Detection Angle | 180° (5× 36° sectors) |
|---|---|
| Detection Range | 0.8m-1.5m (depends on flame size) |
| Output Type | 5× Analog + 1× Digital |
| Operating Voltage | 3.3V – 5V DC |
| Current Consumption | <20mA per channel |
| Response Time | <100ms |
Pin Configuration

| Pin | Label | Description | Arduino Connection |
|---|---|---|---|
| 1 | VCC | Power (3.3V-5V) | 5V |
| 2 | GND | Ground | GND |
| 3 | A1 | Channel 1 Analog | A0 |
| 4 | A2 | Channel 2 Analog | A1 |
| 5 | A3 | Channel 3 Analog | A2 |
| 6 | A4 | Channel 4 Analog | A3 |
| 7 | A5 | Channel 5 Analog | A4 |
| 8 | D0 | Digital Output | D2 |
Note: Each channel has its own sensitivity adjustment potentiometer
Wiring with Arduino
// Basic Connections: // VCC → 5V // GND → GND // A1-A5 → A0-A4 (analog inputs) // D0 → D2 (digital input - optional) // For best results, place sensor 30-50cm above surface
Important: Avoid direct sunlight as it may cause false positives
Basic Detection Example
// 5-Channel Flame Sensor Basic Example
const int channels = 5;
const int pins[channels] = {A0, A1, A2, A3, A4};
void setup() {
Serial.begin(9600);
for(int i=0; i<channels; i++) {
pinMode(pins[i], INPUT);
}
}
void loop() {
for(int i=0; i<channels; i++) {
int value = analogRead(pins[i]);
Serial.print("Channel ");
Serial.print(i+1);
Serial.print(": ");
Serial.print(value);
Serial.print("\t");
}
Serial.println();
delay(200);
}
Directional Flame Detection
// Determine flame direction from 5 sensors
int getFlameDirection() {
int values[5];
int maxVal = 0;
int direction = 0; // 0 = no flame
// Read all channels
for(int i=0; i<5; i++) { values[i] = analogRead(A0 + i); if(values[i] > maxVal && values[i] > 500) { // 500 = threshold
maxVal = values[i];
direction = i + 1; // Channels 1-5
}
}
return direction;
}
void loop() {
int flameDir = getFlameDirection();
if(flameDir > 0) {
Serial.print("Flame detected from direction: ");
Serial.println(flameDir);
}
delay(100);
}
Advanced Features
Threshold Calibration
// Auto-calibration for changing light conditions
int baselines[5];
void calibrateSensors() {
for(int i=0; i<5; i++) {
baselines[i] = analogRead(A0 + i);
// Add 10% safety margin
baselines[i] += baselines[i] * 0.1;
}
}
Flame Intensity
// Calculate relative flame intensity
float getFlameIntensity() {
int total = 0;
for(int i=0; i<5; i++) {
total += analogRead(A0 + i);
}
return total / 5.0; // Average intensity
}
Digital Output
// Using the digital output pin
void setup() {
pinMode(2, INPUT); // D0 connected to D2
}
void loop() {
if(digitalRead(2) {
Serial.println("Flame detected!");
}
}
Robotic Response
// Simple robot fire-fighting logic
void respondToFlame(int direction) {
switch(direction) {
case 1: turnLeft(45); break;
case 2: turnLeft(15); break;
case 3: moveForward(); break;
case 4: turnRight(15); break;
case 5: turnRight(45); break;
}
activateWaterPump();
}
Troubleshooting
No Detection
- Adjust sensitivity potentiometers clockwise
- Check IR sensor alignment (should face outward)
- Verify flame is within 0.8-1.5m range
False Positives
- Reduce sensitivity (turn potentiometers CCW)
- Shield sensors from ambient IR sources
- Implement software debouncing in your code
Inconsistent Readings
- Ensure stable power supply (3.3V-5V)
- Check for loose wiring connections
- Recalibrate sensor baselines periodically
