11-29-2020 02:50 PM - edited 11-29-2020 02:51 PM
Hi,
I have converted the accelerations raw data into m/s^2 as shown here: https://community.bosch-sensortec.com/t5/MEMS-sensors-forum/BMI160-converting-data-with-resolution/t...
I would like to understand the impact of the range on the actual data. At the minute, for my application, I don't know what accuracy I need yet. Understanding the impact of the range will help me choose the correct one for my application. To try to understand I tried different ranges. I get different value for accelereation on z-axis (az) which is meant to equal to g=9.8.
Here what I get for a az raw data equal to 2164.
with +/- 16G: 10.365 m/s^2.
with +/- 8G: 5.180 m/s^2.
Could you help me please understand the difference between these 2 accelerations? My undertanding is the sensor should measure g on the z axis. So I am supposed to get 9.81.
Many thanks
Katie
Solved! Go to Solution.
11-30-2020 02:56 AM - edited 11-30-2020 02:56 AM
Hello,
We have api to calculate accel value, from LSB to m/s2, as bellow. No matter which range selected, when keep accel flat, z-axis output is 9.8 m/s2.
#define GRAVITY_EARTH (9.80665f) /* Earth's gravity in m/s^2 */
/*!
* @brief This internal API is used to convert lsb to ms2
*
* @param[in] val: value
* @param[in] range: range value
* @param[in] bit_width
*
* @return float value in ms2
*
*/
float lsb_to_ms2(int16_t val, float g_range, uint8_t bit_width)
{
float half_scale = (float)(1 << bit_width) / 2.0f;
return GRAVITY_EARTH * val * g_range / half_scale;
}
11-30-2020 03:26 AM
Hello Katie2020,
1.BMI160 had 16-bit resolution accelerometer, and supported 2g, 4g, 8g, 16g range. As you known, sensor output is LSB data format. So there is a corresponding relationship between the range and the output data(LSB). For example you set 2g rang, LSB value range is from -16384 to 16384. LSB to g unit convert: (LSB/16384)g
2. If signal frequency was high, you could choose a higher range. Otherwise, you could choose 2g, 4g range.
11-30-2020 03:32 PM
Hi,
Thanks so much for your answer.
Apologies, I am a little confused, what should be g_range and bit_width?
The formula you have presented here is diffrent from the answer given in https://community.bosch-sensortec.com/t5/MEMS-sensors-forum/BMI160-converting-data-with-resolution/t.... Does it make the answer of the attached link incorrect?
Many Thanks
Katie
12-01-2020 04:30 AM
Hello,
For bmi160, accel and gyro are both 16bit, bit_width = 16. About g_range, you could read reg 0x41, acc_range, get this value.
Best regrads.