Projekt: Raum(-luft)sensor (Temp, Hum, Co2, VOC, LUX)

Begonnen von herrmannj, 21 Januar 2019, 00:24:44

Vorheriges Thema - Nächstes Thema

herrmannj

bei der "iaq-metrics/" - da sind ganz verschiedene möglich und jeder macht was eigenes wodurch jede Vergleichbarkeit entfällt. Die Verlinkung passt auf jeden Fall nicht wirklich zu den BESQ Werten ...

Geh zu den ppm über - die werden in allen seriösen Quellen verwendet. Der Anhang und der Link im letzten post sind gute Orientierungen.

juergs

#301
Von der Idee her nicht schlecht:
tabletop-weather-station-case zu tabletop-weather-station
air-quality-bricklet
lcd-128x64-bricklet
Display scheint mir etwas teuer ...
Wobei ich den xmc1404 auch noch nicht kannte...

juergs

Zitatjeder macht was eigenes wodurch jede Vergleichbarkeit entfällt
Ja, schon. Allerdings hat sich bei mir schon eine Bewertungs-Einschätzung auf IAQ-Werte gebildet.

Aber man muss erst mal Erfahrungen sammeln....  :)

herrmannj

Um Erfahrung zu teilen; ich lasse den BME680 aktuell auf dem Bread Board (Schreibtisch) laufen um Langzeiterfahrung zu sammeln. Der BME680 ist extrem empfindlich für Wasser in der Luft, die werden aus Temp und Hum berechnet.

Im screenshot unten habe ich heute Mittag gelüftet, danach zeigte der BME680 (rot) ca 100ppm mehr als der AMS (grün) an, der als Referenz mitläuft.

Diagnose:
während des Lüftens hat der Sketch eine base line Kalibrierung durchgeführt. Dabei lag der Sensor in der Sonne. Dadurch hat das Thermometer eine zu hohe Temperatur gemeldet welche in die Kalibrierung eingeflossen sind. Ich habe das gerade nachgerechnet, vmtl lag die tatsächliche Temperatur nur ca knapp 1°, max 2° tiefer. Das macht bereits 100ppm Unterschied. Die "Parallelität"  zwischen dem AMS und dem BME680 stimmen trotzdem gut.

Interessant ist dass der AMS, lag auch in der Sonne, weniger davon betroffen ist. Möglicherweise ist der verbaute Sensor da physikalisch einfach viel weniger von der Feuchte beeinflusst.

Softwareseitig denke ich noch über eine Lösung dafür nach. Aktuell ist das so gelöst dass der Sensor sich kalibriert wenn der Wert "sauber" > 60 Sekunden anhält und die Relative Luftfeuchte läuft durch einen Tiefpass. Ich werde wahrscheinlich zusätzlich einen Tiefpass für Temp einbauen und nur kalibrieren wenn die Temp und Hum innerhalb eines Fensters von 0.1%(?) über 2..5(?) Minuten stabil ist. Das soll dem Sensor Zeit geben beim Lüften (das ist ja die "normale" Situation welche eine Kalibrierung triggert) sich besser auf die wirkliche Temperatur einzupendeln.

herrmannj

Jürgen:

konntest Du noch Erfahrungen sammeln? (BME680)

vg
Joerg

juergs

#305
Hallo Jörg,

sorry, bin gerade am Umbauen auf einen neuen Rechner mit I7 und 4K-Display und muss noch meine gesamte Hardware-Infrastruktur migrieren.
Ein riesen Aufwand, sehe aber gerade wieder Land ... ;D 
Also leider dieses WoE noch etwas anderweitig beschäftigt ...

Im Moment sieht es aber noch gut aus, liegt aber daran dass ich noch keine Zeit zum Eianrbeiten gefunden habe.
Melde mich aber gerne wieder, wenn es Neues zu berichten gibt ... 

Muss auch noch weitere BME's + BH1750 bestellen und hoffe aber auch, dass PeMues Adapter-Platine auch demnächst eintrudelt... ;-)
Den BH1750  gibt es eher auf Breakoutplatinen, aber nicht als Bauteil ...

Wie sieht es mit Deinen Platinen aus?

Grüße,
Jürgen 

PeMue

Zitat von: juergs am 23 Februar 2019, 19:39:30
Muss auch noch weitere BME's + BH1750 bestellen und hoffe aber auch, dass PeMues Adapter-Platine auch demnächst eintrudelt... ;-)
Den BH1750  gibt es eher auf Breakoutplatinen, aber nicht als Bauteil ...
Die Platinen sind verschickt, allerdings sind noch keine Tracking Informationen verfügbar. I.d.R. waren das so 15-20 Tage, da sind wir 4 drüber. Allerdings habe ich ca. 8 Tage wegen dem chinesischen Neujahr verloren.
Bei mir ist auch ein BH175 drauf, allerdings weiß ich gerade nicht, wieviele ich momentan da habe  :o.

Gruß Peter
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

juergs

Hallo Peter,
das hört sich ja gut an.
Irgendwie feiern die Chinesen länger Neujahr als wir  ::) ;)
reichelt hat den BH1750 leider nicht, nur als Breakoout.
Glaube hdgucken hatte Segor erwähnt...

Jürgen

Starsurfer

Was war den jetzt mit den Platinen zu dem Projekt, läuft da schon eine Bestellung?
FHEM Server: Fujitsu Esprimo q920 + LaCrosseGateway + HM-MOD-RPI-PCB WLAN + ConBee
HomeMatic HM-CC-RT-DN - Sonoff Tasmota
LaCrosse TX29DTH - Innr SP120 - Osram Smart+ Plug
Arduino Mega - MQTT - Pluggit 300
https://www.diy-robot-lawn-mower.com

Papa Romeo

..soviel ich weiß, ist Joerg in die Offensive gegangen...
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

herrmannj


herrmannj

Ich gebe mal meine Erfahrungen mit dem BME680 (als VOC Sensor) hier rein.

Vorab, ich werde mich, bzgl der Firmware, auf den AMS IAQ Core + BME280 konzentrieren aber sowohl von Gehäuse als auch vom FHEM Modul weiterhin alle unterstützen die hier auf den BME680 gehen wollen.

Mit dem BME680 habe ich mir sehr intensiv beschäftigt, Ziel war es den BME680 ohne die BSEC "Blackbox libs" zu betreiben. Vielleicht möchte das jemand weiterführen und die verbleibenden Probleme zu lösen. Hier die gesammelten Erkenntnisse:

Zur Funktion, im BME680 ist neben einem Temp, Hum und Pressure Sensor (weitgehend identisch zum BME280) auch ein Metalloxyd VOC Sensor verbaut. Das ist Quasi ein Widerstand dessen Leitwert bei Anwesenheit von Zielgasen steigt (der Widerstandswert sinkt). Dessen Roh Werte kann man auslesen. Allerdings ist der Widerstandswert nicht als absoluter Messwert zu betrachten, im Sinne von 100kOhm entsprechen so und so viel VOC. Stattdessen ist der Widerstandswert von eine Fülle von Parametern abhängig. Dazu gehören Exempalrstreunung, Alterung, Temperatur und Luftfeuchte. Diese Parameter beeinflussen die Werte durchaus um Zehnerpotenzen. Daher kann man das immer nur als relative Änderung sehen. Praktisch macht man das in dem man über einen gewissen Zeitraum auf den höchsten auftretenden Widerstandswert achtet und den dann mit "reiner Luft" gleichsetzt. Anschliesend werden dann alle Widerstandswerte relativ zu diesem betrachtet. Weil sich die Kennlinie ständig ändert muss man das dauernd widerholen, etwa 1-2 Wochen sind gängige Werte.

Ich habe viele Messreihen durchgeführt und dabei jeweils den AMS als Referenz genommen.

In vielen Veröffentlichungen wird der Einfluß der relativen Luftfeuchte (manchmal auch plus Temperatur) betrachtet. Mir erschien es logischer nicht die relative sondern die absolute Luftfeuchte zu betrachten. Diese Annahme hat sich in der Praxis bestätigt, der Einfluss ist dabei exponentiell:

R(bereinigt) = R * (absoluteFeuchte ^1.5)

Für die Berechnung des Anteiles VOC habe ich aus den Messreihen folgende Formel abgeleitet:

Ratio = R(clean) / R(voc)
VOC = 1250 * ln(Ratio) +125

Wobei R(clean) der gespeicherte und um den Einfluss der Luftfeuchte bereinigte Basiswert ist. R(voc) der aktuelle Widerstandswert, ebenfalls bereingt um die Luftfeuchte.

Das hat in den Test hier auch gut funktioniert (Referenz der AMS). Der relative Verlauf der so berechnten Werte (gegenüber dem AMS) kommt im Durchschnitt ausreichend gut hin. Im Einzellfall reagieren beide offensichtlich etwas unterschiedlich auf verschiedene Gase, alles in allem passt es.

Aber:
die absolute Anzeige der Werte ist extrem von der Baseline Kalibrierung abhängig. Bei entsprechend trockener und kalter Luft erreiche ich durchaus 450kOhm, wärme mglw feuchtere Aussenluft (genauso "clean") gibt aber auch 180kOhm. Da der Einfluss der Luftfeuchte jetzt exponentiell ist kommt man dort ganz schnell in Bereiche die unterhalb der Messtoleranz (Hum/Temp) des BME liegen.

Defacto ist es mir nicht gelungen eine Möglichkeit zu finden die Baseline Kalibrierung automatisch mit ausreichender Genauigkeit durchzuführen. Beide Kennlinien (Feuchtekalibrierung und ratio) sind nicht linear. Wenn die Kalibrierung nur um Prozentbruchteile fehlerhaft ist dann sorgt das dafür dass die berechneten VOC einen Offset von vielen, zb 200 oder 300ppm, haben was also für den praktischen Einsatz ungeeignet ist. (Beim AMS und auch in der BESC lib wird das alles intern erledigt).

Ich veröffentlich hier Formeln und Erkenntnisse damit, wer mag, darauf aufsetzen kann.

vg
Joerg



juergs

#312
Ich habe noch zu den Grundlagen folgendes gefunden:
Design and characterization for semiconductor gas sensors

juergs

#313
Hallo Zusammen,


  • gibt es etwas Neues zu den Platinen?

  • Findet der perl-code ins reguläre fhem-Update?

Hier noch etwas Cooles als Vorschlag: Widget-Dashboard
Wobei das Farb-OLED mit ca. 30$ doch etwas teuer ist...  ;D
Grüße,
Jürgen

herrmannj

Die Platinen sind frisch eingetroffen. Leider bin ich, zu meiner Schande, noch nicht zum Aufbau und damit zur Funktionsprüfung gekommen. ..

Den perl code kann ich gern einchecken, allerdings muss man sich fragen ob sich das für so ein Projekt mit so begrenzter Teilnehmerzahl lohnt. (?) Alternativ wäre ein Pflege via git