| 主题 | 内容 | 教学目的/扩展视频 |
|---|---|---|
| 加速度传感器 | 电路连接。手册分析。驱动程序,读出数据。 | 能读出3轴数据。 |
师从洋桃电子,杜洋老师
📑文章目录
-
- 一、MPU6050模块介绍
-
- [1.1 核心特性](#1.1 核心特性)
- [1.2 模块化优势](#1.2 模块化优势)
- 二、MPU6050模块连接方法
-
- [2.1 硬件连接](#2.1 硬件连接)
- [2.2 电源注意事项](#2.2 电源注意事项)
- 三、六轴示意图与轴向定义
-
- [3.1 坐标系定义](#3.1 坐标系定义)
- [3.2 数据输出规则](#3.2 数据输出规则)
- 四、MPU6050器件地址解析
-
- [4.1 地址冲突问题](#4.1 地址冲突问题)
- [4.2 地址配置](#4.2 地址配置)
- 五、MPU6050核心特性详解
-
- [5.1 关键性能参数](#5.1 关键性能参数)
- [5.2 DMP功能应用](#5.2 DMP功能应用)
- [5.3 中断功能](#5.3 中断功能)
- 六、相关资源
一、MPU6050模块介绍
1.1 核心特性
MPU6050 是全球首款整合 3轴MEMS陀螺仪 和 3轴MEMS加速度计 的6轴运动处理传感器。其核心亮点包括:
- 高精度测量:陀螺仪量程可配置(±250°/s至±2000°/s),加速度计量程(±2g至±16g),16位ADC确保数据精度。
- 内置DMP引擎:数字运动处理器(DMP)可直接输出融合后的姿态数据(四元数、欧拉角等),减轻主控计算负担。
- 低功耗设计:支持多种省电模式,加速度计最低功耗仅40μA@10Hz。
- 扩展性强:支持通过I2C接口外接磁力计,实现9轴数据融合。
1.2 模块化优势
MPU6050芯片封装极小(4×4×0.9mm),直接焊接难度高,因此通常使用模块化设计。模块集成了:
- 电平转换电路(兼容3.3V/5V系统)
- 滤波电容和稳压电路
- 清晰的引脚标识(如SCL、SDA、INT等)
二、MPU6050模块连接方法
2.1 硬件连接
以STM32F1系列为例,典型接线如下:
| MPU6050模块引脚 | STM32引脚 | 功能说明 |
|---|---|---|
| VCC | 3.3V/5V | 电源正极 |
| GND | GND | 电源地 |
| SCL | PB6 | I2C时钟线 |
| SDA | PB7 | I2C数据线 |
| INT | 任意GPIO | 中断信号(可选) |
(图1:开发板与传感器连接示意图)
2.2 电源注意事项
- VCC:支持2.5V~3.3V(典型3.3V),需确保电源稳定。
- VLOGIC:若模块未集成电平转换,需外接1.8V逻辑电平(部分模块已内置)。
三、六轴示意图与轴向定义
3.1 坐标系定义
MPU6050采用右手坐标系,轴向定义如下:
- X轴:平行于芯片长边,指向右侧。
- Y轴:平行于芯片短边,指向前方。
- Z轴:垂直于芯片平面,向上为正。
(图2:MPU6050传感器坐标系示意图)
3.2 数据输出规则
- 加速度计 :测量线性加速度,单位为
g(重力加速度)。 - 陀螺仪 :测量角速度,单位为
°/s。 - 数据符号:正负号表示方向(例如,X轴正方向加速度为正值)。
四、MPU6050器件地址解析
4.1 地址冲突问题
MPU6050的I2C地址在数据手册中标注为 0x68 (7位地址),但在STM32硬件I2C驱动中需使用 0xD0(8位写地址)。原因如下:
- 7位地址 :
0x68(二进制1101000)。 - 8位地址 :左移一位后,补R/W位(写模式为0),即
0xD0(二进制11010000)。
4.2 地址配置
-
ADO引脚 :接地时地址为
0x68,接VCC时地址为0x69。 -
代码示例 :
c#define MPU6050_ADDR 0xD0 // 8位写地址
五、MPU6050核心特性详解
5.1 关键性能参数
| 参数 | 陀螺仪 | 加速度计 |
|---|---|---|
| 量程范围 | ±250°/s ~ ±2000°/s | ±2g ~ ±16g |
| ADC分辨率 | 16位 | 16位 |
| 输出数据速率 | 最高8kHz | 最高1kHz |
| 功耗 | 5mA(工作) / 5μA(待机) | 500μA(工作) |
5.2 DMP功能应用
通过DMP可直接获取姿态数据,无需手动融合传感器数据:
c
// 示例:读取四元数
int16_t q[4];
MPU6050_Read(MPU6050_QUATERNION_REG, (uint8_t*)q, 8);
5.3 中断功能
支持多种中断触发条件(数据就绪、自由落体检测等),配置寄存器即可启用:
c
// 启用数据就绪中断
MPU6050_Write(MPU6050_INT_ENABLE_REG, 0x01);
六、相关资源
💬 技术讨论(请在评论区留言~)
📌 下期预告 :下一期将探讨MPU6050驱动程序分析,欢迎持续关注!
版权声明 :本文采用CC BY-NC-SA 4.0协议,转载请注明来源
实测开发版 :洋桃1号开发版(基于STM32F103C8T6)
更新日志:
- v1.0 初始版本(2025-03-30)