El sensor de gas MQ-7, también es uno de los sensores de gas más interesantes que se encuentran disponibles en el mercado, a la par que el sensor MQ-3. Este sensor es ideal para la detección de monóxido de carbono (CO) en el aire, siendo capaz de detectar concentraciones que varían desde 20 a 2000 ppm (partes por millón).
Además de ser un dispositivo capaz de detectar concentraciones de CO en el aire, también es capaz de detectar otros gases entre los que destaca el butano, que muchos de nosotros tenemos presente en nuestras cocinas, aunque también es muy utilizado como combustible para mecheros.El único inconveniente de este sensor a la hora de detectar gas butano, es que no se sabe con certeza a qué nivel de toxicidad equivalen los valores que la salida digital del sensor nos da en presencia de gas butano, es decir, si acercamos el gas butano de un mechero al sensor durante unos instantes, su salida digital alcanza valores próximos a 500, en cambio cuando no hay presencia de gas butano en el aire el sensor baja hasta los 150, pero no se sabe si por ejemplo cuando nos da 375 si es un valor para poca, moderada, o alta toxicidad.Teniendo en cuenta los valores máximos y mínimos del sensor, he realizado la siguiente tabla para las alarmas del sensor, aunque repito que no son válidas para asegurar nuestra salud en exposición al gas butano.
Para agilizar la simulación en vez de poner como valor mínimo de 150 (**Tabla), que realmente es el que el sensor nos da cuando no hay presencia de gas butano en el aire, lo he subido a 300 para que se acorte el tiempo que tarda en volver a estabilizarse el sensor cuando dejamos de suministrarle gas con el mechero (para más información consultar los comentarios del código del programa).
Como nota aclaratoria les comento que para este ejemplo se utiliza un módulo (FC-22) con el sensor de gas MQ-7 adaptado a él, lo que facilita muchísimo las conexiones del circuito. Para aquellos que utilicéis el sensor MQ-7 por separado, tenéis que tener un cierto cuidado con las resistencias PULL-UP necesarias para el correcto funcionamiento del sensor, entre otras cosas.
Lo que vas a necesitar para realizar el proyecto es lo siguiente:
- Arduino UNO
- Cable USB tipo A-B.
- Módulo sensor de gas MQ-7 (Butano).
- Módulo LCM 1602 I2C V1.
- Display 16×2 LCD 1602.
- 3 LEDS de 3mm (Verde, Amarillo y Rojo).
- 3 resistencias de 220Ω.
- Zumbador piezoeléctrico (Activo)
- Protoboard.
- Cables de conexión.
Código del programa:
DESCRIPCIÓN DEL PROGRAMA
En este programa mostramos el nivel de gas butano que hay en el aire, cuando acercamos un
mechero sin llama (solo gas). Este nivel será mostrado mediante mensajes de texto a través
de un LCD 1602 conectado a arduino a través de comunicación I2C y también mediante 3 alarmas
luminosas (LED Verde, Amarillo y Rojo) y una alarma sonora (Zumbador).
ESQUEMA DE CONEXION
+-----+
+----[PWR]-------------------| USB |--+
| +-----+ |
| GND/RST2 [ ][ ] |
| MOSI2/SCK2 [ ][ ] A5/SCL[ ] | SCL del módulo I2C conectado al LCD 1602
| 5V/MISO2 [ ][ ] A4/SDA[ ] | SDA del módulo I2C conectado al LCD 1602
| AREF[ ] |
| GND[ ] |
| [ ]N/C SCK/13[ ] |
| [ ]IOREF MISO/12[ ] |
| [ ]RST MOSI/11[ ]~|
| [ ]3V3 +---+ 10[ ]~|
| [ ]5v -| A |- 9[ ]~|
| [ ]GND -| R |- 8[ ] |
| [ ]GND -| D |- |
| [ ]Vin -| U |- 7[ ] | LED_VERDE(+)
| -| I |- 6[ ]~| LED_AMARILLO(+)
AD | [ ]A0 -| N |- 5[ ]~| LED_ROJO(+)
| [ ]A1 -| O |- 4[ ] | Zumbador(+)
| [ ]A2 +---+ INT1/3[ ]~|
| [ ]A3 INT0/2[ ] |
| [ ]A4/SDA RST SCK MISO TX>1[ ] |
| [ ]A5/SCL [ ] [ ] [ ] RX<0[ ] |
| [ ] [ ] [ ] |
| UNO_R3 GND MOSI 5V ____________/
\_______________________/
NOTAS:
- Conexión del sensor MQ-7:
- VCC --> +5V.
- GND --> GND.
- AD --> Pin analógico A0 de Arduino.
- La alimentación y la masa del módulo LCM 1602 I2C V1 van directamente conectadas a VCC (+5V) y GND
respectivamente.
- Cátodo(-) de los LEDS (pata más corta) a GND a través de una R=220 omhs (diferente para cada uno)
- Zumbador(-) a GND.
*/
// Importar librerías
#include <Wire.h> // Librería comunicación I2C
#include <LiquidCrystal_I2C.h> // Librería LCD I2C
// Declaración del objeto
// Terminales de conexión del LCD
// addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
int ZUMBADOR = 4; // Pin digital para el zumbador
int LED_ROJO = 5; // Pin digital para el LED Rojo
int LED_AMARILLO = 6; // Pin digital para el LED Amarillo
int LED_VERDE = 7; // Pin digital para el LED Verde
int sensor_MQ7 = A0; // Pin Analógico para el sensor MQ-7
int valor_sensor; // Variable para guardar el valor del sensor
void setup()
{
pinMode(ZUMBADOR, OUTPUT); // Pin digital 4 como salida
pinMode(LED_ROJO, OUTPUT); // Pin digital 5 como salida
pinMode(LED_AMARILLO, OUTPUT); // Pin digital 6 como salida
pinMode(LED_VERDE, OUTPUT); // Pin digital 7 como salida
lcd.begin(16,2); // Inicializa el LCD para 16x2
lcd.backlight(); // Enciende el LED de fondo del LCD (backlight)
lcd.clear(); // Borra la pantalla
lcd.setCursor(0,0); // Posición 0,0 del LCD
lcd.print("<< SENSOR MQ7 >>");
delay(3000); // Retardo
}
void loop()
{
// Se lee el valor del sensor MQ-7 y se guarda en valor_sensor
valor_sensor = analogRead(sensor_MQ7);
// Se compara valor_sensor y se opera en consecuencia
// Si valor_sensor es menor que 300
if (valor_sensor < 300)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("NO HAY GAS!!!");
lcd.setCursor(0,1);
lcd.print(">VALOR MQ-7: ");
lcd.println(valor_sensor);
digitalWrite(LED_VERDE, HIGH); // LED VERDE encendido
digitalWrite(LED_AMARILLO, LOW); // LED AMARILLO apagado
digitalWrite(LED_ROJO, LOW); // LED ROJO apagado
digitalWrite(ZUMBADOR, LOW); // ZUMBADOR apagado
delay(200); // Retardo
}
// Si valor_sensor está entre 300 y 400
if (valor_sensor >= 300 && valor_sensor <= 400)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("ALERTA GAS!!!");
lcd.setCursor(0,1);
lcd.print(">VALOR MQ-7: ");
lcd.println(valor_sensor);
digitalWrite(LED_VERDE, LOW); // LED VERDE apagado
digitalWrite(LED_AMARILLO, HIGH); // LED AMARILLO encendido
digitalWrite(LED_ROJO, LOW); // LED ROJO apagado
digitalWrite(ZUMBADOR, LOW); // ZUMBADOR apagado
delay(200); // Retardo
}
// Si valor_sensor es mayor que 400
if (valor_sensor > 400)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("PELIGRO GAS!!!");
lcd.setCursor(0,1);
lcd.print(">VALOR MQ-7: ");
lcd.println(valor_sensor);
digitalWrite(LED_VERDE, LOW); // LED VERDE apagado
digitalWrite(LED_AMARILLO, LOW); // LED AMARILLO apagado
digitalWrite(LED_ROJO, HIGH); // LED ROJO encendido
digitalWrite(ZUMBADOR, HIGH); // ZUMBADOR encendido
delay(200); // Retardo
}
}
Vídeo
-
Arduino ATmega 2560 R3¡Oferta!
$20.50$19.00 -
Arduino Uno Wifi¡Oferta!
$15.00$13.00 -
Arduino Mini USB Nano V3.0 CH340 Chip Board 5V 16M + Cable¡Oferta!
$9.00$8.50