Sensor de Gas (MQ2) con Arduino UNO

Sensor de Gas analógico (MQ2)

sensor de gas

El sensor de gas analógico (MQ2) se utiliza en la detección de fugas de gas de equipos en los mercados de consumo y la industria, este sensor es adecuado para la detección de gas LP, i-butano, propano, metano, alcohol, hidrógeno, tiene una alta sensibilidad, un tiempo de respuesta rápido  Y dicha sensibilidad puede ser ajustada por el 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.

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

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 a 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

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.

Programación

 

#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])));
}

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.

 Serial Arduino

96 Comments

  1. Adrian Noviembre 15, 2014
    • Hector Torres Noviembre 16, 2014
      • diego Marzo 4, 2015
        • Hector Torres Marzo 4, 2015
          • diego Marzo 5, 2015
        • Hector Torres Marzo 5, 2015
          • diego Marzo 5, 2015
      • Luis Junio 11, 2017
  2. diego Miranda Marzo 18, 2015
    • Hector Torres Marzo 18, 2015
  3. MQ2 Marzo 22, 2015
    • Hector Torres Marzo 25, 2015
  4. Dardo Mayo 15, 2015
  5. Arturo Julio 3, 2015
    • Hector Torres Julio 8, 2015
  6. Patricio Julio 22, 2015
    • Hector Torres Julio 22, 2015
      • Patricio Julio 22, 2015
      • Patricio Agosto 1, 2015
        • Hector Torres Agosto 21, 2015
          • Ringmaster Junio 21, 2016
          • Patricio Junio 21, 2016
  7. Eduardo Agosto 21, 2015
    • Lucas Agosto 21, 2016
      • Saul Jesus Agosto 22, 2016
  8. Alejandro Octubre 17, 2015
    • Hector Torres Octubre 22, 2015
  9. sebsanta Octubre 20, 2015
    • Hector Torres Octubre 22, 2015
  10. Wilfredo Flores Noviembre 13, 2015
  11. Daniel Enero 15, 2016
    • Hector Torres Enero 19, 2016
    • alan osme Mayo 20, 2016
      • Hector Torres Mayo 23, 2016
  12. Daniel Enero 23, 2016
    • Hector Torres Enero 24, 2016
  13. Joel Perez Marzo 1, 2016
    • Hector Torres Marzo 1, 2016
      • Rafael Martinez Marzo 4, 2016
        • Hector Torres Marzo 4, 2016
          • Rafael Martinez Marzo 5, 2016
  14. Elver Marzo 7, 2016
    • Hector Torres Marzo 7, 2016
  15. Diego Mayo 5, 2016
  16. Guillermo Mayo 18, 2016
  17. Lalo Mayo 26, 2016
  18. Jonathan Mayo 26, 2016
  19. Ricardo Junio 20, 2016
    • Hector Torres Junio 20, 2016
      • Raúl Julio 6, 2016
        • Raúl Julio 6, 2016
  20. Raúl Julio 6, 2016
    • Hector Torres Julio 7, 2016
      • Raúl Julio 7, 2016
        • Hector Torres Julio 7, 2016
          • Raúl Julio 7, 2016
  21. Angel Rivas Julio 7, 2016
  22. Foe Kohei Julio 9, 2016
  23. Diego Agosto 2, 2016
    • Foe Kohei Agosto 3, 2016
  24. Diego Ortega Agosto 3, 2016
    • Saul Jesus Agosto 4, 2016
      • Diego Ortega Agosto 5, 2016
        • Saul Jesus Agosto 5, 2016
        • Julio Noviembre 15, 2016
          • Diego Ortega Noviembre 17, 2016
          • Saul Jesus Noviembre 23, 2016
          • Julio Noviembre 17, 2016
  25. Gianella Condori Noviembre 7, 2016
    • Saul Jesus Noviembre 7, 2016
    • Saul Jesus Noviembre 7, 2016
  26. Julio Noviembre 8, 2016
    • Saul Jesus Noviembre 11, 2016
  27. Andres Noviembre 11, 2016
    • Saul Jesus Noviembre 11, 2016
  28. Julio Noviembre 11, 2016
    • Saul Jesus Noviembre 23, 2016
  29. Julio Noviembre 22, 2016
    • Saul Jesus Noviembre 23, 2016
      • Julio Noviembre 23, 2016
        • Saul Jesus Noviembre 24, 2016
  30. Diego Ortega Noviembre 30, 2016
  31. Alejandro Cortes Diciembre 23, 2016
  32. Julio Enero 22, 2017
    • Saul Jesus Febrero 22, 2017
  33. Armin Rafael Febrero 27, 2017
    • Hector Torres Marzo 14, 2017
  34. Anna Marzo 14, 2017
    • Hector Torres Marzo 14, 2017
  35. ciro cruz Julio 25, 2017

Leave a Reply