Medimos a concentração de CO2 no apartamento com o MH-Z19

Quase todas as estações meteorológicas, incluindo modelos chineses baratos por alguns dólares, podem medir os parâmetros básicos de temperatura e umidade do ar. O dióxido de carbono está se tornando cada vez mais difícil: praticamente não existem aparelhos disponíveis no mercado que possam medi-lo. Para complicar a situação, o CO2 é um gás sem cor e odor, por isso é quase impossível sentir sua concentração com o "nariz".

Detalhes e medidas sob o corte.

O próprio sensor MH-Z19 já foi descrito aqui no site. O artigo " Visão geral do sensor infravermelho de CO2 " foi tomado como base , e este material é sua continuação lógica. Sobre a medição da concentração de CO2 na rua foi escrito aqui , mas não havia dados sobre a concentração no apartamento. Preencha esta lacuna.

Ferro


As primeiras coisas pediram os seguintes componentes no eBay:
- Arduino Micro ATmega32U4 3.3V (preço de emissão $ 5). Porque o sensor tem lógica de 3 volts, o Arduino comum é melhor não usar.
- Display LCD OLED I2C 0,91 "128x32 (preço de emissão US $ 7). O monitor se conecta aos pinos padrão do Arduino i2c.
- Na verdade, o sensor MH-Z19 (preço de emissão $ 28).
- Um conjunto de fios com conectores para contatos de pinos (preço de emissão de US $ 1-2).
Portanto, o custo total foi de US $ 40 ou 2600r. Um dispositivo de marca de uma empresa conhecida custa cerca de duas vezes mais, embora aqui seja mais provável que não seja uma questão de economia, mas de interesse técnico.

O código do Arduino foi emprestado do artigo acima ., a saída de dados na tela foi adicionada a ela e, para uma análise mais conveniente, a saída foi convertida em um formato de linha simples com um separador. Também foram adicionados registros de data e hora, cada um correspondente a 10 segundos.
Código fonte
#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;
}


Tudo isso foi montado, o esboço foi derramado no arduino, o resultado é mais ou menos assim:
imagem

é claro que este não é o topo do design industrial (planeja encontrar algum tipo de caixa), mas para a tarefa de um dispositivo de exibição que possa funcionar de forma independente e transferir dados via USB, o dispositivo lida bastante. Para receber dados via USB, basta abrir o monitor da porta no Arduino IDE, os dados serão exibidos nele. O texto de lá pode ser copiado e aberto em qualquer programa, por exemplo, no Excel.

Medições


A próxima pergunta: o que estamos realmente medindo? O dispositivo fornece dados em ppm (partes por milhão, partes por milhão). 1000 ppm = 0,1% de conteúdo de CO2. Na Internet, você pode encontrar a seguinte tabela de concentrações permitidas:
- 350 - 450 ppm : nível normal ao ar livre.
- <600 ppm : níveis aceitáveis. Nível. Recomendado para quartos, jardins de infância e escolas.
- 600 - 1000 ppm : Reclamações de ar velho, possivelmente uma diminuição na concentração.
- 1000 ppm : os mais altos padrões da ASHRAE (Sociedade Americana de Engenheiros de Aquecimento, Refrigeração e Ar Condicionado) e OSHA (Administração de Segurança e Saúde Ocupacional).
- 1000 - 2500 ppm: Letargia geral, diminuição da concentração, dor de cabeça é possível.
- 2500 - 5000 ppm : possíveis efeitos adversos na saúde.

E, finalmente, os resultados. O sensor foi instalado na cozinha, as janelas são de metal-plástico, o tempo de medição é de cerca de 8 horas.

Os resultados foram bastante interessantes. Tempo horizontal em segundos, 3600 segundos correspondem a 1 hora.

As curvas no gráfico são decifradas da seguinte forma:
0h: leituras de cerca de 420ppm (correspondem à rua), não havia ninguém em casa, cheguei em casa do trabalho e ao mesmo tempo liguei o sensor.
0-2 horas: Estou na cozinha, pode-se ver que, na presença de uma pessoa, a concentração de CO2 sobe lentamente para 900 ppm.
2-4 horas: eu saí da sala, você pode ver como a concentração diminui lentamente.
4-6 horas: voltei, a concentração começou a crescer novamente.
6ª hora: um pote de ravioli é colocado no fogão. É interessante ver como a concentração aumentou quase instantaneamente para 1700ppm e depois começou a declinar lentamente. Embora o gás não queime por muito tempo (10 a 15 minutos), níveis altos> 1000 ppm são mantidos por pelo menos uma hora.
Fim do gráfico: uma janela foi aberta e o nível de CO2 caiu quase imediatamente.

Conclusões


O dispositivo acabou sendo bastante interessante e especialmente relevante para quem trabalha em casa no computador. Por exemplo, durante a redação deste artigo, o nível de CO2 aumentou dentro de casa de 500 para 770ppm. Olhar para a tela obriga a abrir a janela com mais frequência ou, finalmente, pensa no dispositivo em casa com ventilação normal (provavelmente o modo de micro-ventilação na janela não seria supérfluo, mas sim algum tipo de capa). Se eu estivesse comprando janelas novas agora, provavelmente pensaria em um modelo mais ou menos de alta qualidade com ventilação normal.

Também é importante observar a relevância de uma boa ventilação na cozinha: como o gráfico mostra, mesmo em 10 minutos, um queimador de gás pode "queimar" todo o suprimento de oxigênio, elevando a concentração de CO2 a um nível muito alto. As medidas no quarto mostraram que, em termos de ventilação, tudo também não é muito bom: de manhã, a concentração de CO2 é superior a 1000 ppm e, para o trabalho mental, um bom sono é muito importante.

Em geral, este dispositivo simples e barato permite verificar com muita eficiência a qualidade do ar em um apartamento ou escritório.
O autor deseja a todos boa saúde e bom humor. Bem, claro, bom ar também.

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


All Articles