Medimos la concentración de CO2 en el apartamento con el MH-Z19

Casi cualquier estación meteorológica, incluidos los modelos chinos baratos por unos pocos dólares, puede medir los parámetros básicos de la temperatura del aire y la humedad. El dióxido de carbono se está volviendo cada vez más difícil: prácticamente no hay aparatos comercialmente disponibles que puedan medirlo. Para complicar la situación, el CO2 es un gas sin color ni olor, por lo que es casi imposible sentir su concentración con la "nariz".

Detalles y medidas bajo el corte.

El sensor MH-Z19 en sí ya se ha descrito aquí en el sitio. El artículo " Descripción general del sensor infrarrojo de CO2 " se tomó como base , y este material es su continuación lógica. Aquí se escribió sobre la medición de la concentración de CO2 en la calle , pero no había datos sobre la concentración en el apartamento. Llena este vacío.

Hierro


Primero lo primero que ordenó los siguientes componentes en eBay:
- Arduino Micro ATmega32U4 3.3V (precio de emisión $ 5). Porque el sensor tiene lógica de 3 voltios, es mejor no usar Arduino ordinario.
- Pantalla LCD OLED I2C 0.91 "128x32 (precio de emisión $ 7). La pantalla se conecta a los pines Arduino i2c estándar.
- En realidad, el sensor MH-Z19 (precio de emisión $ 28).
- Un conjunto de cables con conectores para contactos pin (precio de emisión $ 1-2)
Por lo tanto, el costo total fue de ~ $ 40, o 2600r. Un dispositivo de marca de una empresa conocida cuesta aproximadamente el doble, aunque aquí es más probable que no sea una cuestión de ahorro, sino de interés técnico.

El código para Arduino fue tomado del artículo anterior ., se agregó la salida de datos a la pantalla y, para un análisis de datos más conveniente, la salida se convirtió a un formato de línea simple con un separador. También se han agregado marcas de tiempo, cada una correspondiente a 10 segundos.
Código fuente
#include <SoftwareSerial.h>
#include <Wire.h>

// I2C OLED
#include "SSD1306Ascii.h"
#include "SSD1306AsciiWire.h"
#define I2C_ADDRESS 0x3C
SSD1306AsciiWire oled;

// CO2 sensor:
SoftwareSerial mySerial(8,9); // RX,TX
byte cmd[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79}; 
unsigned char response[9];

void setup() {
  // Serial
  Serial.begin(9600);
  mySerial.begin(9600);

  // OLED
  Wire.begin();         
  oled.begin(&Adafruit128x32, I2C_ADDRESS);
  oled.set400kHz();  
  oled.setFont(ZevvPeep8x16);  

  oled.clear();  
  oled.println("setup::init()");
}

long t = 0;

void loop() 
{
  mySerial.write(cmd, 9);
  memset(response, 0, 9);
  mySerial.readBytes(response, 9);
  int i;
  byte crc = 0;
  for (i = 1; i < 8; i++) crc+=response[i];
  crc = 255 - crc;
  crc++;

  oled.clear();  
  if ( !(response[0] == 0xFF && response[1] == 0x86 && response[8] == crc) ) {
    Serial.println("CRC error: " + String(crc) + " / "+ String(response[8]));
    oled.println("Sensor CRC error");
  } else {
    unsigned int responseHigh = (unsigned int) response[2];
    unsigned int responseLow = (unsigned int) response[3];
    unsigned int ppm = (256*responseHigh) + responseLow;
    Serial.print(String(t)); Serial.print(","); Serial.print(ppm); Serial.println(";");
    if (ppm <= 400 || ppm > 4900) {
      oled.println("CO2: no data");          
    } else {
      oled.println("CO2: " + String(ppm) + " ppm"); 
      if (ppm < 450) {   
        oled.println("Very good");
      }
      else if (ppm < 600) {   
        oled.println("Good");
      }
      else if (ppm < 1000) {   
        oled.println("Acceptable");
      }
      else if (ppm < 2500) {   
        oled.println("Bad");
      }
     else {   
        oled.println("Health risk");
      }
    }
  }
  delay(10000);
  t += 10;
}


Todo esto se armó, el boceto se vertió en arduino, el resultado se ve más o menos así: por
imagen

supuesto, este no es el mejor diseño industrial (planea encontrar algún tipo de carcasa), sino la tarea de un dispositivo de visualización que puede funcionar de forma independiente y transferir datos a través de USB, el dispositivo bastante bien hecho Para recibir datos a través de USB, simplemente abra el monitor del puerto en el IDE de Arduino, los datos se mostrarán en él. El texto desde allí se puede copiar y abrir en cualquier programa, por ejemplo, en Excel.

Medidas


La siguiente pregunta: ¿qué estamos midiendo realmente? El dispositivo proporciona datos en ppm (partes por millón, partes por millón). 1000 ppm = 0.1% de contenido de CO2. En Internet puede encontrar la siguiente tabla de concentraciones permitidas:
- 350 - 450 ppm : Nivel normal al aire libre.
- <600 ppm : niveles aceptables. Nivel Recomendado para dormitorios, guarderías y escuelas.
- 600 - 1000 ppm : quejas de aire viciado, posiblemente una disminución de la concentración.
- 1000 ppm : los más altos estándares de ASHRAE (Sociedad Americana de Ingenieros de Calefacción, Refrigeración y Aire Acondicionado) y OSHA (Administración de Seguridad y Salud Ocupacional).
- 1000 - 2500 ppm: Letargo general, disminución de la concentración, dolor de cabeza es posible.
- 2500 - 5000 ppm : posibles efectos adversos para la salud.

Y finalmente, los resultados. El sensor se instaló en la cocina, las ventanas son de metal y plástico, el tiempo de medición es de aproximadamente 8 horas.

Los resultados fueron bastante interesantes. Tiempo horizontal en segundos, 3600 segundos corresponden a 1 hora.

Las curvas en el gráfico se descifran de la siguiente manera:
0h: lecturas de aproximadamente 420 ppm (corresponden a la calle), no había nadie en casa, llegué a casa del trabajo y al mismo tiempo encendí el sensor.
0-2 horas: estoy en la cocina, se puede ver que, en presencia de una persona, la concentración de CO2 aumenta lentamente a 900 ppm.
2-4 horas: salí de la habitación, puedes ver cómo la concentración disminuye lentamente.
4-6 horas: regresé, la concentración comenzó a crecer nuevamente.
Hora 6: se coloca una olla de ravioles en la estufa. Es interesante ver cómo la concentración aumentó casi instantáneamente a 1700ppm, y luego comenzó a disminuir lentamente. Aunque el gas no se quemó por mucho tiempo (10-15 minutos), los niveles altos> 1000 ppm se mantienen durante al menos una hora.
Fin del gráfico: se abrió una ventana y el nivel de CO2 cayó casi de inmediato.

Conclusiones


El dispositivo resultó ser bastante interesante y especialmente relevante para quienes trabajan en casa en la computadora. Entonces, por ejemplo, durante la redacción de este artículo, el nivel de CO2 aumentó en el interior de 500 a 770ppm. Mirar la pantalla te obliga a abrir la ventana con más frecuencia o, finalmente, pensar en el dispositivo en la casa con ventilación normal (probablemente el modo de microventilación en la ventana no sería superfluo, sino más bien una especie de campana). Si estuviera comprando nuevas ventanas ahora, probablemente habría pensado en un modelo más o menos de alta calidad con ventilación normal.

También es importante tener en cuenta la relevancia de una buena ventilación en la cocina: como muestra el gráfico, incluso en 10 minutos, un quemador de gas puede "quemar" todo el suministro de oxígeno, llevando la concentración de CO2 a un nivel muy alto. Las mediciones en el dormitorio también mostraron que, en términos de ventilación, no todo es muy bueno: por la mañana, la concentración de CO2 es más de 1000 ppm, y para el trabajo mental es muy importante dormir bien.

En general, este dispositivo simple y económico le permite verificar de manera muy efectiva la calidad del aire en un departamento u oficina.
El autor desea a todos buena salud y buen humor. Bueno, por supuesto, buen aire también.

Source: https://habr.com/ru/post/es395755/


All Articles