Wir messen die CO2-Konzentration in der Wohnung mit dem MH-Z19

Fast jede Wetterstation, einschließlich billiger chinesischer Modelle für ein paar Dollar, kann die Grundparameter Lufttemperatur und Luftfeuchtigkeit messen. Kohlendioxid wird immer schwieriger: Es gibt praktisch keine handelsüblichen Geräte, die es messen können. Erschwerend kommt hinzu, dass CO2 ein Gas ohne Farbe und Geruch ist, sodass es fast unmöglich ist, seine Konzentration mit der „Nase“ zu spüren.

Details und Maße unter dem Schnitt.

Der MH-Z19-Sensor selbst wurde hier auf der Website bereits beschrieben. Der Artikel " Überblick über den Infrarot-CO2-Sensor " wurde als Grundlage genommen , und dieses Material ist seine logische Fortsetzung. Über die Messung der CO2-Konzentration auf der Straße wurde hier geschrieben , aber es gab keine Daten über die Konzentration in der Wohnung. Füllen Sie diese Lücke.

Eisen


Zuerst wurden bei eBay folgende Komponenten bestellt:
- Arduino Micro ATmega32U4 3.3V (Ausgabepreis 5 USD). Weil Der Sensor hat eine 3-Volt-Logik, gewöhnliches Arduino ist besser nicht zu verwenden.
- OLED-LCD-Display I2C 0,91 "128 x 32 (Ausgabepreis 7 US-Dollar). Das Display wird an Standard-Arduino i2c-Pins angeschlossen.
- Eigentlich der Sensor MH-Z19 (Ausgabepreis 28 $).
- Ein Satz Drähte mit Anschlüssen für Stiftkontakte (Ausgabepreis 1-2 USD)
Die Gesamtkosten betrugen somit ~ 40 USD oder 2600r. Ein Markengerät eines bekannten Unternehmens kostet etwa doppelt so viel, obwohl es hier eher nicht um Sparen, sondern um technisches Interesse geht.

Der Code für Arduino wurde aus dem obigen Artikel entlehnt .Die Datenausgabe zur Anzeige wurde hinzugefügt, und für eine bequemere Datenanalyse wurde die Ausgabe in ein einfaches Zeilenformat mit einem Trennzeichen konvertiert. Es wurden auch Zeitstempel hinzugefügt, die jeweils 10 Sekunden entsprechen.
Quellcode
#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;
}


All dies wurde zusammengestellt, die Skizze wurde in Arduino gegossen, das Ergebnis sieht ungefähr so ​​aus:
Bild

Natürlich ist dies nicht die Spitze des Industriedesigns (Pläne, eine Art Gehäuse zu finden), sondern für die Aufgabe eines Anzeigegeräts, das sowohl unabhängig arbeiten als auch Daten über USB übertragen kann, das Gerät ziemlich fertig. Um Daten über USB zu empfangen, öffnen Sie einfach den Port-Monitor in der Arduino IDE. Die Daten werden darin angezeigt. Der Text von dort kann in jedes Programm kopiert und geöffnet werden, beispielsweise in Excel.

Messungen


Die nächste Frage: Was messen wir eigentlich? Das Gerät liefert Daten in ppm (Teile pro Million, Teile pro Million). 1000 ppm = 0,1% CO2-Gehalt. Im Internet finden Sie die folgende Tabelle der zulässigen Konzentrationen:
- 350 - 450 ppm : Normales Niveau im Freien.
- <600 ppm : Akzeptable Werte. Level. Empfohlen für Schlafzimmer, Kindergärten und Schulen.
- 600 - 1000 ppm : Beschwerden über abgestandene Luft, möglicherweise eine Abnahme der Konzentration.
- 1000 ppm : Höchstmaß an Standards ASHRAE (American Society of Heating, Refrigerating and Air Conditioning Engineers) und OSHA (Occupational Safety & Health Administration).
- 1000 - 2500 ppm: Allgemeine Lethargie, verminderte Konzentration, Kopfschmerzen sind möglich.
- 2500 - 5000 ppm : Mögliche nachteilige Auswirkungen auf die Gesundheit.

Und schließlich die Ergebnisse. Der Sensor wurde in der Küche installiert, die Fenster sind aus Metall-Kunststoff, die Messzeit beträgt ca. 8 Stunden.

Die Ergebnisse waren sehr interessant. Horizontale Zeit in Sekunden, 3600 Sekunden entsprechen 1 Stunde.

Die Kurven in der Grafik werden wie folgt entschlüsselt:
0h: Messwerte von ca. 420 ppm (entspricht Straße), es war niemand zu Hause, ich kam von der Arbeit nach Hause und schaltete gleichzeitig den Sensor ein.
0-2 Stunden: Ich bin in der Küche, es ist zu sehen, dass in Gegenwart einer Person die CO2-Konzentration langsam irgendwo auf 900 ppm steigt.
2-4 Stunden: Ich habe den Raum verlassen, man kann sehen, wie die Konzentration langsam abnimmt.
4-6 Stunden: Ich kehrte zurück, die Konzentration begann wieder zu wachsen.
6. Stunde: Ein Topf Ravioli wird auf den Herd gestellt. Es ist interessant zu sehen, wie die Konzentration fast augenblicklich auf 1700 ppm anstieg und dann langsam abnahm. Obwohl das Gas nicht lange brannte (10-15 Minuten), halten hohe Werte> 1000 ppm mindestens eine Stunde lang an.
Ende des Diagramms: Ein Fenster wurde geöffnet und der CO2-Gehalt fiel fast sofort.

Schlussfolgerungen


Das Gerät erwies sich als sehr interessant und besonders relevant für diejenigen, die zu Hause am Computer arbeiten. So stieg beispielsweise während des Schreibens dieses Artikels der CO2-Gehalt in Innenräumen von 500 auf 770 ppm. Wenn Sie auf den Bildschirm schauen, müssen Sie entweder das Fenster häufiger öffnen oder schließlich an das Gerät im Haus mit normaler Belüftung denken (wahrscheinlich wäre der Mikrobelüftungsmodus im Fenster nicht überflüssig, sondern eine Art Haube). Wenn ich jetzt neue Fenster gekauft hätte, hätte ich wahrscheinlich an ein mehr oder weniger hochwertiges Modell mit normaler Belüftung gedacht.

Es ist auch wichtig, die Relevanz einer guten Belüftung in der Küche zu beachten: Wie die Grafik zeigt, kann ein Gasbrenner bereits in 10 Minuten die gesamte Sauerstoffversorgung „ausbrennen“ und so die CO2-Konzentration auf ein sehr hohes Niveau bringen. Messungen im Schlafzimmer zeigten, dass auch in Bezug auf die Belüftung nicht alles sehr gut ist: Am Morgen beträgt die CO2-Konzentration mehr als 1000 ppm, und für die geistige Arbeit ist ein guter Schlaf sehr wichtig.

Im Allgemeinen können Sie mit diesem einfachen und kostengünstigen Gerät die Luftqualität in einer Wohnung oder einem Büro sehr effektiv überprüfen.
Der Autor wünscht allen gute Gesundheit und gute Laune. Natürlich auch gute Luft.

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


All Articles