1. MPU6050传感器基础与硬件连接
MPU6050是一款集成了3轴陀螺仪和3轴加速度计的六轴运动处理传感器,在无人机、平衡车、姿态控制等领域应用广泛。我第一次接触这个传感器是在做一个四轴飞行器项目时,当时被它小巧的体积和强大的功能惊艳到了。
传感器模块通常有8个引脚,但实际使用时只需要连接4个关键引脚:
- VCC:3.3V或5V供电
- GND:接地
- SCL:I2C时钟线
- SDA:I2C数据线
这里有个新手容易踩的坑:AD0地址选择引脚。当AD0接GND时,I2C地址是0x68;接VCC时地址变为0x69。我曾经因为没注意这个细节,调试了半天才发现是地址设置错误。如果你用的是STM32开发板,建议使用PB6和PB7作为I2C引脚,这两个引脚在大多数开发板上都直接引出了。
硬件连接时还要注意上拉电阻的问题。MPU6050模块通常已经内置了4.7kΩ的上拉电阻,但如果你发现通信不稳定,可以尝试在SCL和SDA线上再外接2.2kΩ的上拉电阻。我实测发现,在长导线连接的情况下,适当减小上拉电阻值能显著提高通信稳定性。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 传感器初始化与配置
拿到传感器后,第一步就是要正确初始化。下面这个初始化流程是我经过多个项目验证过的稳定方案:
c复制void MPU6050_Init(void)
{
// 1. 复位设备
MPU6050_Write_Byte(MPU6050_RA_PWR_MGMT_1, 0x80);
HAL_Delay(100);
// 2. 唤醒设备,选择时钟源
MPU6050_Write_Byte(MPU6050_RA_PWR_MGMT_1, 0x01);
// 3. 设置陀螺仪量程 ±2000°/s
MPU6050_Write_Byte(MPU6050_RA_GYRO_CONFIG, 0x18);
// 4. 设置加速度计量程 ±4g
MPU6050_Write_Byte(MPU6050_RA_ACCEL_CONFIG, 0x10);
// 5. 设置低通滤波器带宽 42Hz
MPU6050_Write_Byte(MPU6050_RA_CONFIG, 0x03);
//
