Bosch Sensortec Community

    Showing results for 
    Search instead for 
    Did you mean: 

    Precision of BME680

    Precision of BME680

    New Poster


    i'm working with the sensor BME 680. I'm interested in reading the VOC, IAQ and Co2eq.

    I have created the algorithm on STM32F100 to read the data from the BME680. I've integrated even the BSEC library. I don't use the floating point compensation.

    But about the breath VOC read from the sensor seems very different from the measurement instrument reference that I'm using which read the TVOC.

    The reference instrument is a Trotec BQ16.

    While warming up the BME680 sensor give this values  

    IAQ - 25

    Precision IAQ - 0

    CO2 - 500 ppm

    VOC - 499 ppb

    but since it's warming up it's not a problem.

    But after some minutes time the BME sensor report:

    IAQ - 104

    IAQ accurency - 1

    CO2 - 638 ppm

    VOC - 843 ppb

    While the reference instruments (BQ16) give me a TVOC of 0,22 ppm which is between a third and a quarter of the value read from the BME 680.

    Why? Have I made any mistake integrating your code? If you need I can give even the gas resistance. I'm reading data every 3 seconds.

    The temperature, umidity and pressure seems correct, the CO2 seems quaite similar to the value read from another instrument. But the VOC seems always between 2 and 4 time bigger than the reading from the reference instrument.

    We note even that if the sensor has been turned on for long time, the value of VOC is much bigger. Shutting down and turning on again, the value read of the VOC seems to read a smaller value

    Thanks in advance,


    21 REPLIES 21

    Community Moderator
    Community Moderator

    Thank you for the information. 

    Now I'm clear.  if you multiple by 1000,  then i can see 4000 values. 

    Again,  BME680 is relative sensor and we use static IAQ value just simply multiple by one scaler factor to get bVOC number.  

    I will suggest to trace the changing trend with reference sensor to evaluate the lib output. 

    Let's see your new test plotter. 


    I can see some common behaviour if some alcohol is put inside the room or when the cleaning is undergoing or when I open the door. But it's not easy to see the confrontation of the TVOC and the BME680.  This is because the TVOC we have can't be connected to the logger (it's my microprocessor that register the data) and the TVOC we have can't be connected in any way. And the TVOC turn off in some minutes. While it takes 2 minutes or more to turn on.

    The problem is that if I take 2 sensors connected to 2 different microprocessors (with the same firmware) I can see different values for the VOC from the Logger. This is the worst problem. I'm trying to understand if the sensors has been damaged during the soldering phase or why since they has been turned on on the same time and the 2 microprocessors have the same firmware. To better understand the problem I can show the log file of 2 sensors. The issue of the inizilization has been corrected (now the inizialization is correctly set for 3s and 3,3V supply as should be). I have turned the 2 sensor on at 13.00 pm. They are placed in a room that during the day (after 8.00 am) have a window open and afer 17.00 I close the window (so no fresh air is available) but I open the door that connect to the rest of the company in order to avoid a too static air. Usually after 17.30 the cleaning of the company is undertaking and so it's normal that the VOC increase.

    You can see from the tab on the lowest part of the window the values that are completely different. In one case the VOC reach a peak of 120000 ppb (120ppm)


    In the second case the VOC reach a peak value of 6000 ppb (6ppm)


    The 2 sensors are placed 50cm one from another, so they should have the same values... or something similar

    Even CO2 have a peak of different values, but one sensor reach a value wich is "only" double the value of the other (2000 vs 4000)



    This is the worst problem for me. If a customer put 2 board at a short distance and see 2 values that are so different for VOC (one is 20 times the other) will ask me "why? is one sensor broken?" Is this difference connected only to the first hours of inizialization? 

    The logger register even the Gas resistance, the temperature, the umidity, the pressure, and alla the raw data and you can see from the excel table (the tab on the bottom of the excel window select the sensor). I will try to confront with the TVOC but I will have some difficulties in doing this 






    Community Moderator
    Community Moderator

    the previou log file you provide only contain one data log from one device.  so i can't verify your current issue. 

    Also i will say,  please use sIAQ and eCO2 output from the lib for your use case,  do not use breath VOC (bVoc) output.     it is not fit your use case to convert to VOC concetration of the room.

    In general,  if you have separate device (each device have standalone MCU, sensor and FW),  then put in same room for testing,  the result output from room will be stay within +-15% range.  i will not expect so big difference from two sensor if they both put in same room from beginning. 

    Question is do you calibrate those two sensors in same environment or not? 

    the CO2 plotter shows consistent change rate but just different estiamate value,  for me it looks like the base line for each sensor getting from lib is differnt means the calibration of sensor is done in different room.

    I don't know where and when they do the calibrations. Since I turn them on they where in the same room. The "load" of the state from EEprom (as you can see from the long initial time the sensors take to have IAQ different then one) shouldn't be able to work yet.

    So I think they calibrate in the same room. Is there a possibility to know where and how the sensor calibrate or to force a calibration?

    Community Moderator
    Community Moderator

    You can disable the load state file and start from fresh state,  the both device can be calibrated (run-in) in same environment.