Bosch Sensortec Community

    cancel
    Showing results for 
    Search instead for 
    Did you mean: 

    BMA280: detection of slight user movements

    BMA280: detection of slight user movements

    mattzimm
    New Poster

    Hello,

    We are using the BMA280 accelerometer for a remote controller (RC) which allows to change the volume on an audio device. We are currently trying to improve this product. The BMA280 is used in order to detect whether the RC is worn by the user or unused, in order to go to sleep mode when the device is unused (no movement detected after around 10 min).

    We face difficulties to detect that the RC is worn when the user is sitted and wears it in the pocket, because the movement are very slight (we consider that the user sometimes moves the legs, etc). In this specific case, the RC goes to sleep mode undesirably, after a few minutes without movement detection.

    The initial parameters were as follow:

    • Bandwidth: 0x0b (62.5 Hz)
    • Slope threshold (any-motion mode): 0x04 (16.65 mg in 2-g range)
    • Low power mode 1 with sleep phase duration of 50 ms (0x0c)

    We already tried the following things:

    • Lower the threshold: as we lower the threshold, obviously the RC gets more sensitive to the user movement, but it also gets more sensitive to shocks, and false positives appear in situations where the RC should go to sleep mode.
    • Reduce the bandwidth: as the bandwidth gets lower, the RC gets more sensitive to the user movement, while the sensitivity to shocks is reduced, which is optimal. However, unfortunately this increases a lot the power consumption, as the samples update time gets higher.
    • By increasing the number of slope above threshold before triggering interrupt (“slope_dur”), we can reduce the number of false positives induced by using a low threshold.

    By playing with these three parameters, we could reduce the percentage of times the RC is undesirably in sleep mode from 8% to 1.5% of the time during which the RC is worn, but this also greatly increases the power consumption due to the usage of a lower bandwidth, which is not acceptable for this product.

    1) Do you have any suggestions in which way we could improve the detection for slight movements? Are there other parameters which we could play with?

    2) It seems that reducing the bandwidth is visibly not a good solution because of its large effect on consumption. But if we increase the sleep phase duration (in low power mode 1), does it have somehow a similar effect?

    3) Maybe the BMA280 is not the most suitable accelerometer for this application?

    Thank you in advance for your help!

    3 REPLIES 3

    shellywang
    Occasional Contributor

    Hi ,

    The information already be feedback to  internal team,when it have conclusion will come back to you .

    handytech
    Community Moderator
    Community Moderator

    We do have a newer part number, the BMA400, that was designed for ultra-low-power requirements. It features an 'Auto wake-up interrupt' as well as 'Generic interrupts' (configuration no- or any-motion detection). The power consumptions is configurable between ~14µA (in highest performance mode) down to below 1µA (based on low-power mode settings). We would recommend this newer product for new designs where current consumption is a must.

    If sticking to the BMA280, would could propose one alternative configuration, which is a combination of:

    • Enabling the high-pass filter, so that X, Y and Z axes would have around 0g when the device is stationary.
    • Enabling the high-g interrupt for X, Y and Z axes so that whenever the acceleration on any axis exceeds the configurable threshold/amount of time, a 'wakeup' interrupt will be triggered.

    The goal of the above is that BMA280 should be operating in LPM1 all the time when stationary to save battery life, but if there is any kind of motion detected, the sensor should generate an interrupt. Many parameters should be fine-tuned to your requirements, but for example with 1kHz BW, 25ms sleep_dur and 2ms high_dur, the average power consumption while stationary should be kept below 10µA.

    Note1: the datasheet recommends not to use the HPF in combination with low-power mode, as the conditions for proper filtering are no longer met. Therefore every user shall evaluate and qualify this method on their devices at their own risk.

    Note2: while the HPF enabled, the raw sensor data can no longer be used for orientation or gesture detection, etc. Therefore this method may or may note be a blocker depending on whether the accelerometer is only used for power management, or if sensor data also needs to be processed.

    shellywang
    Occasional Contributor

    Hi ,

    Here are some  suggestions for your question ,hope  can solve your problem:

    1) Do you have any suggestions in which way we could improve the detection for slight movements? Are there other parameters which we could play with?

    You can try increasing the ODR, shortening the sleep time and increasing/decreasing the slope detection time (slope_dur).

     

    2) It seems that reducing the bandwidth is visibly not a good solution because of its large effect on consumption. But if we increase the sleep phase duration (in low power mode 1), does it have somehow a similar effect?

    In LPM1, increasing the duration of the sleep phase can affect the final detection sensitivity and it more likely to reduce the sensitivity of detecting slight movements.

     

    3) Maybe the BMA280 is not the most suitable accelerometer for this application?

    The BMA400 can be a better solution: 25Hz@0.8uA is always on to detect slight movements. Once a slight movement is detected, the BMA400 will be woken up and enter normal mode (12.5~800Hz@3.5uA) so that the Generic Interrupt can then detect significant movements and then wake up the MCU(the BMA400 features auto-wakeup and auto-low-power). The BMA400 and the BMA280 can be mounted on the same PCB landing pattern. 

    Icon--AD-black-48x48Icon--address-consumer-data-black-48x48Icon--appointment-black-48x48Icon--back-left-black-48x48Icon--calendar-black-48x48Icon--center-alignedIcon--Checkbox-checkIcon--clock-black-48x48Icon--close-black-48x48Icon--compare-black-48x48Icon--confirmation-black-48x48Icon--dealer-details-black-48x48Icon--delete-black-48x48Icon--delivery-black-48x48Icon--down-black-48x48Icon--download-black-48x48Ic-OverlayAlertIcon--externallink-black-48x48Icon-Filledforward-right_adjustedIcon--grid-view-black-48x48IC_gd_Check-Circle170821_Icons_Community170823_Bosch_Icons170823_Bosch_Icons170821_Icons_CommunityIC-logout170821_Icons_Community170825_Bosch_Icons170821_Icons_CommunityIC-shopping-cart2170821_Icons_CommunityIC-upIC_UserIcon--imageIcon--info-i-black-48x48Icon--left-alignedIcon--Less-minimize-black-48x48Icon-FilledIcon--List-Check-grennIcon--List-Check-blackIcon--List-Cross-blackIcon--list-view-mobile-black-48x48Icon--list-view-black-48x48Icon--More-Maximize-black-48x48Icon--my-product-black-48x48Icon--newsletter-black-48x48Icon--payment-black-48x48Icon--print-black-48x48Icon--promotion-black-48x48Icon--registration-black-48x48Icon--Reset-black-48x48Icon--right-alignedshare-circle1Icon--share-black-48x48Icon--shopping-bag-black-48x48Icon-shopping-cartIcon--start-play-black-48x48Icon--store-locator-black-48x48Ic-OverlayAlertIcon--summary-black-48x48tumblrIcon-FilledvineIc-OverlayAlertwhishlist