I can successfully setup a tph read using the following function call sequence as per the forced mode example:
init_I2c (my fcn to init my i2c link)
bme68x_set_conf (setup a config in which I am sampling 1x for temp and press and 8x for humidity, no filter or odr)
bme68x_set_heatr_conf (with heater disabled)
bme68x_set_op_mode (to enable forced mode read)
bme68x_get_meas_dur (to get the read delay)
... wait the read delay ... about 25 mSec
bme68x_get_data (read the data)
All data seems valid and accurate. Temp is 21 degC, pressure is just over 100 kPa, and RH is 46 percent. This matches other sensors nearby.
I then try and repeat forced reads every min by repeating bme68x_set_op_mode (), bme68x_get_meas_dur(), wait, bme68x_get_data() every min.
... and both temp and pressure data looks good, but humidity always reads 100 percent.
If I execute bme68x_set_conf(), bme68x_set_heatr_conf() with heater still off, bme68x_set_op_mode (), bme68x_get_meas_dur(), wait, bme68x_get_data() every min, all data looks ok.
Why do I need to set configs each time in order to get valid humidity data?
Thanks in advance.
Solved! Go to Solution.
What is the HW you used?
Do you fully refer to the example code on GitHub?
I we are using the BME 688 chip on our custom device.
Yes, I followed the example code that you linked. It works fine for a single forced mode read of tph. My challenge is that I am doing multiple reads - every few min. I will be changing code to read every hour, so forced mode with manual timed tph reads is required.
The example does not show repeated forced mode reads (e.g. every few min). Do I have to config before each read to get humidity data? Seems strange as I can read temp and pressure without config before each read.
After finished measurement under force mode, sensor will automatically return to sleep mode. As you could see it from data sheet, sleep mode had minimal power consumption and couldn't support to do measure. So you need to set configs for force mode if you want do next measurement.
First, thank you for your replies.
As I had noted, we are able to read temperature and pressure without BME68x Sensor API re-config calls each time. I believe that the 688 is taken out of sleep mode as soon as we send any command to it via the api functions (at least it behaves that way).
The only value that we cannot read without re-config is humidity, so there must be something different about humidity. I cannot see what is different from any of the 68x docs reviewed. We can re-config for each tph sample in forced mode if required, it just seems very strange that we have to re-config for humidity and not temperature and pressure.