Skip to end of metadata
Go to start of metadata

Gerade in Corona-Zeiten sind CO2-Ampeln zur Messung des Kohlenstoffdioxid-Werts der Luft und zur Darstellung der gemessenen Luftqualität in aller Munde. 

Ideal für Räume, in denen sich längere Zeit mehrere Menschen aufhalten (z.B. auch in Schulen / Klassenzimmern / Büros), dabei natürlich ausatmen und es so zu einer Kohlendioxid-Belastung der Raumluft kommen kann. 

Der Sensor misst den CO2-Wert, überträgt diesen und das Ergebnis wird dann z.B. mit einer Ampel angezeigt. Zum Beispiel rot = es muss dringend gelüftet werden. 

Auch wir haben uns an die Entwicklung eines ersten Exemplars gewagt...


CO2-Ampel  CO2-Ampel Luftmessung   


Sensor

Wir verwenden den MHZ-19Beinen Sensor zur Messung des CO2-Gehalts der Luft und der Temperatur.

Die CO2-Messung basiert auf dem sogenannten nichtdispersiven Infrarotprinzip (NDIR), dabei wird ein Infrarotlichtstrahl durch eine mit der zu messenden Luft gefüllten Glasröhre geschickt.
Ein spezieller Infrarotsensor misst am anderen Ende, wie viel Licht vom CO2 absorbiert wurde, indem die Differenz des einfallenden mit dem austretenden Licht gebildet wird.
Quelle

Weitere Infos zum MHZ-19B: Intelligent Infrared CO2 Module - (Model: MH-Z19B) - UserManual (PDF-Datei) beim Hersteller. 

Wir haben uns für diesen Sensor entschieden, da er für seine Art extrem preisgünstig zu beziehen ist (günstiger als der SCD30) und nicht für einen VOC-Sensor (volatile organic compounds), wie z.B. den BME680. 

Das NDIR-Verfahren, welches der MHZ-19B nutzt, scheint uns selektiver für die CO2-Messung zu sein. 



Messung

Die Messung beginnt nach einer Aufheiz-Phase von cirka 3 Minuten und findet dann periodisch alle 2 Minuten statt. 

Der Sensor liefert das Ergebnis sowohl als PWM-Signal, als auch über eine UART-Schnittstelle mit 9.600 Baud. 

Da auch die Temperatur gemessen wird, kann der Sensor intern die gemessenen CO2-Werte kompensieren - Temperaturkompensation (bei unterschiedlichen Temperaturen müssen anscheinend die Roh-Werte des Sensors intern umgerechnet werden). Das Ergebnis ist ein Wert in PPM (parts per million), der sich zwischen 400 und 5.000 bewegen kann. 

Um die 400 ist hier der Normal-Wert im Freien, sozusagen also der Ausgangswert / der "Gut"-Wert. 

Im ersten Prototyp haben wir auch einen kleinen Lüfter ins Sensor-Gehäuse integriert, um gezielt die Luft im Gehäuse austauschen zu können. Der Lüfter ist vom IoT-Controller steuerbar. 

Sensor der CO2-Ampel


Graphen / Beispiele

Besuch einer Schulklasse mit Lüftungen 


Vormittags-Kinderkurs, am Schluss wurde nicht vollständig gelüftet, CO2 geht langsam zurück


In beiden Fällen kommt es dank Lüftung nicht zum kritischen Wert über 1.000.


Übertragung

Die Übertragung nutzt in unserem ersten Prototypen das MQTT-Protokoll über WiFi / WLAN und wird mittels 🦉Heinrich "Hotti" Hottareks  IoT-Controller (ESP8266) realisiert. 

Dazu wurden beide Schnittstellen (UART + PWM) des Sensors an den Controller angeschlossen. Die Messwerte werden dann mit Node-RED und einem entsprechendem flow verarbeitet und an die ebenfalls per MQTT verbundene LED-Ampel weitergegeben. 

Der flow kommuniziert auch via MQTT zurück an den Sensor und kann den dort angeschlossenen kleinen Lüfter aktivieren und steuern. 

Node-RED für die CO2-Ampel

Messwert-Analyse

Die Messwert-Analyse geschieht im Node-RED-flow - ein Funktions-Node setzt den empfangenen ppm-Wert in eine entsprechende Ampelfarbe um und schickt den entsprechenden Steuerbefehl über MQTT an die LED-Ampel. 

Grösste Herausforderung war hier die Einschätzung der gelieferten Werte. Wann ist die Luft noch okay, wann muss gelüftet werden und wann sollten alle den Atem anhalten und schnell den Raum verlassen (wink)

Gemäß der Tabelle des Bundesumweltamtes:  Gesundheitliche Bewertung von Kohlendioxid in der Innenraumluft (PDF-Datei)  haben wir uns für folgende Schwellwerte entschieden: 

  • 400 - 700 ppm = grün (tick)
  • 700 - 1.000 ppm = gelb (warning)
  • 1.000 - 2.000 ppm = rot (error) 
  • über 2.000 ppm = rot-blinkend (minus) 


Die ersten Versuche habe gezeigt, dass die Messwerte auch gerne mal um einen Schwellwert herum pendeln und dann zu einem mehrfachen, kurzfristigen Wechsel der Ampel-Anzeige führen.
Daher haben wir eine Hysterese-Funktion implementiert, die dieses Verhalten korrigiert. Meint: ein Wechsel der Anzeige findet nur statt, wenn der Schwellwert in die entsprechende Richtung um mindestens 50 über- bzw. unterschritten wird. So wird ein "Flackern" der Anzeige verhindert. 

Lüfter

Eine weitere Herausforderung war die Frage, wie der Sensor zu neuer Messluft kommt, also wie der zusätzlich eingebaute Lüfter gesteuert werden muss, um vernünftige Werte zu erhalten. 

Erkenntnisse hierbei:
dauerhaftes laufen des Lüfters erzeugt noisy / springende Werte, welche nicht wirklich zu gebrauchen sind. Ein periodisches lüften asynchron zum Messzeitpunkt liefert hier auch keine zuverlässigen Werte - es gibt ab und zu mal Ausreißer. Letztendlich hat eine kurze Lüfteraktivierung für 0,2 Sekunden unmittelbar nach der Messwerterfassung die besten und konstanten Ergebnisse gebracht. Dieser kurze Lüfterlauf mit ein paar relativ langsamen Umdrehungen reicht für einen Luftaustausch in dem kleinen Gehäuse und ist - erfreulicherweise - auch akustisch nicht wahrnehmbar. 


Gehäuse Sensor


Wir haben uns dazu entschieden den Sensor stand-alone, abgekoppelt von der Ampel in ein eigenes Gehäuse zu bauen. So kann der Sensor jederzeit frei im Raum platziert werden und zB mehrere Ampeln mit einem Sensor gesteuert werden. 

Es wurde im ersten Prototyp ein kleiner Plexiglas-Kubus mit 3mm Materialstärke. 

Schnittdatei: FLM_Sensor_LC.CDR 


Gehäuse Ampel

Hier musste erstmal wieder das gute, alte HDF herhalten. Für den ersten Wurf sollte es eine klassische Ampel-Ansicht werden. 

Verwendet wurden WS2812-RGB-LED-Streifen - immer vier pro Ampel-Licht. 

Als Ampelgläser haben wir back-lighting-LED-Plexiglas 9H001 verwendet.  MDF und Plexi in 3mm Materialstärke. 

Die Frontscheiben haben wir mit UV-Kleber eingeklebt. Das MDF-Gehäuse wurde mit Holzleim zusammengebaut. 


 

 


 


Schnittdatei:  FLM_Ampel_LC.CDR 


Sonstiges

  • Kleines learning am Rande: Katzen scheinen deutlich mehr CO2 zu produzieren: der kleine Kater, der beim testen und entwickeln vor dem CO2-Sensor eingeschlafen ist, hat das Ding innerhalb kürzester Zeit auf ROT gebracht (wink)
  • Die Daten werden serverseitig in einer CSV-Datei mitgeloggt und können bei Bedarf für Langzeitanalysen herangezogen werden. 


In Corona-Zeiten eine wirklich sinnvolle Sache - so, just make it! (smile)






1 Comment

  1.  Beispiel-Graphen eingefügt