Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. My Project
  3. Bosch BME680 Sensor

Bosch BME680 Sensor

Scheduled Pinned Locked Moved My Project
24 Posts 7 Posters 10.5k Views 8 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • NeverDieN Offline
    NeverDieN Offline
    NeverDie
    Hero Member
    wrote on last edited by NeverDie
    #15

    Wow, I just now tried changing the pre-heat time on the BME680, and I get completely different KOhm values. I tried going from 150ms to 1 second, 2 seconds, 3 seconds, and 4 seconds. Each time the KOhm value went up, even though the air is exactly the same. At 4 seconds I was getting 760KOhm, as compared to 280KOhm with the much shorter pre-heat time of 150ms.

    Given this, how does one pick a proper pre-heat time?

    [Edit: even worse, now that I've tried these other settings, if I go back to the original settings (pre-heat to 320C for 150ms), I'm getting much lower values than previously. Now, instead of 280Kohms, I'm getting far close to 200KOhms.

    This is not good!

    Even how often I read the sensor has an effect on the value it reports.]

    mfalkviddM 1 Reply Last reply
    0
    • NeverDieN NeverDie

      Wow, I just now tried changing the pre-heat time on the BME680, and I get completely different KOhm values. I tried going from 150ms to 1 second, 2 seconds, 3 seconds, and 4 seconds. Each time the KOhm value went up, even though the air is exactly the same. At 4 seconds I was getting 760KOhm, as compared to 280KOhm with the much shorter pre-heat time of 150ms.

      Given this, how does one pick a proper pre-heat time?

      [Edit: even worse, now that I've tried these other settings, if I go back to the original settings (pre-heat to 320C for 150ms), I'm getting much lower values than previously. Now, instead of 280Kohms, I'm getting far close to 200KOhms.

      This is not good!

      Even how often I read the sensor has an effect on the value it reports.]

      mfalkviddM Offline
      mfalkviddM Offline
      mfalkvidd
      Mod
      wrote on last edited by
      #16

      @neverdie sounds you might have found a good source for random number generation ;-)

      1 Reply Last reply
      0
      • mr_redM Offline
        mr_redM Offline
        mr_red
        wrote on last edited by
        #17

        I am dealing with these types of sensors on a professional level so, I thought I could add to your experiments.
        As mentioned above these sensors are very sensitive to organic compounds, which get emitted by silicon bases materials.

        This can go as far as tainting the sensors completely and rendering them useless. I remember a oversized project to qualify new glues for the whole production, after having to scrap 5k+ sensors because of tainting. They said the sensors where “poisoned” 😊

        A standard approach is to get rid of some residual compounds is to heat the sensor to a higher temperature to get rid of these compounds, then lowering the temp. to get a reading.

        This is all not low power application but I guess BOSCH is going this approach. The reason why you get different resistive values after you experimented with preheat phase times, seems to me as a typical finding after a longer heating phases, which “cleaned” the sensor.
        The reason why you get higher values with longer preheat times is weird though. Maybe they use the known thermal mass of the sensor to estimate the die temperature from the heating time with known power. But this would be a very crude approach, but would explain your results. The longer the preheat phase, the hotter the senor, changing your results.

        1 Reply Last reply
        3
        • NeverDieN Offline
          NeverDieN Offline
          NeverDie
          Hero Member
          wrote on last edited by NeverDie
          #18

          I'm guessing the BME680 sensor just doesn't lend itself to one-off measurements. Probably (?) using the BSEC software is required, as well as waiting up to 4 days for it to calibrate. Here's a quote from the datasheet:

          The calibration process considers the recent measurement history (typ. up to four days) to ensure that IAQ ~ 25 corresponds to “typical good” air and IAQ ~ 250 indicates “typical polluted” air

          It does make me wonder though: if it calibrates in a dirty environment, how does it ever know what a clean environment is?

          In any case, I think there needs to be more guidance about what kind of pre-heats to do and for how long, and also how often the sensor should be read, since that also appears to affect the measured value.

          [Edit: I will say that the SGP30 seems a lot easier to comprehend and work with, and its measured values seem to make sense in light of what I know about the environment. So, I'm not sure that I'll be going further with the BME680 at this time. Its use of closed libraries is just not friendly, and the non-transparency draws into question whether the code is even correct or not since the usual checks by open inspection are missing. ]

          Nca78N 1 Reply Last reply
          2
          • NeverDieN NeverDie

            I'm guessing the BME680 sensor just doesn't lend itself to one-off measurements. Probably (?) using the BSEC software is required, as well as waiting up to 4 days for it to calibrate. Here's a quote from the datasheet:

            The calibration process considers the recent measurement history (typ. up to four days) to ensure that IAQ ~ 25 corresponds to “typical good” air and IAQ ~ 250 indicates “typical polluted” air

            It does make me wonder though: if it calibrates in a dirty environment, how does it ever know what a clean environment is?

            In any case, I think there needs to be more guidance about what kind of pre-heats to do and for how long, and also how often the sensor should be read, since that also appears to affect the measured value.

            [Edit: I will say that the SGP30 seems a lot easier to comprehend and work with, and its measured values seem to make sense in light of what I know about the environment. So, I'm not sure that I'll be going further with the BME680 at this time. Its use of closed libraries is just not friendly, and the non-transparency draws into question whether the code is even correct or not since the usual checks by open inspection are missing. ]

            Nca78N Offline
            Nca78N Offline
            Nca78
            Hardware Contributor
            wrote on last edited by
            #19

            Thank you for the feedback @neverdie, it seems I need to order some SGP30. I'll add it to my air quality board and also add a level converter for i2C section.

            Did you buy the BME680 on a breakout board or chip only ?

            I'm not shocked by the "calibration" process, it's similar to what CO2 sensors do, they take the minimum over a period of time and decide it's 400ppm (co2 level outside). It's not adapted to constantly polluted/closed environment but fine for inside home where you're supposed to regularly open windows to get fresh air.

            NeverDieN 1 Reply Last reply
            0
            • Nca78N Nca78

              Thank you for the feedback @neverdie, it seems I need to order some SGP30. I'll add it to my air quality board and also add a level converter for i2C section.

              Did you buy the BME680 on a breakout board or chip only ?

              I'm not shocked by the "calibration" process, it's similar to what CO2 sensors do, they take the minimum over a period of time and decide it's 400ppm (co2 level outside). It's not adapted to constantly polluted/closed environment but fine for inside home where you're supposed to regularly open windows to get fresh air.

              NeverDieN Offline
              NeverDieN Offline
              NeverDie
              Hero Member
              wrote on last edited by NeverDie
              #20

              @nca78 I bought my bme680 on an adafruit breakout board. Same with the SGP30. Both purchased from Digikey.

              alexsh1A 1 Reply Last reply
              1
              • S Offline
                S Offline
                sm_ali
                wrote on last edited by
                #21

                I am working on BME680 to interface with the MSP430launch pad having microcontroller MSP430G2553 using I2C interface. My code is not working correctly and I am getting the wrong readings. May be there will be problems in compensation parameters. I tried the almost similar code on BME280 and it was working fine.

                Online code available at Github is only for arduino and I have checked it is working on my sensor adafruit BME680 board interfaced with arduino.

                Please someone can help me.

                1 Reply Last reply
                0
                • NeverDieN NeverDie

                  @nca78 I bought my bme680 on an adafruit breakout board. Same with the SGP30. Both purchased from Digikey.

                  alexsh1A Offline
                  alexsh1A Offline
                  alexsh1
                  wrote on last edited by
                  #22

                  @neverdie this is my observation as well that the sensor is showing strange values in the beginning but gradually they become more and more accurate. I have not tinkered long enough to have good viable results.

                  1 Reply Last reply
                  1
                  • HeinzH Heinz

                    @alexsh1
                    No I am not using the BSEC library. I read the raw values of the resistance and calculate the first derivative for triggering the ventilation system. The ventilation system is turned on, when
                    (delta resistance)/minute > threshold

                    Sometimes the ventilation is also triggered when I open my fridge. Then the smell of food coming out of the fridge also fires the trigger.

                    It is said that the sensor is very sensitive to any kind of silicone which is basically everywhere in the air when you have dishes created from silicone in your kitchen. Silicone poisens/blinds the sensor immediately for several hours.
                    So be careful when making experiments with it.

                    S Offline
                    S Offline
                    sm_ali
                    wrote on last edited by
                    #23

                    @heinz Please help me out. I am using bme680 just for humidity and temperature and trying to run code on code composer studio without activating the gas registers.Problem is that where are the data calibration registers.I am getting the temperature results correct but humidity results are completely terrible. I am getting the values of humidity like 0% then 100% then -1.35% then 0 the 1.8%

                    Kindly provide some help. I am using msp430 launch pad and I2c protocol to communicate between sensor and controller.

                    HeinzH 1 Reply Last reply
                    0
                    • S sm_ali

                      @heinz Please help me out. I am using bme680 just for humidity and temperature and trying to run code on code composer studio without activating the gas registers.Problem is that where are the data calibration registers.I am getting the temperature results correct but humidity results are completely terrible. I am getting the values of humidity like 0% then 100% then -1.35% then 0 the 1.8%

                      Kindly provide some help. I am using msp430 launch pad and I2c protocol to communicate between sensor and controller.

                      HeinzH Offline
                      HeinzH Offline
                      Heinz
                      Hero Member
                      wrote on last edited by
                      #24

                      @sm_ali
                      You can have a look at this lib here
                      https://raw.githubusercontent.com/DFRobot/DFRobot_BME680/master/bme680.c

                      there is code that handles the calib thing

                      1 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      24

                      Online

                      11.7k

                      Users

                      11.2k

                      Topics

                      113.1k

                      Posts


                      Copyright 2025 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • MySensors
                      • OpenHardware.io
                      • Categories
                      • Recent
                      • Tags
                      • Popular