四格/MPU6050 三轴加速度传感器陀螺仪
四格

MPU6050 三轴加速度传感器陀螺仪

收藏 (0)

MPU6050 是 InvenSense 推出的一款经典 6 轴惯性测量单元(IMU),内部集成了 3 轴加速度计3 轴陀螺仪,并内置 DMP(Digital Motion Processor)。它通过 I2C 接口与主控通信,广泛应用于姿态感知、平衡车、无人机、机器人、体感控制等场景。

主要特性

  • 3 轴加速度计(±2g / ±4g / ±8g / ±16g)
  • 3 轴陀螺仪(±250 / ±500 / ±1000 / ±2000 °/s)
  • 内置 16-bit ADC
  • I2C 通信接口(地址 0x68 / 0x69)
  • 支持 FIFO 数据缓存
  • 支持低功耗模式
  • 内置温度传感器

硬件连接

MPU6050MCU
VCC3.3V(或 5V,视模块而定)
GNDGND
SCLI2C SCL
SDAI2C SDA
AD0GND(地址 0x68)/ VCC(地址 0x69)
INT可选,中断输入

初始化流程(推荐)

典型初始化步骤如下:

  1. 复位设备

    i2c_write(MPU_ADDR, 0x6B, 0x80); // DEVICE_RESET = 1
    delay_ms(100);
    
  2. 唤醒设备并选择时钟源(推荐使用 Z 轴陀螺仪 PLL)

    i2c_write(MPU_ADDR, 0x6B, 0x03); // CLKSEL = 3
    
  3. 配置加速度计量程

    i2c_write(MPU_ADDR, 0x1C, 0x00); // ±2g
    
  4. 配置陀螺仪量程

    i2c_write(MPU_ADDR, 0x1B, 0x00); // ±250 dps
    
  5. (可选)配置采样率、FIFO、中断等

原始数据读取

数据格式说明

MPU6050 的传感器数据均为 16 位有符号整数(补码),由高字节和低字节组成。

int16_t raw = (int16_t)((high << 8) | low);

加速度换算

以 Z 轴为例:

int16_t accel_z_raw = (ACCEL_ZOUT_H << 8) | ACCEL_ZOUT_L;
float accel_z_g = accel_z_raw / 16384.0f; // ±2g 量程

陀螺仪换算

int16_t gyro_x_raw = (GYRO_XOUT_H << 8) | GYRO_XOUT_L;
float gyro_x_dps = gyro_x_raw / 131.0f; // ±250 dps

温度换算

int16_t temp_raw = (TEMP_OUT_H << 8) | TEMP_OUT_L;
float temperature = temp_raw / 340.0f + 36.53f;

适用场景

  • 姿态感知 / 姿态控制
  • 平衡车 / 自平衡系统
  • 机器人方向感知
  • IMU 教学与算法验证