MH-Z19 CO2 Grundwert zurücksetzen (MH-Z19 CO2 Reset the basic value)

mh-z19 CO2 Sensor

Ich habe vereinzelt CO2-Sensoren bekommen, deren Grundwert von ca. 400 ppm nicht stimmte. Das bemerkt man am besten, wenn man die angezeigten Werte mit deren anderer Sensoren vergleicht. Zum Glück lässt sich der Wert leicht zurücksetzen. Wichtig ist, dass der reale Wert auch dem Grundwert in der Atmosphäre entspricht. Dies lässt sich einfach mit einem anderen Sensor prüfen. Ich öffne dann einfach das Fenster so lange, bis der Wert erreicht ist. Anschliessend verbindet man das HD-Pin mit einem ca. 3 kOhm Widerstand für 7 Sekunden gegen Masse. Es darf nach Datenblatt nur ein Strom von max. 10 mA fließen. Nach Neustart der Anwendung bzw. des Sensors sollte der Wert dementsprechen bei ca. 400 ppm liegen. Wenn dann der CO2 Wert später wieder ansteigt sollte der Wert wie bei anderen Sensoren liegen. Für Abweichungen müsste der Istwert korrigiert werden. Dafür habe ich aber noch keine einfache Lösung gefunden. Mal schauen, vielleicht fällt mir da noch etwas ein.

MH-Z19 CO2 Reset the basic value

I have isolated sensors, whose basic value of about 400 ppm was not correct. This is most noticeable when comparing the displayed values with their other sensors. Fortunately, the value can easily be reset. It is important that the real value also corresponds to the basic value in the atmosphere. This can be easily checked with another sensor. I then simply open the window until the value is reached. Then connect the HD pin to a ground with approx. 3 kOhm resistance for 7 seconds. According to the data sheet, only a current of max. 10 mA. After restarting the application or the sensor, the value should correspond to approximately 400 ppm. If the CO2 value rises later, the value should be the same as with other sensors. The actual value should be corrected for deviations. But I have not yet found a simple solution. Let’s see, maybe there’s something else.

MHZ-19 CO2 Messung mit TFT Anzeige

Multisensorsketch mit Arduino MH-Z19 …

Datenblatt

Feinstaub-Messung in Limbach-Oberfrohna

SDS011 Feinstaub-Sensor

Einleitung

Da ich Sensoren gern baue, habe einen Feinstaub-Sensor zusammengebaut und konfiguriert. Auf http://luftdaten.info/ gibt es die Anleitung für einen verbreitet genutztes Messmodul mit angeschlossener Webdarstellung.

Kosten des Feinstaub-Sensors

Die Kosten liegen bei etwas über 40 Euro. Teuerstes Teil ist der Sensor (SDS011), welcher die Partikelanzahl über einen Laser misst.

Funktion

Die Daten des Feinstaub-Sensors werden dann mit der Temperatur und Feuchte an einen NodeMCU geschickt und per Wlan über das eigene Netzwerk zur Webseite geschickt und dann dort angezeigt.

Links

Hier der Link für die Daten meines Sensors für Limbach-Obefrohna. Eine Karte mit den weltweiten Messwerten des Sensors kann man mit folgendem Link öffnen.

 

Co2-Messung mit dem MH-Z19 und Anzeige auf dem 7735 TFT-Display 1,8 Zoll

7735 lcd displa mit mh-z21

Hier nun mal ein Sketch um die Werte live auf einem preiswerten TFT-Display anzuzeigen.

/*
  Arduino TFT text example

   http://www.arduino.cc/en/Tutorial/TFTDisplayText

 */

#include <TFT.h>  // Arduino LCD library
#include <SPI.h>

// pin definition for the Uno
#define cs   10
#define dc   9
#define rst  8

// pin definition for the Leonardo
// #define cs   7
// #define dc   0
// #define rst  1

// create an instance of the library
TFT TFTscreen = TFT(cs, dc, rst);

// char array to print to the screen
char sensorPrintout[6];

void setup() {

  // Put this line at the beginning of every sketch that uses the GLCD:
  TFTscreen.begin();

  // clear the screen with a black background
  TFTscreen.background(0, 0, 0);

  // write the static text to the screen
  // set the font color to white
  TFTscreen.stroke(255, 255, 255);
  // set the font size
  TFTscreen.setTextSize(2);
  // write the text to the top left corner of the screen
  TFTscreen.text("Sensor Value :\n ", 0, 0);
  // ste the font size very large for the loop
  TFTscreen.setTextSize(5);

  #define AIQ_SENSOR_ANALOG_PIN 5
}
void loop() {
  //CO2
  
  unsigned long duration = pulseIn(AIQ_SENSOR_ANALOG_PIN, HIGH, 2000000);
  
  //Serial.print(duration/1000); Serial.println(" ms ");
  //from datasheet
  //CO2 ppm = 2000 * (Th - 2ms) / (Th + Tl - 4ms)
  //  given Tl + Th = 1004
  //        Tl = 1004 - Th
  //        = 2000 * (Th - 2ms) / (Th + 1004 - Th -4ms)
  //        = 2000 * (Th - 2ms) / 1000 = 2 * (Th - 2ms)
 
  long co2ppm = 5 * ((duration/1000) - 2);
  Serial.print(co2ppm);

 
String sensorVal = String(co2ppm);
 sensorVal.toCharArray(sensorPrintout, 6);
  TFTscreen.stroke(255,255,255);
  TFTscreen.text(sensorPrintout, 20, 50);

  delay(1000);
  TFTscreen.stroke(0,0,0);
  TFTscreen.text(sensorPrintout, 20, 50);
}

Belegung ST7735
Belegung ST7735