想让小车或机器人知道自己是不是歪了、朝哪个方向偏,MPU6050是最常用的一颗六轴传感器——里面集成了三轴加速度计和三轴陀螺仪。它是做自平衡小车、姿态检测、云台调平的核心模块,便宜、资料多、社区成熟。这篇把引脚接线、读数据、算倾角讲清楚。
MPU6050模块引脚和I2C接线
模块一般为I2C接口,真正要用就四根线:VCC接3.3V(多数模块也能5V,看丝印)、GND接地、SDA接A4、SCL接A5。它默认I2C地址是0x68,如果板上有个AD0引脚,把它接3.3V地址就变成0x69,多挂一颗同型号时靠这个区分。

图上这个接法很推荐——模块、OLED和Arduino共用一条I2C总线,VCC、GND、SDA、SCL四条线沓在一起,既省引脚又能顺便把数据打到屏上看。接好先跑一遍I2C扫描,确认能扫到0x68再往下走,扫不到十有八九是SDA/SCL接反或供电问题。
读加速度和角速度的代码思路
库可以用Adafruit MPU6050或者老牌的MPU6050库,初始化后在循环里读加速度和角速度。加速度的原始值除以16384(量程±2g时)就是几倍重力加速度;陀螺仪原始值除以131就是度每秒。要单独拿倾角,最省事的做法是从加速度计算:pitch和roll分别用atan2对不同加速度轴比一下就行,静止时很准。

这张示意图把加速度计和陀螺仪各自物理意义画得很清楚——加速度计量的是“力”,陀螺仪量的是“角速度”。理解了这点,后面做互补滤波或卡尔曼滤波把两者融合,把陀螺仪的瞬态响应和加速度计的长期稳定结合,就能得到既不漂移又不抖的姿态角,这是做自稳、平衡绕不开的一步。
三个最容易踩的坑
一是供电和接线要稳,MPU6050对电压比较敏感,VCC别怼不稳的5V,3.3V最稳妥,杜邦线太长或接触不良会读到乱跳的数值。二是数值要校准,读完初始偏置(offset)在代码里减掉,静止时陀螺仪不该有“假转动”。三是别拿它直接当纯指南针——它没有磁力计,测不了绝对航向,航向要靠累计来,久了会漂,搭配磁力计才能做罗盘方向。







它是六轴没磁力计,测不了绝对航向,要方向感还得再加颗磁力计
地址0x68得上电先跑I2C扫描确认,扫不到十有八九是SDA/SCL接反了
陀螺仪不校准会缓慢漂移,把静止偏置减掉再做姿态就稳多了
静止时用加速度算倾角很准,一动就抖,最后还是要靠互补滤波把它俩融合起来