bclose

Sensores de C02

Midiendo concentraciones de CO2 y VOCs

Cliente Bluetooth BLE con ESP32

 

 

  • Introducción a los sensores de Sensores de C02.
  • Sensor MGS881 de C02 y VOCs.
  • Ejemplo de conexion y programa de lectura.
 

 

Material requerido.

 

 Tienda EspañaTienda Mexico
 Node MCU boardUn  NodeMCUUn  NodeMCU
 Imagen principalUn sensor CCSD881

 

Midiendo concentraciones de CO2

 

De un tiempo a esta parte, todo el mundo quiere medir concentraciones de gases. Estamos muy sensibilizados con nuestra salud y las administraciones públicas estatales y europeas, no paran de sacar normativas forzando a controlar la calidad del aire en las zonas de acceso público, lo que no está mal, pero acaba generando una cierta psicosis de inseguridad entre los peatones, ciertamente indocumentados en estos menesteres y con poca información relevante para evitarlo.

Además, está el tema del calentamiento global causado por las emisiones industriales de C02 a la atmósfera, y se ha escrito tanto que el común mortal considera el C02 poco más o menos un asesino en serie, y unos terroristas a los que lo generan.

No es de extrañar que el deseo de controlar las emisiones de C02 se haya extendido y que por todos sitios aparezcan proyectos que quieren medir sus concentraciones en los lugares más insospechados y para eso, no cabe duda de que los Arduinos y similares se prestan especialmente bien.

En este humilde tutorial vamos a ver un par de estos sensores por encima y haremos un ejemplo con uno de ellos para medir concentración de C02 y de componentes volátiles orgánicos, (Volatile Organic Compounds o VOC) que pueden afectar a la salud humana si se produce una exposición excesiva.

Tradicionalmente los sensores de C02 son caros, pero en los últimos tiempos algunos han ido bajando de precio y han aparecido otros que nos ofrecen medición de las concentraciones razonablemente precisas a precios más asequibles.

En esta sesión presentaremos uno de estos últimos, el CCS811. Vemos sus características y haremos un ejemplo básico de como conectarlo a nuestros Arduino (A varios de ellos, de hecho). Así que poneros cómodos que vamos al lío.

 

Sensores de CO2

 

Normalmente los sensores de gases como los que hemos visto en algún tuto anterior, suelen ser analógicos, es decir que te dan una salida en milivoltios proporcional a la concentración del gas diana que detectan. Naturalmente, todos pensamos que ese valor que leemos con nuestros ADCs nos permite calcular la concentración del gas diana con precisión… pero esto no es así.

Principalmente porque la sensibilidad del detector varía bastante con los cambios de humedad y temperatura, por ejemplo, y para complicar las cosas más, los sensores no reaccionan sólo a un gas en concreto, sino en general a familias de gases semejantes, con lo diferenciar si ha detectado un gas u otro es una tarea imposible (Con estos sensores baratos)

Pero el mercado demanda mediciones precisas de los gases que considera dignos de supervisar, y como no podía ser de otra manera, siempre hay fabricantes que suministran esas medidas en ppm (Partes por millón) que parece algo indiscutible, aunque en la realidad tienen sus más y sus menos.

El sensor que nos ocupa hoy, el CCS811, es un buen ejemplo. Es un dispositivo con muchas ventajas que es sensible a lo que llamamos Volatile Organic Compounds, VOCs para abreviar que es sensible, al CO2, ciertamente , pero también a otra serie de componentes como aldehídos, cetonas, alcoholes , aminas y otros compuestos aromáticos además de al monóxido de carbono.

Como no resulta fácil saber qué gases hay con detalle, el sensor incorpora un microprocesador que le permite calcular por un lado lo que llama TVOC o Total Volatile Organic Compound, que es algo así como un valor equivalente de todo en conjunto con especial interés en el análisis de interiores para que puedas cumplir con la legislación.

Y por otro lado mide lo que llama concentración de COequivalente, que es algo así como realizar ciertos cálculos y estimaciones para que puedas tener un numero clarito de CO2 en ppm, que es lo que buscábamos desde el principio por imperativo legal.

Releyendo las líneas de arriba me ha quedado un poco más cínico de lo que pretendía, ya que si lo que quiere es hacer un control de calidad de aire en un interior habitable, este es tu sensor. Te dará lecturas razonables de las concentraciones de CO2 y de TVOCs actuales, pero desde luego esto no es un sensor específicamente que mida dióxido de carbono y nada más. Para eso hay otros sensores (En este rango de precio. Con más pasta hay lo que quieras, pero son caritos) , el principal es el sensor MG811, que es más selectivo pero que tiene el enorme inconveniente de ser analógico con los problemas que conlleva, y costar el doble.

 

El Sensor de CO2 CCS811

 

Dentro de los sensores de bajo coste y prestaciones razonables el CCS811 es un buen ejemplo de lo que han mejorado los sensores en los últimos años.

 
  • Es un sensor digital que incluye un micro para procesar los datos.
  • Nos entrega medidas en ppm (Partes por millón)
  • Se comunica vía I2C lo que es ideal para nuestros Arduinos.
  • Proporciona medidas de concentraciones de CO2 y TVOC.
  • Tiene un sensor de temperatura interior para corregir las lecturas.
  • Es de muy bajo consumo y precio.   

Para resumir, es un sensor ideal, que se conecta fácilmente mediante I2C a nuestro Arduino, y nos envía lecturas bajo demanda mediante la librería que los amigos de Adafruit nos proporcionan, y que es de agradecer.

Para leer las concentraciones basta con conectar y leña al I2C y para eso vamos a empezar con un ejemplo básico viendo como se hace.

 

Conectando el sensor CCS811

 

La conexión de este señor es trivial sin más que conocer los pines que corresponden al I2C en tu modelo. Por ejemplo, voy a usar un NodeMCU V2, (Que es uno de mis favoritos e injustamente arrinconado por el ESP32) y no puede ser más sencillo, según esta tabla de conexiones:

NodeMcu3V3GNDSCLSDA
CCS811VccGNDD1D2
 
  • Según el manual del sensor habría que conectar el pin WAK a GND para comunicarnos, pero a mi me ha funcionado a la primera dejándolo al aire.    
Conexion sensor CO2

Si quieres conectar un Arduino UNO sería:

Arduino UNO5VGNDA5A4
CCS811VccGNDSCLSDA

 

Programa de control

 

Vamos a usar la librería de Adafruit para el CCs811 y puedes instalarla directamente desde el administrador de bibliotecas o librerías:

Consola arduino

Y ahora escribe CCS811 en la pantalla que aparece y pulsa Intro:

instalando desde el administrador de librerias

Instala la primera librería que te aparece y ya estamos. Si quieres probar tus conexiones y sensor, basta con que cargues el ejemplo básico para leer el sensor que te acabas de instalar en los ejemplos:

Cargando programa de ejemplo

Y eso es todo. Compila y sube tu programa a tu Arduino y en seguida recibirás lecturas como estas en la consola:

Consola arduino

Debes tener en cuenta que el fabricante recomienda despreciar las primeras medidas al arrancar porque como puedes ver no son demasiado fiables e incluso recomienda tener el sensor enchufado al menos un día para que se vaya calentando.

Como norma, la concentración de C02  al aire libre rural es de unas 360 ppm(Partes por millón)  y en las ciudades sube hasta una 600 – 900 ppm (Por el exceso de gente, los motores de combustión de los vehículos y el exceso de cervezas que se beben sin medida) y la concentración va disminuyendo con la altura porque el C02  pesa más que el aire respirable y se concentra en las partes bajas.

Si quieres ver subir las lecturas de C02 simplemente sopla el aire de tu respiración hacia el sensor y veras como se pone atacado, ya que lo que exhalamos al respirar,  es básicamente aire y sobre todo CO2 (¿Sabías que contribuyes al calentamiento global cada vez que respiras?)

Y por si alguien tiene curiosidad por saber las direcciones I2C del sensor, nuestro viejo conocido I2C_scanner nos da la respuesta:

consola de salida

Vamos a dejar el tema aquí por ahora y en la próxima sesión, añadiremos un display I2C al montaje para que podamos visualizar las medidas con comodidad.

 

IMAGEN DE MARCA