Kommunikation
Die Datenleitungen des Wandlers sind für 3,3 Volt ausgelegt, während der Sensor eine Spannung von 5 Volt benötigt. Abbildung 4 zeigt, wie Sie den Baustein anschließen: rechts die Leitungen für die Spannungsversorgung von 5 Volt, links die beiden Kommunikationsleitungen.
Die Sendeleitung des Sensors verbinden Sie mit der Empfangsleitung des Seriell-USB-Wandlers und umgekehrt, also TX auf RX und RX auf TX. Um den Baustein nicht zu zerstören, darf die Kommunikationsleitung eine Spannung von 3,3 Volt nicht überschreiten.
Es gibt einige Bibliotheken, die die Kommunikation des MH-Z19 über die UART-Schnittstelle eines RasPi erleichtern. Dank des Seriell-USB-Wandlers geht es aber noch einfacher: USB-Stecker einstecken, serielle Schnittstelle konfigurieren, Kommandos an den Detektor schicken und Antworten lesen.
Zunächst bestimmen Sie den Namen, unter dem das System das neue USB-Gerät anspricht. Der Aufruf dmesg | grep tty liefert im Test den Namen ttyUSB0 zurück. Wollen Sie später ein Python-Programm zum Auslesen der Daten verwenden, lohnt es sich, den Interpreter erst im interaktiven Modus zu starten (Listing 1). Dabei konfigurieren Sie die Einstellung der seriellen Schnittstelle mit einer Baudrate von 9600 und einem Timeout von einer Sekunde (Zeile 3).
Listing 1
Test des MH-Z19
$ python3 >>> import serial >>> port = serial.Serial('/dev/ttyUSB0', baudrate=9600, timeout=1) >>> rco2= b'\xff\x01\x86\x00\x00\x00\x00\x00\x79' >>> port.write(rco2); port.readline() 9 b'\xff\x86\x03\xbf9\x00\x00\x00\x7f' >>> port.write(rco2); s=port.read(9) >>> print('co2: ', s[2]*256 + s[3])
Der Befehl port.write(rco2) veranlasst den Detektor, Daten zu senden. Die Ausgabe liefert zunächst die Zahl der gelesenen Bytes, im Beispiel 9, und anschließend die Daten selbst. Die folgenden Zeilen bereiten die Zahlen auf. Hat alles funktioniert und ist der Sensor zum ersten Mal angeschlossen, lautet die Ausgabe: 5000 (ppm). Während der MH-Z19 Relativwerte sehr genau bestimmt, fehlt ihm der Referenzpunkt. Deshalb gibt der Hersteller ihm bei Auslieferung quasi als Transportsicherung die Vorgabe 5000 mit.
Streng genommen würde das Eichen standardisierte Bedingungen erfordern. Hier beschränken wir uns auf ein vereinfachtes Verfahren: Wir platzieren den Sensor an einem gut durchlüfteten Ort. Anschließend teilen wir ihm mit, dass er den vorgefundenen Wert als atmosphärischen Minimalwert ansehen soll. Gemäß seiner Voreinstellung sind das 400 ppm.
Die Mitteilung erfolgt über den Anschluss HD, den Sie dazu für einige Zeit auf Masse ziehen. Aus Kommentaren im Netz zur Eichung ergibt sich, dass die Mitteilung mindestens 20 Minuten dauern sollte. Auch raten andere Anwender davon ab, das Eichen über die Software anzustoßen.
Messung vorbereiten
Der MH-Z19 verfügt über zwei Messbereiche, neuere Module über drei: bis 2000 ppm, bis 5000 ppm und bis 10 000 ppm. Die Variablen aus Listing 2 legen die Obergrenze fest, wenn Sie sie über einen Schreibbefehl an den Detektor übermitteln.
Listing 2
Daten auslesen
$ python3 ### read data >>> rco2= b'\xff\x01\x86\x00\x00\x00\x00\x00\x79' ### ranges: 2000, 5000, 10000 ppm >>> r2000 = b"\xff\x01\x99\x00\x00\x00\x07\xd0\x8F" >>> r5000 = b"\xff\x01\x99\x00\x00\x00\x13\x88\xcb" >>> r10000 = b"\xff\x01\x99\x00\x00\x00\x27\x10\x2F" ### get data >>> port.write(rco2); s=port.read(9) >>> print('CO2: ', s[2]*256 + s[3], 'ppm; T: ', s[4] - 40, 'C)
Der Sensor korrigiert seine Analysen in Abhängigkeit von der Umgebungstemperatur, die er ebenfalls ausgibt. Die letzte Zeile in Listing 2 gibt die Konzentration in ppm und die Temperatur in Celsius aus. Falls die Ausgabe innerhalb einer Schleife falsch erscheint, hilft eine Pause von 100 Millisekunden zwischen zwei Abfragen.
Messungen
In Zeiten von Corona ist es schwierig, einen Sitzungssaal mit schlechter Raumluft zu finden. Alternativ atmen Sie einfach in eine Tüte und halten den Sensor hinein. Abbildung 5 zeigt eine andere Möglichkeit. Dabei bedecken Sie den Boden eines hohen Glases mit Backpulver, chemisch Natriumhydrogencarbonat. Versetzt mit Wasser oder einer schwachen Säure, zersetzt es sich unter Abgabe von Kohlendioxid. Das Gas sammelt sich am Boden und steigt langsam auf, wo der Detektor es registriert.






