MPU6050

Motion Processing Unit 运动处理单元
6轴姿态传感器,可以测量芯片自身X、Y、Z轴的加速度、角速度参数,通过数据融合的互补滤波,可进一步得到较为精确且稳定的姿态角
常应用于平衡车、飞行器等需要检测自身姿态的场景

Pasted image 20240815235024.png

参数

16 位ADC 采集传感器的模拟信号量化范围:216 -32768~32767
加速度计满量程选择:±2,±4,±8,±16(g)
陀螺仪满量程选择: ±250,±500,±1000,±2000(/sec)
可配置的数字低通滤波器
可配置的时钟源和采样分频

I2C 从机地址:

1101000 使用十六进制写为 0x68
则在 I2C 通信中,对此设备进行读写的第一个字节为:
(0x68<<1)|0 --> 0xD0
(0x68<<1)|1 --> 0xD1 或 0xD0|1
先左移 1 位,再或上 0 或 1 来设置读还是写
所以 MPU6050 的从机地址可以认为是 0x68 也可以是 0xD0(融合读写位)

硬件电路

Pasted image 20240815212325.png

引脚 功能
VCC、GND 电源
SCL、SDA I2C通信引脚
XCL、XDA 主机I2C通信引脚
AD0 从机地址最低位,可以改变作为从机时的 I2C 地址
INT 中断信号输出,可以用来配置芯片内部的事件来出发中断引脚输出

XCL、XDA 可以用来扩展姿态传感器用于外接磁力计或者气压计来扩展为 9 轴、10 轴的传感器。当接入时,MPU6050 的主机接口可以直接访问扩展芯片的数据,内置 DMP 单元进行数据融合姿态解算

还内置实用小功能:自由落体检测、运动检测、零运动检测等

结构框图

Pasted image 20240815215127.png

  1. ADC 自动转换,数据统一放到数据寄存器中
  2. 内置自测单元,启动自测后,芯片内部模拟外力。先使能自测读取数据,再失能自测读取数据,两个数据相减得到自测响应,与自测范围比较,判断是否可以正常工作
  3. 电荷泵升压电路给陀螺仪传感器供电
  4. 自带 DMP 进行姿态解算
  5. 接口旁路选择器,拨到上面,辅助 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 位