【模块篇】mpu6050 DMP使用绝对水平面的方法

您所在的位置:网站首页 mpu6050dmp如何使用 【模块篇】mpu6050 DMP使用绝对水平面的方法

【模块篇】mpu6050 DMP使用绝对水平面的方法

2023-08-16 01:00| 来源: 网络整理| 查看: 265

网上看了点帖子,对小白很不友好,因为是移植的别人代码,DMP库并没有研究,根本看不懂!!

BUT,逛了半天论坛发现有种方法很简单。。

 

1、在你的MPU6050初始化相关函数中找到自检函数,我的是run_self_test();

2、在mpu_get_accel_sens(&accel_sens);的下面加上

accel_sens = 0;

如下

void run_self_test(void) { int result; // char test_packet[4] = {0}; long gyro[3], accel[3]; //传感器自检,并返回偏差值 result = mpu_run_self_test(gyro, accel); //注意,这里由于只开启了陀螺仪和加速计,所以result为0x03,当开启了陀螺仪,加速计和磁力计时,result为0x07 if (result == 0x3) { /* Test passed. We can trust the gyro data here, so let's push it down * to the DMP. */ float sens; unsigned short accel_sens; mpu_get_gyro_sens(&sens); //获得陀螺仪的灵敏度因子 gyro[0] = (long)(gyro[0] * sens); gyro[1] = (long)(gyro[1] * sens); gyro[2] = (long)(gyro[2] * sens); dmp_set_gyro_bias(gyro); //重新校准陀螺仪 mpu_get_accel_sens(&accel_sens); //获得加速计的灵敏度因子 /*加上下面这句*/ accel_sens = 0; //不校准加速计 accel[0] *= accel_sens; accel[1] *= accel_sens; accel[2] *= accel_sens; dmp_set_accel_bias(accel); //重新校准加速计 } }

大概意思就是把获得的绝对水平面校准值清0

3、没了!!!

 

试了一下真的可以,但有什么缺点不太清楚



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3