Gerade im Winter verbringen wir viel Zeit in Innenräumen, wo wir dann für ein gutes und gesundes Klima sorgen sollten. CO<->2<->-Sensoren helfen dabei, die Luftqualität besser einzuschätzen.
Im Gegensatz zu Sensoren zum Messen der Temperatur und Luftfeuchte sind solche für CO2 richtig teuer, die Preise bewegen sich durchgängig im zweistelligen Bereich. Das geht schnell ins Geld, wenn Sie mehr als einen Raum überwachen möchten. Deswegen fokussiert dieser Artikel auf günstige Lösungen wie den Winsen MH-Z19C für etwa 22 Euro [1], den ScioSense ENS160 für zwischen 15 und 22 Euro [2] sowie den Sensirion SCD40 für rund 60 Euro [3].
Entsprechende Sensoren von Markenherstellern wie Adafruit, Pimoroni oder Sparkfun gehen dagegen richtig ins Geld, sie kosten zwischen 40 und 70 Euro. Über Aliexpress fahren Sie mit 15 bis 20 Euro deutlich günstiger. Frei Haus gibt es dort allerdings auch den zusätzlichen Nervenkitzel, ob das Teil überhaupt funktioniert.
Infrarotmessung
Der MH-Z19C von Winsen (Abbildung 1) besteht aus einem kleinen Kästchen mit den Maßen von ungefähr 13,3 mal 26 mal 4,4 Millimetern. Er misst den CO2-Wert mit der Non-dispersive-Infrared-Methode, kurz NDIR. Den Sensor gibt es in zwei Ausführungen: einmal mit normalen Pins und einmal mit Kabelanschluss und einem Pin-Abstand von 1,25 Millimetern. Wer nicht crimpen will, greift besser zur Pin-Variante. Neben dem Z19 finden sich auf dem Markt noch weitere, ältere Modelle, wie der Z19B, Z14 oder Z18. Sie weisen ähnliche, aber nicht identische Funktionen und Spezifikationen auf.

Abbildung 1: Der CO2-Sensor Winsen MH-Z19C misst die Werte mit der Non-dispersive-Infrared-Methode (NDIR).
Auslesen lassen sich die Werte für CO2 über PWM, ADC oder UART. Die Temperatur ist nur über UART verfügbar, was aber keine Rolle spielt, da diese Werte ohnehin unbrauchbar sind. Alle Pins haben den üblichen Pegel von 3,3 Volt, die Versorgungsspannung beträgt dagegen 5 Volt. Die Konfiguration erfolgt via UART. Für diese simple Schnittstelle finden sich zahlreiche Bibliotheken für alle gängigen Sprachen. Insofern gestaltet sich der Einsatz des Sensors unproblematisch.
Dagegen stellt die Spannungsversorgung eine Herausforderung dar. Laut Datenblatt des Herstellers benötigt das Modul eine Eingangsspannung zwischen 4,9 und 5,1 Volt. Der Spielraum beschränkt sich also auf maximal 2 Prozent Abweichung vom 5-Volt-Sollwert. Wie ein Tutorial [4] eindrucksvoll belegt, spielt das eine wichtige Rolle. Die Spannung gängiger USB-Netzteile oder die des 5V/VBUS-Pins eines Mikrocontrollers respektive eines RasPi arbeitet dafür weder genau noch stabil genug.
Als Lösung bieten sich sogenannte Buck-Boost-Konverter an (Abbildung 2). Sie liefern über einen weiten Spannungseingangsbereich eine feste Ausgangsspannung. Bei den niedrigen Stromstärken (im Schnitt 80 mA), die der Sensor benötigt, kommen die Bauteile nicht teuer. Die 2-Prozent-Genauigkeit bleibt aber eine Herausforderung.
Zumindest im Dunkeln nerven die blinkenden LEDs des MH-Z19C ein wenig. Ob die rote Diode in der Messkammer wirklich nötig ist, sei dahingestellt, die zusätzliche grüne ist definitiv überflüssig. Sie lässt sich zum Glück abkleben. Bauartbedingt benötigt der Sensor eine Aufwärmzeit von gut einer Minute. Vorher liefert er keine oder falsche Werte. Das verfügbare Datenblatt dokumentiert nicht alle Befehle des Sensors. Für Abhilfe sorgen hier findige Entwickler, die ausführliche Dokus [5] erstellt haben.
VOC statt CO2
Während der MH-Z19C den CO2-Gehalt der Luft direkt misst, wählt der ENS160 von ScioSense einen anderen Ansatz. Er bestimmt aus der Konzentration von flüchtigen organischen Stoffen (VOC, Volatile Organic Compounds) einen eCO2-Wert (equivalent CO2). Die Logik dahinter ist einfach: Menschen produzieren beim Ausatmen nicht nur CO2, sondern geben dabei auch andere organische Stoffe ab. Aus dem VOC-Wert lässt sich also indirekt der CO2-Wert bestimmen.
Den ENS160 steuern Sie über SPI oder I2C an (Abbildung 3). Die Pin-Leiste oben dient als Kontaktaufnahme für SPI, die untere für I2C. Letztere ist einfacher in der Verkabelung, die meisten Treiber nutzen dieses Protokoll. Eine Besonderheit des ENS160 stellt die notwendige Initialisierungszeit dar: Nach dem allerersten Einschalten dauert es 48 Stunden, bis der Sensor in den Normalbetrieb wechselt; er liefert aber schon nach etwa einer Stunde Daten. Unabhängig davon braucht der Sensor auch später nach jedem weiteren Einschalten bis zu drei Minuten, bevor er funktioniert. Der genaue Zeitraum schwankt nach den Erfahrungen des Autors von Exemplar zu Exemplar.
Kleine Messkammer
Der dritte Kandidat SCD40 der schweizerischen Firma Sensirion verwendet wie der MH-Z19C das NDIR-Verfahren, allerdings in einer patentierten Photoacoustic-Variante. Das erlaubt eine sehr kompakte Bauweise (Abbildung 4). Das Ansteuern erfolgt über I2C. Sensirion stellt für seine Sensoren eine vorbildliche Dokumentation und auch Beispielcode auf Github bereit [6].








