MPU6050 六轴模块怎么读姿态?Arduino I2C 接线 + 加速度陀螺仪数据

2026-10-21 16:40:19 54阅读

自平衡小车、无人机云台、姿态控制,很多项目都要先拿到“我现在歪了多少度”。MPU6050 这个六轴模块一个芯片里就集成了三轴加速度计和三轴陀螺仪,通过 I2C 接口接上 Arduino 就能读出原始数据,是入门姿态监测最常见的型号。

“六轴”是什么

六轴=三轴加速度计(感知重力方向,可算倾角)+ 三轴陀螺仪(感知角速度变化,短时间很准)。加速度计动起来会受颠簸干扰,陀螺仪又会缓慢漂移,所以实用的做法是把两者融合,才能得到稳定且真实的角度。

MPU6050 与 Arduino 的 I2C 接线示意(SDA-A4、SCL-A5)

I2C 接线很简单

GY-521 这种常见的 MPU6050 模块只要接四根线:VCC 接 5V(或 3.3V),GND 接 GND,SDA 接 Arduino 的 A4,SCL 接 A5。INT 脚可以留空或接 D2,做中断唤醒才用得上。

MPU6050/GY-521 引脚与 Arduino 接线对照

读原始数据

装好 Adafruit_MPU6050 库后,初始化加读取很直接:

#include 
#include
Adafruit_MPU6050 mpu;
void setup(){
Serial.begin(115200);
if(!mpu.begin()){ Serial.println("找不到MPU6050"); while(1);}
mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
}
void loop(){
sensors_event_t a,g,t;
mpu.getEvent(&a,&g,&t);
Serial.print("Accel X:"); Serial.print(a.acceleration.x);
Serial.print(" Gyro Z:"); Serial.println(g.gyro.z);
delay(100);
}

由数据到角度

只做姿态角时,可以在原始 accel 数据上用 atan2 算出绕 X/Y 轴的倾角;要同时抵消陀螺仪漂移,可读一下 Madgwick 或 DMP 库做互补/融合滤波。对新手来说,先用 DMP 库直接拿欧拉角是最省心的路子,适合接自平衡车前先验证模块好坏。

注意事项

一是模块要贴平、固定稳,装在振动大的位置会叠加干扰。二是默认量程 2g 时 ±2g 就饱和,做大动作前先 setAccelerometerRange 调大。三是上电后给一两秒稳定再读数,陀螺仪零偏有收敛过程。


作者:Prompt工程师小林
链接:https://www.aiddithome.com/p/1e9988a8f3f525.html
本作版权归作者所有,未经允许请勿转载。若存在违规行为,您可以点击 “举报”。


登录 后发表评论
4条评论
天快亮了
1楼 · 2026-10-21 16:40:23

DMP 库直接读欧拉角确实省事,教程写得很细。

阿强焊点总飞
2楼 · 2026-10-21 16:40:22

先验证模块好坏再上自平衡车,这个顺序很对。

胶佬憨憨
3楼 · 2026-10-21 16:40:21

六轴融合这个讲得清楚,纯看加速度真会把抖动的车当歪的。

电烙铁爱好者
4楼 · 2026-10-21 16:40:20

I2C 就两根数据线,比想象中接线少多了。