After fixing my "update-problem" i startet the measurement (Application Board 3.0 with the BME680 shuttle board) in the low power mode (BSEC mode). The IAQ is visible in the general / measurement settings panel like in the following picture:
My measurement is running about 3 hours but the IAQ and the accuracy didn't change. Like in the "text" described I opened the BME68x manual. But I can't find the word "calibrate" in this manual. So my questions are:
1. Is this still the calibration process after starting the measurement?
2. Can you explain me how I calibrate the sensor (good environment / bad environment)? And how long does it take?
3. Is it possible to save the "calibration data" after the sensor is calibrated for the next use in the same environment or it is necessary to calibrate the sensor at every start?
4. How can I improve the accuracy?
Thank you in advance!
Solved! Go to Solution.
You could download BME680 data sheet, BSEC package and refer them.
Take LP mode as an example:
In the first 30 minutes, the change of resistance value is not obvious, and the algorithm does not output IAQ value.
The IAQ value obtained within 8 hours is not trusted, and the trusted IAQ value can be obtained only after 8 hours.
After 7 days, for different sensors under the same environment, based on similar baselines, the output value should be within the scope of the specification, ± 15 + ± 15%.
BSEC algorithm automatically calibrate and adapt themselves to the typical environments where the sensor is operated(e.g., home, workplace, inside a car, etc.). This automatic background calibration ensures that users experience consistent IAQ performance. The calibration process considers the recent measurement history(typ. up to four days, adjustable by BSEC config string) to ensure that IAQ ~ 26 correspnds to "typical good" air and IAQ ~ 250 indicates "typical polluted" air.
This is example of getting and setting calibration status in BME680_BSEC_126.96.36.199 example code.
* @brief Load previous library state from non-volatile memory
* @param[in,out] state_buffer buffer to hold the loaded state string
* @param[in] n_buffer size of the allocated state buffer
* @return number of bytes copied to state_buffer
uint32_t state_load(uint8_t *state_buffer, uint32_t n_buffer)
// Load a previous library state from non-volatile memory, if available.
// Return zero if loading was unsuccessful or no state was available,
// otherwise return length of loaded state string.
* @brief Save library state to non-volatile memory
* @param[in] state_buffer buffer holding the state to be stored
* @param[in] length length of the state string to be stored
* @return none
void state_save(const uint8_t *state_buffer, uint32_t length)
// Save the string some form of non-volatile memory, if possible.