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,
Solved! Go to Solution.
1. the IAQ accuracy level is still 1 in your test case which means the lib output is not trustable at all. you need to wait the accuracy level goes to 3 then to read out the values.
2. BME680 is relative sensor not absolute sensor. it is used to track the TVOC level changes. it is not able to output the accurate TVOC number compare to reference sensor you used.
3. bVOC is estimated from static VOC number output from sensor.
4. You can compare BSEC lib output for the trends with the reference sensor. The lib output should able to tell you the TVOC changing trend. But not directly compare the reference sensor read out to BSEC output.
I'm trying to understand how it works and the behaviour of the sensor. For this, i've have logged all the available datas (raw data and compensated data) for an entire night. The sensor is placed in a room that has remained closed all the night. At 8.00 the windows hase been opened and as expected the values read from the sensor had a drammatical change in a short time. During the night, in the closed room, data as IAQ or VOC as expextd was steady and the sensor inaxpectedly passed from IAQ accurancy of 3 to 1. Do you think that there is an error in the behaviour of the integration of the library of the sensor or seems it correct? Since I gave you even the raw data can tyou control if it's correct the integration? I'm still going on with the acquisition...
I'm still using no FLOATING_POINT_COMPENSATION and I don't save the state at the beginning of the sensor (this is why it takes 2 hours to reach IAQ accurancy of 3)
Sorry, the data log doesn't make too much sense to me.
I don't find BSEC lib output or BME680 output in the data log or maybe i missunderstanding the log itself.
You mentioned that the sensor is placed in a room over night. May i know what kind of room it is? is it bath room, bed room or meeting room locked?
Different room will have different expectation.
If it is a empty meeting room lock over night, then the BSEC didn't see big change in the air for IAQ level, the accuracy level will drop from 3 to 2 even 1. this means sensor needs some fresh air or air changes to calibrate itself.
It's an empty meeting room locked overnight (from 17:00 to 8.00). In the morning, around 7.30, people arrive at the company (but they don't enter in the meeting room). At 8.00 the door and the windows of this room is opened and the there is a wind that give plenty of fresh air from outside.