Bosch Sensortec Community

    Showing results for 
    Search instead for 
    Did you mean: 

    BME 680 Gas resistance adc reading 0

    BME 680 Gas resistance adc reading 0

    Established Member


    I'm using the BME680 and I'm facing a problem with GAS Resistance measurements.

    Here is my setup:

    • - custom board, 3v3, I2C connection
    • -  BSECv1.4.7.3 used within barebone ARM-M4F/GCC environment
    • - main code mimicking "bsec_iot_example", using "LP" or "ULP" measure rate

    I first thought everything worked fine as I'm getting Temp,Pressure and RH values nicely correlating with measured environment, but even after a few days (weeks) of running measurements, I could still not make any sense of IAQ values.

    It turns out that the GAS_RAW value is stuck to a high value corresponding to an adc reading of zero (gas_r=0 and gas_range =0).

    I checked requested heater temperature and time (given by BSEC) and it looks correct (320 C/ 197ms in 3 seconds "LP" setup).

    When fetching results I always get gas_valid and heat_stab bits set, thus the measurement seems to be correctly performed.

    I traced the first seconds of measurements of a brand new BM680 and I saw that adc reading are actually moving:

    18:46:07:642 [DRV 3] calc_gas_resistance: adc:392 range:11 -> 4291.02
    18:46:10:634 [DRV 3] calc_gas_resistance: adc:960 range:9 -> 11720.93
    18:46:13:633 [DRV 3] calc_gas_resistance: adc:379 range:8 -> 34713.96
    18:46:16:635 [DRV 3] calc_gas_resistance: adc:413 range:7 -> 68053.58
    18:46:19:638 [DRV 3] calc_gas_resistance: adc:616 range:6 -> 116028.30
    18:46:22:641 [DRV 3] calc_gas_resistance: adc:619 range:5 -> 229796.34
    18:46:25:643 [DRV 3] calc_gas_resistance: adc:839 range:4 -> 401811.03
    18:46:28:646 [DRV 3] calc_gas_resistance: adc:309 range:4 -> 588290.75
    18:46:31:648 [DRV 3] calc_gas_resistance: adc:879 range:3 -> 785630.88
    18:46:34:651 [DRV 3] calc_gas_resistance: adc:533 range:3 -> 984626.62
    18:46:37:653 [DRV 3] calc_gas_resistance: adc:310 range:3 -> 1176727.88
    18:46:40:659 [DRV 3] calc_gas_resistance: adc:187 range:3 -> 1318627.50
    18:46:43:658 [DRV 3] calc_gas_resistance: adc:80 range:3 -> 1473165.38
    18:46:46:661 [DRV 3] calc_gas_resistance: adc:860 range:2 -> 1588895.38
    18:46:49:664 [DRV 3] calc_gas_resistance: adc:687 range:2 -> 1769736.62
    18:48:22:741 [DRV 3] calc_gas_resistance: adc:825 range:0 -> 6489747.00
    18:49:34:803 [DRV 3] calc_gas_resistance: adc:366 range:0 -> 8974145.00
    18:50:13:837 [DRV 3] calc_gas_resistance: adc:221 range:0 -> 10208728.00
    18:56:32:915 [DRV 3] calc_gas_resistance: adc:0 range:0 -> 12946861.00

    but after a few minutes the values reaches 0 and stays stuck. I understand ther is a "burn-in" phase for MOX sensors, but I guess it should not "burn" down to zero...

    After unplugging/unpowering the BM680 for a while and restarting, I get back some "life" on adc measurements (starting lower than the very first time though), but following the same steep curve to zero. I tried 4 different boards with same result.

    Does it ring a bell to anyone ? What could be my problem here ? I can give more detailed info about registers setup (even though I'm just following BSEC requests).



    22 REPLIES 22

    Established Member

    I'm not sure if it is even a help but you might consider the tape used to mask off things like gold fingers.  If your volume is enough I'm sure the tape mfg or a value added supplier can precut "dots".

    I was also wondering if putting tape over the hole in the sensor and heating the assembly might risk over pressuring the pressure portion of the sensor.


    Established Member

    If you haven't already, I would go back to DigiKey.   If for no other reason than so others don't have to suffer a similar issue.



    Established Member


    I actually had a phonecall with my PCBA and it turns-out that he used vapor-phase oven to "cook" this proto batch.

    As it's stated in the HSMI document  not to employ vapor-phase oven, I guess I have my culprit... Note that one (out of 20) of my BME680 apparently survived the process and is working normally.

    So I'll make a new batch with proper reflow and see how it goes.

    Established Member


    Just a last update on this thread: I got a new batch of my BME680 daughtercard (no vapor-phase this time), and it looks good.

    Thanks again for your support.


    New Poster


    Im having this same problem with my board with BME680.

    I have included the BSEC libraries, the physical sensors outputs are all good except gas resistance, this value is always 12917166, same for different boards.

    I have check in different boards (two different batches), some of this boards gas output were changing values at the beggining but after a couple of hours all of them returned a static output like the others...

    Could it be a timing problem? I would like to be sure if this behaviour is a physical problem or a configuration problem.