Bosch Sensortec Community

    cancel
    Showing results for 
    Search instead for 
    Did you mean: 

    Several BME280 sensors giving invalid values

    Several BME280 sensors giving invalid values

    Lunar
    New Poster

    We are integrating the BME280 into our units and have noticed several invalid values being obtained from the BME280 registers. We have roughly 200 units created and about 30-40 of these units have BME280 that are reading invalid data. 

    This following is the serial output from our microcontroller reading the BME280 on a working sensor:

    Displaying ID, reset and ctrl regs
    ID(0xD0): 0x60
    Reset register(0xE0): 0x0
    ctrl_meas(0xF4): 0xB7
    ctrl_hum(0xF2): 0x5


    Displaying all regs
    0x80:AD 71 89 53 2C 19 5E 06 16 6D 33 67 32 00 E8 8C
    0x90:71 D6 D0 0B 31 1B 62 00 F9 FF 0C 30 20 D1 88 13
    0xA0:00 4B 86 00 00 00 00 00 00 00 00 00 33 00 00 C0
    0xB0:00 54 00 00 00 00 60 02 00 01 FF FF 1F 4E 08 00
    0xC0:08 40 B7 FF 00 00 00 00 05 00 00 00 00 00 00 00
    0xD0:60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0xE0:00 48 01 00 19 2C 03 1E DB 41 FF FF FF FF FF FF
    0xF0:FF 00 05 0C B7 10 00 80 00 00 80 00 00 80 00 80


    Displaying concatenated calibration words
    dig_T1, uint16: 27926
    dig_T2, int16: 26419
    dig_T3, int16: 50
    dig_P1, uint16: 36072
    dig_P2, int16: -10639
    dig_P3, int16: 3024
    dig_P4, int16: 6961
    dig_P5, int16: 98
    dig_P6, int16: -7
    dig_P7, int16: 12300
    dig_P8, int16: -12000
    dig_P9, int16: 5000
    dig_H1, uint8: 75
    dig_H2, int16: 328
    dig_H3, uint8: 0
    dig_H4, int16: 412
    dig_H5, int16: 50
    dig_H6, uint8: 30

    Temperature: 24.40 degrees C
    Temperature: 75.92 degrees F
    Pressure: 71354.62 Pa
    Altitude: 2959.04m
    Altitude: 9708.12ft
    %RH: 31.83 %

    This following is the serial output from our microcontroller reading the BME280 on a non-working sensor:

    Displaying ID, reset and ctrl regs
    ID(0xD0): 0x60
    Reset register(0xE0): 0x0
    ctrl_meas(0xF4): 0xB7
    ctrl_hum(0xF2): 0x5


    Displaying all regs
    0x80:94 50 89 10 58 30 9C 06 C8 6F 85 69 32 00 FD 8B
    0x90:9B D7 D0 0B C2 19 35 00 F9 FF AC 26 0A D8 BD 10
    0xA0:00 4B FB 00 00 00 00 00 00 00 00 00 33 00 00 C0
    0xB0:00 54 00 00 00 00 60 02 00 01 FF FF 1F 4E 08 00
    0xC0:08 40 B7 FF 00 00 00 00 05 00 00 00 00 00 00 00
    0xD0:60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0xE0:00 73 01 00 12 29 03 1E 00 41 FF FF FF FF FF FF
    0xF0:FF 00 05 0C B7 10 00 FF FF C0 FF FF C0 FF FF 80


    Displaying concatenated calibration words
    dig_T1, uint16: 28616
    dig_T2, int16: 27013
    dig_T3, int16: 50
    dig_P1, uint16: 35837
    dig_P2, int16: -10341
    dig_P3, int16: 3024
    dig_P4, int16: 6594
    dig_P5, int16: 53
    dig_P6, int16: -7
    dig_P7, int16: 9900
    dig_P8, int16: -10230
    dig_P9, int16: 4285
    dig_H1, uint8: 75
    dig_H2, int16: 371
    dig_H3, uint8: 0
    dig_H4, int16: 297
    dig_H5, int16: 50
    dig_H6, uint8: 30

    Temperature: 190.42 degrees C
    Temperature: 374.76 degrees F
    Pressure: -21802.65 Pa
    Altitude: nanm
    Altitude: nanft
    %RH: 100.00 %

    Temperature: 190.42 degrees C
    Temperature: 374.76 degrees F
    Pressure: -21802.65 Pa
    Altitude: nanm
    Altitude: nanft
    %RH: 100.00 %

    I have attached some oscilliscope images of the I2C lines from both sensors at the bottom of the post. Images 1-4 corresponds to the non-working sensor while 5-8 corresponds to the working sensor.

    According to the oscilliscope, we are send the correct/valid messages to the sensor in accordance to the BME280 datasheet and the sensor is holding/reporting invalid data from its registers. We would like to know why some of these sensors are working and others sensors are not. Is this a known issue? 

    Non-Working 1Non-Working 1Non-Working 2Non-Working 2Non-Working 3Non-Working 3Non-Working 4Non-Working 4Working 1Working 1Working 2Working 2Working 3Working 3Working 4Working 4

    4 REPLIES 4

    handytech
    Community Moderator
    Community Moderator

    From the chip ID and trimming value dumps, it seems that I²C reads are working for both sensors.

    For the "working" sensor, no raw LSB values were shared to confirm that the compensation outputs look as expected (in the register map dump, all values still shows "skipped"  measurements).

    For the "non-working" sensor, at least the bad T/P/H outputs match the raw LSB values from the register map dump. But for the "non-working" sensor, the LSB values also look as if they were 'capped' ("FF"s). Is that always the case or is the output sometimes changing at all? Are all the devices 'brand new' (coming out of production) or have the "non-working" devices ever been working normally before showing signs of failure? If you are seeing such failures on brand new devices for the first time, please confirm that you are following the recommendations in BME280's HSMI manual, in particular that you are using no processes that could be harmful to the BME280.

    From your oscilloscope capture, it seems that you are reading-out data using single-byte reads. I would note that it is recommended to use "burst" reads instead (see chapter 4 "Data readout" in the datasheet).

     

    It's interesting that the register map dump is showing "skipped measurements". I'll look into this and try and share more valuable information to you from this sensor.

    The data that I gathered for you was indeed using single-byte reads but this is not how we program our units. We use burst reads but for debugging purposes, we are using single-byte reads.

    From what I have noticed, all the non-working sensors are capped and giving constant 0xFF while the sensors are powered. Majority of the sensors are seeing failures from the initial start up, but a few were working as expected then went down over certain duration of time.

    Our units are manufactored in a mass manufactoring facility and we provided them the HSMI manual to ensure it is being followed. I would like to highlight the key points I have found and ensure I didn't miss any with you so I can start a converation with them and ensuring these instructions are being followed. Ignoring the placement details which we confirmed are being followed, the instructions are as follows:

    1. Solder must be Pb free with peak temperature of 260 C for 20-40 seconds and no more.
    2. The minimum height of the solder after reflow should be at least 50 um.
    3. Avoid excess solder paste
    4. Do not use any liquids of any kind around the sensor (flux, cleaning agents, air-pistol, etc.) unless protective actions are taken around the vent hole of the sensor
    5. Max of only three reflow cycles
    6. Reconditioning procedure is mandatory when the sensor is exposed to conditions that exceed the limits in accordance to the datasheet (e.g reflow).
      1. Dry-Bake: 120 C at <5% rH for 2 hours or N/A (reflow only)
      2. 70 C at 75% rH for 6 hours or 25 C at 75% rH for 24 hours or ~25 C at >40% rH for >5 days (reflow only)
      3. 1 hour at room temperature or N/A (reflow only)
    7. Vapor phasing soldering must be avoided

    Are there any main instructions that I missed? 

    Are there any other procedures we can conduct with the working/non-working sensors as we talk to our manufactoring team to determine if something else is occuring?

    handytech
    Community Moderator
    Community Moderator

    I would say you covered the main topics, in particular forbidden assembly and soldering processes are probably the most common causes for production failures (contamination and/or damages to the sensing elements inside the protective lid).

    mirov
    Occasional Visitor

    Hi there.  I have something that may be related.  I've built numerous prototypes with BME280s as well as production devices.   In this thread the "working device" has a data dump showing a calculated pressure of Pressure: 71354.62 Pa.   I would assume that was taken at nominally sea level instead, but that value seems much too low.  I'm at sea level approximately at the moment and my units are also showing very similar values.   I've always assumed I have a bug someplace in the compensation code, though it is a cut-and-paste from a Bosch code example.  The temperature and humidity values seem to be correct, and my calibration parameters are very similar (and sometimes exactly the same as) those in the thread above for a "working unit".

    So let's start with a simple question:  Is that pressure reading in the right range of expected results ?

     

    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