Componentes · 6 min de lectura

Sensor de gas MQ-2: alarma de gas y humo con Arduino

¿Cómo funciona el sensor de gas MQ-2? Detección de GLP, metano y humo, pines del módulo, precalentamiento, lectura analógica y digital, calibración de R0, la familia MQ y alarmas de gas con ESP32 y Pico.

El MQ-2 es un sensor de gas barato y muy común que detecta gases combustibles y humo en el aire. Reacciona ante el GLP (gas de bombona), el propano, el butano, el metano (gas natural), el hidrógeno, el vapor de alcohol y el humo. En los proyectos con Arduino se usa para hacer alarmas de gas para la cocina, detectores de humo e indicadores de calidad del aire. En este artículo verás paso a paso qué hay dentro del sensor, cómo conectarlo bien, por qué el precalentamiento es imprescindible y cómo interpretar los valores que lees.

Módulo sensor de gas MQ-2
Módulo sensor de gas MQ-2: bajo la malla metálica está el elemento sensor con calefactor; el módulo tiene 4 pines: VCC, GND, DO y AO.

¿Cómo funciona el MQ-2?

Bajo la malla metálica hay un pequeño elemento cerámico recubierto de dióxido de estaño (SnO₂) y un hilo calefactor que lo calienta a unos cientos de grados. En aire limpio, la resistencia del elemento es alta. Cuando le llega un gas combustible o humo, una reacción química en la superficie hace bajar la resistencia; cuanto más denso es el gas, más baja la resistencia. El módulo convierte este cambio de resistencia en tensión con un divisor de tensión: cuanto más gas, más sube la tensión en el pin AO.

CaracterísticaValor
Tensión de alimentación5 V
Corriente del calefactor~150 mA (como máximo 800 mW)
Gases que detectaGLP, propano, butano, metano, hidrógeno, alcohol, humo
Rango de medida300–10.000 ppm
PrecalentamientoUnos minutos en cada encendido, 24–48 horas la primera vez
SalidasAO (analógica), DO (digital, comparador LM393)

Pines del módulo y conexión

El sensor MQ-2 suelto tiene 6 patas, pero en los proyectos se suele usar un módulo ya montado. El módulo lleva la resistencia de carga, un chip comparador LM393, un pequeño potenciómetro para ajustar el umbral, un LED de alimentación y un LED de alarma. El pin AO da una tensión proporcional a la concentración de gas, mientras que el pin DO cambia de estado cuando el nivel de gas supera el umbral que ajustas con el potenciómetro.

Pin del móduloFunciónArduino Uno
VCCAlimentación (incluido el calefactor)5V
GNDMasaGND
AOSalida analógica, sube con el gasA0
DOSalida digital, LOW al superar el umbralD2
Parte delantera y trasera de un módulo sensor MQ
Parte trasera de un módulo de la serie MQ (izquierda): comparador LM393, potenciómetro azul de umbral y LED POWER y DOUT. El MQ-135 de la derecha usa el mismo diseño de módulo.
Para ajustar el umbral de DO, deja calentar el sensor unos minutos en aire limpio, luego gira el potenciómetro hasta el punto en que el LED DOUT justo se apague y gíralo un poco más. Así las pequeñas fluctuaciones no dispararán la alarma, pero una subida real de gas encenderá el LED al instante.

¿Por qué es importante el precalentamiento?

El elemento sensor solo responde bien cuando alcanza su temperatura de trabajo. En los primeros minutos tras el encendido, el valor de AO empieza alto y luego baja poco a poco hasta estabilizarse; las medidas tomadas en ese tiempo son engañosas. Por eso es buena costumbre no comprobar la alarma en el código durante los primeros 1–3 minutos. Si usas un sensor nuevo por primera vez, se recomienda tenerlo funcionando sin parar 24–48 horas (quemado o burn-in) para obtener valores estables. Mientras el calefactor funciona, la malla metálica se calienta bastante; es normal, pero no pongas materiales inflamables junto al sensor.

Alarma de gas y humo con Arduino

El código siguiente lee el valor analógico y lo escribe en el Monitor Serie, y además comprueba el pin DO. Si el valor analógico supera el umbral o el pin DO pasa a LOW, suena un zumbador:

Arduino (C++)
1const int AO_PIN = A0;
2const int DO_PIN = 2;
3const int BUZZER = 8;
4const int LIMIT = 400;          // analog eşik (0–1023) / analog threshold
5
6void setup() {
7  Serial.begin(9600);
8  pinMode(DO_PIN, INPUT);
9  pinMode(BUZZER, OUTPUT);
10  delay(60000);                 // 1 dk ön ısıtma / 1 min warm-up
11}
12
13void loop() {
14  int value = analogRead(AO_PIN);
15  bool gas = digitalRead(DO_PIN) == LOW;   // çoğu modülde LOW = gaz / LOW = gas on most modules
16
17  Serial.println(value);
18
19  if (value > LIMIT || gas) {
20    tone(BUZZER, 2000, 300);    // alarm sesi / alarm tone
21  }
22  delay(500);
23}

El valor 400 no es una regla fija: el valor en aire limpio puede variar entre 100 y 300 según el sensor, la temperatura y la humedad. Primero deja funcionar el sensor unos minutos, mira en el Monitor Serie el valor en aire limpio y pon el umbral claramente por encima. Para probarlo basta con acercar un momento el gas de un mechero al sensor, sin encenderlo; el valor sube en segundos.

Del valor analógico a ppm: calibración de R0

En el módulo, el sensor forma un divisor de tensión con una resistencia de carga (RL, 1 kΩ en la mayoría de los módulos). Con la tensión de AO puedes calcular la resistencia del sensor (Rs). Las gráficas de la hoja de datos no dan la concentración de gas frente a Rs directamente, sino frente a la relación Rs/R0; R0 es la resistencia del sensor en 1000 ppm de hidrógeno, y en aire limpio Rs/R0 vale aproximadamente 9,8. Así que obtienes R0 midiendo el sensor en aire limpio y dividiendo entre 9,8:

Arduino (C++)
1const float RL = 1.0;           // yük direnci (kΩ) / load resistor (kΩ)
2const float CLEAN_AIR = 9.8;    // temiz havada Rs/R0 / Rs/R0 in clean air
3float R0;
4
5float readRs() {
6  float v = analogRead(A0) * 5.0 / 1023.0;
7  if (v < 0.01) v = 0.01;       // sıfıra bölmeyi önle / avoid dividing by zero
8  return RL * (5.0 - v) / v;    // bölücüden Rs / Rs from the divider
9}
10
11void setup() {
12  Serial.begin(9600);
13  delay(60000);                 // ön ısıtma / warm-up
14  float sum = 0;
15  for (int i = 0; i < 50; i++) {
16    sum += readRs();
17    delay(100);
18  }
19  R0 = (sum / 50) / CLEAN_AIR;  // temiz havada kalibrasyon / clean-air calibration
20}
21
22void loop() {
23  float ratio = readRs() / R0;  // gaz arttıkça küçülür / falls as gas rises
24  Serial.println(ratio);
25  delay(1000);
26}

Si la relación ronda 9,8, el aire está limpio; si baja de 1, indica una concentración de gas alta. Para pasar esta relación a ppm se usan las curvas logarítmicas de la hoja de datos; librerías como MQUnifiedsensor ya las incluyen. Aun así, toma el resultado como una aproximación: la temperatura, la humedad y la edad del sensor influyen en la medida, y como el MQ-2 reacciona a muchos gases a la vez, no puede saber con certeza qué gas está midiendo. Añadir un DHT11 para vigilar la temperatura y la humedad es buena idea.

El MQ-2 es un sensor para aprender y para proyectos de afición, no un detector de gas certificado. Nunca lo uses en casa como única protección frente a fugas de gas o intoxicación por monóxido de carbono; para eso usa detectores comerciales que cumplan las normas (por ejemplo, EN 50194 o EN 50291). Piensa en tu propia alarma como un sistema adicional a ellos.

La familia de sensores MQ: ¿cuál elegir?

SensorMás sensible aUso típico
MQ-2GLP, propano, metano, hidrógeno, humoAlarma general de gas y humo
MQ-3AlcoholAlcoholímetro
MQ-4Metano (gas natural)Alarma de fugas de gas natural
MQ-5GLP, gas naturalAlarma de gas para la cocina
MQ-7Monóxido de carbono (CO)Vigilancia de CO (requiere ciclo del calefactor)
MQ-9CO y gases combustiblesCerca de estufas y calderas
MQ-135Amoníaco, benceno, humo, NOxCalidad del aire interior

El MQ-2 con el ESP32 y la Raspberry Pi Pico

El calefactor del MQ-2 necesita 5 V, así que conecta el pin VCC del módulo al pin VIN (5V) del ESP32. Pero cuando el módulo se alimenta a 5 V, la salida AO puede llegar a 5 V, mientras que las entradas analógicas del ESP32 y de la Pico admiten como máximo 3,3 V. Pon un divisor de tensión con resistencias de 10 kΩ y 20 kΩ entre AO y el pin analógico para bajar la señal a un nivel seguro. Con el ESP32 es muy fácil enviar un aviso al móvil cuando se detecta gas, o poner en marcha un ventilador mediante un relé. En la Raspberry Pi Pico, la misma alarma en MicroPython queda así:

MicroPython
1from machine import ADC, Pin
2import time
3
4gas = ADC(26)                  # GP26 (ADC0), AO bölücü üzerinden / AO through a divider
5buzzer = Pin(15, Pin.OUT)
6LIMIT = 30000                  # 0–65535 arası eşik / threshold
7
8time.sleep(60)                 # ön ısıtma / warm-up
9while True:
10    value = gas.read_u16()
11    print(value)
12    buzzer.value(1 if value > LIMIT else 0)
13    time.sleep(0.5)

Ideas de proyectos con el MQ-2

  • Alarma de gas para la cocina: una alarma que hace sonar un zumbador y enciende un LED rojo si hay una fuga de bombona o de gas natural.
  • Detector de humo: un sistema que avisa en el taller si detecta humo de soldadura u olor a quemado.
  • Ventilación automática: un circuito que enciende un extractor mediante un relé cuando sube el nivel de gas.
  • Alarma de llama y gas: combina el MQ-2 con un sensor de llama para vigilar los dos peligros a la vez.
  • Detector con avisos por ESP32: envía un mensaje de Telegram al móvil cuando se detecte gas.
  • Indicador de calidad del aire: muestra la relación medida como gráfico en una pantalla OLED.

Errores comunes y cómo solucionarlos

  • Da la alarma nada más encenderlo: el sensor aún no se ha calentado; salta la comprobación de alarma durante los primeros 1–3 minutos.
  • El valor no cambia nunca: se ha conectado el pin DO a la entrada analógica en lugar de AO, o el módulo no recibe 5 V.
  • El LED DOUT está siempre encendido: el umbral del potenciómetro está demasiado bajo; gíralo en aire limpio hasta que el LED se apague.
  • Los valores se desplazan a lo largo del día: cambian la temperatura y la humedad; vuelve a fijar el umbral en aire limpio cada cierto tiempo.
  • En el ESP32 el valor analógico está siempre al máximo: la señal AO de 5 V está conectada directamente; usa un divisor de tensión.
  • La batería se agota rápido: el calefactor consume unos 150 mA de forma continua; el MQ-2 no es adecuado para funcionar mucho tiempo con baterías.

Combinar el MQ-2 con un zumbador y un LED es la forma más sencilla de pasar de los sensores a un sistema de aviso real. En la app BlueGrays encontrarás proyectos de uso del sensor de gas, una alarma con sensor de llama y de gas y una alarma detectora de gas y humo con ESP32 y MQ-2, con esquemas y código.

Preguntas frecuentes

¿Qué gases detecta el MQ-2?

El MQ-2 es sensible al GLP, el propano, el butano, el metano (gas natural), el hidrógeno, el vapor de alcohol y el humo. Responde solo débilmente al monóxido de carbono. Como reacciona a muchos gases a la vez, por sí solo no puede distinguir qué gas hay presente.

¿Cuánto tiempo tiene que calentarse el MQ-2?

En cada encendido espera unos minutos (1–3 minutos en la práctica) para que las lecturas se estabilicen. Si usas un sensor nuevo por primera vez, se recomienda tenerlo funcionando sin parar 24–48 horas para obtener los resultados más estables.

¿MQ-2 o MQ-4 para fugas de gas natural?

El MQ-2 también detecta el metano, pero responde a muchos gases. Para el gas natural (metano) es más adecuado el MQ-4, que es más selectivo. En cualquier caso, no sustituyas un detector de gas certificado por un sensor de afición.

¿Puedo medir monóxido de carbono con el MQ-2?

El MQ-2 responde solo débilmente al monóxido de carbono. Para el CO se usa el MQ-7, cuyo calefactor alterna entre una tensión alta y otra baja; pero, por seguridad, usa siempre un detector de CO que cumpla la norma EN 50291.

¿Es normal que el sensor se caliente?

Sí. El calefactor interno mantiene el elemento sensor siempre a alta temperatura, por eso la malla metálica se nota bastante caliente al tacto. Mantén el sensor lejos de materiales inflamables y no lo toques mientras funciona.

¿Puedo alimentar el MQ-2 con baterías?

Puedes, pero no durará mucho: el calefactor consume unos 150 mA de forma continua. Una batería externa de 2000 mAh dura unas 13 horas. Puedes calcular la duración para tu proyecto con la herramienta Duración de batería; donde haga falta vigilancia continua, usa un adaptador de red.

Ver todos los proyectos

Aprende paso a paso cómo funciona el sensor de gas MQ-2, por qué necesita calentarse, cómo conectarlo a Arduino, ajustar el umbral y hacer una alarma de gas y humo con zumbador.