I bought a 9 axis motion shield and use it with an arduino uno. It seems to work fine, but ....
The Accelerometer is supposed to have 14bit. Ignoring the sign there are 13bit left.
My shield is in accelerometer range +-4g (using the standard example in the ide, examples --> 9 axis motion --> aqccelerometer).
Therefore I expect 4*10/(2^13)= 0,00488m/s^2 to be the resolution of the system.
The shield gives values with two decimals only, and with these I have the impression that the resolution is not even 0,01.
I found no information wether there is a way to adjust the resolution or what might be the cause of this point.
Does anybody have an idea about this?
I tried this as well. So the floating point numbers I see are not limited by printing them to the serial monitor, they actually are not more precise than two digits.
The resolution from the accelerometer ist specified in the datasheet to be 14bit. That's why I am confused, because according to my calculation I cannot access the complet resolution
The resolution from the accelerometer ist specified in the datasheet to be 14bit.
That is the resolution of the output data format. It is not the resolution of the measurement, which will be limited by the device sensitivity and measurement noise.
Post a link to the device data sheet if you want informed advice.
Again my confusion results from:
range +-4g needs 1 bit for the sign.
the residual 13 bit result in 2^13=8192 steps.
Assuming that 4g=4*10m/s^2 is divided by 8192 this results in 40/8192=0,00488m/s^2.
What I get from the shield, using the example from the ide, are values like 0.00, 0.01, 0.02, 0.03.
Conversion of the variables with more than two digits after the decimal point results in 0.0000, 0.0100, 0.0200, ....
So I am not talking about noise in the measured data.
My concern is, that the measured values are spaced by 0.01m/s^2, actually they should be spaced by
0.00488m/s.
And I did not find any information on adjusting the resolution of the accelerometer. Assuming that I did not make a mistake, the measurement now is not precise to 14 bit.
Sorry, I did not look in the correct place on the data sheet.
On page 13, the sensitivity of the accelerometer is stated to be 1 LSB/milli-g (1 LSB/mg).
This means that a 1 bit change in the accelerometer output corresponds to 9.8 m/s^2/1000 = 0.0098 m/s^2. This would be printed as 0.01 to two decimal places.
However, the accelerometer offset is +/- 150 mg plus there is temperature drift and noise to consider.
This is quite a complex part that also contains a microprocessor to calculate the device orientation, but the data sheet tells you nearly nothing about how it works or how accurate the orientation output might be.
Ok!
These numbers from page 13 seem to specify the resolution/sensitivity to 0.01m/s^2. I did overlook these. The temperature drift and so on come in addition, I know. But I can compensate for these on a short time scale.
Would you agree to the following summary?
Bosch provides a system with 14bit of resolution/ADC conversion for the accelerometer, but they acually cut down the resolution because the measurement is unreliable below 0.01m/s^2?
In standard mode the system works from -4g to 4g, the mode I used. So the resolution/sensitivity should be 2410m/s^2/(2^14)=0.00488m/s^2. So 1 bit in resolution is neglected.
Even worse: The system offers a +-2g range. In this case the resolution/sensitivity should be 0.00244m/s^2. So 2 bit in resolution are neglected resulting in 12 bit resolution !??!
I know that the processed values of linear acceleration, gravity, orientation ... are calculated from the raw values of the magnetometer, the gyrosensor and the accelerometer. They certainly are not precise down to the resolution from the datasheet or at least I have no idea of how the library from Bosch does the calculation.
But I would have expected the raw values (pure accelerometer) to be that precise or at least to look that precise.
The default I²C address of the BNO055 device is 0101001b (0x29). The alternative address 0101000b (0x28), in I2C mode the input pin COM3 can be used to select between the primary and alternative I2C address as shown in Table 4-7.
The schematics suggest that there are jumpers or solder blobs, or zero ohm resistors on COM3 to select the address. You will have to either take a very close look at the board to find them, or contact the manufacturer for more info.