Sensor de Gas MQ2 con Arduino UNO
El sensor de gas MQ2 es analógico y se utiliza en la detección de fugas de gas de
equipos en los mercados de consumo y la industria. En este tutorial se utilizará un
Arduino UNO. También este sensor es adecuado para la detección de gas LP, i-butano,
propano, metano, alcohol, hidrógeno. Incluso tiene una alta sensibilidad y un
tiempo de respuesta rápido. Finalmente la sensibilidad puede ser ajustada por un
potenciómetro. Este pequeño sensor de gas detecta la presencia de gas combustible y
humo en concentraciones de 300 a 10.000 ppm. Incorpora una sencilla interfaz de
tensión analógica que únicamente requiere un pin de entrada analógica del
microcontrolador.
Con la conexión de cinco voltios en los pines el sensor se mantiene lo
suficientemente caliente para que funcione correctamente. Solo tiene que conectar
5V a cualquiera de los pines (A o B) para que el sensor emita tensión. La
sensibilidad del detector se ajusta con una carga resistiva entre los pines de
salida y tierra.
sensor de gas
Estructura y configuración de MQ-2 sensor de gas, el sensor compuesto por micro
tubo de cerámica Al2O3, capa sensible de Dióxido de Estaño (SnO2), el electrodo de
medida y el calentador se fija en una corteza hecha por el plástico y red de acero
inoxidable. El calentador proporciona las condiciones de trabajo necesarias para el
trabajo de componentes sensibles. La envoltura MQ-2 tienen 6 pines, 4 de ellos se
utilizan para recoger las señales, y otros se utilizan 2 para proporcionar
corriente de calentamiento.
Condiciones de trabajo
Voltaje de circuito: 5V
Voltaje de calentamiento: 5v
Resistencia de carga: puede ser ajustable
Resistencia del calentador: 33Ω ±5%
Consumo: menos de 800mW
sensor de gas MQ2
Características del sensor MQ-2
A continuación se muestra las típicas características de sensibilidad del MQ-2
durante varios gases en su:
Temperatura: 20 ℃,
Humedad: 65%,
Concentración de O2 21%
RL = 5kΩ
Ro: resistencia del sensor a 1000 ppm de
H2 en el aire limpio.
Rs: resistencia del sensor en varias concentraciones de gases.
MQ2 MQ-2
Se muestra la dependencia típica del MQ-2 de la temperatura y la humedad.
Ro: resistencia del sensor para 1000 ppm de H2 en el aire a 33% HR y 20
grados.
Rs: resistencia del sensor a 1000 ppm de H2 a diferentes temperaturas y
humedades
Conexiones para el sensor de GAS MQ2
La terjeta del sensor cuenta con dos salidas de datos, una digital (DO)y otra
analogica (AO). La salida digital manda una señal en estado alto cuando el sensor
llega a un nivel deseado, el cual puede ser ajustado por medio del potenciometro.
La salida analogica va aumentado el valor del voltaje en proporcion al nivel de
gas que se detecta.
sensor de gas
Si estas usando un Arduino UNO, la conexión seria como el siguiente caso, pero de
cualquier manera puedes utilizar cualquier Arduino.
sensor de gas mq
Para obtener los datos en partes por millón (ppm) es necesario hacer la conversión
con el siguiente programa.
Sensor de gas MQ2 y su código de Arduino
#define MQ1 (0) //define la entrada analogica
para el sensor
#define RL_VALOR (5) //define el valor de la resistencia
mde carga en kilo ohms
#define RAL (9.83) // resistencia del sensor en el aire limpio / RO,
que se deriva de la tabla de la hoja de
datos
#define GAS_LP (0)
String inputstring = "";
//Cadena recibida desde el PC
float LPCurve[3] = {2.3,0.21,-0.47};
float Ro = 10;
void setup(){
Serial.begin(9600);
//Inicializa Serial a 9600 baudios
Serial.println("Iniciando ...");
//configuracion del sensor
Serial.print("Calibrando...\n");
Ro = Calibracion(MQ1); //Calibrando el sensor. Por favor
de asegurarse que el sensor se encuentre en una zona de aire limpio mientras se
calibra
Serial.print("Calibracion finalizada...\n");
Serial.print("Ro=");
Serial.print(Ro);
Serial.print("kohm");
Serial.print("\n");
}
void loop()
{
Serial.print("LP:");
Serial.print(porcentaje_gas(lecturaMQ(MQ1)/Ro,GAS_LP) );
Serial.print( "ppm" );
Serial.print(" ");
Serial.print("\n");
delay(200);
}
float calc_res(int raw_adc)
{
return ( ((float)RL_VALOR*(1023-raw_adc)/raw_adc));
}
float Calibracion(float mq_pin){
int i;
float val=0;
for (i=0;i<50;i++) {
//tomar múltiples muestras
val += calc_res(analogRead(mq_pin));
delay(500);
}
val = val/50;
//calcular el valor medio
val = val/RAL;
return val;
}
float lecturaMQ(int mq_pin){
int i;
float rs=0;
for (i=0;i<5;i++) {
rs += calc_res(analogRead(mq_pin));
delay(50);
}
rs = rs/5;
return rs;
}
int porcentaje_gas(float rs_ro_ratio, int gas_id){
if ( gas_id == GAS_LP ) {
return porcentaje_gas(rs_ro_ratio,LPCurve);
}
return 0;
}
int porcentaje_gas(float rs_ro_ratio, float *pcurve){
return (pow(10, (((log(rs_ro_ratio)-pcurve[1])/pcurve[2]) + pcurve[0])));
}
view raw
Arduimo-MQ2.ino hosted with ❤ by GitHub
Funciones de Arduino:
Arduino Serial Print .
Configuración del puerto serial
Para cargar el programa e ingresar al monitor serial que ofrece el Arduino es
necesario asegurarse que el puerto COM sea el correcto. Para ello tenemos que
acceder a “Administrador de dispositivos” desde la PC y verificar que el COM que
nos muestra sea el mismo que marca el software de Arduino.
terminal arduino com
En caso de que no coincidan el que muestra el “Administrador de dispositivos” con
el marcado en el software podemos cambiarlo en la barra de herramientas.
gas_7
Una vez que este verificado el puerto serial solo damos click en la lupa que
aparece en la parte superior derecha y automáticamente abre otra ventana que
muestra el puerto serial.
terminal arduino
Nota: observe que la nueva ventana marca como título del COM de la tarjeta que
corresponde al serial monitoreado.
Para analizar el comportamiento del sensor se colocó dentro de un recipiente
cerrado y se dejó escapar gas de un encendedor y con la ayuda del puerto serial se
pudo observar los datos obtenidos de los sensores de gas LP.