Última modificación hace 10 meses

Contenidos

El sensor de CO2 MH-Z19B NDIR es fantástico. Un sensor NDIR de CO2 barato, preciso (para el precio que tiene) y muy fácil de usar. Sin duda, uno de los sensores más utilizados con Arduino, ESP8266, EPS32 y similares.

Descubre todos los secretos del sensor de CO2 MH-Z19B en un solo sitio. Un sensor de CO2 barato, preciso (para el precio que tiene) y muy fácil de usar.

También el sensor de CO2 MH-Z19C (aunque un poco especial) es un buen sensor, siempre y cuando sepas lo que hay que saber sobre él y qué es lo que le hace especial.

Incluso tiene su versión de bajo consumo, el sensor NDIR de CO2 Winsen MH-Z1311A.

En este artículo encontrarás todo lo que quieras saber sobre estos sensores (y si no lo encuentras, pídelo en los comentarios).

Quizá llamarle biblia, en este momento, sea un poco pretencioso, pero te doy mi palabra de que llegará a serlo. Dale tiempo…

Este artículo está vivo y nunca para de crecer. Suscríbete a la Newsletter y no te pierdas nada.

Datos generales del sensor de CO2 MH-Z19B y MH-Z19C y MH-Z19D

El sensor de CO₂ MH-Z19B

El sensor de gas de dióxido de carbono MH-Z19B es un sensor inteligente, de pequeño tamaño, para uso general, que utiliza el principio de infrarrojos no dispersos (NDIR) para detectar la presencia de CO₂ en el aire.

Tiene buena selectividad, larga vida útil y otras características, como compensación de temperatura integrada.

Dispone de salida serie, analógica y PWM simultánea y es fácil de usar.

Es un sensor de alto rendimiento que combina la tecnología fiable de detección de gas por absorción de infrarrojos, con un buen diseño y un precio atractivo.

Parámetros del sensor MH-Z19B

ModeloMH-Z19B
Gas detectadoDióxido de carbono
Voltaje de funcionamiento4.5 ~ 5,5 V DC
Corriente media< 60m A (@ alimentación de 5V)
Corriente máxima150 mA (suministro @ 5V)
Nivel de interfaz3.3 V (compatible con 5V)
Rango de medición0~2000 ppm
0~5000 ppm
Señal de salidaSerial (UART) – TTL nivel 3.3 V – Salida analógica PWM
Tiempo de precalentamiento3 minutos
Tiempo de respuestaT90<120s
Temperatura de funcionamiento0 ~ 50 °C
Humedad de funcionamiento0 a 90% RH (sin condensación)
Dimensiones33 mm×20 mm×9 mm (Largo*Ancho*Alto)
Peso5 gramos
Vida> 5 años

Características del MH-Z19B

Cámara de gas con chapado en oro, resistente al agua y a la corrosión
Alta sensibilidad, bajo consumo de energía
Excelente estabilidad
Compensación de temperatura, excelente salida lineal
Larga duración

Aplicaciones del sensor MH-Z19B

HVAC de equipos de refrigeración
Equipos de vigilancia y de calidad del aire
Sistemas de aire fresco
Equipos de purificación de aire
Hogar Inteligente
Escuelas y centros educativos

El sensor de CO2 MH-Z19C

El sensor MH-Z19C es muy parecido al MH-Z19B aunque tiene algunas cosas que le hacen un poco especial…

Su precisión, sobre el papel, es un poco peor que la del MH-Z19B (50 ppm + 5% de la medida el MH-Z19B vs 50 ppm + 5% el MH-Z19C.

En la práctica, y según mis experimentos y observaciones, MH-Z19C es un sensor bastante más volátil. No es que sea peor que el MH-Z19B, pero a mí me gusta menos.

Winsen MH-Z19C

El sensor de CO2 MH-Z19D

El sensor MH-Z19D es prácticamente igual al MH-Z19C. Es muy reciente (junio de 2021) por lo que todavía no hay mucha información sobre él.

Este sensor es tan nuevo en el mercado que ni siquiera aparece en la web su fabricante en inglés, es necesario buscarlo en la versión en chino para encontrar algo de información (no demasiada).

Winsen MH-Z19D

Todavía no he encontrado el datasheet oficial en inglés, aquí puedes encontrar el datasheet del MH-Z19D en chino.

El sensor de CO2 MH-Z1311A

Aunque no lo incluyo aquí, porque no es un MH-Z19x estrictamente hablando, no podía dejar de nombrar el sensor de bajo consumo MH-Z1311A de Winsen.

Primo hermano 99% compatible con el MH-Z19 con un 99% de ahorro energético.

Un sensor muy nuevo a tener en cuenta. Habrá que esperar a las pruebas.

Sensor de CO2 Winsen MH-Z1311A

Si quieres conocerlo mejor, visita el siguiente post del blog:

¿Qué versiones del sensor MH-Z19 existen?

Es difícil saber con exactitud, ya que los fabricantes chinos tienen bastante costumbre de hacer cambios en sus productos sin comunicarlos y, en ocasiones, hay un mercado paralelo de unidades remarcadas con otros nombres o referencias.

Que tenga seguridad, existen las siguientes versiones:

  1. El modelo MH-Z19 de rango 400~2000 ppm original, con una precisión de precisión 50 ppm + 5% de la medida.
  2. El modelo MH-Z19 de rango 400~5000 ppm original, con una precisión de precisión 50 ppm + 5% de la medida.
  3. Modelo MH-Z19B de rango 400~2000 ppm, que es una versión más moderna y mejorada. Esta versión tiene una precisión de 50 ppm + 3% de la medida.
  4. Modelo MH-Z19B de rango 400~5000 ppm, que es una versión más moderna y mejorada. Esta versión tiene una precisión de 50 ppm + 3% de la medida.
  5. Modelo MH-Z19B de rango 400~10000 ppm, que es una versión más moderna y mejorada. Esta versión tiene una precisión de 50 ppm + 3% de la medida.
  6. Modelo MH-Z19C de rango 400~2000 ppm. Esta versión tiene una precisión de 50 ppm + 5% de la medida.
  7. Modelo MH-Z19C de rango 400~5000 ppm. Esta versión tiene una precisión de 50 ppm + 5% de la medida.
  8. Modelo MH-Z19C de rango 400~10000 ppm. Esta versión tiene una precisión de 50 ppm + 5% de la medida.
  9. Modelo MH-Z19D de rango 400~2000 ppm. Esta versión tiene una precisión de 50 ppm + 5% de la medida.
  10. Modelo MH-Z19D de rango 400~5000 ppm. Esta versión tiene una precisión de 50 ppm + 5% de la medida.
  11. Modelo MH-Z19D de rango 400~10000 ppm. Esta versión tiene una precisión de 50 ppm + 5% de la medida.

IMPORTANTE: Los sensores MH-Z19B con placa de circuito impreso negra, todo indica que son versiones son falsas.

Si quieres saber más sobre los sensores falsos, puedes encontrar toda la información aquí: Sensores de CO2 MH-Z19B FALSOS

Calibración del punto cero (Zero Point Calibration)

Los sensores MH-Z19B y MH-Z19C vienen ya calibrados de fábrica y, aunque en condiciones normales no debería ser necesaria su calibración manual, te recomiendo que lo calibres cuando lo recibas y periódicamente.

Los cambios en las condiciones ambientales, como la temperatura y la humedad, la presión atmosférica, las condiciones de almacenamiento, de transporte y el propio envejecimiento del sensor, provocan que, con el paso del tiempo, sus medidas varíen (como con todos los sensores de este tipo).

Esta calibración del punto cero, se refiere al método por el que el sensor «aprende» a qué concentración de CO2 corresponde a una concentración de 400 ppm, o punto cero.

Este sensor dispone de dos métodos para realizar la calibración del punto cero: calibración manual y auto-calibración.

Calibración manual del punto cero de los sensores MH-Z19, MH-Z19B y MH-Z19C

MUY IMPORTANTE: Es fundamental que, durante el proceso de calibración manual, el sensor esté funcionando previamente durante, al menos, 20 minutos, en un entorno de CO2 estable con una concentración de CO2 de aire fresco, 400ppm (al aire libre o junto a una ventana, por ejemplo).

Calibración por hardware

Si tenemos acceso físico a las conexiones del sensor, podemos iniciar fácilmente el procedimiento de calibración del punto cero, puenteando durante 7 segundos los terminales 5 (HD) y 7 (GND).

Calibración por software

El sensor dispone de un comando, que le ordenará realizar la calibración del punto cero en ese mismo momento.

Solamente tenemos que enviar el comando 0xFF,0x01,0x87,0x00,0x00,0x00,0x00,0x00,0x78

Calibración mediante ESP Easy

Si estamos utilizando ESP Easy, entre los comandos disponibles, tenemos el comando mhzcalibratezero.

Podemos enviar el comando, por ejemplo, cargando la página http://x.x.x.x/tools?cmd=mhzcalibratezero (sustituiremos las x.x.x.x por la dirección IP de ESP Easy).

Nota: El comando debería ser mhzCMDCalibrateZero, pero, por algún motivo, no funciona (al menos en la versión actual de ESP Easy, en el momento de escribir este artículo).

Si ESP Easy no reconoce el comando mhzcalibratezero, prueba con mhzCMDCalibrateZero (lo sabrás porque ESPEasy responde con «Command unknown: mhzCMDCalibrateZero» o «Command unknown: mhzcalibratezero«).

Auto-calibración del punto cero de los sensores MH-Z19, MH-Z19B y MH-Z19C

Para evitar que el usuario tenga que realizar una calibración manual periódicamente, el sensor incorpora en su firmware una rutina de autocalibración, llamada ABC, que funciona de la siguiente manera:

Puesto que la concentración de CO2 natural en la atmosfera es de aproximadamente 400 ppm, cuando el ABC está habilitado, el sensor asume que, durante un periodo de 24 horas, la medida mínima que tome será equivalente a 400 ppm.

Esto significa que, en una habitación bien ventilada, que en algún momento del día 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 24 horas será de 400 ppm.

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

Además, podemos activar y desactivar fácilmente la rutina ABC, de forma que podamos adaptar la forma de funcionamiento del sensor a nuestras necesidades particulares.

¿Debo tener el ABC activo o inactivo?

Depende de donde lo tengas funcionando.

El ABC funciona bastante bien, pero para ello el sensor tiene que estar en un sitio que se ventile al menos una vez al día (hasta llegar a esos, aproximadamente 400 ppm).

Mi consejo es que actives el ABC si el sensor está instalado en sitios como aulas, oficinas, etc, que no se utilizan durante el fin de semana y da tiempo a que el CO2 baje a nivel ambiente.

Si el sensor está instalado en sitios que no se suelen ventilar (habitaciones de interior que suelen estar muy ocupadas, o invernaderos, por ejemplo) mejor desactiva el ABC.

En una casa, depende… en mi despacho no le da tiempo a llegar a 400 ppm a diario porque lo tengo casi siempre cerrado (puerta y ventana) y paso muchas horas en él al día. En el salón sí que da tiempo porque solemos ventilar a diario y, aunque hay más personas, es más grande y suele estar la puerta abierta.

Calibración del punto alto (Span Point)

Igual que tenemos una calibración del punto más bajo que el sensor va a medir (los, aproximadamente, 400 ppm de CO2 que se encuentran en el aire exterior «limpio»), tenemos la posibilidad de calibrar el punto alto de la medición (por ejemplo, a 2000 ppm).

En mi opinión esta calibración no está al alcance de los aficionados, ya que tienes que conseguir una atmosfera estable y calibrada con exactamente 2000 ppm de CO2 y eso es tremendamente difícil sin los recursos de laboratorio adecuados.

Mi recomendación es que ni se te ocurra intentar la calibración del Span Point por tu cuenta. Lógicamente si tienes acceso al laboratorio necesario, seguramente tengas los conocimientos necesarios para hacerlo, en cuyo caso, adelante…

Si, a pesar de las advertencias, decides hacerlo, el método es muy parecido a la calibración del punto cero.

  1. Hacer primero la calibración del punto cero, como he explicado anteriormente
  2. Poner el sensor en un entorno estable a 2000 ppm
  3. Dejar que el sensor se estabilice durante un mínimo de 20 minutos
  4. Enviar al sensor el comando de Span Point Calibration

El comando a enviar es el 0x88 y lo puedes encontrar en el datasheet que te he dejado antes con sus parámetros.

Este comando no podrás enviarlo directamente desde ESP Easy.

¿Son fiables los sensores de temperatura del MH-Z19, MH-Z19B y MH-Z19C?

No, no lo son en absoluto.

Ten en cuenta que el sensor de temperatura es solamente para uso interno del sensor, para poder hacer la compensación de temperatura. Realmente su uso está indocumentado por parte del fabricante y nosotros lo estamos usando a base de ingeniería inversa de los posibles comandos y respuestas (vamos, que es un hack).

¿Hay diferentes modelos del MH-Z19, MH-Z19B y MH-Z19C según el rango de detección?

El sensor parece que es exactamente el mismo, independientemente del rango de detección. De hecho, es posible cambiar el rango de detección por software, enviando un comando al sensor.

Puedes encontrar información sobre el comando a enviar en el datasheet.

La precisión de los sensores MH-Z19, MH-Z19B y MH-Z19C hasta 2000 ppm es sorprendentemente buena. Por encima de 2000 ppm la precisión va empeorando progresivamente.

¿Dónde puedo encontrar más información sobre los sensores MH-Z19, MH-Z19B y MH-Z19C?

Existen una serie de fuentes de información, oficiales y no oficiales, muy interesantes, si quieres conseguir más información sobre el sensor.

Fuentes oficiales

La fuente oficial por antonomasia de cualquier componente electrónico es su datasheet, u hoja de datos. Es el documento en el que el fabricante incluye toda la información sobre su producto.

Hojas de datos del fabricante:

Datasheet del MH-Z19 (una versión anterior al MH-Z19B) en inglés del 03-03-2015

Datasheet del MH-Z19B en inglés del 23-09-2019

Datasheet del MH-Z19B en chino del 15-10-2020

Datasheet del MH-Z19C en inglés del 04-02-2020. Está versión es problemática con la alimentación (más información aquí).

Datasheet del MH-Z19D en chino del 16-3-2021

Fuentes no oficiales

Blogs

En el blog de RevSpace tienes dos páginas con mucha información, técnica especialmente, muy útil e interesante sobre el MH-Z19 y sobre el MH-Z19B

Foros

Puedes encontrar bastante información, aunque dispersa, en el foro oficial de ESP Easy.

Código fuente

Aunque no es fácil de localizar, por estar muy dispersa, yo he aprendido mucho estudiando el código fuente que he podido encontrar para utilizar el MH-Z19B.

GitHub es una estupenda fuente de información, en este sentido.

Conexión de los sensores MH-Z19, MH-Z19B y MH-Z19C MH-Z19D

La conexión básica los sensores MH-Z19, MH-Z19B y MH-Z19C es muy fácil, solamente requiere cuatro conexiones. Dos para la alimentación y dos para la transmisión de datos.

Alimentación

Te recomiendo mirar, cuidadosamente, los requisitos de alimentación de tu sensor específico. Dependiendo de la versión, el voltaje aceptable de funcionamiento puede variar.

Según las hojas de datos del fabricante, se aceptan los siguientes voltajes de funcionamiento:

MH-Z19: De 3.6 a 5.5 Voltios CC

MH-Z19B: De 4.5 a 5.5 Voltios CC

MH-Z19C: De 4.9 a 5.1 Voltios CC

MH-Z19D: De 4.9 a 5.1 Voltios CC

Ten cuidado con el MH-Z19C (y MZ-Z19D). Conseguir una alimentación de entre 4.9 voltios y 5.1 voltios (un margen muy estrecho) desde un puerto USB puede ser «delicado» y si no tienes un multímetro para medir que el voltaje que le llega al MH-Z19C está dentro de esos márgenes, yo te recomiendo evitarlo. Además, es importante que esta tensión esté bien estabilizada.

Tienes más información aquí.

Pines

Es importante que compruebes los pines de tu sensor específico, ya que algunos usuarios han reportado variaciones.

De todas formas, no te preocupes, podrás ver en la serigrafía del sensor a qué corresponde cada uno de los pines:

Pines del MH-Z19

Pines del MH-Z19 antiguo (hace tiempo que no se comercializa).

MH-Z19

Pines del MH-Z19B

Pines del MH-Z19B. Este sensor todavía se vende, pero ha sido sustituido por el MH-Z19C

MH-Z19B

Pines del MH-Z19C

Pines del MH-Z19C. Última versión de sensor. Vendida actualmente.

MH-Z19C

Versión con conector

Existen versiones de este sensor con conector, en lugar de pines.

A continuación, puedes ver el conexionado de los pines principales.

Verás que solamente he marcado cuatro cables, y eso es porque en las pruebas que he hecho con diferentes versiones del sensor MH-Z19 (incluidos los falsos) solamente estas cuatro conexiones han coincidido en todos. El resto puede variar.

Conexiones Conector MH-Z19B

Te recomiendo que, si tienes cualquier duda, y antes de conectar, te asegures bien de cómo está cableado tu sensor específico.

Si descubres un sensor con un cableado diferente, por favor, házmelo saber para incluir la información

Precauciones

El sensor es un instrumento de medida delicado. Deberías tomar las siguientes precauciones al montarlo:

  • El sensor es sensible a la electricidad estática – Evita tocar los pines con los dedos todo lo que te sea posible.
  • Antes de tocar el sensor toca algo con la mano, que esté puesto a tierra, para descargarte de electricidad estática (una tubería del agua o calefacción, por ejemplo).
  • La carcasa no es solo una caja. Forma parte activa del sensor – Ten cuidado de no hacer fuerza sobre ella.
  • El sensor es sensible a las altas temperaturas – Suéldalo con un soldador de electrónica de no mucha potencia (unos 30w puede estar bien) y no apliques calor en los pines durante demasiado tiempo. Déjalo enfriar entre la soldadura de un pin y la siguiente.

Datos proporcionados por el sensor

El sensor proporciona tres datos con cada medida:

PPM: Es la concentración de CO2 en ese momento. Es el único dato que debe ser utilizado por el usuario.

T: Es la temperatura interna del sensor. Este es un dato interno que utiliza el sensor para ajustar las medidas de CO2, ya que son dependientes de la temperatura, y no debe ser utilizado por el usuario. Hay enormes diferencias en la temperatura reportada de unos sensores a otros.

U: Nadie sabe qué es el valor U a ciencia cierta. Lo que se sabe es que es un parámetro interno que tiene que ver con el ABC (autocalibración del punto cero) y con las concentraciones de CO₂ que el sensor ha detectado en el último ciclo de ABC, pero nada más. Algunas versiones del sensor proporcionan este valor siempre a 0.

¿Es cierto que hay MH-Z19B falsos?

Sí que los hay, desgraciadamente, por lo que hay que tener cuidado con donde se compra.

He escrito un artículo completo a ese respecto porque está afectando a mucha gente. Si vas a comprar uno de estos sensores, o ya tienes uno, no dejes de leerlo.

La etiqueta del MH-Z19B

La etiqueta del MH-Z19B de papel, adherida en el lateral, muestra el modelo del sensor, el rango de medición con el que ha salido de fábrica (es posible cambiarlo posteriormente mediante un comando) y lo que parece ser una fecha (posiblemente de fabricación, calibración o control de calidad), y un código QR.

Es curioso porque en los sensores falsos está fecha no parece tener sentido. En el sensor de la fotografía, lo que suponemos que es la «fecha» indica el 25 de diciembre de 2020 (día de Navidad) y el vendedor me lo envío el 25 de diciembre de 2020.

Precauciones y cosas a tener en cuenta

Hay algunas cosas básicas con las que debes tener cuidado y, aunque la mayoría son obvias, no está de más reunirlas aquí bajo un mismo punto:

  • Evita cualquier presión, en cualquier dirección, sobre la carcasa plástica durante su soldadura, instalación y uso.
  • Cuando esté instalado en un espacio pequeño, el espacio debe estar bien ventilado, especialmente sus ventanas de difusión.
  • El módulo debe estar alejado de fuentes de calor y se debe evitar su exposición directa al sol u otras fuentes de calor.
  • El módulo debe ser calibrado periódicamente. El fabricante sugiere que se haga cada seis meses. Lógicamente esto dependerá del uso que se haga del él y el entorno en el que se utilice.
  • No utilices el sensor en un entorno polvoriento durante demasiado tiempo.
  • Comprueba muy bien los requisitos de alimentación de tu modelo concreto (consulta tu versión específica en el apartado «Conexión del MH-Z19B» de este artículo). La corriente de la fuente no debe ser inferior a 150mA. Fuera de este rango, provocará un malfuncionamiento del sensor (puede indicar una concentración de CO2 más baja de la real, o el sensor puede no funcionar correctamente).
  • Antes del procedimiento de calibración manual del punto cero, el sensor debe funcionar en un entorno de gas estable (400ppm) durante más de 20 minutos. Conecta el pin HD a nivel bajo (0V) durante más de 7 segundos.
  • No utilizar soldadura de ola o inmersión para el sensor.
  • Cuando se suelde con soldador, se debe fijar la temperatura en (350 ± 5) °C, y el tiempo de soldadura debe ser de 3 segundos máximo (suéldalo rápido, no te entretengas).

Análisis del sensor MH-Z19C

Variación con el voltaje de alimentación

Como vengo tiempo diciendo, no recomiendo el sensor MH-Z19C en absoluto, de forma general, y aquí voy a documentar algunos de las conclusiones a las que he llegado a través de algunas pruebas que voy a describir.

Este sensor tiene un problema importante con la alimentación, ya que el margen de voltaje de utilización es muy estrecho (de 4.9V a 5.1V según el fabricante, aunque como veremos es aún más estrecho).

Esta tensión de alimentación tan estrecha es muy difícil de mantener estable y muchos de los alimentadores USB que utilizamos proporcionan valores por encima y por debajo de este voltaje.

Además, hay otro problema añadido que, aunque se puede minimizar con un buen diseño, no resulta sencillo para el aficionado medio: Este tipo de sensores tienen un consumo relativamente alto, lo que provoca caídas en la alimentación producidas en los propios cables del circuito (es normal que estas caídas puedan ser de 0.2V~0.4V e incluyo mayores), lo que hace que sea extremadamente difícil tener una tensión de alimentación estabilizada.

En esta primera prueba he mantenido el sensor funcionando durante unas 10 horas alimentado por una fuente de alimentación de laboratorio programable que modificaba el voltaje de alimentación cada 60 segundos entre 4.5V y 5.15V en pasos de 0.5V. Esto es: alimentaba el sensor a 4.5V durante 60 segundos, pasaba a alimentarlo a 4.55V durante otros sesenta segundos, 4.6V durante otros sesenta segundos y así sucesivamente (al llegar a 5.15V pasaba a alimentarlo a 4.95V durante 5 minutos, para estabilizarlo, y volvía a iniciar el ciclo a 4.5V.

Para poder ver la desviación en las medidas de concentración de CO2 proporcionadas, según iba cambiando el voltaje de alimentación, lo he comparado con mi sensor de referencia, un Senseair S8.

En la gráfica puedes ver como la medida de CO2 reportada por el MH-Z19C (en verde) iba variando con el voltaje de alimentación (en azul) y su desviación respecto al sensor de referencia Senseair S8 (en naranja).

Puede parecer que las diferencias no son muy importantes, pero si hacemos zoom sobre un espacio de tiempo más corto:

Y si vamos aún más al detalle veremos claramente las oscilaciones del sensor MH-Z19C:

Fíjate como en el periodo de alimentación con 4.95V durante 5 minutos el MH-Z19C se va estabilizando lentamente.

Calibración de fábrica

Puede que en las gráficas anteriores te hayas fijado en las grandes diferencias de concentración de CO2 reportadas por ambos sensores.

El MH-Z19C era completamente nuevo, con su calibración de fábrica y con el ABC desactivado (desactivado en su primer minuto de funcionamiento tras conectarlo por primera vez para mantener su calibración de fábrica).

El Senseair S8, aun no habiendo sido calibrado desde hace algunas semanas, es mi sensor de referencia y no suele mostrar (haciendo medias móviles de 5 minutos) más de 80 ppm de desviación respecto a mis otros sensores fiables que tengo funcionando simultáneamente en la misma habitación (Winsen MH-Z19A, Cubic CM1106 y Senseair Sunrise).

Como ves la calibración del sensor MH-Z19C está bastante lejos del punto correcto. Lo más sorprendente es que este sensor venía con un certificado de calibración de Winsen. No parece que sea muy fiable este tipo de certificado y parece más un elemento de marketing por parte de este fabricante chino que otra cosa.

Imprescindible: Estabilizar la alimentación del MH-Z19C

De acuerdo, las diferencias que se observan en las medidas de la prueba anterior son muy sutiles, pero ahora veremos que es bastante peor de lo que parecía, y no me extraña que algunas personas no vieran problema en esas medidas. Para mí no es muy difícil saber que algo no anda bien porque he hecho muchas, muchísimas, pruebas con sensores de CO2 y he dedicado muchas, muchísimas, horas a su análisis. De forma que he hecho otra prueba «en el mundo real» para que se vea más claro lo que sucede:

En esta gráfica puedes ver las medidas del MH-Z19C (en verde) puesto a prueba junto a mi sensor Senseair S8 LP de referencia (línea amarilla) y el voltaje de alimentación del MH-Z19C (línea azul) durante un periodo de diez días.

En la primera parte el sensor está alimentado a través de un cargador USB múltiple con una capacidad de 2.5A por puerto. En la segunda, he incluido en la alimentación un estabilizador de voltaje (un step up down), pero forma que la alimentación del MH-Z19C está estabilizada a 5.0V (aunque veas que está sobre la línea de 5.2V, eso se debe a que no me tomé muchas molestias para calibrar el divisor de tensión y los pequeños «picos» de alimentación son debidos al ruido de ADC del ESP8266, que no es muy bueno).

En la primera parte puedes ver como la línea azul fluctúa (recuerda, el voltaje de alimentación del MH-Z19C) y con ella la medida de CO2, introduciendo ruido, saltos y picos inexistentes.

Te recomiendo que pulses sobre la imagen para verla más grande e incluso que hagas zoom sobre ella. Verás que tiene todo tipo de problemas: grandes picos inexistente, lentitud en las medidas, dientes de sierra, etc.

En la segunda parte, con la alimentación del MH-Z19C está estabilizada a 5.0V, la medida de CO2 se mantiene todo el tiempo cerca de la medida del Sensor de referencia.

Conclusiones con el MH-Z19C

Según mis pruebas, parece claro que el sensor MH-Z19C es un buen sensor y se puede utilizar sin problemas, siempre y cuando se estabilice la tensión de alimentación a 5.0V siempre.

Si lo alimentas con un alimentador/cargador USB tienes que poner el estabilizador YA. Estos aparatos no dan la calidad de estabilización de voltaje que el MH-Z19C necesita,

Te dejo aquí, por si te viene bien, el enlace al estabilizador de tensión en AliExpress. Es el mismo sitio donde lo he comprado yo. Por lo que cuesta, merece mucho la pena.

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 5 / 5. Recuento de votos: 5

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?

50 comentarios en «La biblia del sensor de CO2 MH-Z19B»

  1. Dear Mariete Team,

    I’m Summer from Winsen, which is the manufacturer of the MH-Z series CO2 sensor.

    So glad to to find such a professional and detailed blog introduction to our product.
    Thank you so much!
    We also have many other different types of gas sensors and other sensors. If you have any questions about our sensors of need some samples for your evaluation, please advise me freely. 😊
    My Email & Skype : [email protected]
    My Whatsapp: +86 17806246591
    Thank you again!

    Responder
  2. Hi,
    I have read somewhere that querying the sensor over UART too often can result in a reduced lifespan. Can you say something to that? Is it safer to use PWM as there are no manual queries being made to the sensor?

    Thanks!

    Responder
  3. Hi,
    I have read somewhere that quering the sensor via serial (UART) too often will decrease it’s life expectancy. However, this seems to be controversial since it seems to take a measurement on it’s own every second when using PWM. Can you tell something about this?

    Thanks

    Responder
  4. I’ve been using the MH-Z19B sensor for a while and I’ve noticed that the values fluctuate wildly. I have the meter outside and values shoot back and forth from 400 to over 1000 PPM. I am using a NodeMCU ESP8266 board with ESP_Easy and the calibration is on. I even used the web command for calibration mhzCMDCalibrateZero, but it doesn’t seem to help. Could the sensor be broken or is it very common for those readings to shoot back and forth like that?

    Responder
    • Hi Gudio.

      Most of the times issues with wrong readings and calibration problems come from problems with the sensor’s power supply.
      It’s very important to have a steady power for the sensor within the voltage range indicated by the manufacturer (4.5~5,5V for the MH-Z19B and 4.9~5,1V for the MH-Z19C.
      Take care of long or very thin wires for the power supply that can cause big voltage drops.
      Look also for bad connections that can cause all kind of issues. Revise soldering.

      Responder
  5. I have a B & C version, and both got somehow caught in an ABC cycle and are now reading ~400ppm lower than a reference sensor I have. It’s bitter cold winter now where I live, and so the house is closed up tight – CO2 levels are consistently running 800-1200 without intervention (based on my desktop monitor -https://www.amazon.ca/gp/product/B00H7HFINS)

    I have the Z19 wired to an ESP and some relays to control my HRV to bring in fresh air – I have tried putting the unit in the fresh air stream for an hour and then connecting the HD pin to ground for 10 seconds (> 7) but it does not seem to bring the zero point back down to a reasonable level.

    Has anyone had success getting these to recalibrate to a lower baseline (ie: back to 400ppm == 400ppm?)

    Responder
    • Hi Al.

      Most of the times issues with low readings and calibration problems come from problems with the sensor’s power supply.
      It’s very important to have a steady power for the sensor within the voltage range indicated by the manufacturer (4.5~5,5V for the MH-Z19B and 4.9~5,1V for the MH-Z19C.
      Take care of long or very thin wires for the power supply that can cause big voltage drops.
      Calibration by shorting the HD pin to GND for > 7 secs. works very well and is something that should give no problems at all.

      Responder
  6. Buenas necesito ayuda con un proyecto del sensor mhz19b con mi placa WeMos d1 mini pro,
    Os resumo, mi sensor no funciona ni con el codigo de ejemplo de arduino, siempre da el valor 0, he probado a cambiar los jumpers de pin y todo pero no consigo hacerlo funcionar.

    Necesito tenerlo funcionando para el lunes, si hubiera un grupo de whatsapp o algo por el que poder pasaros fotos os lo agradeceria mucho

    Responder
    • Hola Juan Antonio.

      Grupo de WhatsApp no sé si habrá alguno pero tienes el grupo de Telegram de eMariete: https://t.me/emariete_chat

      Yo te recomendaría que, como primer paso, sigas con tu placa el proyecto CO2 Easy. Al partir de algo que sabes positivamente que funciona y está bien documentado sabrás con seguridad que el hardware está bien y, cuando estés seguro, podrás centrarte en ese código de Arduino que estás usando.

      Un saludo.

      Responder
    • Hola Ger.

      Yo lo suelo pegar con pegamento termofusible (lo que suelen llamar cola o pegamento caliente) pero supongo que podrás pegarlo con la mayor parte de pegamentos normales como cianocrilato (Superglue, por ejemplo) o epoxi.

      Un saludo.

      Responder
  7. Hola, acabo de recibir mi sensor MH-Z19B, mi duda es sobre el rango, el sensor dice que tiene un rango de 0-5000, yo lo quiero utilizar para un invernadero, donde se pueden registrar valores menores a los 400ppm. Mi duda es, esos valores menores a los 400ppm si pueden ser registrados por este sensor? En este caso será necesario quitar la calibración automática? Ya que el valor menor no corresponderá a 400ppm, espero a verme dado a entender, saludos.

    Responder
    • Hola Carlos.

      Si miras el datasheet del fabricante verás que pone que el sensor puede medir por debajo de 400ppm (desde 0, según el datasheet) y de echo hace referencia a su uso en invernaderos.
      Efectivamente, tendrás que desactivar la calibración automática y calibrarlo manualmente de vez en cuando.

      Un saludo.

      Responder
  8. Hola en el diseño microcontrolador y sensor se puede alimentar ambos con 5V? No se quemará la Usart del sensor por los niveles de 5v de la señal serie?
    Saludos

    Responder
    • Hola Álvaro.

      Si miras el datasheet del sensor verás que el propio fabricante indica que los pines serie son de 3.3V, compatibles con 5V, por lo que no tendrás ningún problema.

      Un saludo.

      Responder
  9. Hola, excelente la página! Y traigo una consulta, compré uno que tiene fecha de 9/3/2021, recién salido del horno para la fecha de publicación, y cuando le consulto el valor de ppm con el comando 86 me responde un byte más a lo que dice la hoja de datos, yo le envío:
    FF 01 86 00 00 00 00 00 79
    Y responde:
    FF 86 01 96 39 00 01 00 A9
    FF: Inicio
    86: comando que responde
    01: Byte más significativo de las ppm de CO2
    96: Byte menos significativo de las ppm de CO2
    39: ????, esto no sé qué es, sé que sube cuando suben las ppm y baja cuando bajan las ppm
    00: está Ok que sea 00, creo!
    01: ????, este valor va subiendo con el tiempo
    00: está Ok que sea 00
    A9: CRC, todo bien

    Alguien sabe qué son esos datos adicionales? No es ruido porque me da bien el checksum, que por cierto me da que es el complemento a 0, no el complemento a 1 como dice el datashet… o estoy haciendo algo mal que me da bien jaja.

    Por lo pronto sé que ese valor de 39 acompaña el nivel de ppm, y el valor que tengo en 1 en el ejemplo, va subiendo con el tiempo, parecería ser un contador de tiempo.

    Responder
    • Hola César.

      Por lo que veo en tu mensaje la respuesta «FF 86 01 96 39 00 01 00 A9» es correcta y coincide con lo que indica el datasheet. Son los 9 bytes que debes recibir.

      El resto de los datos no está documentado por el fabricante, pero gracias al trabajo de algunas personas se ha averiguado parcialmente a qué corresponde. Este es un rápido resumen, pero puedes encontrar más información en los enlaces incluidos en el artículo.

      r[2..3], r[4], r[5], r[6], r[7]
      r[2..3] «final» CO2 level.
      r[4] – (temperature in C) + 40
      r[6] and r[7] – if ABC turned on – counter in «ticks» within a calibration cycle and the number of performed calibration cycles.

      Un saludo.

      Responder
    • Aunque ya hace mucho del mensaje, en cuanto al CRC a mi me da 59. No es por tocar las narices jeje, es por comprobarlo si te sigue devolviendo el checksum correcto o yo estoy equivocado en el cálculo jeje. Saludos.

      Responder

Deja un comentario