HB-UNI-Sen-IAQ - Luftgütemessung mit BME680

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

FUEL4EP
Beiträge: 123
Registriert: 01.11.2017, 17:26
Hat sich bedankt: 20 Mal
Danksagung erhalten: 12 Mal

Re: HB-UNI-Sen-IAQ - Luftgütemessung mit BME680

Beitrag von FUEL4EP » 06.10.2020, 19:10

Zwei Dateien hatte ich vergessen anzufügen:

1. CSV Datei des CCU Historian:
historian.csv
(238.78 KiB) 6-mal heruntergeladen
2. bash Skript zur Anpassung obiger CSV Datei (Linux OS):
csv_convert_historian.bsh.txt
(398 Bytes) 10-mal heruntergeladen
Grüße

Ewald

FUEL4EP
Beiträge: 123
Registriert: 01.11.2017, 17:26
Hat sich bedankt: 20 Mal
Danksagung erhalten: 12 Mal

Re: HB-UNI-Sen-IAQ - Luftgütemessung mit BME680

Beitrag von FUEL4EP » 06.10.2020, 23:02

FUEL4EP hat geschrieben:
06.10.2020, 19:03
Hallo Zusammen,

Jérômes Ratschlag folgend wandte ich mich an 'funkleuchtturm' im Forum, um Erfahrungen bezüglich der Variation zwischen verschiedenen BME680 Sensoren auszutauschen, siehe auch viewtopic.php?f=31&t=60671#p603732.
Eugen gab ein paar gute grundsätzliche Hinweise, Details und Erfahrungswerte seiner AirSniffer Lösung teilte er leider nicht.

Drum habe ich meine alten Statistikkenntnisse ausgegraben und zuerst mal mit Python viel Statistik betrieben.
Ziel war es herauszufinden,
1. ob für den BME680 Sensor eine Korrektur der Luftfeuchtigkeit notwendig und möglich ist
2. ob für den BME680 Sensor eine Korrektur der Temperatur notwendig und möglich ist
3. ob eine logarithmische Umrechnung der Luftgüte zu einer verständlicheren Darstellung führt

Alle drei Punkte sind von 'funkleuchtturm' als notwendig postuliert worden. Ergebnis ist, dass diese drei Punkte Sinn machen.

Für die beiden Punkte 1. und 2. wende ich die Methode der multiplen linearen Regression an:

https://de.wikipedia.org/wiki/Multiple_ ... Regression

In Python gibt es dazu sehr mächtige Analysewerkzeuge im Modul 'sklearn'. Falls ihr in Details interessiert seid, fragt bitte.

Nun ein wenig Mathematik und Statistik:

Für die Estimierung des BME680 Gaswiderstands Rprediction wird ein linearer Zusammenhang von der absoluten Luftfeuchtigkeit aH und der Temperatur Temp angenommen:

multiple_linear_regression_formulas.png

Der korrigierte Gaswiderstand ergibt sich als Differenz des gemessenen Rohgaswiderstands und der Estimierung.

Danach wird der korrigierte Gaswiderstand normalisiert auf den Wertebereich 0..100.

Schließlich wird die Luftgüte (air quality level) durch Logarithmusbildung aus dem normalisierten korrigierten Gaswiderstand berechnet.

Nun zu den Ergebnissen:

Bisher hat der Sketch 'HB-UNI-Sen-IAQ' nur normalisierte Rohgaswiderstände ohne Korrektur des Einflusses der Luftfeuchtigkeit und der Temperatur ausgegeben:

air_quality_level_org.png

Alle drei Sensoren liegen direkt nebeneinander auf einer Fensterbank im ersten Stock meines Hauses. Ursache für schlechte Luftqualität sind:
Öffnen des Fensters, 'Mief' der Innenräume wird nach draußen gelüftet, Holzofenbrand in der Nachbarschaft, Kochgerüche aus einem darunter liegenden Mauerkastenablüfter der Küche.

Nach der Korrektur der Einflüsse von der absoluten Luftfeuchtigkeit und der Temperatur und logarithmischer Berechnung ergeben sich Luftgüten (air quality level) mit dem kontinuierlichen Wertebereich 0..4:


air_quality_level.png

Dadurch dass die Korrektur der Einflüsse von der absoluten Luftfeuchtigkeit und der Temperatur für jeden BME680 Sensor individuell gemacht wird, liegen die Kurven für die logarithmischen Luftgüten viel besser aufeinander als die nicht korrigierten bisherigen Kurven. Die hier gezeigten Kurven sind von Messwerten über 48 Stunden abgeleitet.

Die Analysen und Berechnungen mit Python wurden in einem interaktiven JupyterLab Notebook

https://jupyterlab.readthedocs.io/en/stable/

durchgeführt.
Hier der Bildschirmabzug davon als PDF:


Multiple linear regression for BME680 gas readings.pdf

Die verwendete Jupyter Notebook Datei ist hier (Suffix txt bitte entfernen)

Multiple linear regression for BME680 gas readings.ipynb.txt

Die absolute Luftfeuchtigkeit läßt sich innerhalb eines Arduino Sketches aus Temperatur und relativer Luftfeuchtigkeit berechnen.
Damit haben wir alles zusammen, um die oben beschriebenen Korrekturberechnungen in der Arduino MCU durchzuführen.

Ich werde die Statistiken noch ein paar Tage verfolgen und auf Konsistenz prüfen.
Dann werde ich den bisherigen Sketch HB-UNI-Sen-IAQ nur für eine ATMega1284P MCU mit den obigen Formeln anpassen und dann Euch zum Test zur Verfügung stellen. Wie bereits mehrfach diskutiert, hat die 328P Lösung zu wenig Speicherplatz. Daher verwende ich den Tindie Pro Mini XL - v2 - ATmega 1284p
https://www.tindie.com/products/promini ... ega-1284p/

Fragen, Anregungen und konstruktive Rückmeldungen sind willkommen.
Grüße

Ewald

Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“