Bosch Sensortec Community

    Showing results for 
    Search instead for 
    Did you mean: 

    BME680 and BME280 too low humidity

    BME680 and BME280 too low humidity

    New Poster

    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!



    3 REPLIES 3

    Community Moderator
    Community Moderator


    Thanks for your inquiry.

    Each BME280 and BME680 sensor is factory trimmed, calibrated and tested before delivery to the market. However, after soldering the offset of humidity may change due to the mechanical stress. The humidity difference of 6%RH ~ 8%RH compared to the reference is normal. You can do the compensation in your production line. Please see the attached "BST-BME280-AN006-02.pdf" for more information.


    Thank you for clarification.

    You confirm that this possible stress will always yield to too low values for humidity?

    Why is it not possible to re-program the H1-H7 values in the NVRAM to properly compensate for this induced problem. This would be far simpler avoiding additional code in the end.

    And finally, I'm not sure that I have seen a note for the above element. There is one related to soldering conditions for BME280, that also refers to a backing out procedure in sectino 7.9. Is this another way of getting rid of the offset then permanentely?  Then option 3 doing at approx 25degC with >40%rH for > 5 days should do the job. Then I can understand, as currently here it's impossible to attain this level of humidity, so this reconditioning cannot happen.

    Can you confirm, that the last method can be used ANYTIME after exposure and will rectify the issue?

    thank you for your help.

    Community Moderator
    Community Moderator


    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.