【MPU6050】姿态传感器 介绍
- 前言
- 前置知识
- 欧拉角
- MPU6050简介
- 简介
- 框图
- 引脚说明
- 寄存器概述
- MPU6050 数据处理和姿态解算 概述
前言
笔者最近学习了mpu6050姿态传感器,现做以总结
推荐资料:
B站 铁头山羊【mpu6050寄存器讲解 PAL库解算 一阶互补滤波】
**** 卡尔曼滤波原理【卡尔曼滤波算法思想 公式理解】
**** 卡尔曼滤波原理【我总结的,基于**** 卡尔曼滤波原理】
DMP库移植【STM32 HAL库】
卡尔曼滤波解算【STM32 HAL库】
一阶互补滤波解算【STM32 HAL库】
前置知识
欧拉角
MPU6050简介
简介
MPU6050内部整合了三轴陀螺仪、三轴加速度计、DMP数字运动处理器(Digital Motion Processor)和温度传感器,此外还可以外接一个第三方的三轴磁力计。
在不外接磁力计的情况下,MPU6050可作为六轴姿态传感器(包含三轴陀螺仪和三轴加速度计);若外接三轴磁力计,则可作为九轴姿态传感器。
陀螺仪
测得三轴的角速度
通过对时间积分,得到yaw、roll、pitch
加速度计
测得三轴角加速度。(也即重力加速度g在X、Y、Z三轴上的分量)
通过反正切,计算加速度计测得的三轴角加速度,得到yaw、roll、pitch
优缺点比较
加速度传感器 | 陀螺仪 | |
---|---|---|
测量结果 | 3轴加速度 | 3轴角速度 |
短期 | 噪声严重 | 不受震动影响 |
长期 | 无漂移 | 漂移严重 |
DMP
DMP(Digital Motion Processor)是 MPU6050 内置的一个数字运动处理器,用于自动处理传感器数据并融合加速度计和陀螺仪的数据,进行姿态解算,输出稳定的角度信息(如四元数)。他可以减轻主控制器的计算负担(类似DMA)。
框图
引脚说明
使用 I2C1 进行通信
引脚 | 说明 |
---|---|
VCC | 接 3.3V |
GND | 接 GND |
SCL | I2C1 的时钟引脚 |
SDA | I2C1 的数据引脚 |
XDA | 辅助 I2C 数据引脚(未使用,悬空) |
XCL | 辅助 I2C 时钟引脚(未使用,悬空) |
AD0 | 地址选择引脚,接 GND。I2C 地址为 0x68 ,硬件地址为 0xD0
|
INT | 中断引脚(未使用,悬空) |
寄存器概述
寄存器英文名 | 中文名 | 作用描述 |
---|---|---|
WHO_AM_I_REG | 设备识别寄存器 | 用于读取设备 ID,验证连接的设备是否为 MPU6050 |
PWR_MGMT_1_REG | 电源管理 1 寄存器 | 配置电源模式、选择时钟源、复位设备以及唤醒模块 |
SMPLRT_DIV_REG | 采样率分频寄存器 | 设置数据输出速率的分频系数,影响采样速率 |
ACCEL_CONFIG_REG | 加速度计配置寄存器 | 设置加速度计的量程范围(例如 ±2g、±4g 等) |
ACCEL_XOUT_H_REG | 加速度计 X 轴数据寄存器 | 存储 X、Y、Z 轴加速度的原始数据 |
TEMP_OUT_H_REG | 温度传感器数据寄存器 | 存储内部温度传感器的高字节数据 |
GYRO_CONFIG_REG | 陀螺仪配置寄存器 | 设置陀螺仪的量程范围(例如 ±250°/s、±500°/s 等) |
GYRO_XOUT_H_REG | 陀螺仪 X 轴数据寄存器 | 读取 X、Y、Z 轴角速度的原始数据 |
MPU6050 数据处理和姿态解算 概述
常见有三种MPU6050的姿态解算方式:一阶互补滤波、卡尔曼滤波、DMP库四元数解算
一阶互补滤波
一种简单的数据融合方法,用于融合加速度计和陀螺仪的数据,既保留加速度计的长时间稳定性,又利用陀螺仪的短期精度。通过低通和高通滤波器实现数据的互补,是一种易实现的姿态解算算法。
卡尔曼滤波
一直较为复杂的递归滤波算法,常用于姿态解算。卡尔曼滤波能高效地融合加速度计和陀螺仪的数据,抑制噪声并减少漂移误差,提供更加精准的角度和姿态信息。
DMP 库四元数解算
DMP库可以自动融合传感器数据并直接输出四元数,用于姿态计算。它减轻了主控制器的计算压力,提供稳定的姿态解算结果,适用于实时性要求较高的应用。