Bosch Sensortec Community

    Showing results for 
    Search instead for 
    Did you mean: 

    BSEC Configuration Settings ULP, ULP Plus, LP, 3s, 300s clarification

    BSEC Configuration Settings ULP, ULP Plus, LP, 3s, 300s clarification



    I need a clarification on how the library and sensor behave according to the choosen configuration.

    Integration guide 2019-03-29:

    The maximum allowed time between two bsec_sensor_control calls.
    • 3s supports the ULP plus feature for the ULP mode
    • 300s allows the system to sleep for 300s for the ULP mode in order minimize the power consumption of the
    system, but does not support the ULP plus feature

    Configuration I would like is:

    * A COV acquisition every 5 minutes with low energy consumption (ULP?)
    * A temperature/humidity acquisition at any moment (another thread call every minutes for example or button)
    * 3.3V power supply
    * 4days history

    So I should use generic_33v_300s_4d or generic_33v_3s_4d?

    If I believe what's written, I should use generic_33v_3s_4d since "3s supports the ULP plus feature for the ULP mode" so I can use ULP mode and make measurement every minutes with another thread with ULP_Plus.

    Nevertheless, by choosing generic_33v_3s_4d, should the loop sleeps for 300s or 3s? If the loop sleeps only 3s, it means that my CPU will be waken up every 3s instead of every 300s?

    My waiting behaviour is that, the loop sleeps 300s then triggers a measurement of all sensors AND whenever I want, I can use ULP_plus to trigger a new measurement during the 300s loop's nap.


    2 REPLIES 2


    After testing, I see that generic_33v_300s_4d configuration with BSEC_SAMPLE_RATE_ULP as a parameter for bsec_iot_init means:

    1. BME680 chip is in ULP mode meaning that it sleeps for 5 minutes before next possible measurement and its consumation is low
    2. BSEC library sleeps only for three seconds which makes the CPU wakes up every three seconds!
    3. ULP plus feature can be called at any moment and a measurement will be triggered as soon as three seconds loop will wake up, right.

    So it's not how I would like the library to behave since the CPU is waken up every three seconds

    Could we change the loop rate to one minute? Or any value between 1s to BSEC_SAMPLE_RATE_XXX/2 seconds



    Community Moderator
    Community Moderator

    Due to the way the BSEC library is designed, it is mandatory to call the library every 3s if you want to benefit from the ULP+ feature. Also note that the ULP+ feature is expected to be used sporadically, therefore there is limit of one measurement per minute enforced even to the ULP+ feature.

    If you would need your MCU to sleep for the whole 300s period of ULP mode, you would need to use the strict ULP mode without ULP+ feature.

    Alternatively it is possible to subscribe to the gas outputs in ULP mode (300s sampling period), while subscribing to temperature/pressure/humidity outputs in LP mode (3s sampling period). That way would still need to wake-up your CPU every 3s, but you would benefit from the faster sampling rate of temperature/humidity outputs, while maintaining the lower current consumption of the gas sensor from ULP mode.