Sensor de CO2 NDIR Sensirion SCD30 dual-channel

Modificado por última vez hace 9 meses

El sensor de CO2 SCD30 del fabricante Sensirion es una de las mejores opciones a la hora de decidirse por un sensor para nuestro medidor de CO2. En algunos casos puede llegar a ser la única opción recomendada.

No es solo un sensor interesante por su precisión del ±30 ppm ±3% de la medida de concentración de CO2, y sus sensores integrados SHT31 de temperatura y humedad relativa de alta precisión, sino porque tiene otras características que lo apartan de la mayoría.

En este artículo te traigo un análisis, junto con resultados e impresiones de mis propias pruebas, del sensor de CO2 NDIR de doble canal Sensirion SCD30. Espero que te resulte útil e interesante.

Sensirion es un fabricante sueco con una larga experiencia en la fabricación de sensores de CO2 de calidad y este sensor ha sido un referente durante los últimos años. Un claro favorito cuando lo que se persigue es un sensor de CO2 de alta calidad a un precio aceptable.

Sensirion SCD30

¿Qué hace especial al sensor Sensirion SCD30?

Vengo recomendando en el blog de eMariete varios sensores de CO2 de calidad desde hace tiempo, pero el SCD30 tiene una característica que lo hace diferente a los demás: es un sensor de «doble canal«.

Más adelante te voy a contar cuáles son las ventajas que un sensor NDIR de doble canal aporta, cuando conviene utilizarlo e incluso en qué condiciones es prácticamente obligatorio utilizarlo, pero voy a empezar por contarte a grandes rasgos cómo funcionan estos sensores.

¿Cómo funciona un sensor de CO2 NDIR?

En los sensores NDIR que solemos utilizar (los de canal simple o single channel), el funcionamiento se basa en la absorción que las moléculas de CO2 suponen sobre un haz de infrarrojos.

En un sensor NDIR existe un emisor de infrarrojos y un sensor que los detecta. Cuanto más CO2 hay entre el emisor de infrarrojos y el sensor que los detecta, menos infrarrojos detecta el sensor.

Para conseguir esto, se emite en una cámara de medición cerrada casi por completo una luz de banda estrecha (o una de banda ancha acompañada de un filtro) que coincide con las longitudes de onda que con absorbidas por las moléculas de CO2.

Las moléculas de CO2 en la cámara de medición absorben una parte de la luz irradiada, mientras que otras moléculas no contribuyen a la absorción debido a su longitud de onda.

Cuantas más moléculas de CO2 haya en la célula de medición, mayor será la energía absorbida.

¿Y cómo funciona un sensor de CO2 NDIR de doble canal?

Un sensor NDIR Dual Channel, o de doble canal, es muy parecido. La diferencia principal es que hay dos cámaras de aire y dos sensores de infrarrojos.

La primera cámara, llamémosle cámara 1, es exactamente igual que la del sensor anterior, tradicional, de una sola cámara, y es dónde se realiza la medición de la concentración de CO2 en el aire que rodea al sensor.

La diferencia está en la segunda cámara, o cámara 2: La segunda cámara está rellena de un gas estable desde su fabricación, un gas que no cambia y del que se conocen sus propiedades de absorción de infrarrojos. Analizando las sutiles diferencias en los resultados de las medidas de ese gas, en esa cámara 2, el firmware del sensor puede calcular cuánto se han desviado las medidas respecto a las que deberían ser y puede aplicar una corrección sobre los resultados medidos en la cámara 1.

Estructura del Sensirion SCD30

Esto significa que, aunque la lámpara envejezca o el filtro pierda su «centro espectrográfico» por el paso del tiempo, la humedad, u otras variables, el firmware del sensor podrá corregirlo en tiempo real.

Esta configuración de dos cámaras y dos sensores de infrarrojos es la que utiliza el Sensirion SCD30. Distintos fabricantes utilizan diferentes tecnologías para la construcción de sus sensores NDIR dual channel.

¿Y entonces, qué ventajas tiene un sensor de CO2 NDIR de doble canal?

La gran ventaja de esta tecnología es que nos permite utilizar un sensor NDIR en aquellas situaciones donde la calibración automática de un sensor de canal único fallaría; esto es, en situaciones donde el aire no baja periódicamente a 400 ppm.

Más abajo, cuando te hable de la calibración, verás que para que la calibración automática funcione correctamente, es imprescindible que sensor esté expuesto a aire con una concentración de unas 400 ppm (la del aire limpio del exterior) periódicamente. La tecnología dual channel nos libera de este requerimiento, hasta cierto punto.

Es importante decir que los sensores de doble canal también necesitan ser calibrados periódicamente, pero aguantan algo más de tiempo entre calibraciones.

Como dato de primera mano, deciros que, por un problema médico, estuve sin calibrar varios sensores (de diferente tipo y fabricante) durante más de un año y todos ellos se habían perdido su precisión en diferente medida (incluido el SCD30).

¿Es esto una ventaja para todo el mundo? No. Pero ciertamente lo es (y mucho) cuando necesitamos instalar un medidor en un sitio donde la concentración de CO2 en el aire no baja nunca a niveles del exterior (400 ppm aprox).

¿Y no puedo utilizar un sensor de canal único en esos casos? Si. Si que puedes, pero se irá descalibrando poco a poco y acabarás viendo una lectura, en unos meses, muy por debajo de la real.

Resumiendo: ¿Vas a utilizar el medidor de CO2 en un invernadero? Dual channel es casi imprescindible. ¿En un hospital? Dual channel es casi imprescindible. ¿En una tienda abierta 24 horas? Dual channel es casi imprescindible…. ya lo pillas… en el apartado de calibración, más abajo, hablaremos más de ello…

Características del Sensirion SCD30

Aunque, si buscas las características técnicas del sensor, lo mejor es mirar en los documentos de características del fabricante, te adelanto aquí algunas de ellas que creo que pueden ser las que más te interesen.

Especificaciones del sensor de CO2
Rango de medición de CO20 – 40.000 ppm
Exactitud± (30 ppm + 3% MV)
(25 °C, 400 – 10’000 ppm)
Repetibilidad10 ppm
Estabilidad de temperatura2,5 ppm / °C (0-50 °C)
Tiempo de respuesta (t63)20 s
Especificaciones del sensor de humedad
Rango de medición de humedad relativa0 – 100 % HR
Precisión típica±3% HR (0-100% HR)
Repetibilidad0,1% HR
Tiempo de respuesta (t63): 1
Especificaciones del sensor de temperatura
Rango de medición de temperatura-40 °C – 70 °C
Precisión típica (°C)± (0,4 °C + 0,023 x (T [°C] – 25 °C))
Repetibilidad (°C)0,1 °C
Tiempo de respuesta (t63)>10 s
Especificaciones eléctricas
Tensión de alimentación3.3 – 5.5 V
Tasa de medición promedio de corriente @ 2s19 mA
Corriente máx.75 mA

Si quieres saber más, puedes descargar aquí el datasheet del SCD30.

¿Dónde comprar el Sensirion SCD30 y cuánto cuesta?

Mi recomendación es que compres el SCD en AliExpress, especialmente si eres un aficionado y vas a construir tu medidor de CO2 por hobby.

El sensor SCD30 en un distribuidor oficial como puede ser Mouser, cuesta aproximadamente 55€. Este mismo sensor, como puedes ver en este enlace: Sensirion SCD30 en AliExpress (el mismo enlace donde yo lo compré y me tardó solo 7 días en llegar), cuesta unos 26€ con envío y el IVA incluido.

Bastantes usuarios de eMariete lo han comprado en el enlace de AliExpress que te acabo de poner y todos lo han recibido en tiempo y forma.

Como con todo, y al ser un artículo que no es barato, te recomiendo que tengas cuidado en donde lo compras y a ser posible que alguien te de referencias directas de que lo ha comprado allí y le ha ido bien.

Comprar en AliExpress suele ser seguro, pero hay casos en los que te pueden marear, tenerte esperando, mandarte lo que no es, etc.

Tampoco te fíes mucho de las opiniones en estos portales. Supongo que ya sabes lo que ha pasado con las opiniones de Amazon y, para mí, las opiniones ya no son fiables (ni siquiera en sitios de prestigio, aunque pueda no ser culpa suya, como parece que ha sido el caso de Amazon).

Programación del Sensirion SCD30, documentación y librerías disponibles

Una cosa muy buena de este fabricante, sobre todo si lo comparamos con otros fabricantes de sensores de CO2, es la gran cantidad de documentación que proporcionan, así como las librerías y ejemplos de programación para múltiples plataformas.

El sensor Sensirion SCD30 se comunica con el exterior a través de un BUS I2C o UART.

Existen varias librerías, que soportan los principales microcontroladores (Arduino, ESP8266, ESP32, STM32, y otros muchos) que hacen muy fácil su uso.

Te hablo que las principales librerías, en algunos casos con experiencia de primera mano, ya que las he utilizado en proyectos como este:

La librería Seed SCD30 de SeedStudio:

No me gusta y no la recomiendo. Es muy limitada. Ni siquiera permite hacer una calibración forzada. La he usado en el proyecto «Medidor de CO2 en tu móvil con ESP32 y sensor Sensirion SCD30 [VERSIÓN BÁSICA]» porque es la que había utilizado Sensirion para crear dicho proyecto, y me he mantenido fiel a él.

La librería SparkFun SCD30 Arduino Library:

Esta librería me gusta bastante más. La he utilizado, entre otros, en el proyecto «Medidor de CO2 en tu móvil con ESP32 y sensor Sensirion SCD30 [VERSIÓN AVANZADA]» y ha funcionado muy bien. Fácil de usar, bien escrita, bien documentada y no he echado de menos ningún comando.

La librería Adafruit SCD30:

Esta librería no la he utilizado, pero tiene buena pinta y parece bien escrita, documentada y fácil de utilizar.

La librería CanAirIO Sensorlib:

Esta librería cuenta con la ventaja de que soporta múltiples sensores en una única librería y tiene algunas opciones avanzadas muy interesantes. No la he utilizado hasta ahora porque no he tenido la necesidad, pero lo haré.

Comandos del Sensirion SCD30

Este sensor tiene los siguientes comandos disponibles:

  • Activación de la medición continua con compensación de la presión ambiental opcional
  • Detener la medición continua
  • Establecer el intervalo de medición
  • Obtener el estado de preparación de los datos (data ready)
  • Lectura de la medición
  • Activar y desactivar el cálculo continuo del valor de referencia para la autocalibración automática (ASC)
  • Establecer el valor de referencia externo para la recalibración forzada (FRC)
  • Ajustar la compensación de temperatura para el sensor RH/T incorporado
  • Compensación de altitud
  • Leer la versión del firmware
  • Restablecimiento suave

Te dejo aquí un enlace al documento con el protocolo de comunicación del SCD30 por si quieres saber más.

Modo de medida continuo

El modo de medida continuo (único modo soportado por este sensor) supone que el sensor esté funcionando permanentemente y nos proporcione una medida actualizada con la concentración de CO2 cada 2 segundos (opcionalmente también temperatura y humedad en la misma lectura).

Sólo tenemos que enviarle al sensor la orden «activa la medida continua» para que empiece a trabajar y cada 2 segundos podremos pedirle una nueva medida, sin necesidad de hacer nada más por nuestra parte.

Podemos cambiar el intervalo de medición del SCD30 entre 2 y 1800 segundos, enviándole el comando correspondiente, lo que permitirá reducir el consumo del sensor a costa de una mayor lentitud de respuesta.

El intervalo de medición del SCD30 (sampling interval)

El SCD30, al contrario que la mayoría de sensores de CO2 «normales», permite cambiar el intervalo en el que hace las medidas.

Por defecto (según viene de fábrica) el SCD30 realiza una medida de CO2 cada 2 segundos, pero es posible cambiar este valor entre 1 y 1800 segundos para adaptarlo a las necesidades de cada caso de uso.

Lo más interesante de reducir el intervalo de medición del SCD30 es que nos permite reducir el consumo del SCD30 hasta una tercera parte, lo que puede ser fundamental para su uso con pilas o baterías.

Claro, reducir el intervalo de medida y por tanto el consumo eléctrico no es gratis, se hace a costa del incrementar el tiempo de respuesta del sensor.

OJO AL DATO, IMPORTANTE: Otro efecto colateral de reducir el intervalo de medición es que reduce la precisión del sensor y es necesario recalibrarlo con el nuevo intervalo de medida.

El modo de bajo consumo del sensor de CO2 SCD30

El SCD30 no es un sensor de ultra bajo consumo como puedan ser el Senseair Sunrise S11 o el Cubic CM1106SL-N.

Por ponerte en situación: Con el intervalo de medida por defecto de 2 segundos, el consumo es de unos 19mA y el tiempo de respuesta de unos 10 segundos, [en preparación, continuará…]

Compensación de altura/presión atmosférica

Las diferencias en altura sobre el nivel del mar (o lo que es lo mismo, las diferencias en presión atmosférica) tienen un efecto sobre las mediciones de concentración de CO2.

A mayor presión, el aire se comprime, las moléculas se comprimen, todo se comprime… esto significa que pueden caber más o menos moléculas de CO2 en la cámara de medición dependiendo de la presión atmosférica.

Para compensar estas variaciones, el SCD30 dispone de un par de ayudas:

Con la primera de ellas podemos simplemente configurar la altitud en metros sobre el nivel del mar a la que se encuentra el medidor y éste se encargará internamente de hacer los ajustes precisos para compensarlo.

La segunda nos permite proporcionar al sensor la presión atmosférica actual de forma continua (podemos hacer cuando queramos, cada minuto, cada hora, cuando haya un cambio…), de esta forma el SCD30 hará la compensación automáticamente.

Lógicamente, estas dos posibilidades son excluyentes y, si utilizamos una, la otra queda anulada.

Compensación del sensor de temperatura

Aunque el sensor de temperatura del SCD30 es de alta precisión ( ±(0,4 °C + 0,023 x (T [°C] – 25 °C)), lo que es una muy buena precisión) el calor generado por los componentes electrónicos del propio sensor, y la circuitería aneja que forma el medidor, puede provocar diferencias entre la temperatura leída por el sensor y la temperatura del aire alrededor.

Para solucionar este problema, el SCD30 dispone de una compensación de temperatura por lo que le podemos decir la diferencia, u offset, con la temperatura real y él mismo se encargará de compensar la temperatura a partir de ese momento.

La idea es que, si sabemos que la distribución térmica de nuestro montaje concreto, supone que el sensor lea 1.8ºC por encima, se la comuniquemos al sensor para que haga su trabajo de compensación.

Solo por aclarar, esta compensación de temperatura no tiene ningún efecto sobre la medición de CO2.

Además de esto, debo decir, para que la información sea completa, que el sensor también realiza internamente una compensación de temperatura para calcular la concentración de CO2, aunque no tiene nada que ver con esta compensación del sensor de temperatura que te acabo de contar.

Calibración del sensor de CO2 Sensirion SCD30

Los sensores NDIR como el SCD30 son instrumentos ópticos de muy alta precisión y cosas como el envejecimiento de cualquiera de sus componentes o simplemente el estrés mecánico al que puede verse sometido su cavidad óptica durante su almacenamiento, transporte y funcionamiento pueden afectar a su precisión.

Por este motivo, es importante comprender la necesidad de la calibración de este tipo de sensores.

Este sensor dispone de dos modos de calibración: ASC (automatic self-calibration, o auto-calibración automática) y FRC (forced re-calibration, o recalibración forzada/manual) para conseguir mantener la precisión de sus medidas.

Calibración automática

El sensor de CO2 Sensirion SCD30 cuenta con un sistema de calibración automática, llamada por Sensirion Automatic Self-Calibration (ASC), y funciona bastante bien.

Su funcionamiento es el siguiente:

Puesto que la concentración de CO2 natural en la atmosfera es de aproximadamente 400 ppm (realmente algo menos de 420 ppm de media en el año 2021), cuando el ASC está habilitado, el sensor asume que, durante un periodo de aproximadamente 7 días, la mínima concentración de CO2 que encuentre será equivalente a 400 ppm.

Esto significa que, en una habitación bien ventilada, que en algún momento del periodo de siete días tenga aire limpio, la medida más baja será de alrededor de 400 ppm y el sensor asumirá esa concentración (sea la que sea) como punto cero, o 400 ppm.

Dicho de otra forma, el sensor asumirá que la medida más baja de cada periodo de 7 días será de 400 ppm.

Si, he explicado lo mismo de tres formas distintas, pero es necesario comprenderlo bien porque eso supone que:

No puedes utilizar la calibración automática si vas a utilizar el sensor en un invernadero, por ejemplo, ya que el aire del invernadero nunca bajará a 400 ppm, tampoco en un sitio en el que siempre hay presencia humana, como un aeropuerto, un hospital y tantos y tantos sitios abiertos permanentemente.

Para que el procedimiento de calibración automática del SCD30 funciona bien, se debe cumplir:

  1. El SCD30 debe ser expuesto regularmente a aire fresco con una concentración de, aproximadamente, 400 ppm de CO2.
  2. El SCD30 debe funcionar continuamente (sin ser apagado) para que el ciclo de calibración automática se complete.
  3. Aunque, generalmente solemos hablar de que el sensor necesita 7 días para calibrarse, siendo precisos, lo que necesita son 7 medidas buenas separadas por al menos 18 horas (esto son, aproximadamente 5 días).

Esta es una forma muy cómoda de mantener el sensor calibrado, utilizando el aire limpio como valor de referencia y automatizando el proceso.

Calibración manual

El sensor de CO2 Sensirion SCD30 permite la calibración manual para que no tengas que esperar esos siete días para que se calibre automáticamente, aunque no todos los proyectos tienen implementada esta posibilidad.

He preparado un firmware especial de fácil uso e instalación en un ESP32 por si quieres calibrar el sensor manualmente (lo tienes en el tutorial Medidor de CO2 en tu móvil con ESP32 y sensor Sensirion SCD30).

Este firmware, que solamente sirve para calibrar el sensor SCD30 a 415 ppm, hace lo siguiente:

  • Cuando lo pones en marcha, esperará cinco minutos, para que el sensor se estabilice, durante los cuales el LED de la placa estará parpadeando cada segundo.
  • Transcurridos los cinco minutos calibrará el sensor y, una vez calibrado, dejará encendido el LED de forma permanente.

Lo único que tienes que hacer para calibrar el sensor es: poner el medidor en un sitio con aire limpio (en el exterior de una ventana, por ejemplo), encenderlo, esperar cinco minutos a que el LED se quede fijo y ya está. El sensor quedará calibrado a 415 ppm.

Si quieres saber más sobre la calibración del SCD30, el siguiente documento de Sensirion (en inglés) te resultará muy interesante: Field calibration for SCD30.

Un consejo: El SCD30 es muy sensible a las corrientes de aire (todos los sensores NDIR, en menor o mayor medida) por lo que es importante que al sacarlo al exterior para calibrarlo no le de mucho aire. Incluso una brisa, no muy fuerte, puede provocar lecturas de concentración inestables y afectar a la calibración.

Manejo y montaje del sensor Sensirion SCD30

El SCD30 es un instrumento de precisión delicado y, como tal, hay algunas cosas que tienes que conocer antes de manipularlo e instalarlo.

Algunas cosas son muy importantes y otras menos. A continuación, te voy a contar lo que a mí me parece realmente importante (para el resto, te dejo una guía, escrita por Sensirion, más abajo).

[en preparación, mientras tanto consulta la guía Handling and Assembly Guide for SCD30, si quieres saber más]

Como he comentado antes, Sensirion cuida mucho de su documentación e incluso ha publicado una guía con información útil, consejos y recomendaciones para la correcta manipulación e instalación física del sensor SCD30. Puedes encontrarla aquí (en inglés): Handling and Assembly Guide for SCD30

Mi experiencia con el Sensirion SCD30

Tras unos meses trabajando con el Sensirion SCD30, debo decir que es un sensor que me gusta mucho y que recomendaría sin dudar.

La verdad es que el sensor ha sido tremendamente estable en sus medidas, apartándose muy poco de mi sensor de referencia, el Senseair S8 LP que llevo meses utilizando.

No he notado que sea demasiado sensible a corrientes de aire (ojo, a corrientes de aire normales, dentro de una habitación) al contrario que otros sensores que he probado. Si que lo es a las corrientes de aire que pueda haber en exterior, si es sensor está desnudo (sin caja).

Sensirion afirma que el SCD30 viene calibrado de fábrica (aunque recomienda calibrarlo al recibirlo o, idealmente, después de que esté montado en su lugar definitivo para corregir cualquier estrés mecánico que pueda haber sufrido) mi sensor no venía bien calibrado y medía bastante por encima de lo normal.

Por otro lado, he observado que las medidas difieren con el voltaje de alimentación del sensor. Mucha casualidad sería que lo alimentes con exactamente la misma tención que lo calibraron en fábrica, por lo que mi consejo es que lo calibres una vez lo tengas montado donde quieras que vaya.

Aunque he hecho algunas pruebas rápidas con la compensación de presión atmosférica, no lo he visto reflejado en los resultados. Tendré que hacer más pruebas.

Me hubiera gustado poner algunas gráficas comparando sus medidas con las de otros sensores, pero, desgraciadamente, he perdido esos datos. No te preocupes, los volveré a capturar y en breve podrás encontrar aquí gráficas comparativas de medidas de diferentes sensores, comentadas, como siempre.

De momento te dejo esta, de un periodo de pocas horas, en la que se pueden ver las lecturas del SCD30 junto a un Senseair S8 LP y un Senseair Sunrise S11.

Tampoco he hecho pruebas exhaustivas de consumo del sensor, solamente algunas pruebas rápidas y parece bastante cercano a lo que indica Sensirion. Prometo hacer más pruebas y poner aquí los resultados.

Resumiendo: Proporciona medidas estables, tiene un consumo relativamente bajo (que además es ajustable, cosa que no permiten todos los sensores) y su calibración automática funciona muy bien a largo plazo, evitándonos tener que calibrar el sensor manualmente.

Sin duda el hecho de ser de doble canal mejora la estabilidad a largo plazo y consigue que la calibración se mantenga (interesante especialmente en casos como invernaderos, utilizando calibración manual).

Como puntos negativos, señalaría que es un sensor algo grande (aunque bastante fino), lo que puede suponer una limitación física en algunos montajes, y su precio, algo más elevado que otros (aproximadamente 10€ más que el Senseair S8, por ejemplo).

Conclusiones del SCD30

Para uso en ambientes donde no se puede utilizar la calibración automática y el medidor de CO2 tenga que estar instalado de forma fija o por largos periodos, el SCD30 sería mi primera opción, ya que al ser un sensor de doble canal le da un extra de estabilidad a la calibración manual.

Si quieres asegurarte de mantener una correcta calibración durante largos periodos de tiempo, también sería una de las primeras opciones a considerar.

Si lo que quieres es un sensor normal, de alta calidad, para un medidor normal, en un entorno normal, tanto este como el Senseair S8 serían completamente recomendables, teniendo en cuenta que el SCD30 es más caro que el Senseair S8, pero incluye sensores de temperatura y humedad relativa de calidad, que, caso de necesitarlos, te ahorrarías, con lo que la diferencia de precio no es tan grande.

El SCD30 ya no es tan caro y es muy fácil encontrarlo en AliExpress por unos 20-25€ porque lo que ahora mismo sería mi primera opción recomendada. El Senseair S8 cuesta más y no le veo ventajas adicionales.

No quiero dejar de comentar algo de lo que no he hablado en el artículo, y es que el SCD30 funciona dentro de un amplio margen de voltajes, de entre 3.3 y 5.5V, lo que en algunos casos puede ser determinante, sobre todo si queremos que el medidor funcione con baterías (la mayoría de sensores NDIR normales solamente funcionan a 5V).

Por último, el formato físico, que en la mayoría de los casos no será determinante. El SCD30 es más grande que los sensores NDIR habituales con los que los makers solemos hacer nuestros proyectos, pero también es bastante más fino.

Si quieres más información sobre este sensor, lo mejor es que revises la web de Sensirion. Es un fabricante que cuida mucho su documentación y probablemente encontrarás cualquier cosa que busques.

Un último apunte, especialmente importante para los makers: Sensirion es un fabricante «maker-friendly»: Publica mucha información para makers y DIY, crea librerías y da soporte. Senseair no es en absoluto maker friendly (todo lo contrario), yo mismo les mandé varios mensajes y no se dignaron a responder, cuando incluso los fabricantes chinos como Cubic y Winsen me han proporcionado la información y soporte que he necesitado y han respondido a mis mensajes en tiempo y forma.

Por cierto, si quieres ver más sensores de CO2 de Sensirion, tienes, en este mismo blog, este artículo sobre los minúsculos sensores (poco más de medio centímetro cúbico) SCD40 y SCD41 que te puede resultar interesante:

1 comentarios en «Sensor de CO2 NDIR Sensirion SCD30 dual-channel»

Deja un comentario