MPU6050简介
姿态传感器
-
6轴传感器指的是3轴的加速度和3轴角速度,根据这两个数据我们解算出X Y Z三轴的角度(Z轴是角速度积分解算,所以存在累计误差)
-
9轴传感器指的是3轴的加速度、3轴角速度和3轴磁场,根据这三个数据我们解算出X Y Z三轴的角度(Z轴是磁场解算,相当于电子罗盘,但受磁场干扰的影响)
-
10轴传感器指的是3轴的加速度、3轴角速度、3轴磁场和气压,功能比9轴传感器多了气压和高度
-
姿态角(欧拉角): Pitch(俯仰) Roll(滚转) Yaw(偏航)
MPU6050简介
- MPU6050是一个6轴姿态传感器, 可以测量芯片自身X、Y、Z轴的加速度、角速度参数, 通过S, 可进一步得到姿态角, 常用于平衡车、飞行器等需要检测自身姿态的场景
- 3轴加速度计(Accelerometer): 测量X、Y、Z轴的加速度
- 3轴陀螺仪传感器(Gyroscope): 测量X、Y、Z轴的角速度
MPU6050参数
- 16位ADC采集传感器的模拟信号, 量化范围: -32768~32767
- 加速度计满量程选择: ±2、±4、±8、±16(g)
- 7陀螺仪满量程选择: ±250、±500、±1000、±2000(°/sec)
- 可配置的时钟源
- 可配置的采样分频
- I2C从机地址: 1101000(AD0=0)、1101001(AD0=1)
硬件电路
引脚 | 功能 |
---|---|
VCC、GND | 电源 |
SCL、SDA | I2C通信引脚 |
XCL、XDA | 主机I2C通信引脚 |
AD0 | 从机地址最低位 |
INT | 中断信号输出 |
- XCL和XDA通常用于外接磁力计或气压计
MPU6050框图
- X、Y、Z轴个有一个加速度计和角速度计(图中灰色部分)
- 有一个温度传感器(Temp Sensor)
- 自测单元(Self test)用于检测芯片好坏
- 电荷泵(Charge Pump) 通过切换电源与电容并联、电源与电容串联,再加电源滤波达到平稳升压
- 中断状态寄存器(Interrupt Status Register),可以控制内部哪些事件到引脚的输出
- 配置寄存器(Config Register) 可以对内部寄存器进行配置
- 传感器寄存器(Sensor Register) 存储了各个传感器的数据
- 数字运动处理器(DMP) 芯片内部自带的姿态解算的硬件算法 配合官方的DMP库 可进行姿态解算
- 8、9、23、24接口用于和STM32通信
- 6、7接口用于和MPU6050扩展设备进行通讯
- Bia&LD0供电部分
- SCL时钟频率最大400KHz
MPU6050常用寄存器
- SMPLRT_DIV: 采样频率分频器
- CONFIG: 配置寄存器
主要用DLPF_CFG(低通滤波器配置)
- GYRO_CONFIG: 陀螺仪配置寄存器
高三位分别是XYZ轴的自测使能位, 中间两位是满量程选择位
- ACCEL_CONFIG: 加速度计配置寄存器
高三位分别是XYZ轴的自测使能位, 中间两位是满量程选择位,最后三位用于配置高通滤波器
- ACCEL_XOUT_H (加速度计X轴数据寄存器高八位) 都是十六进制有符号数, 以二进制补码方式存储
- ACCEL_XOUT_L (加速度计X轴数据寄存器低八位) 读出高八位和低八位 高八位左移八次或上低八位 最后存到int16_t的变量里
- ACCEL_YOUT_H
- ACCEL_YOUT_L
- ACCEL_ZOUT_H
- ACCEL_ZOUT_L
- GYRO_XOUT_H
- GYRO_XOUT_L
- GYRO_YOUT_H
- GYRO_YOUT_L
- GYRO_ZOUT_H
- GYRO_ZOUT_L
- PWR_MGMT_1: 电源管理寄存器1
Bit7: 设备复位; Bit6: 睡眠模式; Bit5: 循环模式(唤醒频率由PWR_MGMT2的LP_WWAKE_CTR位决定);Bit3: 温度传感器失能;最后三位: 选择系统时钟来源
默认睡眠模式, 操作前先接触睡眠模式
- PWR_MGMT_2
Bit0~5 分别控制六个轴进入待机模式(省电)
- WHO_AM_I: 器件ID号(只读)
- 所有寄存器上电默认值0x00(除了107号:0x40和117号:0x68)
应用场景
- 图像稳定器
- 位置服务
- 游戏手柄
- 3D遥控器
- 玩具