TheMystery schreef op dinsdag 30 november 2021 @ 09:22:
[...]
Klopt is configuratie in esphome, zelf programmeren zit er niet zo in denk ik (lang geleden dat ik wat geprogrammeerd heb).
Ik weet dat een sensor warmer wordt in een behuizing, dat is bij de bme280 en 680 in mijn behuizing ongeveer 2.4 graden.
Alleen bij de bme280 moet ik de luchtvochtigheid met minimaal 8 compenseren terwijl dat met een bme680 niet hoeft met de library.
Humidity compensatie is wat complexer dan simpelweg een vaste offset gebruiken.
Dit is hoe ik het doe in ESPEasy:
- Bereken dauwpunt temperatuur, gebaseerd op gemeten temp/hum
- Compenseer temperatuur offset (in een gesloten behuizing met niet al te groot verloop in omgevingstemperatuur is de temp offset nagenoeg constant)
- Bereken humidity gebaseerd op dauwpunt temperatuur en gecorrigeerde temperatuur.
Zoals gezegd, in een kleine behuizing met nagenoeg constant energieverbruik is de gemeten temperatuur een paar graden te hoog en die offset is vrijwel constant mits de omgevingstemperatuur niet te veel varieert.
Dus typische toepassing is binnenshuis.
Als je de boel buiten hebt hangen, kun je deze aanname niet meer maken, omdat de "snelheid" van energieoverdracht mede afhankelijk is van het verschil in temperatuur, maar ook af hangt van hoe snel de lucht langs de unit gaat. Binnenshuis is dat vrijwel constant, maar buiten dus niet. Hierdoor kan de omgevingstemperatuur sneller wisselen dan je behuizing en alle onderdelen kan bijhouden waardoor je verschiltemperatuur met de omgeving dus varieert en dus de offset zal schommelen.
Maar goed, dit is dus een compensatie die je kunt toepassen in het geval de sensor opwarmt.
Als de meetwaarde fout is doordat je de registers niet in 1 run uitleest, dan heb je gewoon een verkeerde meting en dan is het heel lastig te voorspellen wat de meetfout is.
De BME280 verwerkt de meting namelijk als een iteratief proces. Dus de registers worden tussentijds bijgewerkt met tijdelijke waarden.
Zodra je er 1 uitleest, is daarna de set van registerwaarden niet meer consistent en zit je dus eigenlijk data van een oude meting en tussentijdse waarden van de nieuwe meting te lezen en te combineren.
Dit uit zich vrijwel altijd in pak 'm beet 2 graden offset. Maar geen idee wat de offset in humidity is.
Dit probleem voorkom je door alle registers in 1 I2C call uit te lezen.
De BME680 is een heel stuk nieuwer, dus wellicht dat ze dat nu iets anders aangepakt hebben in de sensor wat betreft de sample-and-hold strategie en pas de boel te kopieren naar de registers die je als gebruiker kunt uitlezen als de hele cyclus voltooid is.
Ik moet zeggen dat de BME280 eigenlijk best wel OK meetwaarden geeft, mits je 'm dus niet laat opwarmen door de andere componenten danwel de beschreven temperatuur-compensatie gebruikt.
Een goedkope voeding is als een lot in de loterij, je maakt kans op een paar tientjes korting, maar meestal betaal je de hoofdprijs. mijn posts (nodig wegens nieuwe layout)