MPU6050六轴传感器Arduino读取姿态角度教程

2026-10-20 13:09:54 34阅读

想让小车不倒、让机械臂知道自己的姿态、或者给机器人加个“平衡感”,MPU6050是最常被点名的传感器之一。它把三轴加速度计和三轴陀螺仪封装在一块芯片里,用I2C两条线就能读出倾角和角速度。这篇文章把接线和读取角度讲清楚。

MPU6050是什么,认准引出引脚

MPU6050内部集成3轴加速度计和3轴陀螺仪,能同时测出绕三个轴转动的角速度和三个方向的加速度,配合库算法可以算出物体当前的姿态角(俯仰、横滚)。它工作在3.3V,通过I2C协议与主控通信,地址默认是0x68。

模块引出的引脚认准这几个:VCC(3.3V供电)、GND(地)、SDA(I2C数据线)、SCL(I2C时钟线)、XDA/XCL(可选外接磁力计的总线)、INT(中断输出,可选)、ADO(地址选择脚)。做基础读取,只需要VCC、GND、SDA、SCL四根线。

接线表:I2C两线读出姿态数据

MPU6050接到Arduino Uno,最标准的I2C接法如下:VCC接3.3V(稳妥起见不接5V)、GND接GND、SDA接A4、SCL接A5。因为Arduino Uno上A4就是硬件I2C的SDA、A5就是SCL,这组接法几乎不用动脑。

注意供电最好接3.3V,虽然老版本芯片标称也能吃5V,但为了长期稳定和避免逻辑电平问题,把VCC接到3.3V最省心。接线见图,SDA走A4、SCL走A5,一表对照不纠结。

读取数据:MPU6050库一行行拿角度

Arduino生态里最省事的做法是用Jeff Rowberg的MPU6050_light库(Arduino库管理器能搜到),它把寄存器读取、融合滤波都封装好了。建一个MPU6050对象,在setup里mpu.begin(),在loop里mpu.update(),然后直接读mpu.getAngleX()、mpu.getAngleY()、mpu.getAngleZ()就是三个轴的姿态角,单位是度。

要更硬核,也可以在传回原始加速度(int)和陀螺仪温度之后,自己写卡尔曼或互补滤波去融合姿态,不过对绝大多数项目,现成的库已经足够。

读数乱跳?几个高频排查点

最普遍的问题是“角度一直在漂”或“数值乱跳”。先检查SDA/SCL有没有接反——这两根线一交错,I2C根本不通;再确认是不是把VCC接了5V(发热、精度受影响);第三看I2C地址是不是0x68,若模块的ADO脚被拉高,地址会变成0x69,扫描不到就对了。

拿到稳定角度后,就能做很多控制场景:给倒立摆加反馈、给四足机器人测姿态平衡、给云台做防抖、做游戏里的姿态鼠标。MPU6050是理解“姿态感知”和I2C很好的一课,四根线接对,角度就到手。


作者:电机传感器师
链接:https://www.aiddithome.com/p/112153d2b93657.html
本作版权归作者所有,未经允许请勿转载。若存在违规行为,您可以点击 “举报”。


登录 后发表评论
4条评论
电烙铁爱好者
1楼 · 2026-10-20 13:09:56

配JY61库那种带滤波的,读数会顺滑很多

老张装机
2楼 · 2026-10-20 13:09:55

VCC别图省事接5V,接3.3V长期稳定多了

触底反弹的Tony
3楼 · 2026-10-20 13:09:55

角度一直漂先看是不是没做校准,静止测一下偏置

阿伟不emo
4楼 · 2026-10-20 13:09:54

SDA接A4、SCL接A5,I2C这两根线反了是真读不出来