#### Bosch Sensortec Community

cancel
Showing results for
Did you mean:
SOLVED

## BMI160 - Accelerometer Range

New Poster

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

5 REPLIES 5
Community Moderator

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;
}

Community Moderator

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.

New Poster

Hi,

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

Community Moderator

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.