CO2 meten met de MH-Z19

CO2 meten met de MH-Z19

Gepubliceerd op: 10-02-2017 22:03

Naast het meten van allerlei variabelen in de buitenlucht met een weerstation is het meten van de CO2-concentratie binnenshuis ook erg interessant. Zo weet je wanneer je een raampje open moet zetten of kun je zelfs je mechanische ventilatie automatisch een standje harder laten draaien.

Zelf CO2 meten in de leefomgeving

CO2, ook wel koolstofdioxide genoemd, is een veelvoorkomend kleurloos en geurloos gas. Omdat wij als mensen CO2 uitademen is de concentratie van CO2 in de binnenlucht een goede indicator van de luchtkwaliteit. Als het CO2 gehalte stijgt is het aan te raden om de ruimte te ventileren.

In de buitenlucht is de concentratie van CO2 ongeveer 404 ppm (parts per million), deze concentratie is al jaren stijgende door de hoeveelheid CO2 die wij met zijn allen uitstoten. De CO2 concentratie in de buitenlucht kan lokaal worden beïnvloed door menselijke oorzaken als industrie, verkeer en open vuur als open haarden, barbecue en vuurkorven. Naast CO2 zijn voorgenoemde zaken ook grote bronnen van fijnstof en andere gassen die we eventueel kunnen meten. In dit artikel beperken we ons echter tot het meten van CO2 omdat dit relatief makkelijk en accuraat kan.

Effecten van CO2 concentraties

Mensen zijn zeer gevoelig voor de CO2-concentratie in de lucht. Bij waardes vanaf 600 ppm kan men al klachten ervaren zoals verminderde alertheid. Vanaf zo’n 1000 ppm ervaren mensen duizeligheid en kortademigheid (misschien wordt je zo wel eens wakker als je met het raam dicht slaapt?) en vanaf 2500 ppm is gezondheidsschade op de lange termijn niet meer uit te sluiten. 5000 ppm is de maximaal toegestane concentratie voor arbeiders gedurende een 8 uur durende werkdag.

Effecten van verschillende CO2 concentraties op het menselijk welbevinden

Mijn persoonlijke aanpak is constant ventileren om binnenshuis onder de 600 ppm CO2 te blijven. Bij 1000 ppm gaan echt alle ramen en deuren open, dit komt wel eens voor met feestjes als er veel mensen in huis zijn. En slapen gaat altijd heerlijk met het raam open!

Bouw een CO2 meter met Arduino

Klassieke stand-alone CO2 meters zijn goed verkrijgbaar maar vrij kostbaar. Gelukkig kun je met behulp van de Arduino een goede en relatief goedkope CO2 meter bouwen!

Voorheen probeerde ik het CO2 gehalte te meten met een MQ135 luchtkwaliteitssensor. Op internet zijn een aantal libraries beschikbaar die met behulp van allerlei formules de gemeten waarde kunnen omzetten naar een CO2 concentratie in ppm. Helaas is deze sensor niet gekalibreerd, behoorlijk onnauwkeurig en een enorme energieslurper door het ingebouwde verwarmingselement. Maar toen kwam daar de MH-Z19 sensor op AliExpress, een NDIR CO2 sensor voor ongeveer 20 Euro. Pluspunten van deze sensor die gebruik maakt van Non-Dispersief InfraRood-licht zijn het lage energieverbruik, het feit dat deze sensor wel gekalibreerd is, en de eenvoudige uitlezing via een seriële poort (UART).

MH-Z19 CO2 sensor aansluiten

Ik heb de MH-Z19 sensor op mijn Arduino Mega aangesloten die het hart van mijn home automation systeem vormt. Het fijne van de Arduino Mega is dat hij over 3 extra hardware seriële poorten beschikt. Zo kan ik de CO2 sensor op maximale snelheid met de Arduino laten communiceren zonder dat dit van invloed is op de rest van mijn programma. De hardware serial-interrupt en -buffer handelt alles af. Sluit je de CO2 sensor aan op een Arduino Uno dan kun je gebruik maken van de SoftwareSerial library om een extra UART verbinding op te zetten op een van de andere pinnen.

Het aansluiten van de MH-Z19 sensor een Arduino

De pinnen van de sensor zijn netjes gelabeld dus aansluiten kan eigenlijk niet fout. Vin gaat op de 5V van de Arduino, gnd naar ground en Rx en Tx naar respectievelijk Tx en Rx op de Arduino (kruislings dus!). In mijn geval zit de MH-Z19 op Serial2 van de Arduino Mega, dat zijn pinnen 16 en 17. Als je de Arduino nu van stroom voorziet zul je achter de openingen van de sensor eens in de zoveel seconden een rood lichtje zien gloeien, de sensor werkt!

Code voor de MH-Z19 CO2 sensor

In de datasheet van de MH-Z19 kan je het een en ander aan informatie vinden over de werking van de sensor en de communicatie via PWM en UART. Om een CO2 meting via UART bij de sensor op te vragen moet je het volgende doen: allereerst open je de juiste seriële poort met een baudrate van 9600 bps, vervolgens zorg je dat de seriële buffer leeg is en stuur je het juiste commando zoals vermeld in de datasheet. Daarna lees je de reactie van de sensor uit de seriële buffer in en check je of de eerste twee bytes aan de verwachtingen voldoen. Tot slot kun je de waardes berekenen voor ppm, temperatuur, status en minimum-waarde.

// Start serial in setup routine
Serial2.begin(9600);

// Command and response
byte cmd[9] = {0xFF, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79};
byte response[9];

// Clear serial buffer
while (Serial2.available() > 0) {
  Serial2.read();
}

// Send command and read response
Serial2.write(cmd, 9);
Serial2.readBytes(response, 9);

// Check if response is valid
if (response[0] != 0xFF) {
  // wrong starting byte from co2 sensor
}
if (response[1] != 0x86) {
  // Wrong command from co2 sensor
}

int ppm = (256 * response[2]) + response[3];
int temp = response[4]-40;
byte status = response[5];
int minimum = (256 * response[6]) + response[7];

Met dank aan TwoBears.at voor het aanvullen van de ontbrekende info uit de datasheet.

8 reacties op dit artikel »

Aanbevolen artikelen