El sensor de gases MQ-135 suele emplearse para controlar la calidad del aire en edificios, oficinas, colegios, etc... Es muy conocido en el mundo de Arduino por que existen varios fabricantes de módulos que incorporan tanto el sensor, como la circuitería adicional. Permite medir diferentes tipos de gases, entre ellos el CO2, NH3, NOx, alcohol, benceno, humo...

El sensor MQ135 nos puede servir para hacer muchos tipos de desarollo, por ejemplo:

  • Un detector de incendios
  • Un detector de la cantidad de NOx que emite un tubo de escape
  • Un dispositivo para controlar la cantidad de CO2 en el aire y prevenir el coronavirus, como en este kit que tenemos en la tienda iberotecno

Aquí te dejamos un enlace al datasheet (hoja de datos) del sensor MQ-135 fabricado por Olimex: Use introduction of HS-129 type gas sensitive components (olimex.com)

Características del sensor de gases MQ-135

Se trata de un sensor electroquímico. Tiene la capacidad de variar su resistencia en función de las partes por millón de partículas de gas en el ambiente. Dispone de un calefactor interno que tiene la finalidad de mantener estable la temperatura y la humedad dentro del encapsulado, ya que estas afectan a la sensibilidad del sensor. Por este motivo, se recomienda usar el sensor en unas condiciones ambientales óptimas y tenerlo encendido unos minutos antes de usarlo. De esta forma, conseguiremos que el calefactor interno haga su trabajo.

También es recomendable dejar encendido el sensor unas 24 horas antes de su primer uso. A este proceso se le conoce como "burning" o "quemado". Sirve para que el calefactor interno queme cualquier residuo o partícula que se haya podido depositar dentro del sensor durante su proceso de fabricación.

Dispone de una micro malla exterior, del tamaño de unas pocas micras. Sirve para impedir que partículas externas entren dentro del encapsulado del sensor. Debemos tener cuidado cuando hagamos experimentos. No debemos echar directamente al sensor líquidos o gases de mecheros que puedan despedir "gotas" dentro del mismo. Corremos el riesgo de dañarlo para siempre.

Las principales características del sensor de gases MQ-135 según su datasheet son:

  • Gran variedad de gases detectables
  • Estable y larga vida útil
  • Rápida respuesta y alta sensibilidad
  • Sencillez de uso

Cómo es el sensor por dentro. La resistencia de calibración.

La respuesta del sensor MQ-135 es diferente según el tipo de gas y su concentración. Por ello, al utilizarlo es necesario ajustar su sensibilidad. El fabricante, debe realizar los tests correspondientes para determinar el valor de dicha resistencia en función del tipo de gas a detectar. Normalmente, para detectar CO2, los fabricantes suelen emplear resistencias de 5R1. Se pueden encontrar módulos con valores diferentes, dependiendo del gas al que esté orientado el módulo en cuestión.

Podremos saber cual es esta resistencia por que es la única de todo el módulo que tendrá ese valor. Diferente al que se puede apreciar en el resto de resistencias que sirven para los LED, y circuitos adicionales del módulo como el chip comparador LM393 o el potenciómetro para la salida digital.

A esta resistencia se le denomina también RL, o resistencia de carga. Sirve para que se produzca un consumo de corriente mayor y obligarla a que circule a través del circuito del sensor como se ve en la Fig.2 de este diagrama.

El sensor (al igual que el módulo) dispone de 4 pins. Dos son llamados A y B y sirven para alimentar el sensor. A es la entrada y va a la alimentación positiva. B es la salida y va a la resistencia de carga RL y a masa. Éstos pins pueden variarse, da igual cual usemos para cada cosa. Los otros dos pins, llamados H1 y H2 sirven para la alimentación del calefactor.

El pinout del módulo MQ-135. Como conectarlo a Arduino o a tu circuito.

Hasta ahora, hemos hablado en exclusiva del sensor, pero dicho sensor requiere de circuitería adicional, por eso se vende comercialmente montado en formato de módulo. El módulo, dispone de 4 pins, los cuales nos servirán para utilizarlo de la siguiente forma.

PIN VCC: Lo conectaremos a +5V de alimentación. No todas las placas Arduino disponen de este voltaje de salida. A nosotros nos gusta usar la placa Lolin32, que si que lleva esta salida de voltaje.

PIN GND: Lo conectaremos a masa. Si usamos la placa Lolin32, debemos usar un pin de masa que no sea el de al lado del pin de +5V ya que provoca un mal funcionamiento del sensor. Por suerte la placa tiene otros. 

Pin A0: Es la salida analógica. Por ella sale un valor de tensión analógico. Esta señal, es la cantidad del valor medido por el sensor. Deberemos conectarlo a una entrada analógica de nuestra placa. Arduino, lleva internamente un convertidor analógico digital (ADC) que convierte el valor de tensión en números que van de 0 a 1023, ésta será la escala de las mediciones. Podemos emplear otras placas, como Lolin32 que llevan un ADC de mayor resolución, lo que nos permitirá tener una escala que va de 0 a 4095 y disponer de mayor rango de medición con el sensor. En esta placa emplearemos el pin llamado SP (sensor pin) especialmente equipado con el ADC de mayor resolución.

Pin DO: Éste pin es más sencillo. Su funcionamiento es "todo o nada". Si la cantidad de gases concentrados en el ambiente sube por encima del valor establecido en el potenciómetro que hay en el módulo, el pin queda cerrado. De lo contrario estará abierto. La placa lleva un LED (DO_LED) indicativo del estado de este pin (cerrado o abierto). El potenciómetro no tiene impacto directo en la sensibilidad del sensor. Tan solo sirve para establecer el margen de disparo del pin DO. Lo llevaremos a una entrada digital de nuestro Arduino o placa. O directamente podemos prescindir de su uso si no lo necesitamos.

La sensibilidad del sensor de CO2 MQ-135 según su hoja de datos.

En base a pruebas de campo que hemos realizado y a la interpretación personal que le damos a la hoja de datos o datasheet que facilita el fabricante del sensor nuestra opinión es que la sensibilidad del sensor ronda entorno al 85%. Algo más que suficiente para realizar experimentos con Arduino y aprender sobre la medición de gases en el ambiente.

Sin embargo, el datasheet no lo dice claramente. Hay que saber interpretarlo y es bastante críptico. Es un datasheet complejo de interpretar y las pruebas de laboratorio realizadas no son tampoco muy extensas ya que no aportan demasiados datos. Nosotros, más allá de las matemáticas, empleamos una escala gráfica para interpretarlo. 

Primer gráfico. Sensibilidad del sensor respecto a diferentes tipos de gases.

En el primer gráfico del datasheet, lo que podemos ver es como varía la resistencia del sensor al ser expuesto a varios gases. El gráfico tan solo muestra datos desde 10 a 100ppm, por eso decíamos antes que no se aportan muchos datos. Para saber como reaccionaría el sensor más allá de las 100 ppm, deberíamos realizar pruebas de campo o utilizar métodos Montecarlo o de estadística y probabilidad.

La conclusión y resumen de este gráfico radica en una cuestión concreta. Lo paralelas que son las líneas entre si. Vemos que la proporción es a grosso modo lineal entre las mismas. Esto determina lo sensible que es el sensor a cada uno de los gases, y la separación entre cada línea es lo que nos va a permitir medir cada uno de ellos de forma separada y distinguirlos entre si aplicando un offset de calibración. Dicho offset, está incorporado en el firmware del medidor de CO2 de iberotecno disponible en nuestro Github. Recuerda que deberás aplicarlo en el software que desarrolles para tu placa. 

Si la proporción de separación entre líneas fuera perfectamente lineal, tendríamos un sensor perfecto. La variación que aumenta en proporción no lineal y va haciendo que estas líneas sean menos paralelas es lo que determina la sensibilidad del sensor. Si nos fijamos donde está cada punto al principio y al final del recorrido del gráfico, veremos que la separación entre líneas es diferente. Esta proporción no lineal que hace irregular la separación entre las líneas es el margen de error del sensor. Aunque la separación sea diferente, podemos ver que no es sustancial y que las líneas son bastante paralelas. Podemos calcular el porcentaje exacto de desviación basándonos en la escala del gráfico. Podemos pintar dos líneas verticales que unan los puntos del principio y por otra parte los del final del gráfico, medirlas entre si, y hallar la diferencia exacta. Esto va a determinar la primera variable del porcentaje de sensibilidad del sensor. A primera vista vemos que es lo suficientemente buena y aceptable para el uso que queramos darle a nuestro sensor, en nuestro caso, al aprendizaje.

Segundo gráfico. Sensibilidad del sensor respecto a la humedad y temperatura externas.

La segunda variable en la sensibilidad final del sensor, la determinarán dos factores externos. La temperatura y la humedad. Para ello, abordamos el segundo gráfico del datasheet. Éste si que recoge una buena cantidad de datos. Muestra como varía la resistencia del sensor con temperaturas que van desde -10 a 50 ºC y con un 33% y un 85% de humedad relativa ambiental al aplicarle cierta cantidad de gas (100ppm de NH3).

Para interpretar el gráfico, vamos a fijarnos en el tamaño de los cuadrados de su cuadrícula. La altura de cada cuadrado equivale a una variación de 0.2 en la resistencia de salida (Ro). Si nos fijamos en lo que varían las líneas al principio y al final del cuadrado que va desde los 20 a los 30 ºC (una temperatura habitual en los hogares) veremos dos cosas:

La separación entre las dos líneas (azul y rosa) representa lo que la humedad relativa afecta al sensor. Aproximadamente 0.1 en su resistencia es lo que varía entre un 33 y un 85% de humedad. Lo que es un valor muy pequeño.

La altura de los puntos en su entrada al cuadrado de los 20ºC y la altura a su salida, es decir a 30ºC es lo que afecta la temperatura al sensor. Aproximadamente 0.05 en su resistencia. De nuevo un valor muy pequeño, casi despreciable.

Librerías e intentos de mejorar la precisión con matemáticas

Existen intentos de aplicar logaritmos y funciones matemáticas al programa de Arduino para que mejore su sensibilidad. Incluso alguien desarrolló una librería para Arduino que requiere seguir ciertos pasos para calibrarla.

Siendo que la sensibilidad del sensor ya es de por si bastante aceptable para nosotros, preferimos no emplear esta metodología ya que puede llegar a producir más error del que corrige, debido a la complejidad de sus cálculos, implementación, uso, etc...

Nosotros basamos nuestro software disponible en el Github de iberotecno en la lectura en bruto que proporciona el sensor y le aplicamos un offset para diferenciar el CO2 del resto de gases. En lo que respecta a su calibración, el fabricante ya se ha encargado de ello en el momento de seleccionar la resistencia RL adecuada habiendo hecho para ello sus respectivas pruebas y tests de laboratorio necesarios. Dichos tests, se realizan dentro de entornos controlados y de espacios especialmente habilitados para ello.

Los dos principales fabricantes del sensor de CO2 MQ-135. Las diferencias entre ellos.

El sensor MQ135 es de la marca Olimex. Podemos encontrar varios fabricantes que lo montan en formato de módulo para Arduino. Los dos principales que podemos encontrar son HW y Flying Fish. Ambos montan el sensor de forma similar, tienen las mismas características y los componentes son equivalentes. Sin embargo, hemos detectado diferencias entre cada uno de ellos en varios experimentos que hemos realizado. La conclusión que podemos arrojar es que hay una diferencia de unas 105ppm entre las mediciones que hace cada uno de ellos. Siendo su comportamiento y reacción ante los gases similar y de igual sensibilidad. Los de marca Flying Fish marcan menos. Esto puede ser por muchos factores diferentes, desde el tipo de estaño y su proporción de metal que se utilice en cada fábrica para las soldaduras, el proceso de producción, la sección del patillaje... etc...

Ambos fabricantes de módulos son buenos y sirven perfectamente para conseguir nuestro objetivo de experimentar con CO2.

El detector de CO2 de iberotecno. Un proyecto espectacular que puedes hacer con el sensor MQ-135.

La idea de este proyecto surgió cuando el Doctor César Carvallo del Hospital Universitario Ramón y Cajal hizo unos comentarios en "La Sexta Noche" acerca de un medidor de CO2 muy similar al que tenemos a la venta en nuestra tienda online, el modelo iberotecno Pro. El conocido Doctor, recomendó el uso de este dispositivo y comentó su coste andaba alrededor de los 150€ (en la tienda iberotecno está disponible más barato y con envío en 24 horas). Entonces nos dijimos ¿Por qué no abaratar el coste ofreciéndolo en formato Kit? Entonces nos pusimos a la obra para conseguir dar forma a un dispositivo basado en Arduino que hiciera todo y que además, tuviera conexión a Internet por medio de Wifi.

Características del detector de CO2 iberotecno

  • Fácil de montar
  • Fácil de configurar
  • Coste de fabricación barato
  • Sensibilidad suficiente para poder experimentar con gas CO2 en el ambiente
  • Que enviara los valores medidos a Internet y permitiera visualizarlos en forma de gráfico histórico
  • Poder recibir avisos de alarma en el móvil al superar cierto límite configurable
  • Aplicación móvil Android e iOS
  • LED que cambie de color según la calidad del aire

Nos pusimos manos a a la obra y desarrollamos tanto el firmware, como unas instrucciones en vídeo para que cualquiera pudiera hacerlo. Por si fuera poco, desarrollamos 3 versiones. Una con LED, otra con un relé programable y otra con pantalla OLED para poder ver directamente los valores de ppm en ella. Todas ellas con un precio muy asequible y reducido.

Aquí tienes todo lo necesario para poder montar el medidor de CO2 de iberotecno:

  • El firmware está disponible de forma gratuita para todo el mundo en el Github de iberotecno.
  • El vídeo de montaje y sus instrucciones de fabricación están disponibles en la página del producto de forma totalmente gratuita.
  • Se puede adquirir un kit de montaje con todo lo necesario y el firmware ya grabado en la placa, por lo que nos ahorraremos mucho tiempo, esfuerzo y posibles errores. Además te ofreceremos todo el soporte y garantía que necesites. Todo ello en tienda.iberotecno.com

Y por si fuera poco, los diagrama de montaje.

Montaje detector CO2 con LED

Montaje detector CO2 con relé, para controlar el encendido de un ventilador, luz, alarma, purificador de aire...