mpu6050简介:
MPU-6000(6050)为全球首例整合性6轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速器时间轴之差的问题,减少了大量的封装空间。当连接到三轴磁强计时,MPU-60X0提供完整的9轴运动融合输出到其主I2C或SPI端口(SPI仅在MPU-6000上可用)。
MPU6050, 该芯片内部集成一个三轴加速度传感器和一个三轴陀螺仪,并且自带 DMP(Digital Motion Processor),该传感器可以用于四轴飞行器的姿态控制和解算。
MPU-6000(6050)的角速度全格感测范围为±250、±500、±1000与±2000°/sec (dps),可准确追踪快速与慢速动作,并且,用户可程式控制的加速器全格感测范围为±2g、±4g±8g与±16g。产品传输可透过最高至400kHz的IIC或最高达20MHz的SPI(MPU-6050没有SPI)。MPU-6000可在不同电压下工作,VDD供电电压介为2.5V±5%、3.0V±5%或3.3V±5%,逻辑接口VDDIO供电为1.8V± 5%(MPU6000仅用VDD)。MPU-6000的包装尺寸4x4x0.9mm(QFN),在业界是革命性的尺寸。其他的特征包含内建的温度感测器、包含在运作环境中仅有±1%变动的振荡器。
其功能如图所示:
mup6050原理图:
STM32F4 开发板自带了 MPU6050 传感器。我们将使用 STM32F4 来驱动 MPU6050,读取其原始数据,并利用其自带的 DMP 实现姿态解算。MPU6050 内部整合了 3 轴陀螺仪和 3 轴加速度传感器,并且含有一个第二 IIC 接口 ,可用于连接外部磁力传感器,并利用自带的数字运动处理器(DMP: Digital Motion Processor)硬件加速引擎,通过主 IIC 接口,向应用端输出完整的 9 轴融合演算数据。有了 DMP,我们可以使用 InvenSense 公司提供的运动处理资料库,非常方便的实现姿态解算,降低了运动处理运算对操作系统的负荷,同时大大降低了开发难度。
对于姿态角的理解:
姿态角和自由度相关联,在控制和机械领域广泛使用,它是用航向角、俯仰角和圆滚角三个欧拉角表示。
pitch是围绕X轴旋转,也叫做俯仰角。
yaw是围绕Y轴旋转,也叫偏航角。
roll是围绕Z轴旋转,也叫横滚角(翻滚角)。
pitch:
机体坐标系X轴与水平面的夹角。
当X轴的正半轴位于过坐标原点的水平面之上(抬头)时,俯仰角为正,否则为负。
pitch是围绕X轴旋转,也叫做俯仰角。
yaw:
机体坐标系xb轴在水平面上投影与地面坐标系xg轴(在水平面上,指向目标为正)之间的夹角,
由xg轴逆时针转至机体xb的投影线时,偏航角为正,即机头右偏航为正,
反之为负。
yaw是围绕Y轴旋转,也叫偏航角。
rool:
机体坐标系zb轴与通过机体xb轴的铅垂面间的夹角,机体向右滚为正,
反之为负。
roll是围绕Z轴旋转,也叫翻滚角。
DMP简介:
我们可以读出 MPU6050 的加速度传感器和角速度传感器的原始数据。不过这些原始数据,对想搞四轴之类的初学者来说,用处不大,我们期望得到的是姿态数据,也就是欧拉角:航向角(yaw)、横滚角(roll)和俯仰角(pitch)。有了这三个角,我们就可以得到当前四轴的姿态,这才是我们想要的结果。要得到欧拉角数据,就得利用我们的原始数据,进行姿态融合解算,这个比较复杂,知识点比较多,初学者 不易掌握。而 MPU6050 自带了数字运动处理器,即 DMP,并且, InvenSense提供了一个 MPU6050 的嵌入式运动驱动库,结合 MPU6050 的 DMP,可以将我们的原始数据,直接转换成四元数输出,而得到四元数之后,就可以很方便的计算出欧拉角,从而得到 yaw、roll 和 pitch。使用内置的 DMP,大大简化了四轴的代码设计,且 MCU 不用进行姿态解算过程,大大降低了 MCU 的负担,从而有更多的时间去处理其他事件,提高系统实时性。使用 MPU6050 的 DMP 输出的四元数是 q30 格式的,也就是浮点数放大了 2 的 30 次方倍。
姿态角测量原理: