BME680 and BME280 too low humidity

I have a design with BME280 and Sensirion SCD30 in one enclosure with ventilation. Outside 2 calibrated temp / humidity measurement units.

SCD30 shows approx correct humidity value, whereas BME280 shows approx 6-8% too low humidity. Temperature is ambient approx 21degC and internal die temperature approx 24degC.

In a different setup using the BME680 and SCD30 I have exactly the very same issue as well: too low humidity computation. Here internal temperature is 27degC, ambient 21deg.

I'm pretty sure, that something is wrong with the compensation algorithm.

See here the calibration factors from NVRAM, as well as the t_fine and the var1-var4 values for the BME680 setup (all decimal)

t_fine 143487.66
h1 706
h2 1023
h3 0
h4 45
h5 20
h6 120
h7 -100
var1 3728.000000
var2 15.886038
var3 0.007324
var4 -0.000048
Temp comp 28.02
calc hum 17.40

Funny thing, if I add 100 to the temp_comp value the calculated humidity gets approx right.

And yes, I have checked the code against the latest library for BME680 on github. It's exactly the same!

Would appreciate any idea on where there is a mistake!

rgds

 

Best reply by FAE_CA1

Hi,

Stress could yield to low and high humidity. The stress is invisible and it doesn't always yield to low humidity values.

In Bosch factory each BME280 is trimmed, calibrated and tested at chip level in the socket. And the H1-H7 values are stored in the NVM of each BME280. It is not possible to know how users will solder BME280 on their own PCBs. Since the formula to calculate the humidity from raw measurements and H1-H7 parameters is not linear, it is not possible to figure out new H1-H7 values and write them back to NVM. Users can perform compensation and save the calibration parameters in the flash memory of the host processor.

BME280 is MSL1 and doesn't need to be baked before soldering if BME280 storage is not beyond the specs. in Section 1.2. So you can use option 3 doing at approx 25degC with >40%rH for > 5 days.

Thanks.

View original
3 replies
Resolved