BMX160 Step Detection

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)

 

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

Best reply by BSTRobin

Hello Nikosant03,

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

 

View original
13 replies
Resolved