7
$\begingroup$

I have MPU9250 IMU, which I am working on to get orientations from the sensor output data. While exploring the MPU9250 (also other sensor such as BNO055) datasheet I came across the full scale range for accel & gyro given as ±2 ±4 ±8 ±16 (g) and ±250 ±500 ±1000 ±2000 (deg/s). I did not understand what it signifies, but seems important.

I tried searching online related to full scale range but did not get explanation regarding it. I request if someone could help me in understanding by providing good explanation or a source which I can go through, I'd really appreciate that.

Also which one would be better to use?

I have asked the same question on Stack Overflow. I really need help on this.

Thanks.

$\endgroup$
4
$\begingroup$

TL;DR:

The configurable scale ranges for the accelerometer, gyroscope, and magnetometer on the MPU-9250 IMU affect the maximum resolution and range of the reported values.

As you increase the full-scale range setting, the maximum value/rate that can be reported by the IMU before the IMU is saturated increases, but the resolution of the value/rate decreases.


Section 3.1 of the datasheet for the Invensense MPU-9250 has a table that states the "Gyroscope ADC Word Length", which represents how large the values reported over the I2C or SPI interfaces are. In this case, the gyro word length is 16 bits. A 16 bit two's complement binary number (explained wonderfully in this video by Ben Eater) can range from -32768 to +32767.

enter image description here

Take the example of the ±500 °/s full-scale range. The unit resolution of the two's complement value reported by the gyro (aka Least Significant Bit/LSB resolution) in the ±500 °/s full-scale range is: $\frac{32767}{500} = 65.534$ LSB/(°/s) (degrees per second per LSB). This is not coincidentally labeled in the graph as the "Sensitivity Scale Factor" for the FS_SEL=1 condition.

| improve this answer | |
$\endgroup$
  • $\begingroup$ Thank you @ifconfig for giving a detailed explanation. I did not know full scale range and sensitivity are dependent. Also does that mean a reading of sensitivity 65.534 LSB/(°/s) equals 1 rotation, if I have my full scale selected as 500 °/s ? $\endgroup$ – TheLazy Jun 5 at 11:00
  • $\begingroup$ No, @TheLazy. Actual Gyro Rate = Sensor Value * Sensitivity Scale Factor, so one full rotation, or 360°/s, translates into a sensor value equaling 360 °/s / 65.534 LSB/(°/s) = 5.49. Does this make sense? $\endgroup$ – ifconfig Jun 5 at 15:41
  • 1
    $\begingroup$ Thank you for clarifying it. $\endgroup$ – TheLazy Jun 6 at 2:40
3
$\begingroup$

The full scale range is the largest value that the sensor can report; this is usually a balance of sensitivity to word length. If you have 8 bits to report the value, how many deg/s do you make one bit? The more deg/s you use per bit, you can report a bigger full-scale value but you loose sensitivity as the minimum change reported increases.

As an example, think of a car speedometer which can only show 2 digits. The full scale range would be ±99 kph - it cannot tell you if you are doing 100+, even if you are.
However, this 2-digit display could show speed / 10 instead; it can now show up to 999 kph, but you cannot tell if you are doing 126 or 129 as you have decreased the resolution to increase the full scale range.

| improve this answer | |
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.