Hello, I am using an Arduino 9 Axis Motion Shield with the BNO055 sensor. I modified the BNO055.c file such that I optain the raw integer values for acceleration outputs. Afterwards I perform tests (violent shaking) and observe that when set to -/+1G the integer values saturate at log2(2*max(accRecord(:))) = 11.93, where accRecord is the acceleration record array. At -/+2G, resolution is 12.93 bits At -/+4G, resolution is 13.93 bits The accelerometer resolution is listed as 14 bits in the datasheet without a condition of range, therefore I expect to get 14 bits even out of the lowest range (-/+ 1G). Am I missing something or was this overlooked in the datasheet? void NAxisMotion::updateAccel(void)
{
BNO055_RETURN_FUNCTION_TYPE comRes = BNO055_ZERO_U8X; //Holds the communication results
comRes = bno055_convert_float_accel_xyz_msq(&accelData); //Read the data from the sensor
}
BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_accel_xyz_msq(
struct bno055_accel_float_t *accel_xyz)
{
....
com_rslt += bno055_read_accel_xyz(®_accel_xyz);
accel_xyz->x = reg_accel_xyz.x;
accel_xyz->y = reg_accel_xyz.y;
accel_xyz->z = reg_accel_xyz.z;
/*
// Convert the accel raw xyz to meterpersecseq
accel_xyz->x =
(float)(reg_accel_xyz.x/ACCEL_DIV_MSQ);
accel_xyz->y =
(float)(reg_accel_xyz.y/ACCEL_DIV_MSQ);
accel_xyz->z =
(float)(reg_accel_xyz.z/ACCEL_DIV_MSQ);
*/
... View more