Inicio » Sensores para Arduino » Módulo sensor de gas inflamable y humo MQ-2

En el vasto universo de la electrónica DIY y la robótica, la capacidad de detectar y responder a cambios en el ambiente es crucial. El módulo con sensor MQ-2 emerge como una herramienta indispensable en esta área, permitiendo a profesionales y aficionados desarrollar sistemas capaces de identificar la presencia de gases inflamables y humo. Este sensor no solo es versátil y accesible, sino que su compatibilidad con Arduino lo hace ideal para proyectos de todo nivel.

Este artículo profundizaremos en el sensor MQ-2, ofreciendo una visión completa que abarca desde sus usos y especificaciones técnicas hasta un tutorial detallado para su implementación con Arduino. Exploraremos su estructura física, cómo se integra con la plataforma Arduino y cómo puedes comenzar a utilizarlo en tus propios proyectos para monitorear la seguridad ambiental, ya sea en casa, en la oficina o en entornos industriales.

¿Qué es el módulo MQ-2?

Se trata de un módulo compatible con Arduino que lleva integrado un sensor MQ-2. Se trata de un sensor de la familia MQ destinado a detectar gases inflamables y humo en el ambiente.

Módulo sensor de gas inflamable y humo MQ-2

Imagina que es una nariz electrónica que puede oler gases como el propano, butano, metano (que es el principal componente del gas natural), y humo, entre otros.

El sensor MQ-2 tiene un material en su interior que es sensible a estos gases. Cuando este material entra en contacto con los gases, cambia su conductividad eléctrica; es decir, la manera en la que permite pasar la electricidad. Esta variación en la conductividad se mide con un circuito eléctrico conectado al sensor, y esta medida se usa para estimar cuánto gas hay en el aire.

¿Para qué sirve el módulo MQ-2?

Este tipo de sensor es muy útil en sistemas de seguridad para detectar fugas de gas o la presencia de humo, ayudando a prevenir incendios o explosiones. Es como tener un guardián que constantemente está oliendo el aire para asegurarse de que todo está seguro.

A continuación puedes ver algunos de los usos principales de este sensor:

  • Detección de fugas de gas: Es comúnmente utilizado en sistemas domésticos e industriales para detectar fugas de gases como butano, propano y metano. Esto ayuda a prevenir accidentes y asegura la seguridad de las instalaciones.
  • Monitores de calidad del aire: El MQ-2 se puede utilizar para monitorizar la calidad del aire en ambientes cerrados, detectando la presencia de gases potencialmente peligrosos o niveles elevados de humo.
  • Sistemas de alarma contra incendios: Debido a su capacidad para detectar humo, el sensor MQ-2 es útil en sistemas de alarma contra incendios, ayudando a alertar sobre situaciones de emergencia antes de que se descontrolen.
  • Control de ventilación: En áreas como cocinas industriales o laboratorios químicos, el MQ-2 puede controlar la activación de sistemas de ventilación cuando detecta niveles elevados de gases inflamables, manteniendo así un ambiente seguro.
  • Proyectos de electrónica DIY: Los entusiastas de la electrónica y la robótica a menudo utilizan el MQ-2 en proyectos caseros para aprender más sobre sensores de gas y sistemas de seguridad.

Estos usos hacen del sensor MQ-2 una herramienta valiosa en muchas aplicaciones que requieren vigilancia constante de gases inflamables y humo para mantener estándares de seguridad y prevenir accidentes.

Especificaciones del módulo MQ-2

Estructura física

vista frontal del módulo MQ-2
Vista frontal
vista trasera del módulo MQ-2
Vista trasera
  • VCC: Pin de alimentación. Lo conectaremos a 5V.
  • GND: Pin de tierra.
  • D0: Salida digital.
  • A0: Salida analógica
  • DOUT LED: Led detección gas en modo digital.
  • POWER LED: Led de encendido. Se ilumina al encender el módulo.
  • DPOT: Potenciómetro digital. Permite calibrar la sensibilidad de detección digital.

Especificaciones técnicas

En la siguiente tabla puedes consultar todas las especificaciones del módulo MQ-2:

Voltaje de funcionamiento5V
Rango de detección200ppm a 10.000ppm
Gases detectadosGases inflamables y humo
SalidaAnalógica y digital
Tiempo de precalentamiento24h
Resistencia de carga20kΩ
Resistencia calefactora33Ω+5%
Resistencia de detección10kΩ – 60kΩ
Consumo900mW
Corriente de operación150mA
Dimensiones33 mm x 21 mm x 22 mm

¿Cómo funciona el módulo sensor MQ-2?

El MQ-2 es un sensor diseñado para detectar diversos gases inflamables y humo en el aire. Su funcionamiento se basa en un componente central llamado elemento sensor, que es básicamente un pequeño tubo cerámico con un material conductor (generalmente óxido de estaño) recubierto en su superficie. Este material es muy sensible a los gases que se quieren detectar.

Dentro del tubo cerámico hay un alambre calefactor. Al encender el sensor, este alambre se calienta y, a su vez, calienta el material conductor. Este calentamiento es necesario para que el material conductor pueda interactuar eficazmente con los gases presentes en el aire.

alambre calefactor MQ-2

Una vez que el material conductor está caliente, los gases del ambiente empiezan a adherirse a su superficie. Este proceso se llama adsorción.

La adsorción de los gases altera la resistencia eléctrica del material conductor. Básicamente, cuando ciertos gases se unen al material, facilitan el flujo de electrones a través de él, reduciendo su resistencia eléctrica. En el caso de otros gases, podría aumentarla.

Un circuito electrónico conectado al sensor mide esta resistencia. Los cambios en la resistencia indican la presencia y concentración de gases específicos. Esta información se convierte en una señal eléctrica que puede ser leída por un microcontrolador u otro dispositivo, para indicar si hay una concentración peligrosa de gas en el aire.

En resumen, el sensor MQ-2 funciona calentando un material conductor que cambia su resistencia eléctrica al interactuar con gases específicos. Esta variación de resistencia se mide para determinar la presencia y concentración de estos gases en el aire.

¿Cómo conectar el módulo MQ-2 con Arduino?

Materiales

Estos son los materiales que necesitamos para conectar el módulo MQ-2 a nuestro Arduino:

Una placa Arduino (Yo usaré Arduino UNO)
Un módulo MQ-2
Un led de 5 mm
Una resistencia de 330Ω
Cables
Una protoboard
Un ordenador con el IDE de Arduino instalado

Conexiones

En la siguiente imagen puedes ver las conexiones necesarias para utilizar el módulo MQ-2 con Arduino:

conexiones módulo MQ-2 con Arduino

Led

Para que sea más visual he incluido un led que se iluminará cuando el sensor detecte un gas o humo.

Como puedes ver, el ánodo del led está conectado al pin 4 digital y el cátodo va conectado a tierra con una resistencia de 330ohm.

Módulo MQ-2

Los 2 primeros pines son los correspondientes con la alimentación (VCC y GND). El pin VCC va conectado a 5V (cable rojo) y el pin GND va conectado a tierra (cable negro).

Los otros dos pines son las salidas a través de las cuales se envía la señal a nuestro Arduino.

El pin D0 (cable azul) es el digital, por eso lo he conectado a un pin digital. He elegido el pin 2 de Arduino, pero puedes conectarlo a cualquiera.

El pin A0 (cable verde) es la salida analógica, por eso lo he conectado al pin A0 de Arduino. Si prefieres usar otro pin analógico, no hay problema.

No es necesario conectar las dos salidas del módulo. Si quieres trabajar con datos analógicos entonces conecta solo A0. Si, por el contrario, solo necesitas que el sensor actúe como un interruptor (pulso bajo cuando detecta gas o humo y pulso alto cuando no), entonces utiliza la salida D0.

Indistintamente de la opción que elijas, en el siguiente apartado te voy a explicar el sketch tanto para analógico como para digital.

¿Cómo programar el módulo MQ-2 con Arduino?

Vamos a implementar dos sketch. Uno para la salida analógica y otro para la salida digital. Así veremos las dos formas de usar el módulo MQ-2.

Salida analógica

Este es el sketch necesario para leer los datos del módulo a través del pin analógico de nuestro Arduino:

//DECLARACIONES
const byte MQ_2 = A0;
const byte LED = 4;

//CONFIGURACIÓN
void setup() { 
  Serial.begin(9600);
  pinMode(LED, OUTPUT);
}

//FUNCIÓN LOOP
void loop() {
  int lectura = analogRead(MQ_2);
  int valor = map(lectura,0, 1023, 0, 100);
  digitalWrite(LED, valor / 50);
  
  Serial.print(lectura);
  Serial.print(" - ");
  Serial.print(valor);
  Serial.println("%");
  
  delay(200); 
}

Declaraciones

La constante MQ_2 es el pin analógico de la placa Arduino en el que está conectada la salida A0 del módulo. En mi caso es el pin A0.

const byte MQ_2 = A0;

La otra constante a la que he llamado LED, es el pin digital en el que está conectado el led. En mi caso el pin 4.

const byte LED = 4;

Configuración

Dentro de la función setup() vamos a inicializar el puerto serie para poder mostrar posteriormente las lecturas en el monitor serie y comprobar los resultados:

Serial.begin(9600);

También vamos a configurar el pin digital en el que hemos conectado el led como salida (OUTPUT), para poder encenderlo y apagarlo. Nos ayudaremos de la constante LED que declaramos anteriormente:

pinMode(LED, OUTPUT);

No es necesaria ninguna configuración más puesto que el pin analógico siempre es entrada y no es necesario especificar el modo como ocurre con el pin digital.

Función loop

Dentro de la función loop tenemos que hacer la lectura del pin analógico. Para ello usamos la función analogRead() y nos ayudamos de la constante MQ_2 que declaramos anteriormente:

int lectura = analogRead(MQ_2);

El resultado será un valor comprendido entre 0 y 1023. Los guardamos en una variable de tipo entero para poder realizar algunas operaciones con el dato. Cuanto más alto sea el valor leído mayor concentración de gas o humo hay en el ambiente y, por el contrario, cuanto menor sea el valor, menor concentración.

Lo siguiente es calcular la concentración de gas a partir del dato obtenido en la lectura:

int valor = map(lectura,0, 1023, 0, 100);

El valor 0 es un 0% y el valor 1023 es el 100%. Teniendo en cuenta esto podemos calcular el porcentaje de gas leído ayudándonos de la función map(). El primer parámetro es la variable lectura, donde habíamos guardado el valor leído. El segundo y tercer parámetro representan el rango de valores que podemos obtener a través del pin analógico (entre 0 y 1023). El cuarto parámetro y el quinto representan el rango de la equivalencia que queremos obtener, en este caso un porcentaje entre 0% y 100%.

La función devolverá la equivalencia en porcentaje del valor almacenado en la variable lectura y la guardaremos dentro de la variable valor.

Ya tenemos el porcentaje de gas detectado. Ahora vamos a encender el led cuando tengamos un 50% o más de concentración:

digitalWrite(LED, valor / 50);

Como el valor calculado estará comprendido entre 0 y 100, si lo dividimos entre 50 obtendremos 0 cuando sea menos a 50 y mayor que 0 cuando sea 50 o mayor.

Cundo el resultado sea 0, la función digitalWrite() apagará el led, y cuando sea 1 lo encenderá. Si lo prefieres puedes usar un if, pero yo creo que es más cómodo así y reducimos bastante el código.

Con esto ya tendríamos la lógica completa. Las siguientes instrucciones simplemente muestran en el monitor serie los resultados:

Serial.print(lectura);
Serial.print(" - ");
Serial.print(valor);
Serial.println("%");

Simplemente mostramos la lectura analógica y al lado, separado con un guión (-) el porcentaje calculado.

Salida digital

El siguiente sketch nos permite leer la salida del sensor a través del pin digital:

//DECLARACIONES
const byte MQ_2 = 2;
const byte LED = 4;

//CONFIGURACIÓN
void setup() { 
  pinMode(MQ_2, INPUT);
  pinMode(LED, OUTPUT);
}

//FUNCIÓN LOOP
void loop() {
  byte lectura = digitalRead(MQ_2);
  digitalWrite (LED, !lectura);
  delay(200); 
}

La precisión con la que detecte el gas dependerá de cuánto gires el potenciómetro integrado en el módulo. Haz diferentes pruebas hasta que consigas el resultado que buscas.

Declaraciones

La primera constante es el pin digital en el que está conectado el módulo. En mi caso es el pin 2:

const byte MQ_2 = 2;

La segunda constante es el pin digital en el que está conectado el led. En mi caso es el pin 4:

const byte LED = 4;

Si has usado otros pines diferentes simplemente cambia los valores.

Configuración

La configuración en este caso es muy sencilla. Simplemente hay que configurar los pines digitales para que utilicen el modo correcto.

El pin del sensor debe ser una entrada (INPUT), porque vamos a leer:

pinMode(MQ_2, INPUT);

El pin del led debe estar configurado como salida (OUTPUT), puesto que vamos a encenderlo y apagarlo:

pinMode(LED, OUTPUT);

Utiliza las constantes MQ_2 y LED para que sea más intuitivo.

Función loop

Dentro de la función principal vamos a leer el pin MQ_2, es decir, el sensor:

byte lectura = digitalRead(MQ_2);

Como es una lectura digital solo hay dos valores posibles: HIGH y LOW.

Cuando el sensor detecte un gas o humo (recuerda calibrarlo con el potenciómetro) enviará valor LOW al Arduino. Y cuando no detecte ni gas ni humo, entonces enviará HIGH.

Recuerda que HIGH tiene valor 1 y LOW tiene valor 0. Por eso guardo el dato en una variable de tipo byte. También puedes usar bool si lo prefieres.

Una vez guardado el dato en la variable lectura, calculamos el valor complementario y lo mandamos al pin donde está conectado el led:

digitalWrite (LED, !lectura);

Recuerda que la ausencia de gas nos devuelve valor HIGH, por lo que debemos enviar al led valor LOW. En cambio, cuando el sensor detecta gas o humo devuelve valor HIGH, pero nosotros debemos enviar LOW al led. Como puedes comprobar es siempre el valor contrario, es decir, el complementario.

Utilizando el operador not (!) conseguimos el valor complementario del dato leído y podemos enviarlo directamente al pin del led.

También puedes usar una instrucción if, pero esto es mucho más cómodo y rápido.

El delay() del final es simplemente para ralentizar un poco las repeticiones de la función loop. Esto ya lo hemos hecho en más ocasiones:

delay(200);

La prueba final

Es hora de probarlo. Conecta todos los componentes como vimos anteriormente y carga el sketch que quieras probar.

Recuerda, si vas a usar el modo analógico, no es necesario que conectes el pin D0 del módulo al Arduino. Si lo que quieres es usar el modo digital no es necesario que conectes el pin A0. También tendrás que calibrar la precisión con el potenciómetro.

¿Todo listo? Pues ahora carga el sketch y acerca un mechero sin que haga llama, solo presiona la salida del gas.

Si estás usando el modo analógico verás los porcentajes en el monitor serie y se encenderá el led cuando supere el 50%.

Si estás probando el modo digital se encenderá el led que hemos conectado y también lo hará el DOUT LED del módulo.

Espero que te haya funcionado 😉​.


Te avisaré cuando publique nuevo contenido en paraarduino.com y en mi canal de YouTube (@ParaArduino).

No hemos podido validar tu suscripción.
¡Se ha realizado tu suscripción!

Newsletter

Suscríbete para que te avise cuando publique nuevo contenido.

Usamos Brevo como plataforma de marketing. Al hacer clic a continuación para enviar este formulario, consiente que la información proporcionada sea transferida a Brevo para su procesamiento de acuerdo con sus términos de uso