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

    Community Moderator
    Community Moderator

    In the post above, the sensors were contaminated during the assembly process. If your BME680 were assembled on custom boards, please confirm that no harmful processes may have damaged the sensors.

    To root out configuration issues, please confirm that you have successfully implemented the sample code available in BSEC's package, and that both timings and communication on the bus is truly as expected in your code (e.g. with a logic analyzer). If your setup allows it, you could eventually try your current SW implementation, but while connected to BME680 shuttle board instead of the on-board sensor.

    Occasional Visitor

    Hi everyone, I also have this issue where my BME 680 is reading Temperature, Humidity, Pressure fine. The values seems accurate. However my Gas sensor is reading 0.

    I have read through this thread. Is the sensor damaged? I am using one from 

    What are my steps to try and get the Gas sensor working? What can I do to troubleshoot this issue?

    Community Moderator
    Community Moderator

    If T/P/H read-outs are successfully working, communication with the sensor sounds fine. If not doing so already, I would recommend trying known code (e.g. from the official sensor API, it even has a self-test file, or from your board's supplier). If you have no known-working sensors/boards to compare your current device to, I would recommend getting in touch with your board's supplier and maybe have it replaced/troubleshot.