MPU6050
Motion Processing Unit 运动处理单元
6轴姿态传感器,可以测量芯片自身X、Y、Z轴的加速度、角速度参数,通过数据融合的互补滤波,可进一步得到较为精确且稳定的姿态角
常应用于平衡车、飞行器等需要检测自身姿态的场景
- 3轴加速度计(Accelerometer):测量X、Y、Z轴的加速度
具有静态稳定性,不适合动态求角度 - 3轴陀螺仪传感器(Gyroscope):测量X、Y、Z轴的角速度
具有动态稳定性,当物体静止时,角速度会因为噪声而无法完全归零,随时间的积累使得计算出的角度产生缓慢的偏移
参数
16 位ADC 采集传感器的模拟信号量化范围:
加速度计满量程选择:
陀螺仪满量程选择:
可配置的数字低通滤波器
可配置的时钟源和采样分频
I2C 从机地址:
- 1101000(AD0=0)
- 1101001(AD0=1)
1101000 使用十六进制写为 0x68
则在 I2C 通信中,对此设备进行读写的第一个字节为:
(0x68<<1)|0 --> 0xD0
(0x68<<1)|1 --> 0xD1 或 0xD0|1
先左移 1 位,再或上 0 或 1 来设置读还是写
所以 MPU6050 的从机地址可以认为是 0x68 也可以是 0xD0(融合读写位)
硬件电路
引脚 | 功能 |
---|---|
VCC、GND | 电源 |
SCL、SDA | I2C通信引脚 |
XCL、XDA | 主机I2C通信引脚 |
AD0 | 从机地址最低位,可以改变作为从机时的 I2C 地址 |
INT | 中断信号输出,可以用来配置芯片内部的事件来出发中断引脚输出 |
XCL、XDA 可以用来扩展姿态传感器用于外接磁力计或者气压计来扩展为 9 轴、10 轴的传感器。当接入时,MPU6050 的主机接口可以直接访问扩展芯片的数据,内置 DMP 单元进行数据融合和姿态解算
还内置实用小功能:自由落体检测、运动检测、零运动检测等
结构框图
- ADC 自动转换,数据统一放到数据寄存器中
- 内置自测单元,启动自测后,芯片内部模拟外力。先使能自测读取数据,再失能自测读取数据,两个数据相减得到自测响应,与自测范围比较,判断是否可以正常工作
- 电荷泵升压电路给陀螺仪传感器供电
- 自带 DMP 进行姿态解算
- 接口旁路选择器,拨到上面,辅助 I2C 引脚和正常 I2C 引脚连接在一起,两路总线合并,主机控制全部交给 STM32 ;拨到下面,辅助 I2C 引脚由 MPU6050 控制,正常 I2C 引脚由 STM32 控制
寄存器
寄存器名称 | 意义 | ||
---|---|---|---|
SMPLRT_DIV | 采样频率分频器 | 设置分频系数,分频越小,内部 A/D 转换越快 | |
CONFIG | 配置寄存器 | 配置外部同步、低通滤波器 低通滤波器数字越大,输出数据越平滑 |
|
GYRO_CONFIG | 陀螺仪配置寄存器 | X/Y/Z 自测使能位、满量程选择位 | |
ACCEL_CONFIG | 加速度计配置寄存器 | X/Y/Z 自测使能位、满量程选择位、配置高通滤波器 | |
ACCEL_XOUT_H | 加速度数据 | ||
ACCEL_XOUT_L | |||
ACCEL_YOUT_H | |||
ACCEL_YOUT_L | |||
ACCEL_ZOUT_H | |||
ACCEL_ZOUT_L | |||
TEMP_OUT_H | 温度数据 | ||
TEMP_OUT_L | |||
GYRO_XOUT_H | 陀螺仪数据 | ||
GYRO_XOUT_L | |||
GYRO_YOUT_H | |||
GYRO_YOUT_L | |||
GYRO_ZOUT_H | |||
GYRO_ZOUT_L | |||
PWR_MGMT_1 | 电源管理寄存器 1 | ||
PWR_MGMT_2 | 电源管理寄存器 2 | ||
WHO_AM_I | 器件 ID 号 |
_L
表示低 8 位
_H
表示高 8 位