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

Benutzeravatar
FUEL4EP
Beiträge: 584
Registriert: 01.11.2017, 17:26
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 76 Mal
Danksagung erhalten: 77 Mal
Kontaktdaten:

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

Beitrag von FUEL4EP » 10.08.2020, 16:22

Hallo Gerd,

bei einer CO2-Messung alle 4 Minuten liegt der mittlere Stromverbrauch des SCD30 mit allem drum run bei ca. 7 mA.
Damit hält eine Ladung zweier (korrigiert) neuer 2400 mAh NiMH Akkus > 20 Tage. Mit Solarunterstützung und -ladung wird dieser Wert noch besser :D
Mir ist eine tragbare, nicht netzgebundene Sensorlösung wichtig, die ich einfach in jedes Zimmer stellen kann.

Den SCD30 gibt es schon ab 45 Euro. Die Genauigkeit ist Schweizer Präzision :D . Die Bauform ist klein.
Bald soll es übrigens den nochmals kleineren SCD40 CO2 Sensor von Sensirion geben ..
Zuletzt geändert von FUEL4EP am 10.08.2020, 17:09, insgesamt 1-mal geändert.
Grüße

Ewald

Meine SmartHome Entwicklungen gibt es hier: FUEL4Ps Homeautomation Github Repository oder als ZIP
Das passende RaspberryMatic Addon ist hb-ep-devices-addon
Passende Platinen gib es hier: PCBs

Benutzeravatar
chianti2000
Beiträge: 132
Registriert: 12.08.2017, 17:15
System: CCU
Wohnort: Leipzig
Hat sich bedankt: 49 Mal
Danksagung erhalten: 13 Mal

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

Beitrag von chianti2000 » 10.08.2020, 16:26

Das sieht natürlich gut aus und überzeugt mich fast.
Ich habe im Moment noch eine Netatmo mit CO2-Messung und als Referenz. Muss mal schauen, was da für ein Fühler drin ist.

VG Gerd
VG Gerd

Benutzeravatar
chianti2000
Beiträge: 132
Registriert: 12.08.2017, 17:15
System: CCU
Wohnort: Leipzig
Hat sich bedankt: 49 Mal
Danksagung erhalten: 13 Mal

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

Beitrag von chianti2000 » 22.08.2020, 21:24

HMSteve hat geschrieben:
10.08.2020, 14:59
Hallo Gerd,

Ausserdem habe ich die Version mit SGPC3 veroeffentlicht, um eine batteriebetriebene Alternative zum BME680 zu testen: https://github.com/HMSteve/HB-UNI-Sen-IAQ-Test-2. Dort ist auch mein dafuer noetiges Breakout-Board verlinkt.

Viele Gruesse,
Stephan
Für nicht so lötgeübte gibt es hier ein fertiges Breakoutboard mit dem SGPC3.
https://www.soselectronic.de/products/v ... -ii-301332
VG Gerd

HMSteve
Beiträge: 537
Registriert: 20.08.2019, 06:23
Hat sich bedankt: 13 Mal
Danksagung erhalten: 95 Mal

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

Beitrag von HMSteve » 22.08.2020, 21:34

chianti2000 hat geschrieben:
22.08.2020, 21:24
Für nicht so lötgeübte gibt es hier ein fertiges Breakoutboard mit dem SGPC3.
https://www.soselectronic.de/products/v ... -ii-301332
Hast Du das mal bestellt? Hatte ich seinerzeit auch gefunden, aber neben dem abweichenden 2x3-Header hat mich das dort verlinkte SGP30-Datenblatt irritiert. Womoeglich wird ja eine abweichende Bestueckung verkauft?

Benutzeravatar
chianti2000
Beiträge: 132
Registriert: 12.08.2017, 17:15
System: CCU
Wohnort: Leipzig
Hat sich bedankt: 49 Mal
Danksagung erhalten: 13 Mal

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

Beitrag von chianti2000 » 22.08.2020, 21:40

HMSteve hat geschrieben:
22.08.2020, 21:34
chianti2000 hat geschrieben:
22.08.2020, 21:24
Für nicht so lötgeübte gibt es hier ein fertiges Breakoutboard mit dem SGPC3.
https://www.soselectronic.de/products/v ... -ii-301332
Hast Du das mal bestellt? Hatte ich seinerzeit auch gefunden, aber neben dem abweichenden 2x3-Header hat mich das dort verlinkte SGP30-Datenblatt irritiert. Womoeglich wird ja eine abweichende Bestueckung verkauft?
Nein hab dort noch nicht bestellt. Du hast recht mit dem abweichenden Datenblatt, wo statt des SGPC3 der SGP30 angegeben wird.
Also wahrscheinlich doch keine gute Idee, wie ich zuerst dachte.
VG Gerd

Benutzeravatar
FUEL4EP
Beiträge: 584
Registriert: 01.11.2017, 17:26
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 76 Mal
Danksagung erhalten: 77 Mal
Kontaktdaten:

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

Beitrag von FUEL4EP » 06.09.2020, 20:11

FUEL4EP hat geschrieben:
06.08.2020, 13:58
Hallo Gerd,
chianti2000 hat geschrieben:
06.08.2020, 13:15
Hallo Stephan,

habe jetzt meine Platine V1.2 aufgebaut und sie funktioniert soweit. Nachdem ich einen defekten SGP30 getauscht habe
laufen auch die Messwerte ein. Die Werte vom BME680 sind nicht ganz schlüssig im Vergleich zum SGP30. Liegen immer sehr hoch in Richtung schlechte Luftqualität. Werde ich mal beobachten. Hilfreich wäre, wenn man hier noch die Ausgabe des eCO2-Wertes vom SGP 30 mitschneiden könnte.
Gibt es die Möglichkeit das du den Sketch für den SGP30 um die Ausgabe des Wertes von eCO2 erweiterst und einstellst.
Hab da leider zu wenig Ahnung und will nicht wild darin herum editieren.
Grüße Gerd
hast Du Deinen BME680 Sensor, wie unter

viewtopic.php?f=76&t=49422&start=50#p559575

beschrieben, kalibriert? Die Frage ist ja immer, was bedeutet eine Luftqualität von 100%?

Meine Erfahrung mit nun zwei BME680 basierenden VOC Sensoren ist:

1. Jeder BME680 Sensor hat eine andere Charakteristik und bedarf einer individuellen Kalibrierung.
2. Jeder BME680 Sensor reagiert unterschiedlich auf VOC.
3. Selbst zwischen zwei BME680 Sensoren gibt es zum Teil wegen 2. selbst nach Kalibrierung größere Abweichungen.
4. Saubere Außenluft als 100% Referenz ist nicht immer gegeben (zumindest bei mir zuhause). Die beste Luftqualität draußen messe ich nur bei starkem Wind.
Bei Windstille ist die gemessene Luftqualität in der Regel schlechter.
5. Zur Analyse lasse ich mir zur Zeit den unverarbeiteten Rohwert des BME680 Gaswiderstands als 'Temperatur' ausgeben mit folgender temporären Code Änderung in 'sens_BME680.h':

Code: Alles auswählen

     //test
      _temperature = (int16_t) (gas / 200);

      //_temperature = (int16_t)(temp * 10);
      //end test
      _pressureNN  = (uint16_t)(EquivalentSeaLevelPressure(float(height), temp, pres)*10.0); 
      _humidity    = (uint8_t)hum;
Die ausgegebene Temperatur muss dann mit 200 multipliziert werden, um den Rohgaswiderstand zu erhalten.
Damit kann man dann nach einigen Tagen Aufzeichnung auch den oberen Kalibrierwert

Code: Alles auswählen

#define GAS_UPPER_LIMIT 125000.0  // Initial setting for good air quality upper limit; will automatically adjusted when sensor is put to outdoor for few hours                
bestimmen.

6. Gemessene Luftgüten sind nur als grobe Indikatoren zu betrachten. Eine exakte Quantifizierung wie bei Temperaturmessungen ist mit 'Billigsensoren' wie BME680 oder auch SGP30 nicht möglich. Die Variabilität selbst zwischen baugleichen Sensoren ist zu groß. Die Sensorcharakteristik hängt stark von dem initialen Einbrennen ab.

Ich werde bald hier über die Unterschiede zweier BME680 basierenden Luftgütesensoren berichten.
Hallo Zusammen,

hier ein Update zur Luftgütemessung mit dem Bosch BME680 Sensor.

Inzwischen habe ich 3 Sensoren HB-UNI-Sen-IAQ aufgebaut und in Betrieb.
Zwei davon sind mit Pro Mini XL - v2 - ATmega 1284p (https://www.tindie.com/products/promini ... ega-1284p/) aufgebaut. Der dritte Sensor ist mit einem Standard Arduinio Pro Mini ATmega 328P aufgebaut.
Alle drei Sensoren liegen direkt nebeneinander außen auf der Fensterbank im ersten Obergeschoss über der Küche. Ab und zu gibt es daher Küchengerüche oder auch schlechte Luft vom Querlüften.

Hier beispielhaft ein Verlauf der gemessenen relativen Luftgüten über 48 Stunden:
Air_Quality_Histogram_48h.png
Die drei Sensoren zeigen zeitweise ein völlig anderes Messergebnis. Offensichtlich reagieren die BME680 Sensoren auf andere Gase, wahrscheinlich je nach Vorgeschichte und initialer Konditionierung der Sensoren.

Hier der Widerstandsverlauf der drei BME680 Sensoren über dieselben 48 Stunden. Ein Grad Celsius übersetzt sich hier in einen Widerstandswert von 2 kOhm:
Gasresistances_Histogram_48h.png
Der neueste und hochohmigste Sensor zeigt die größte Sensitivitätsdynamik mit kurzzeitigen Änderungen. Der niederohmige Sensor reagiert dagegen relativ träge und wenig dynamisch.

Zusammengefasst zeigt sich, dass die vom BME680 gemessene Luftgüte eine beliebige "Hausnummer" sein kann. Je nach Sensor bekommt man relative unterschiedliche Messergebnisse. Eine Vergleichbarkeit ist nur bedingt gegeben. Nur bei sehr guter und sehr schlechter Luftqualität sind sich die verschiedenen Sensoren meistens einig.

Ich werde mal ein weiteren Sensor mit dem Sensirion SGP30 zum Vergleich aufbauen. Das wird nur ein Weilchen dauern ..
Dann gibt es einen neuen Bericht. Gibt es vielleicht schon Vergleichsmessungen von mehreren Sensirion SGP30 Sensoren?
Grüße

Ewald

Meine SmartHome Entwicklungen gibt es hier: FUEL4Ps Homeautomation Github Repository oder als ZIP
Das passende RaspberryMatic Addon ist hb-ep-devices-addon
Passende Platinen gib es hier: PCBs

jp112sdl
Beiträge: 12084
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 847 Mal
Danksagung erhalten: 2139 Mal
Kontaktdaten:

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

Beitrag von jp112sdl » 06.09.2020, 20:32

FUEL4EP hat geschrieben:
06.09.2020, 20:11
Zusammengefasst zeigt sich, dass die vom BME680 gemessene Luftgüte eine beliebige "Hausnummer" sein kann
Frag mal bei Eugen an. Er verkauft seit kurzem den AirSniffer, in dem auch ein BME680 steckt.
Offensichtlich scheint er ja zuverlässigere Ergebnisse zu erzielen. Oder auch nicht!?
viewtopic.php?p=602811#p602811

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

HMSteve
Beiträge: 537
Registriert: 20.08.2019, 06:23
Hat sich bedankt: 13 Mal
Danksagung erhalten: 95 Mal

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

Beitrag von HMSteve » 06.09.2020, 21:13

Ich habe zwar den SGPC3 schon gut 4 Wochen parallel zum BME680 laufen, aber gerade gemerkt, dass ich das DB logging nicht aktiviert hatte :roll:
Da ich gerade keinen Nerv habe, die CuxD files auszuwerten, erstmal nur das, das CuxD Highcharts ohne weiteren Aufwand darstellt:
20200906_IAQTest.JPG
Eine gewisse Korrelation ist optisch schon erkennbar, denke jedoch noch immer, dass die starke TP-Filterung beim BME die Ergebnisse noch schwerer interpretierbar macht. Jetzt laeuft das Teil mit DB Logging, Zeitreihe inkl Temperatur und Feuchte folgt in ein paar Wochen. SGP30 habe ich wg Stromverbrauch "abgeschrieben", aber der sollte sich ja aehnlich zum SGPC3 verhalten.

Viele Gruesse,
Stephan

HMSteve
Beiträge: 537
Registriert: 20.08.2019, 06:23
Hat sich bedankt: 13 Mal
Danksagung erhalten: 95 Mal

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

Beitrag von HMSteve » 06.09.2020, 21:20

Nochmal ein Tag: Die Einbrueche beim SGP morgend uns nachmittags sind plausibel (Lueftung), Konstanz nachts in leerem Raum auch, die Anstiege tagsueber verstehe ich nicht recht. Es liegt jedoch viel "Kram" (Plastik, Platinen) in der Naehe, so dass sekundaere Temperatureffekte i.S. staerkeren Ausduenstens moeglich waeren:
20200906_IAQTest1d.JPG

Benutzeravatar
FUEL4EP
Beiträge: 584
Registriert: 01.11.2017, 17:26
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 76 Mal
Danksagung erhalten: 77 Mal
Kontaktdaten:

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

Beitrag von FUEL4EP » 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 lineare 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
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
(1.89 MiB) 62-mal heruntergeladen
Die verwendete Jupyter Notebook Datei ist hier (Suffix txt bitte entfernen)
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.
Zuletzt geändert von FUEL4EP am 06.10.2020, 19:57, insgesamt 1-mal geändert.
Grüße

Ewald

Meine SmartHome Entwicklungen gibt es hier: FUEL4Ps Homeautomation Github Repository oder als ZIP
Das passende RaspberryMatic Addon ist hb-ep-devices-addon
Passende Platinen gib es hier: PCBs

Antworten

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