We ran into an issue where the gas ristsance values from BME688 vary a lot each time when we run the same heat profile.
Precisely, when using this heat profile (default one in bme688):
However, each time we read quite different gas resistance values. We print out the data obtained in three rounds in terminal and it shows like this:
Apparently the heater is working. However since the sensor in the three rounds is attached at the same environment/location with little changes, I don't think the values should vary that much.
Anyone has any ideas? Really appreciate any thoughts.
Solved! Go to Solution.
Thanks for the quick reply.
In each round, I used the following heater settings:
For the temperature (in Celsius):
For the heating duration for each temperature (in ms):
So in each round, I'm actually strictly following the default heater profile HP-354:
In the above example, we didn't run three rounds consecutively. By contrast, each round is run only once, then we restart the firmware, and get the result of the next round, etc. So the results of the three rounds are independent.
I don't think the core issue is what the heating strategy is, the main issue is even if I use the same heating strategy and set the environment unchanged, each time I get very different results.
Allow me to provide more information regarding the same issue.
We program our microcontroller to execute the aforementioned heater profile repeatedly from the moment when the battery is loaded, and we keep running the program for 10 minutes. During this period we record all the gas resistance values and plot them as the figure below (X axis: time; Y axis: gas resistance in kOhm; red vertical lines indicate separation between heat profiles):
During this moment, we also tested the temperature values and found that it is always stable to some extent. Also note that the environment of the sensor does not change during the 10 minutes.
It is very obvious that the gas sensor needs quite a long period (pre-heat) to get stable. Am I right? I don't find such information in any relevant manuals, such as bme688 datasheet and BSEC Integration Guide etc.
Could you confirm this issue and what should we do exactly e.g., pre-heat under what temperature for how long before we can finally utilise the sensor?
PS: Later we tried to adopt some pre-heating strategy before we used the heater profile repeatedly. What we did is to run the bme68x_selftest_check() at the first beginning (see below):
This method comprises testing the heating capability for about 10 seconds with various temperatures. This time the new data is like:
You could notice that the preheating stablises the system faster. Any comments?
Due to Heater Profile has 10 temperature points, gas resistance will change randomly, not like other modes, which only have one target temperature. As so many target temperature, the sensor will heat and cool down continuously, at the same time, gas resistance will be measured, so which will be a little inaccurate.
Usually, it can only detect the kind of gas in HP mode, so in this mode, gas resistance only be considered as a whole trend, it's meaningless if it concerns just one index in 10 indexes.