📋 Overview
The MQ-9 gas sensor detector module is a versatile sensor designed to detect carbon monoxide (CO) as well as combustible gases including methane (CH₄) and LPG (Liquified Petroleum Gas). It can detect CO concentrations from 10 to 1,000 ppm and combustible gas concentrations from 100 to 10,000 ppm, making it a dual-purpose sensor for both toxic and flammable gas monitoring.
The module is built around the MQ-9 semiconductor gas sensor element mounted on a convenient breakout board with onboard signal conditioning. It provides both an analog output (AO) that varies with gas concentration and a digital TTL output (DO) that triggers when concentration exceeds an adjustable threshold set by the onboard potentiometer.
With its fast response and recovery characteristics, long service life, and reliable stability, the MQ-9 module is an excellent choice for projects that need to monitor both carbon monoxide and combustible gases with a single sensor. It is suitable for both home and industrial use.
⭐ Key Features
- Dual-Purpose Detection — Detects both carbon monoxide (CO) and combustible gases (methane, LPG) with a single sensor
- Wide Detection Range — CO: 10–1,000 ppm; Combustible gases: 100–10,000 ppm
- Dual Signal Output — Analog (AO) and digital TTL (DO) outputs for flexible integration
- Adjustable Threshold — Onboard potentiometer to set the digital output trigger level
- Indicator LEDs — Power LED and digital output (DO) status LED for visual feedback
- Fast Response & Recovery — Quick detection and return to baseline for reliable monitoring
- Simple Interface — Only 4 pins (VCC, GND, AO, DO) — no library required
- 5V Compatible — Works directly with Arduino, ESP8266, and other 5V development boards
📊 Specifications
| Parameter | Value |
|---|---|
| Operating Voltage | 5V DC |
| Maximum Power Consumption | 800 mW (160 mA at 5V) |
| Detectable Gases | Carbon monoxide (CO), methane (CH₄), LPG |
| CO Detection Range | 10–1,000 ppm |
| Combustible Gas Detection Range | 100–10,000 ppm (CH₄, LPG) |
| Analog Output (AO) | 0V to ~5V (proportional to gas concentration) |
| Digital Output (DO) | TTL level — LOW normally, HIGH when gas detected |
| Threshold Adjustment | Onboard potentiometer |
| Preheat / Warm-Up Time | ~20 seconds minimum; allow a few minutes for stable readings |
| Indicator LEDs | Power LED, DO (Digital Output) LED |
| Dimensions | Approx. 32 × 20 × 27 mm (1.25 x 0.8 x 1.1 inches) L × W × H |
| Weight | ~7 grams |
📌 Pinout
The MQ-9 module has 4 pins arranged in a single header row:
| Pin | Label | Description |
|---|---|---|
| 1 | VCC | Power supply input — connect to +5V |
| 2 | GND | Ground — connect to GND |
| 3 | DO | Digital output — TTL HIGH when gas exceeds threshold |
| 4 | AO | Analog output — voltage proportional to gas concentration (0–5V) |
📝 Note: Pin order may vary slightly between manufacturers. Always verify the silkscreen labels printed on your specific module before wiring.
🏗️ Schematic / Circuit Diagram
The schematic below shows the onboard circuit of the MQ-9 gas sensor detector module, including the sensor element, comparator (LM393), potentiometer for threshold adjustment, and indicator LEDs.

Key components on the module:
- MQ-9 Sensor Element — The cylindrical metal-mesh component that detects carbon monoxide and combustible gases
- LM393 Comparator — Compares the sensor signal against the potentiometer threshold to produce the digital output
- Potentiometer — Adjusts the gas concentration threshold for the digital (DO) output. Turn clockwise to increase sensitivity (trigger at lower concentrations), counter-clockwise to decrease
- Power LED — Illuminates when the module is powered
- DO LED — Illuminates when the digital output is triggered (gas detected above threshold)
🔌 Wiring to Arduino
The MQ-9 module connects to an Arduino Uno (or compatible board) with just 4 wires. No external components are needed.
Wiring Table
| MQ-9 Module Pin | Arduino Pin |
|---|---|
| VCC | 5V |
| GND | GND |
| AO | A0 (Analog Input) |
| DO | D2 (Digital Input) |
⚠️ Important: The MQ-9 sensor element draws up to 160 mA. When powering from an Arduino's 5V pin, make sure you are using USB power or an external supply that can provide sufficient current. If you experience unstable readings, use an external 5V power supply for the module's VCC pin (with a shared GND connection to the Arduino).
🔧 How It Works
The MQ-9 module uses a tin dioxide (SnO₂) semiconductor sensor element. Here's how it operates:
- Heating: The sensor contains a small heater coil that raises the SnO₂ element to its operating temperature. This is why the module draws relatively high current (~160 mA) and requires a warm-up period.
- Gas Detection: When carbon monoxide or combustible gas molecules contact the heated SnO₂ surface, the sensor's electrical resistance decreases. Higher gas concentration means lower resistance.
- Analog Output (AO): The onboard voltage divider converts the resistance change into a voltage signal (0–5V). Higher gas concentration produces a higher voltage on the AO pin.
- Digital Output (DO): The LM393 comparator compares the analog signal against a reference voltage set by the potentiometer. When the gas concentration exceeds the threshold, the DO pin goes HIGH and the DO LED illuminates.
📝 Note: The MQ-9 responds to both CO and combustible gases simultaneously. The analog output reflects the combined presence of all detectable gases — the sensor cannot distinguish between CO and methane/LPG on its own. If you need to identify specific gases, consider pairing the MQ-9 with a dedicated CO sensor (MQ-7) or combustible gas sensor (MQ-5) and comparing readings.
🚀 Step 1: Reading Analog Gas Levels
This basic sketch reads the analog output from the MQ-9 sensor and prints the raw value (0–1023) to the Serial Monitor. Use this to observe how the sensor responds to gas and to help calibrate your threshold.
/*
* MQ-9 CO & Combustible Gas Sensor — Analog Reading
* Envistia Mall - Product Support
*
* Reads the analog output of the MQ-9 sensor
* and prints the value to the Serial Monitor.
*
* Connections:
* MQ-9 VCC -> Arduino 5V
* MQ-9 GND -> Arduino GND
* MQ-9 AO -> Arduino A0
* MQ-9 DO -> Arduino D2 (optional for this sketch)
*/
const int gasSensorAnalog = A0; // Analog input pin
void setup() {
Serial.begin(9600);
Serial.println("MQ-9 CO & Combustible Gas Sensor - Analog Reading");
Serial.println("Warming up sensor (allow a few minutes)...");
Serial.println();
}
void loop() {
int sensorValue = analogRead(gasSensorAnalog);
Serial.print("Gas Level (raw): ");
Serial.print(sensorValue);
Serial.print(" | Voltage: ");
Serial.print(sensorValue * (5.0 / 1023.0), 2);
Serial.println(" V");
delay(1000); // Read once per second
}
How to Use:
- Wire the MQ-9 module to your Arduino as shown in the wiring table above
- Upload the sketch to your Arduino
- Open the Serial Monitor at 9600 baud
- Allow the sensor at least 20 seconds to warm up — a few minutes is recommended for stable readings
- Observe the baseline reading in clean air, then bring a gas source (such as a butane lighter with the gas valve open but unlit) near the sensor to see the value increase
🚀 Step 2: Digital Threshold Gas Detection with Alarm
This sketch uses both the analog and digital outputs. The digital output (DO) triggers when gas concentration exceeds the threshold set by the onboard potentiometer. This example also demonstrates a simple serial alarm message.
/*
* MQ-9 CO & Combustible Gas Sensor — Digital Threshold Detection
* Envistia Mall - Product Support
*
* Reads both analog and digital outputs.
* Prints an alarm when gas exceeds the
* potentiometer-set threshold.
*
* Connections:
* MQ-9 VCC -> Arduino 5V
* MQ-9 GND -> Arduino GND
* MQ-9 AO -> Arduino A0
* MQ-9 DO -> Arduino D2
*/
const int gasSensorAnalog = A0; // Analog input pin
const int gasSensorDigital = 2; // Digital input pin
void setup() {
Serial.begin(9600);
pinMode(gasSensorDigital, INPUT);
Serial.println("MQ-9 CO & Combustible Gas Sensor - Threshold Detection");
Serial.println("Warming up sensor (allow a few minutes)...");
Serial.println();
}
void loop() {
int analogValue = analogRead(gasSensorAnalog);
int digitalValue = digitalRead(gasSensorDigital);
Serial.print("Analog: ");
Serial.print(analogValue);
Serial.print(" | Digital: ");
Serial.print(digitalValue);
if (digitalValue == HIGH) {
Serial.print(" | *** GAS DETECTED! ***");
} else {
Serial.print(" | Normal");
}
Serial.println();
delay(500);
}
How to Use:
- Wire the MQ-9 module to your Arduino including both AO and DO connections
- Upload the sketch to your Arduino
- Open the Serial Monitor at 9600 baud
- Allow the sensor to warm up for a few minutes
- Use a small screwdriver to adjust the onboard potentiometer — turn it to set the threshold where the DO LED just turns off in clean air
- Introduce gas near the sensor — when the concentration exceeds your threshold, you'll see "GAS DETECTED!" in the Serial Monitor and the DO LED will illuminate
⚖️ MQ-7 vs. MQ-9 — Which CO Sensor Should You Choose?
Both the MQ-7 and MQ-9 detect carbon monoxide, so it's natural to wonder which one is right for your project. Here's a side-by-side comparison to help you decide.
| Feature | MQ-7 | MQ-9 |
|---|---|---|
| Primary Target Gas | Carbon monoxide (CO) only | Carbon monoxide (CO) + combustible gases |
| CO Detection Range | 10–1,000 ppm | 10–1,000 ppm |
| Combustible Gas Detection | No | Yes — methane (CH₄) and LPG (100–10,000 ppm) |
| Operating Voltage | 5V (cleaning) / 1.5V (measurement) | 5V (constant) |
| Heating Cycle Required | Yes — alternating 5V/1.5V cycle for best accuracy | No — constant 5V operation |
| Warm-Up Time | 48h initial burn-in; 2–5 min subsequent | ~20 seconds minimum; a few minutes recommended |
| Ease of Use | Moderate — PWM heating cycle recommended | Simple — constant 5V, no special cycle |
| CO Accuracy | Higher (with proper heating cycle) | Good for general detection |
| Gas Differentiation | CO-specific (minimal cross-sensitivity) | Cannot distinguish CO from CH₄/LPG |
| Best For | Dedicated CO monitoring where accuracy matters | Multi-gas detection where simplicity is preferred |
| Dimensions | 32 × 20 × 27 mm | 32 × 20 × 27 mm |
| Power Consumption | 800 mW max | 800 mW max |
| Price | Similar | Similar |
Quick Decision Guide
- Choose the MQ-7 if you need dedicated, accurate CO detection and are willing to implement the heating/measurement cycle in your code. The MQ-7 is the better choice for CO-specific safety applications.
- Choose the MQ-9 if you want a simpler, multi-purpose sensor that detects CO, methane, and LPG on a constant 5V supply with no special heating cycle. The MQ-9 is ideal for general gas monitoring where detecting multiple gas types with one sensor is more important than pinpoint CO accuracy.
- Use both together if you need to differentiate between CO and combustible gases. Compare readings from both sensors — if the MQ-7 shows elevated CO but the MQ-9 shows a proportionally higher reading, combustible gas is likely also present.
💡 Tips & Best Practices
- Warm-Up Time: The MQ-9 stabilizes quickly — readings become stable after about 20 seconds. However, for the most reliable baseline, allow a few minutes of warm-up time before relying on readings.
- Potentiometer Calibration: Adjust the potentiometer in clean air so the DO LED is just off. This sets your baseline. Then test with a known gas source to verify the trigger point.
- Ventilation: After gas exposure, allow the sensor to return to clean air. The readings will gradually return to baseline — this is normal recovery behavior.
- Environment Calibration: Calibrate and test the module in the specific gas environment of your application to establish baseline readings and appropriate thresholds for gas concentration alerts.
- Multi-Gas Awareness: The MQ-9 responds to both CO and combustible gases simultaneously. The analog output reflects the combined presence of all detectable gases. If you need to identify a specific gas, consider pairing the MQ-9 with other MQ-series sensors and comparing readings.
- Analog Readings: The raw analog value (0–1023) is not a direct PPM measurement. For approximate PPM conversion, you would need to calibrate against a known gas concentration and apply the sensitivity curves from the MQ-9 datasheet.
- Power Supply: If readings seem erratic, try powering the module from an external 5V supply rather than the Arduino's 5V pin. The sensor's heater draws significant current that can affect other components.
⚠️ Important Notes
- The sensor element gets hot during operation. Do not touch the metal mesh cylinder while the module is powered — it can cause burns.
- Carbon monoxide is a deadly gas. This module is intended for gas detection and indication only. It is not a certified safety device and should not be used as the sole protection against carbon monoxide poisoning or gas leaks in life-safety applications. Always use UL/CSA-listed CO detectors for life safety.
- Use of this gas sensor module in environments with gas leaks or in the presence of carbon monoxide may pose safety risks. Follow safety guidelines and standards for gas detection and ventilation in such environments.
- Do not expose the sensor to high concentrations of gas for extended periods, as this can degrade the sensor element over time.
- The MQ-9 is a broad-spectrum sensor — it responds to CO, methane, and LPG simultaneously. It cannot differentiate between gas types on its own.
- Keep the sensor away from direct airflow (fans, HVAC vents) that could dilute gas concentrations and cause missed detections.
- Do not test the sensor by exposing it to vehicle exhaust or other combustion sources in enclosed spaces — this creates a serious health hazard.
🎯 Typical Applications
- Combined CO and combustible gas leak detection
- Home gas monitoring (kitchen, furnace room, garage, water heater area)
- Industrial gas monitoring systems
- Arduino and microcontroller safety projects
- Portable multi-gas sniffers and handheld detectors
- Smart home automation — trigger ventilation fans, alarms, or shut-off valves when gas is detected
- Air quality monitoring stations
- Educational and STEM projects demonstrating analog sensor interfacing
🏪 Where to Buy the MQ-9 CO Methane LPG Gas Sensor Detector Module
This module is available at envistiamall.com.
- 📦 Fast US Shipping
- 🔄 Hassle-Free Returns
- 📧 Responsive Customer Support
📚 Additional Resources
- MQ-9 Gas Sensor Datasheet — Detailed sensitivity curves, temperature characteristics, and electrical specifications
- LM393 Comparator Datasheet — For understanding the digital output circuit on the module
- Arduino analogRead() Reference — Arduino documentation for reading analog sensor values
- How to Calibrate & Use MQ9 Gas Sensor w/ Arduino — Tutorial on Instructables
This guide is provided by Envistia Mall for educational and technical reference purposes. The manufacturer and Envistia LLC (dba Envistia Mall) are not responsible for any damages or losses resulting from the use of this product. Always follow proper electrical safety practices when working with electronic components. Specifications are based on manufacturer data and are subject to change without notice.