Bosch Sensortec Community

    cancel
    Showing results for 
    Search instead for 
    Did you mean: 

    strange BME680 gas part behavior

    strange BME680 gas part behavior

    wkwj
    New Poster

    Hi,

    I have encountered a strange behavior of BME680 multivariable sensor(s) (as it happened to all 3 pieces I have). The sensor is correctly supplied (3,3 V, no voltage sags, both VDD and VDDIO pins shorted together, low impedance GND connection) and interfaced via I2C (communication 100% correct).

    When I measure temperature, humidity and pressure the sensor triggers correctly and the response obtained via I2C is very accurate. But when gas sensing feature is enabled (via RUN_GAS bit in CTRL_GAS_1 register) the sensor behaves in a strange way. The  0th gas sensor heater set point is used, heater temperature and heating time registers contain:

    GAS_WAIT_0 10111110

    RES_WAIT_0 11010000

    When MODE bit in CTRL_MEAS register is set to 1 the sensor correctly sets MEASURING flag in MEAS_STATUS_0 register to 1. But then, after approx. 11 ms some registers are set to 11111111 and then, after another 3,8 ms (it is the fastest time graduation I was able to obtain to log register states) gas-related registers are reset to 0. Here is the log of gas-sensing-related registers:

    CTRL_GAS_1

    IDAC_HEAT_0

    GAS_R_LSB

    GAS_WAIT_0

    RES_WAIT_0

    CTRL_MEAS

    MEAS_STATUS_0

    ----

    10000

    0

    100

    10111110

    11010000

    100101

    100000

    --

    10000

    0

    100

    10111110

    11010000

    100101

    100000

    --

    11111111

    11111111

    11111111

    11111111

    11111111

    11111111

    0

    --

    0

    0

    100

    0

    0

    0

    0

    --

    0

    0

    100

    0

    0

    0

    0

    I was also monitoring the sensor supply current using a wideband current clamp probe and a scope but  no current jump, related to heater turn-on was registered.

    Any idea what is happening ? Any help or suggestion would be highly appreciated.

    Best regards,

    Pawel

    1 REPLY 1

    o_o
    Contributor
    Hello,

    My best suggestion is to not worry with the register values too much, and to simply use the Sensor API : https://github.com/BoschSensortec/BME680_driver

    Simply provide i2c read and write functions, and a delay function. Especially if you plan on using BSEC later on, the Sensor API is a must.

    o_o
    Icon--AD-black-48x48Icon--address-consumer-data-black-48x48Icon--appointment-black-48x48Icon--back-left-black-48x48Icon--calendar-black-48x48Icon--center-alignedIcon--Checkbox-checkIcon--clock-black-48x48Icon--close-black-48x48Icon--compare-black-48x48Icon--confirmation-black-48x48Icon--dealer-details-black-48x48Icon--delete-black-48x48Icon--delivery-black-48x48Icon--down-black-48x48Icon--download-black-48x48Ic-OverlayAlertIcon--externallink-black-48x48Icon-Filledforward-right_adjustedIcon--grid-view-black-48x48IC_gd_Check-Circle170821_Icons_Community170823_Bosch_Icons170823_Bosch_Icons170821_Icons_CommunityIC-logout170821_Icons_Community170825_Bosch_Icons170821_Icons_CommunityIC-shopping-cart2170821_Icons_CommunityIC-upIC_UserIcon--imageIcon--info-i-black-48x48Icon--left-alignedIcon--Less-minimize-black-48x48Icon-FilledIcon--List-Check-grennIcon--List-Check-blackIcon--List-Cross-blackIcon--list-view-mobile-black-48x48Icon--list-view-black-48x48Icon--More-Maximize-black-48x48Icon--my-product-black-48x48Icon--newsletter-black-48x48Icon--payment-black-48x48Icon--print-black-48x48Icon--promotion-black-48x48Icon--registration-black-48x48Icon--Reset-black-48x48Icon--right-alignedshare-circle1Icon--share-black-48x48Icon--shopping-bag-black-48x48Icon-shopping-cartIcon--start-play-black-48x48Icon--store-locator-black-48x48Ic-OverlayAlertIcon--summary-black-48x48tumblrIcon-FilledvineIc-OverlayAlertwhishlist