Bosch Sensortec Community

    cancel
    Showing results for 
    Search instead for 
    Did you mean: 
    SOLVED

    BMX160 Step Detection

    BMX160 Step Detection

    Nikosant03
    Long-established Member

    Hi everyone,

    I want to configure BMX160 for step detection for human beings. The sensor will be placed inside the insole.

    Could you please help me to configure the parameters for min_steptime and min_threshold in order to achieve a robust step detection? I cannot find any information for those parameters into the datasheet.. The only info I can find is regarding the working mode (Normal, Sensitive, Robust) and there is no information regarding the bits on registers 0x7A - 0x7B (see 2.11.37 pg 88)

    Screenshot_48.png

     

    This is my configuration so far

    void stepDetector_set(struct bmi160_dev *dev) {
    
      int8_t rslt = 0;
    
      /* Select the Interrupt channel/pin */
      int_config.int_channel = BMI160_INT_CHANNEL_1; // Interrupt channel/pin 1
    
      /* Select the Interrupt type */
      int_config.int_type = BMI160_STEP_DETECT_INT;
    
      /* Select the interrupt channel/pin settings */
      int_config.int_pin_settg.output_en = BMI160_ENABLE;         // na - Enabling interrupt pins to act as output pin
      int_config.int_pin_settg.output_mode = BMI160_DISABLE;      // na - Choosing push-pull mode for interrupt pin
      int_config.int_pin_settg.output_type = BMI160_ENABLE;       // na - Choosing active High output
      int_config.int_pin_settg.edge_ctrl = BMI160_ENABLE;         // na - Choosing edge triggered output
      int_config.int_pin_settg.input_en = BMI160_DISABLE;         // na - Disabling interrupt pin to act as input
      int_config.int_pin_settg.latch_dur = BMI160_LATCH_DUR_NONE; // na - non-latched output
    
      int_config.int_type_cfg.acc_step_detect_int.min_threshold =                                 // ??????
      int_config.int_type_cfg.acc_step_detect_int.step_detector_en = BMI160_ENABLE;           // na - 1-enable, 0-disable the step detector
      int_config.int_type_cfg.acc_step_detect_int.step_detector_mode = BMI160_STEP_DETECT_NORMAL;  // na - Set Normal Mode
      int_config.int_type_cfg.acc_step_detect_int.step_min_buf =                                  // ??????
      int_config.int_type_cfg.acc_step_detect_int.steptime_min =                                 // ??????
    
      /* Set the Step Detector interrupt */
      rslt = bmi160_set_int_config(&int_config, dev); /* sensor is an instance of the structure bmi160_dev */
    
      if (rslt != BMI160_OK) {
        //printf("BMI160 Step Detector interrupt configuration failure!\n");
      } else {
        //printf("BMI160 Step Detector interrupt configuration done!\n");
      }
    }

     

    Thanks in advance

    Nick

    13 REPLIES 13

    Nikosant03
    Long-established Member

    Hi BSTRobin,

    Thank you for your suggestion, indeed the buffer mechanism could be usefull. Can I interact with the buffer mechanism through the API? If yes, how this is possible?

    Thanks

    Nick

    BSTRobin
    Community Moderator
    Community Moderator

    Hello Nikosant03,

    Buffer mechanism was running in internal algorithm, the following bits with red line could be set to change the buffer size.

     

    0x7B.JPG

    Nikosant03
    Long-established Member

    Hi BSTRobin,

    Thanks I will give a try!! That means that according to the datasheet (pg89 )in Normal mode the buffer size is 3, in Sensitive mode is 0 and in Robust mode is 7

    To be sure that I have understand it correctly, in Normal (buffer size 3) an interrupt will be generated every 4 steps while in Robust mode every 8 steps?

     

    Screenshot_57.png

    BSTRobin
    Community Moderator
    Community Moderator

    Hello Nikosant03,

    Depending on internal algorithm, if min_step_buf is set to 3, 6 steps will be buffered, with the 7th step, step counter allows output.

    If if min_step_buf was set as a value, it should be added 3 for step counter buffer.

    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