打印
[应用相关]

STM32之MPU6050获取欧拉角

[复制链接]
306|72
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
MPU6050


mpu6050 集成了三轴 MEMS 陀螺仪,三轴 MEMS 加速度计,以及一个可扩展的数字运动处理器 DMP(Digital Motion Processor)。辅助I2C接口可以连接一个第三方的数字传感器,比如磁力计。扩展了磁力计之后就可以通过其主要I2C接口输出一个 9 轴的信号(否则只能输出一个6轴的信号)。mpu6050 也可以通过其辅助I2C接口连接非惯性的数字传感器,如压力传感器。总之,mpu6050 就是通过陀螺仪和加速度计来分别测量三轴的角速度和角加速度的数据,继而获得俯仰角(Pitch)、横滚角(Roll)、偏航角(Yaw)。
.
MPU6050特点
以数字形式输出六轴或九轴(需外接磁力传感器)的旋转矩阵、四元数(quaternion)、欧拉角格式(Euler Angle forma)的融合演算数据(需 DMP 支持)。
具有 131 LSB/°/s 敏感度与测量范围为±250、±500、±1000 与±2000 的三轴陀螺仪。
具有可程序控制,范围为±2g、±4g、±8g 和±16g 的三轴加速度计。
自带一个数字温度传感器。
自带数字运动处理(DMP,Digital Motion Processing)引擎可减少 MCU 复杂的融
合演算数据、感测器同步化、姿势感应等的负荷。
可程序控制的中断(interrupt)。
自带 1024 字节 FIFO,有助于降低系统功耗。
高达 400kHz 的 IIC 通信接口。
数字运动处理(DMP: Digital Motion Processing)引擎可减少复杂的融合演算数据、感测
器同步化、姿势感应等的负荷。
移除加速器与陀螺仪轴间敏感度,降低设定给予的影响与感测器的飘移。
内建运作时间偏差与磁力感测器校正演算技术。


使用特权

评论回复
沙发
发顺丰更大nc|  楼主 | 2023-12-28 15:53 | 只看该作者
MPU6050电路图以及框图
MPU6050框图

使用特权

评论回复
板凳
发顺丰更大nc|  楼主 | 2023-12-28 15:54 | 只看该作者
MPU6050电路图

使用特权

评论回复
地板
发顺丰更大nc|  楼主 | 2023-12-28 15:54 | 只看该作者
MPU6050相关寄存器
电源管理寄存器1(0x6B)

mpu6050 复位,选择时钟源。

使用特权

评论回复
5
发顺丰更大nc|  楼主 | 2023-12-28 15:54 | 只看该作者
DEVICE_RESET 位 用于控制复位,设置为 1,复位 mpu6050,复位结束后,MPU 硬件自动清零该位。
SLEEEP 位 用于控制 mpu6050 的工作模式,复位后,该位为1,即进入了睡眠模式(低功耗),所以要清零该位,才能进入正常工作模式。
CYCLE 位 当该位设置为1并且休眠模式被禁用时,mpu6050 将在休眠模式和唤醒模式之间循环,以电源管理寄存器2的 LP_WAKE_CTRL[1:0] 位确定的速率从加速计中获取单个采样。
TEMP_DIS 位 用于设置是否使能温度传感器,设置为 0,则使能。

使用特权

评论回复
6
发顺丰更大nc|  楼主 | 2023-12-28 15:54 | 只看该作者
CLKSEL[2:0] 用于选择系统时钟源,选择关系,如下表所示:

使用特权

评论回复
7
发顺丰更大nc|  楼主 | 2023-12-28 16:04 | 只看该作者
CLKSEL[2:0] 的默认值为 000,即使用内部的 8M RC 晶振作为时钟源,但其精度不高, 因此一般选择 X、Y、Z 轴陀螺仪作为参考的 PLL 作为时钟源。 .

使用特权

评论回复
8
发顺丰更大nc|  楼主 | 2023-12-28 16:04 | 只看该作者
陀螺仪配置寄存器(0x1B)

配置 mpu6050 陀螺仪的量程范围。

使用特权

评论回复
9
发顺丰更大nc|  楼主 | 2023-12-28 16:05 | 只看该作者
该寄存器,仅需关心 FS_SEL[1:0] 这两个比特位,其他位不用管,设置为0。FS_SEL[1:0] 用于配置陀螺仪的满量程范围,具体的配置描述,如下表所示: 一般可以将 FS_SEL[1:0]配置为 11,即配置陀螺仪的满量程范围为±2000dps。

使用特权

评论回复
10
发顺丰更大nc|  楼主 | 2023-12-28 16:05 | 只看该作者
加速度计配置寄存器(0x1C)

配置 mpu6050 加速计的量程范围。

该寄存器,仅需关心 AFS_SEL[1:0] 这两个比特位,其他位不用管,设置为0。AFS_SEL[1:0] 用于配置加速度计的满量程范围,具体的配置描述,如下表所示: 一般可以将 FS_SEL[1:0]配置为 00,即配置加速度传感器的满量程范围为±2g。

使用特权

评论回复
11
发顺丰更大nc|  楼主 | 2023-12-28 16:05 | 只看该作者
陀螺仪采样率分频寄存器(0x19)

配置 mpu6050 陀螺仪采样频率,传感器数据输出和FIFO输出以及DMP采样都是基于这个采样频率。

采样频率 = 陀螺仪输出频率 / (1 + SMPLRT_DIV[7:0] ),陀螺仪输出频率与数字低通滤波器(DLPF)的配置有关,一般为8kH和1kHz。

使用特权

评论回复
12
发顺丰更大nc|  楼主 | 2023-12-28 16:06 | 只看该作者
配置寄存器

配置 mpu6050 加速度计和陀螺仪的带宽。

该寄存器,仅需关心 DLPF_CFG[2:0] 这三个比特位,其他位不用管,设置为0。DLPF_CFG[2:0] 用来配置加速度计和陀螺仪的带宽,具体的配置描述,如下表所示:

使用特权

评论回复
13
发顺丰更大nc|  楼主 | 2023-12-28 16:06 | 只看该作者
一般情况下,配置陀螺仪带宽为陀螺仪采样频率的一半。例如如果陀螺仪采样频率为50Hz,那么带宽就应该设置为25Hz,取近似值20Hz,那么 DLPF_CFG[2:0] 就应该设置为100。

使用特权

评论回复
14
发顺丰更大nc|  楼主 | 2023-12-28 16:06 | 只看该作者
电源管理寄存器2(0x6C)

控制陀螺仪和加速度计是否进入待机模式。

LP_WAKE_CTRL[1:0] 位用于控制低功耗时的唤醒频率。
STBY_XA 位用于控制加速计X轴是否进入待机模式,设置为1,进入待机模式。
STBY_YA 位用于控制加速计Y轴是否进入待机模式,设置为1,进入待机模式。
STBY_ZA 位用于控制加速计Z轴是否进入待机模式,设置为1,进入待机模式。
STBY_XG 位用于控制陀螺仪X轴是否进入待机模式,设置为1,进入待机模式。
STBY_YG 位用于控制陀螺仪Y轴是否进入待机模式,设置为1,进入待机模式。
STBY_ZG 位用于控制陀螺仪Z轴是否进入待机模式,设置为1,进入待机模式。

使用特权

评论回复
15
发顺丰更大nc|  楼主 | 2023-12-28 16:07 | 只看该作者
加速度计数据输出寄存器(0x3B~0x40)

存储加速度计的原始数据,这些原始数据会以陀螺仪的采样频率进行更新。

使用特权

评论回复
16
发顺丰更大nc|  楼主 | 2023-12-28 16:07 | 只看该作者
某个加速度轴的原始数据并不是加速度数据,如果想获得加速度数据需要以下转换:加速度 = (有符号的16位原始数据) / 灵敏度,单位:g(9.8m/s²)

使用特权

评论回复
17
发顺丰更大nc|  楼主 | 2023-12-28 16:07 | 只看该作者
灵敏度根据加速度计的量程变化而变化,如下表所示:

使用特权

评论回复
18
发顺丰更大nc|  楼主 | 2023-12-28 16:07 | 只看该作者
温度传感器数据输出寄存器(0x41~0x42)

存储温度传感器的原始数据,这些原始数据会以陀螺仪的采样频率进行更新。

该原始数据并不是以摄氏度为单位的温度值,如果需要转换成以摄氏度为单位的温度值需要经过以下转换:温度 = (有符号的16位原始数据)/ 340 + 36.53,单位:℃

使用特权

评论回复
19
发顺丰更大nc|  楼主 | 2023-12-28 16:08 | 只看该作者
陀螺仪数据输出寄存器(0x43~0x48)

存储陀螺仪的原始数据,这些原始数据会以陀螺仪的采样频率进行更新。

某个陀螺仪轴的原始数据并不是陀螺仪数据,如果想获得陀螺仪数据需要以下转换:陀螺仪 = (有符号的16位原始数据) / 灵敏度,单位:°/s

使用特权

评论回复
20
发顺丰更大nc|  楼主 | 2023-12-28 16:08 | 只看该作者
灵敏度根据陀螺仪的量程变化而变化,如下表所示:

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

180

帖子

0

粉丝