OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7370|回复: 11

为什么mpu6050 初始化要平放

[复制链接]

1

主题

5

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2017-7-16
在线时间
0 小时
发表于 2017-7-16 17:07:54 | 显示全部楼层 |阅读模式
1金钱
刚开始用mpu6050,用的是mini板和原子做的mpu6050,代码也是给的例程。今天测试的时候发现初始化有时候一直失败,动一动又好了,查了很多资料,原子对这种问题经常说初始化的时候摆平,我试了一下,确实摆平之后成功率很高,但我不明白为什么。。。我竖直摆的时候mpu_run_self_test这个函数返回的值是1  所以下面这个函数
u8 run_self_test(void)
{
        int result;
        //char test_packet[4] = {0};
        long gyro[3], accel[3];
        result = mpu_run_self_test(gyro, accel);
        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);
                return 0;
        }else return 1;
}


就一直不能进入if (result == 0x3)  返回值也就一直不对了   经测试  竖着放时   mpu_run_self_test  返回1   也就是这个函数的if (!accel_result)  result |= 0x02;  未被执行   理由不明   求教啊  各位

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2017-7-16
在线时间
0 小时
 楼主| 发表于 2017-7-16 19:27:42 | 显示全部楼层
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2017-7-16
在线时间
0 小时
 楼主| 发表于 2017-7-16 19:27:57 | 显示全部楼层
再顶~~
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2017-7-16
在线时间
0 小时
 楼主| 发表于 2017-7-16 19:28:36 | 显示全部楼层
千斤顶~
回复

使用道具 举报

2

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
121
金钱
121
注册时间
2017-2-7
在线时间
17 小时
发表于 2017-7-16 20:01:18 | 显示全部楼层
那就再顶一下好了
回复

使用道具 举报

2

主题

7

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
200
金钱
200
注册时间
2016-5-20
在线时间
32 小时
发表于 2017-7-18 16:50:23 | 显示全部楼层
帮顶。我也不懂
回复

使用道具 举报

0

主题

12

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2016-8-4
在线时间
6 小时
发表于 2017-7-18 17:00:56 来自手机 | 显示全部楼层
这个有加速度传感器,放的方向会改变输出值。初始化是内部修正过程。
回复

使用道具 举报

34

主题

283

帖子

0

精华

高级会员

Rank: 4

积分
739
金钱
739
注册时间
2015-11-15
在线时间
226 小时
发表于 2017-7-18 17:28:42 | 显示全部楼层
你不放平,你后面得到的角度就有问题,初始化的时候需要得到一个尽量真实的水平
与其感慨路难行,不如马上出发
回复

使用道具 举报

3

主题

14

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2017-9-24
在线时间
7 小时
发表于 2018-7-28 01:23:33 | 显示全部楼层
xueshawu 发表于 2017-7-18 17:28
你不放平,你后面得到的角度就有问题,初始化的时候需要得到一个尽量真实的水平

我也不懂只能说过帮顶了
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2018-7-28 08:10:30 | 显示全部楼层
没用过原子的6050       但是你把它平放你会发现x,y轴的角就会回平,也就是零,z轴的话旋转到某一个角度也能回平。                我用的那个mpu6050初始态是定好的,是由模块上的6050芯片方位决定。       我不知道原子的怎么说,也许是他程序里加了重定位函数?
猪猪熊呢?
回复

使用道具 举报

2

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2019-8-12
在线时间
22 小时
发表于 2020-4-15 10:47:22 | 显示全部楼层
我发现基于水平和竖直的中间态的时候也可以通过自检,但是得到的数不对
回复

使用道具 举报

1

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2021-8-23
在线时间
21 小时
发表于 2022-3-14 16:57:43 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 22:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表