网上有很多MPU9250的例程,总体上都大同小异。但是对于如何将读取到的原始角速度和加速度数据转换为真实数据,基本都没有提及。秉承着会用就行的态度,这篇文章不会对MPU9250的IIC通讯方式做详细说明,主要讲解如何将读取到的数据转换为我们想得到的真实数据。

MPU9250介绍

MPU9250 内部集成有 3 轴陀螺仪、3 轴加速度计和 3 轴磁力计,输出都是 16 位的数字量; 可以通过集成电路总线( IIC) 接口和单片机进行数据交互,传输速率可达 400 kHz /s。陀螺仪的角速度测量范围最高达±2000(° /s),具有良好的动态响应特性。加速度计的测量范围最大为±16g( g 为重力加速度),静态测量精度高。磁力计采用高灵度霍尔型传感器进行数据采集,磁感应强度测量范围为±4800μT,可用于对偏航角的辅助测量。

在这里插入图片描述

MPU9250原始数据转换

在MPU9250初始化函数中,我们需要关注两个函数,这两个函数与数据转换直接相关。
在这里插入图片描述


从图中可以看出,这两个函数是用于设置陀螺仪和加速度满量程范围的。

对陀螺仪来说,从红色方框内可以看到,当函数输入为0时,对应的量程范围为 -250(°/s) ~ +250(°/s);当函数输入为1时,对应的量程范围为 -500(°/s) ~ +500(°/s),以此类推。

对加速度来说,从红色方框内可以看到,当函数输入为0时,对应的量程范围为 -2×g(m/s²) ~ +2×g(m/s²);当函数输入为1时,对应的量程范围为 -4×g(m/s²) ~ +4×g(m/s²),以此类推(g为重力加速度)。

陀螺仪数据转换

假设我们设置函数的输入为3,即陀螺仪满量程范围为-2000(°/s) ~ +2000(°/s)。

我们知道MPU9250输出都是16位的数字量,即输出的原始数据范围为 -32768 ~ +32768。它对应了陀螺仪的满量程范围,即当读到的数据为32768时,它的角速度为2000(°/s)。

假设我们读取到的数据为data,则真实的角速度大小为:data×2000/32768(°/s)=data/16.384(°/s)。

转换为弧度制为:(data/16.384)×pi/180(rad/s)=data/938.734(rad/s)

加速度数据转换

假设我们设置函数的输入为3,即加速度满量程范围为-16×g(m/s²) ~ +16×g(m/s²)。

我们知道MPU9250输出都是16位的数字量,即输出的原始数据范围为 -32768 ~ +32768。它对应了加速度的满量程范围,即当读到的数据为32768时,它的加速度为16×g(m/s²)。

假设我们读到的数据为data,则真实的加速度大小为:data×16×9.8/32768(m/s²)=data/208.98(m/s²)

归纳

我做了一个表格,方便大家采用不同量程范围时进行数据的转换,其中data为读取到的原始数据。

在这里插入图片描述

STM32+MPU9250源码

https://download.csdn.net/download/cyj972628089/14946618