#imu #driver #accelerometer #embedded

mpu6886

为mpu6886 6轴IMU提供的平台无关驱动程序

1个不稳定版本

0.1.0 2023年2月19日

#30#imu

MIT 许可证

40KB
509

mpu6886 crates.io CircleCI

为mpu6886 6轴IMU提供的无_std 驱动程序

感谢 "Julian Gaal [email protected]",mpu6050的主要工作已经完成,mpu6886仅进行了少量适配

  • mpu6886的设备ID已更改
  • 温度读取已适配
  • CLKSEL已重新定义
  • IRQ STATUS已重新定义并移除
  • MOT_DETECT_STATUS
  • MOT_DETECT_CONTROL
  • LP_WAKE_CTRL
  • ACCEL_HPF

从mpu6050到mpu6886的变化后最有可能工作的是

不是,至今几乎没有进行测试。

  • 读取加速度计、陀螺仪、温度传感器
    • 原始
    • 缩放
    • 俯仰/偏航估计
  • 设置加速度计/陀螺仪范围/灵敏度

基本用法

要使用此驱动程序,您必须提供具体的 embedded_hal 实现。这里有一个 linux_embedded_hal 示例

use mpu6886::*;
use linux_embedded_hal::{I2cdev, Delay};
use i2cdev::linux::LinuxI2CError;

fn main() -> Result<(), mpu6886Error<LinuxI2CError>> {
  let i2c = I2cdev::new("/dev/i2c-1")
          .map_err(mpu6886Error::I2c)?;

  let mut delay = Delay;
  let mut mpu = mpu6886::new(i2c);

  mpu.init(&mut delay)?;

  loop {
    // get roll and pitch estimate
    let acc = mpu.get_acc_angles()?;
    println!("r/p: {:?}", acc);

    // get temp
    let temp = mpu.get_temp()?;
    println!("temp: {:?}c", temp);

    // get gyro data, scaled with sensitivity 
    let gyro = mpu.get_gyro()?;
    println!("gyro: {:?}", gyro);

    // get accelerometer data, scaled with sensitivity
    let acc = mpu.get_acc()?;
    println!("acc: {:?}", acc);
  }
}

依赖关系

~3.5MB
~67K SLoC