VOC (volatile organic compounds)
Flüchtige organische Verbindungen (engl. VOC = Volatile Organic Compounds) sind heutzutage in der Luft fast jeder Wohnung zu finden. Sie sind in verschiedenen Materialen der Wohnungsaustattung, Produkten des täglichen Bedarfes, Kunststoffen, Haushaltschemikalien, Alkoholen, Aldehyden, Lösemitteln, Flüssigbrennstoffen, Halogenwasserstoffen, Terpenen und anderen Quellen zu finden. Bei bestimmten Temperaturen gehen sie in die Gasphase über, oftmals schon bei Raumtemperatur. VOC werden auch beim Abrennen von Kerzen und Räucherstäbchen, bei offenem Feuer, im Tabakrauch und bei Küchendämpfen freigesetzt. Auch biologische Prozesse können VOC freisetzen, wie z.B. Bakterien und Schimmelpilze; man spricht hier von MVOC (Microbial Volatile Organic Compounds). Die einzelnen Bestandteile der VOC können unterschiedliche gesundheitliche Beeinträchtigungen bewirkung, wie Hautreaktionen, Reizungen der Schleimhäute in Auge, Mund, Nase und Lunge aber auch unspezifische Beschwerden wie Müdigkeit, Erschöpfung, leichte Ermüdbarkeit und Kopfschmerzen. Auch ein Einfluss von VOC auf die Entstehung oder Verschlimmerung von Asthma wurde postuliert. Neben akuten Gesundheitsproblemen können VOC auch krebserzeugende und erbgutgefährende Wirkungen entfalten. Benzol kann z. B. Leukämie verursachen. Auch werden VOC mit nervenschädigenden Effekten und Allergien in Verbindung gebracht. Es wurden hier Begriffe wie SBS (Sick Building Syndrom), MCS (Multiple Chemische Sensitivität), TE (Toxische Enzephalopathie) und CFS (Chronisches Fatigue Syndrom) geprägt. In aller Regel sind die Konzentrationen der einzelnen VOC in der Innenraumluft aber relativ niedrig und schwerwiegende gesundheitliche Beeinträchtigungen nicht zu erwarten. In Innenräumen sollte im Mittel die Gesamtkonzentration der VOC (TVOC = Total Volatile Organic Compounds) unter 0,3 mg/m³ liegen, dabei dürfen aber Einzel-Richtwerte der jeweiligen Substanzen nicht überschritten werden.
Wie kann man VOC messen?
Sensoren zum Nachweis dampfförmiger Stoffe organischen Ursprungs (VOC) verfügen über einen kleinen Metalloxid (MOX )-Halbleiter-Sensor. Erhitzt man diese Metalloxid-Halbleiterschicht mit hoher Temperatur (ca. 350 °C), wird Sauerstoff an der Oberfläche absorbiert. In sauberer Luft ziehen Sauerstoffmoleküle die Elektronen aus dem Leitungsband des Metalloxids an. Dadurch bildet sich direkt unter der Oberfläche der Metalloxidteilchen eine Elektronenverarmungsschicht, die eine Potentialbarriere zur Folge hat. Dadurch steigt der Widerstand der Metalloxidschicht stark an, der Stromfluss stoppt. Gase verdrängen andererseits den Sauerstoff: Elektronen werden dadurch wieder freigesetzt, was den Stromfluss wieder in Gang setzt, d.h. der Widerstandswert sinkt. Gase wie Kohlenmonoxid, Alkohole, Kohlenwasserstoffe, Aldehyde und organische Säuren können mit diesen MOX-Sensoren nachgewiesen werden. Die gemessenen Werte erlauben eine Abschätzung der Luftqualität. Es muss aber bedacht werden, dass der ermittelte Widerstandswert ein Korrelat des Gesamt-VOC-Gehaltes der Luft darstellt, aber dabei keine einzelne Gase oder Alkohole unterschieden werden können
BME 680

Der Sensor BME 680 der Fa. Bosch ist eine Weiterentwicklung des BME 280; der BME 680 kann zusätzlich die Luftgüte messen. Es gibt bei bosch-sensortech.com unter ‘Documents’ ein Datenblatt zum Download. Die hier angegebene Messgenauigkeiten: Feuchte ± 3% , Luftdruck ±0.12 hPa und Temperatur ±1.0 ° C . Der Luftgütesensor hat eine response time von 1 sec. Im nebenstehenden Bild ist ein Breakout-Board mit BME 680-Sensor der Fa. Watterott auf der linken Seite zu sehen, daneben ein China-Import. Die Preise schwanken zwischen knapp 1 Euro (aliexpress) und 25 Euro für ein Adafruit-Breakout-Board. Der Sensor selbst wird lt. Datenblatt mit 1,7 — 3,6 V Betriebsspannung betrieben. Die Breakout-Boards werden in der Regel mit 3,3 V betrieben und tragen einen Pegelwandler für 5 V‑Spannungen (bitte im Einzelfall im Datenblatt genau nachsehen!). Der BME 680 Sensor kann mit einem I²C ‑Datenbus ausgelesen werden. Die Adresse kann bei Benutzung von zwei BME 680 in einem I²C-Strang verschieden eingestellt werden. Voreingestellt ist (in den benutzten Sensor-Breakout-Boards) 0x77; durch Ziehen des Pins SD0 auf Masse kann die Adresse auf 0x76 geändert werden (bitte im Einzelfall Datenblatt konsultieren!). in der eigenen Anwendung verwendete Breakout-Boards von Adafruit und Watterott tragen Stemma QT-Steckverbinder (SparkFun Qwiic-kompatibel). Mit diesen Steckverbindern kann man das Breakout-Boards einfach verbinden, es ist kein Löten erforderlich. Der BME 680-Sensor kann auch mit SPI ausgelesen werden. Adafruit bietet für seine Breakout-Sensoren mit einem BME 680 hierzu eine Anleitung. Die SPI-Pin-Bezeichnungen sind auch bei dem Breakout von Watterott aufgedruckt. Die Preisunterschiede zwischen den Sensoren verschiedener Anbieter erklären sich wahrscheinlich durch diese Komfort-Features. Es wird empfohlen, den Sensor BME 680 beim ersten Mal 48 Stunden lang zu betreiben, um ihn “einzubrennen”. Später genügen dann 30 Minuten Aufwärmzeit vor de‑m Einsatz. Dies ist notwendig, weil sich die Empfindlichkeitsstufen des Sensors während der frühen Verwendung ändern und der Widerstand langsam ansteigt, wenn sich der MOX auf seinen Ausgangswert erwärmt.
Im Falle von I²C wird der SDA-Pin des BME 680 Breakout-Boards mit dem SDA-Pin des Mikrocontrollers verbunden, im Falle eines esp8266 wäre das standardmäßig D2 (GPIO-Pin 4). Der SCL-Pin des Sensors wird mit dem SCL-Pin des Mikrocontrollers verbunden, beim esp8266 wäre dies D1 (GPIO-Pin 5). Die von Bosch bereitgestellte Library für den BME 680 ist in der Bibliotheksverwaltung der Arduino-IDE verfügbar. Sie nennt sich ‘BSEC Software Library’, wobei BSEC ein Akronym für Bosch Sensortec Environmental Cluster ist. Die Einbindung der Library und Kompilierung des Sketches auf einem Mikrocontroller wie dem esp8266 ist nicht so einfach wie sonst in der Arduino IDE gewohnt. Damit keine Fehlermeldung kommt, muss die platform.txt-Datei in der Arduino-Software modifiziert werden; dazu gibt es in github eine Anleitung. Hat man die Arduino-Software in Windows unter Programme (x86) installiert lautet der Pfad zu der Datei: C:\Program Files (x86)\Arduino\hardware\arduino\avr . Aus den vom BME 680 gelieferten Rohdaten (raw data) von Temperatur, Luftfeuchte, Druck und Sensorwiderstand werden mehrere Werte berechnet: Temperatur, Luftfeuchte, Luftdruck, Ohm-Wert des Sensor-Widerstandes, IAQ (Index for Air Quality), static IAQ (für nicht-mobile Geräte), CO2 equivalents (ppm), b‑VOC equivalents (ppm), Accuracy status (0–3), stabilization time status, run in status (gibt an, wann der Sensor bereit ist) und Gas (0–100 %). Das CO2-Äquivalent (eCO2) und b‑VOC (breath-VOC equivalents) sind vom Sensor errechnete Äquivalenz-Werte und keine tatsächlichen Messwerte. Im Datenblatt wird auch eine farbig hinterlegte Tabelle für die Wertung der gemessenen IAQ geliefert; sie geht von 0–50 (excellent) in Stufen bis > 351 (extremely polluted). Mit der Arduino-Library werden in der Arduino IDE auch verschieden detaillierte Code-Beispiele zur Verfügung gestellt.

Die Wertung von IAQ und die daraus abgeleiteten Empfehlungen der Fa. Bosch (aus dem Datenblatt)

Vergleich CO2 versus IAQ: In der nebenstehenden Abbildung (aus Grafana) werden die Kurven der CO2-Messungen (MH-Z19, Skala auf der linke Y‑Achse, grüne Linie) und der Messwerte des static IAQ-Wertes eines BME 680 (Skala auf der rechten Y‑Achse, gelbe Linie) vergleichend dargestellt. Man sieht keine eindeutige Parallelität beider Kurven, es sind aber gleiche Tendenzen der Wertepaare erkennbar. Man hat den Eindruck, dass die static IAQ-Werteänderungen (gelbe Kurve) zeitlich etwas vor denen des CO2 (grüne Kurve) erfolgen.

Vergleich verschiedener BME 68x-Sensoren: In der nebenstehenden Abbildung (aus Grafana) werden die static IAQ-Werte verschiedener BME 68x verglichen. Neben BME 680-Sensoren ist auch einer vom Typ 688 (rote Kurvenlinie) vertreten. Als erstes fällt auf, dass ein BME 680-Sensor (blaue Linie) offensichtlich ganz andere Werte als die anderen Sensoren wiedergibt. Er scheint defekt zu sein. Die anderen Sensoren ergeben zwar parallel verlaufende Kurvenlinien, aber auch deutlich unterschiedlich hohe Werte.

BME 688: Dieser aktuellste Sensor aus der BME 68x-Familie wird von Bosch folgendermaßen beworben: “.. Additionally to all features of the BME 680 the BME688 has a gas scanner function. In standard configuration, the presence of VSCs is being detected as indicator for e.g. bacteria growth…” VSCs sind flüchtige Schwefelverbindungen, die u. a. bei verdorbenen Lebensmitteln freigesetzt werden. In der nebenstehenden Abbildung (aus Grafana) werden die Messwerte beider Sensoren aus der BME 68x-Reihe verglichen. Die rote Linie in der Grafana-Grafik gibt die Messwerte (static IAQ) eines BME 680 wieder, die blass-lila hellere Kurve die eines BME 688. Auch hier sieht man parallel verlaufende Kurvenlinien, aber auch deutlich unterschiedlich hohe Werte. Der BME 688 gibt hier niedrigere static IAQ-Werte aus als der BME 680, ähnlich den Ergebnissen in der vorigen Abbildung.
Fazit: Der BME 680 gibt viele Werte aus. Die Daten zur Luftgüte (IAQ) entstammen aber aus einem (nicht offengelegten) Algorithmus, der im Sensor implementiert ist. Die ausgegebenen IAQ-Werte variieren, wobei die Messwert-Tendenzen sehr ähnlich wiedergegeben werden.
SGP40

Der Einsatz der sog. MOX-Sens-Technologie beim SGP40-Sensor von Sensirion soll zu einer Robustheit des Sensors gegenüber Verunreinigungen durch Siloxane führen und zu einer verbesserten Langzeitstabilität in Bezug auf Empfindlichkeit und Ansprechzeit. Der Sensor gibt eine Zahl (SRAW_VOC) von 0 bis 65 535 aus. Diese Zahl ist proportional zum Logarithmus des Widerstands der sensorischen Schicht, der sich proportional zur VOC-Konzentration verhält. Der VOC-Algorithmus von Sensirion, der auf einem eigenständigen Mikrocontroller ausgeführt wird, verarbeitet diese Roh-Daten. Der Algorithmus errechnet den Durchschnittswert für die letzten 24 Stunden und weist diesem den VOC-Index = 100 zu. Die aktuell gemessenen Werte werden in einen VOC-Index im Bereich von 0 bis 500 umgewandelt. Werte zwischen 100 und 500 weisen auf eine Verschlechterung, Werte zwischen 0 und 100 auf eine Verbesserung der Luftqualität hin. Der VOC-Index ist somit kein aktueller VOC-Wert sondern gibt die Änderung des VOC-Wertes in der Raumluft an. Die erste verwertbare Ausgabe eines VOC-Index-Wertes dauert über eine Stunde. Sensirion stellt ein Datenblatt zur Verfügung und auch eine Erklärung ihres VOC-Index. Dieser VOC-Index soll die Funktion einer menschlichen Nase imitieren. Eine noch ausführlichere Erklärung für den berechneten VOC-Index findet sich hier, seltsamerweise aber nicht auf der Website von Sensirion.
Der Sensor wird mit einer Spannung von 3,3 V betrieben, der Sensor selbst toleriert aber laut Datenblatt 1,7 — 3,6 V. Der Strom-Verbrauch wird mit 2,6 — 3 mA angegeben, im Leerlauf 34 ‑105 μA. Die Messung erfolgt jede Sekunde. Die Variabilität des ermittelten VOC-Index beläuft sich auf <±5 bzw. <±15 zwischen verschiedenen Geräten. Nach dem Einschalten des Sensors erfasst dieser nach <60 sec die ersten angepassten VOC-Wert. Index-Werte erhält man erst nach einer sog. Anlernphase von ca. 1 Stunde. Der SGP40 verfügt über einen automatischen Feuchtigkeitsausgleich. Erhält er den aktuellen Temperaturwert und die relative Luftfeuchte, wird dies in die Berechnung einbezogen (statt der Standardeinstellung von 50% und 25°C). Der SGP40 benötigt für eine korrekte Berechnung des VOC-Index somit zusätzlich einen Sensor für die Erfassung der aktuellen Werte von Temperatur und relativer Luftfeuchte, z. B. einen BME280 von Bosch, einen SHT31 von Sensirion oder einen DHT22. Die Übermittlung der Daten des SGP40 erfolgt über einen I²C-Bus. Für den SGP40 gibt es in Bibliotheksverwaltung der Arduino-IDE mehrere Libraries zum Installieren: DF Robot_SGP40, Adafruit SGP40-Sensor, Sensirion I2C SGP40 und Sparkfun SGP40 Arduino-Library. Im eigenen Gebrauch funktionierte die Library von Adafruit gut; der mitgelieferte Sketch (Programm sgp40_voc) benutzt den SHT31-Sensor zur Ermittlung von Temperatur und relativer Luftfeuchte. Man muss hier also auch die Adafruit SHT31 Library installieren. Wie schon erwähnt, es dauert eine Stunde bis man den den ersten verwertbaren VOC-Index im Serial Monitor erhält. Für den Raspberry gibt es auf github auch Treiber. Sensirion empfiehlt aus dem ermittelten VOC-Index folgende Wertungen und Maßnahmen abzuleiten:
VOC-Index | Luftgüte | Empfohlene Maßnahme |
0–100 | exzellent | keine |
100–200 | gut | keine |
200–300 | leicht verunreinigt | Lüften andenken |
300–400 | mäßig verunreinigt | Frischluft |
400–500 | schwer verunreinigt | sehr gut lüften! |
Die Fa. Sensirion stellt auch eine Anleitung zur Verfügung, anhand derer geprüft werden kann, ob der Sensor SGP auch entsprechend der vorgebenen Spezifikationen funktioniert.
Für ein Breakout-Board mit einem SGP40-Sensor werden als Preis knapp unter 20 Euro aufgerufen. Meist haben diese Braekout-Boards einen Stemma QT-Steckverbinder (SparkFun Qwiic-kompatibel). Dazu kommt noch ein Breakout-Board für die Messung von Temperatur und Luftfeuchte. Für ein Board mit SHT31-Sensor werden etwas niedrige Preise als für den SGP40 angegeben; auch hier sind Boards mit Stemma QT-Steckverbinder (SparkFun Qwiic-kompatibel) erhältlich, was den Aufbau einer Messstation einfacher macht (kein Löten). Boards mit einem BME 280 kosten deutlich weniger (1–2 Euro). Gleiches gilt für einen DHT22-Sensor (etwa 2–7 Euro).

Vergleich CO2 (MH-Z19) und VOC-Index: Im nebenstehenden Bild sieht man die Messkurven von CO2 (blaue Linie) und VOC-Index (gelbe Linie, Skala auf der rechten Y‑Achse) . Die Kurven laufen relativ parallel. Bei Querlüftung des Zimmers fallen die Werte ab, danach steigen sie wieder an.

Vergleich static IAQ (BME690) und VOC-Index: Man sieht, dass die Messkurven beider Sensoren (SGP40: grüne Linie, BME680: rote Linie) Tendenzen ganz ähnlich wiedergeben.

Korrelation Messwerte CO2 (MH-Z19) und VOC-Index (SGP40): Man sieht zwar eine gewisse Korrelation zwischen beiden Messergebnissen. Die Werte streuen aber doch sehr, insbesondere im Bereich mittlerer und höherer Messwerte.
Fazit: Der SGP40-Sensor ist nicht ganz billig in der Anschaffung, scheint aber dem Anwender einen guten Überblich auf die Luftgüte zu ermöglichen insbesondere auf seine Dynamik. Für den Preis erhält man aber auch von der Herstellerfirma ein schönes Paket an Dokumentationen und Softwarebeispielen, was nicht selbstverständlich ist.