如何进行 MPU6050 加速度计温度校准?

Posted

技术标签:

【中文标题】如何进行 MPU6050 加速度计温度校准?【英文标题】:How to perform MPU6050 Accelerometer Temperature Calibration? 【发布时间】:2017-06-23 13:14:13 【问题描述】:

我正在使用 MPU6050 加速度计做一个项目。首先我只计算一次执行the sketch of Luis Ródenas的MPU的偏移量。

稍后,一旦我得到偏移量,我会将它们复制到第二个草图的配置中,并且我总是使用相同的值执行它。

//Placa casa MPU6050 viejo
//-1172  -873  1351  76  -758  27
accelgyro.setXAccelOffset(-1172);
accelgyro.setYAccelOffset(-873);
accelgyro.setZAccelOffset(1351);
accelgyro.setXGyroOffset(76);
accelgyro.setYGyroOffset(-773);
accelgyro.setZGyroOffset(33);

我遇到的问题是,在多次执行第二个草图一段时间后,原始读数呈现出新的偏移量。

我读到这个问题可能是由传感器的温度引起的,有必要用温度来补偿读数。但我找不到这样做的例子。我想问是否有人知道问题可能是什么以及如何解决它。

【问题讨论】:

【参考方案1】:

我看到了两种处理MPU6050温漂的方法:

    每次启动前进行校准:将校准代码输入您setup(),这样您将在每次设备启动时获得有效的偏移参数,无论设备的温度是多少。这种方法用于多旋翼飞控校准其IMU,通常基于MPU60x0。

    准备校准值表。 MPU6050 具有嵌入式温度传感器,可用于此方法。

写草图:

    读取 T(温度)。 example sketch how to read T from MPU6050 像现在一样测量偏移量并使用当前 T 打印到 Serial。 等到 T 发生变化,如果时间过长(例如 30+ 秒),则停止校准,否则转到 2。

现在将 MPU6050 在冰箱中冷却,然后将其放入高温环境中(50 摄氏度应该足够了;取决于最终设备将使用的 T 范围)并开始校准草图。

现在,有了一个表[T]->[offsets],您可以调整原始草图以监控 MPU6050 的 T,一旦它发生变化,将相应的偏移量分配给 MPU6050。

【讨论】:

【参考方案2】:

在编写一行用于温度调节的代码之前,绝对的第一步是参考数据表以了解您正在使用的确切部件。具有与温度相关的漂移的器件通常会在数据表中显示它们,以及所需的补偿。我现在正在查看 6050 数据表和加速度计模块,例如,它在 -40C 到 85C 的线性范围内将校正列为每摄氏度 +/- 0.02%。陀螺仪模块列出了不同的校正因子。这对于多传感器模块来说并不少见。

如果您认为温度漂移是问题的根源,则需要根据数据表中的这些值进行调整。

【讨论】:

谢谢,但我不明白我必须遵循哪些步骤才能根据这些温度范围校正加速度计值。你知道这方面的任何例子吗? 您的测量结果的差异是否超出了温度所能解释的范围?如果是这样,您可能至少还有一个其他错误来源。这是我参考数据表的主要原因,以评估错误是否可以通过温度漂移来解释。 我认为 +/- 0.02% 只是对变化量的限制,并不代表准确的校准因素。如果您查看本文的图 2,ceur-ws.org/Vol-2278/paper02.pdf,它显示了加速度计值的测量变化作为温度的函数。可以看出,z 轴随温度下降而 y 轴上升。如果所有人都遵守 0.02% 的修正系数,则不会发生这种情况。

以上是关于如何进行 MPU6050 加速度计温度校准?的主要内容,如果未能解决你的问题,请参考以下文章

MPU-6050:从 FIFO 寄存器正确读取数据

STM32 姿态传感器mpu6050的使用

MPU 6050 陀螺仪/加速度计和抖动检测

ESP32上手笔记 | 05 - 获取MPU6050数据进行姿态解算和展示(I2Cdev+MPU6050+Processing)

如何使用 python 和 multiwii 串行协议校准 mpu6050 传感器?

车载传感器数据研究-MPU6050