06-29-2020 09:34 AM
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
Solved! Go to Solution.
07-06-2020 08:58 AM
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
07-07-2020 10:43 AM
Hello Nikosant03,
Buffer mechanism was running in internal algorithm, the following bits with red line could be set to change the buffer size.
07-08-2020 11:13 AM
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?
07-08-2020 12:39 PM
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.