Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino 如何执行MPU6050加速计温度校准?_Arduino_Accelerometer_Offset_Calibration_Mpu6050 - Fatal编程技术网

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

Arduino 如何执行MPU6050加速计温度校准?,arduino,accelerometer,offset,calibration,mpu6050,Arduino,Accelerometer,Offset,Calibration,Mpu6050,我正在用MPU6050加速计做一个项目。首先,我只计算一次MPU的偏移量 稍后,一旦获得偏移,我将它们复制到第二个草图的配置中,并始终使用相同的值执行它 //Placa casa MPU6050 viejo //-1172 -873 1351 76 -758 27 加速度陀螺设置加速度偏移(-1172); 加速度陀螺设置加速度偏移(-873); 加速度陀螺仪设置加速度偏移(1351); 加速度陀螺仪设置陀螺仪偏移量(76); 加速度陀螺仪设置陀螺偏移(-773); 加速度陀螺仪设置偏差

我正在用MPU6050加速计做一个项目。首先,我只计算一次MPU的偏移量

稍后,一旦获得偏移,我将它们复制到第二个草图的配置中,并始终使用相同的值执行它

//Placa casa MPU6050 viejo
//-1172  -873  1351  76  -758  27
加速度陀螺设置加速度偏移(-1172);
加速度陀螺设置加速度偏移(-873);
加速度陀螺仪设置加速度偏移(1351);
加速度陀螺仪设置陀螺仪偏移量(76);
加速度陀螺仪设置陀螺偏移(-773);
加速度陀螺仪设置偏差(33);
我遇到的问题是,在多次执行第二个草图之后,原始读数会显示一个新的偏移量


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

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


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

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

  • 每次启动前校准:将校准代码放入您的
    setup()
    ,这样您就可以在每次设备启动时获得有效的偏移参数,无论设备的温度是多少。该方法用于多旋翼飞行控制器的IMU标定,通常基于MPU60x0
  • 准备校准值表。MPU6050具有嵌入式温度传感器,可用于此方法 写一个草图,它可以:

  • 读数T(温度)
  • 像现在一样测量偏移量,并用当前T打印到序列中
  • 等待T变化,如果时间过长(例如30秒以上),停止校准,否则转到2
  • 现在在冷冻柜中冷却MPU6050,然后将其放入热环境(50摄氏度应该足够;取决于最终设备将使用的T范围)并开始校准草图


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

    谢谢,但我不明白根据这些温度范围必须执行哪些步骤来校正加速计值。你知道这方面的例子吗?你的测量值的差异是否超过了温度所能解释的范围?如果是这样,您可能至少还有一个其他错误源。这是我参考数据表的一个主要原因,以评估误差是否可以用温度漂移来解释。