自平衡小车、无人机云台、姿态控制,很多项目都要先拿到“我现在歪了多少度”。MPU6050 这个六轴模块一个芯片里就集成了三轴加速度计和三轴陀螺仪,通过 I2C 接口接上 Arduino 就能读出原始数据,是入门姿态监测最常见的型号。
“六轴”是什么
六轴=三轴加速度计(感知重力方向,可算倾角)+ 三轴陀螺仪(感知角速度变化,短时间很准)。加速度计动起来会受颠簸干扰,陀螺仪又会缓慢漂移,所以实用的做法是把两者融合,才能得到稳定且真实的角度。

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

读原始数据
装好 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 调大。三是上电后给一两秒稳定再读数,陀螺仪零偏有收敛过程。







DMP 库直接读欧拉角确实省事,教程写得很细。
先验证模块好坏再上自平衡车,这个顺序很对。
六轴融合这个讲得清楚,纯看加速度真会把抖动的车当歪的。
I2C 就两根数据线,比想象中接线少多了。