陀螺仪器件选型MPU6050、BMX055、icm20602

一、共同点

  • 三款传感器均为六轴/九轴陀螺仪,在一个传感器内集成了加速度计和陀螺仪两种传感器,简化了我们的操作。

二、区别

MPU6050排除

  • MPU6050 系列传感器采用的 IIC 协议进行数据读取,读写速度较慢,软件 IIC 时序也过多的占用单片机资源。同时 MPU6050 属于
    较老的型号,精度较低,没有选择。BMX055 和 ICM20602 均为同时支持 IIC 和SPI 的传感器,利用硬件 SPI 协议进行读写,占用的单片机资源降低非常多,
  • 优势是集成了解算芯片,能直接把四元数解算成数据

BMX055

BMX055 系列陀螺仪精度非常高,对陀螺仪数据进行积分后计算的角度数据变化灵敏。

  • 同时积分漂移也相对较少,经过简单的抗零漂处理后得到的角度数据就能够基本满足单车的使用。
  • 但是 BMX055 系列的加速度计精度非常低,测试多个传感器,均发现 BMX055 系列加速度计存在一定的问题。简单来说,就是人为进行一次抖动后,正常的加速度只会检测到这一次加速度的抖动情况,而 BMX055 系列陀螺仪会在检测到第一次加速度引发的抖动之后,再一次的检测到抖动情况。存在较大的噪声。

icm20602

  • 而 ICM20602 系列的角速度精度同样较高,同时加速度计的测量也较为准确,
  • ICM-20602 使用硬件 SPI 可达到 10M 波特率。
  • 需要单片机提供算力将四元数转换成欧拉角

三、总结建议

  • 综合考虑采用 ICM20602 系列六轴传感器,利用 SPI 协议进行数据读取,利用卡尔曼滤波器进行数据融合,经过长时间的参数整定,基本能达到更好的效果。

四、展望+提升

陀螺仪串联磁力计

先假定了在大部分时间里,载体是静止或者匀速直线运动的,所以可以认为加速度计的测量值,就是重力加速度。但是,在载体水平时,重力加速度的方向与Z轴相同,是无法反映出偏航角yaw的(因为偏航角是绕Z轴旋转,即使偏航角变化,Z轴方向仍然不变,也就是说加速度计无法感知Z轴的旋转)。

而磁力计可以测出地球的磁场,能够得到水平的北向方位,所以引入磁力计的数据,可以用来修正陀螺仪的偏航角。

  • 5
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
MPU6050 是一种常用的六轴陀螺仪传感器模块,可以用于检测物体的加速度和角速度。要使用 MPU6050 模块,需要连接到 Arduino 单片机,并使用相应的库进行编程。 以下是使用 MPU6050 模块的基本步骤: 1. 连接 MPU6050 模块到 Arduino 单片机。连接方法如下: - 将 MPU6050 模块的 VCC 引脚连接到 Arduino 的 5V 引脚。 - 将 MPU6050 模块的 GND 引脚连接到 Arduino 的 GND 引脚。 - 将 MPU6050 模块的 SDA 引脚连接到 Arduino 的 A4 引脚。 - 将 MPU6050 模块的 SCL 引脚连接到 Arduino 的 A5 引脚。 2. 在 Arduino IDE 中安装 MPU6050 库。可以在库管理器中搜索 MPU6050 并安装。 3. 编写程序,使用 MPU6050 库读取 MPU6050 模块的数据。以下是一个简单的示例程序: ```c++ #include <Wire.h> #include <MPU6050.h> MPU6050 mpu; // 创建一个 MPU6050 对象 void setup() { Wire.begin(); // 初始化 I2C 总线 mpu.initialize(); // 初始化 MPU6050 Serial.begin(9600); // 初始化串口 } void loop() { int16_t ax, ay, az, gx, gy, gz; // 定义变量存储 MPU6050 的数据 mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); // 读取 MPU6050 的数据 Serial.print("加速度计:"); Serial.print(ax); Serial.print(", "); Serial.print(ay); Serial.print(", "); Serial.println(az); Serial.print("陀螺仪:"); Serial.print(gx); Serial.print(", "); Serial.print(gy); Serial.print(", "); Serial.println(gz); delay(10); } ``` 在这个程序中,我们使用了 Wire 库和 MPU6050 库,需要在 Arduino IDE 中安装这两个库才能正常编译和上传。在 `setup()` 函数中,我们初始化了 I2C 总线、MPU6050 传感器模块和串口。在 `loop()` 函数中,我们读取了 MPU6050 传感器模块的加速度计和陀螺仪数据,并通过串口输出到电脑上。程序每隔 10 毫秒执行一次。 通过这个程序,我们可以实时读取 MPU6050 传感器模块的加速度计和陀螺仪数据,用于控制舵机等其他组件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值