STM32外设篇:MPU6050

MPU6050简介

MPU6050是一个6轴姿态传感器,可以测量芯片自身X、Y、Z轴的加速度、角速度参数,通过数据融合可进一步得到姿态角(欧拉角),常应用于平衡小车、飞行器等需要检测自身姿态的场景。

|-----|--------|----------|---------|-------|
| | 3轴加速度计 | 3轴陀螺仪传感器 | 3轴磁场传感器 | 气压传感器 |
| 6轴 | √ | √ | × | × |
| 9轴 | √ | √ | √ | × |
| 10轴 | √ | √ | √ | √ |

3轴加速度计(Accelerometer):测量X、Y、Z轴的加速度。

3轴陀螺仪传感器(Gyroscope):测量X、Y、Z轴的角速度。


欧拉角

以运动物体为坐标中心建立坐标系,通过绕轴旋转来表示运动物体当前的姿态。

当物体旋转时,会建立新的坐标系(利用最多三次欧拉角旋转,原坐标系可变换为任何新坐标系),欧拉角 (Euler angle)指的是绕新旧坐标系主轴(x,y,z)之一旋转的角度。

以坐标系主轴不同,分为Yaw-偏航角、Roll-翻滚角、Pitch-俯仰角,如下图所示:


1、加速度计与姿态测量

假设飞机当前是匀速直线运动或者静止,那么对飞机来说只受一个重力,重力产生的加速度即重力加速度g。由于其方向垂直于地面向下,我们可以以重力加速度为参考,来计算欧拉角。

从主视图来看,Roll=arctan(ay/az);从右视图来看,Pitch=-arctan(ax/az)

需要注意,我们使用这种方式只能计算出来欧拉角3个角中的2个角。当飞机的方向大体处于水平方向的时候,我们没办法通过加速度的方式去计算偏航角。

缺点:这种测量方式容易引入噪声,外部震动会引起飞机各个方向上的加速度。同时,加速度计具有静态稳定性,不具有动态稳定性。


2、陀螺仪与姿态测量

陀螺仪能够测量绕轴旋转的角速度,单位°/s;计算如下:

可以看出,每次计算出的新角度,均作为下一次的"上次角度"来计算更新的角度。这是一种迭代的计算方法,随着时间推移,误差会被逐渐积累

对比两种传感器:

|------|--------|--------|
| | 加速度计 | 陀螺仪 |
| 测量结果 | 3轴的加速度 | 3轴的角速度 |
| 短期 | 噪声严重 | 无影响 |
| 长期 | 无误差累计 | 误差累计严重 |


3、传感器融合

将加速度计和陀螺仪测量的结果进行融合,得到更精确的测量结果:

具体如下:


MPU6050内部结构

MPU6050是自带DMP数字运动处理器)的运动传感器,对于此芯片,它会测量3种不同的物理量,分别是加速度、角速度和温度,如下图所示:

经传感器测量的模拟量,会经过AD转换,变成数字信号,得到一组gx,gy,...,az,t数据。这些物理量会进入DMP进行运算(可把对数据处理的程序下载到DMP里面,一般用不到)。

最右边有I2C接口,我们可以通过I2C接口对芯片的参数进行配置,也可以通过I2C接口把测量结果读取出来。

芯片进行I2C通信的从机地址:1101000(AD0=0)、1101001(AD0=1);


一些参数

16位的ADC采集传感器(量化输出的数据变化范围:2^16),由于传感器的每个轴有正负,其量化范围为:-32768~32767,数据是16位的,会分为两个字节存储。

满量程选择:16位AD值达到最大时,对应的物理参量具体是多少,由满量程范围来决定的。加速度计和陀螺仪的满量程均有几个选项可选择。

加速度计满量程选择:±2、±4、±8、±16(g)

陀螺仪满量程选择:±250、±500、±1000、±2000(°/s)

可配置的数字低通滤波器:可通过配置寄存器,来选择对输出数据进行低通滤波。如果觉得数据抖动太厉害,就可以加低通滤波,这样数据就会平缓一些。

可配置的时钟源:时钟源经过分频器的分频(同样可配置),可以为AD转换和内部其他电路提供时钟。控制分频系数,就可以控制AD转换的快慢了。


硬件电路

对于XDA、XCL引脚,其是MPU6050芯片作为主机进行I2C通信的引脚,用于外接磁力计或气压计(MPU6050的主机接口可直接访问扩展芯片的数据)


相关推荐
可待电子单片机设计定制(论文)6 小时前
【STM32设计】基于STM32的智能门禁管理系统(指纹+密码+刷卡+蜂鸣器报警)(代码+资料+论文)
stm32·单片机·嵌入式硬件
不可思议迷宫7 小时前
Verilog编程实现一个分秒计数器
单片机·嵌入式硬件·fpga开发
life_yangzi9 小时前
关于单片机IAP升级的那点事儿|智能设置中断向量表
单片机·嵌入式硬件
了一li11 小时前
STM32实现一个简单电灯
stm32·单片机·嵌入式硬件
可待电子单片机设计定制(论文)13 小时前
【STM32设计】数控直流稳压电源的设计与实现(实物+资料+论文)
stm32·嵌入式硬件·mongodb
march_birds14 小时前
FreeRTOS 与 RT-Thread 事件组对比分析
c语言·单片机·算法·系统架构
小麦嵌入式14 小时前
Linux驱动开发实战(十一):GPIO子系统深度解析与RGB LED驱动实践
linux·c语言·驱动开发·stm32·嵌入式硬件·物联网·ubuntu
触角0101000116 小时前
STM32F103低功耗模式深度解析:从理论到应用实践(上) | 零基础入门STM32第九十二步
驱动开发·stm32·单片机·嵌入式硬件·物联网
昊虹AI笔记16 小时前
使用STM32CubeMX和Keil在STM32上创建并运行一个简单的FreeRTOS多任务程序
stm32·单片机·嵌入式硬件
王光环16 小时前
单片机使用printf,不用微库
单片机·嵌入式硬件