楼主: zkcaptain
收起左侧

[小应用]GD32F103+MPU9150 四轴飞行器第一步:9DOF姿态融合

[复制链接]

5

主题

145

帖子

461

积分

资深技术员

发表于 2013-11-24 22:23 | 显示全部楼层 |返回版面
顶一顶。 关注楼主的进度。

29

主题

195

帖子

585

积分

高级技术员

发表于 2013-11-24 23:41 | 显示全部楼层 |返回版面
顶起来,赞一下

3

主题

80

帖子

240

积分

中级技术员

发表于 2013-11-26 18:52 | 显示全部楼层 |返回版面
开源了,谢谢楼主

3

主题

26

帖子

78

积分

初级技术员

发表于 2013-11-26 18:57 | 显示全部楼层 |返回版面
不懂算法:'(

6

主题

53

帖子

159

积分

中级技术员

发表于 2013-11-27 19:07 | 显示全部楼层 |返回版面
赞一个
     

589

主题

2万

帖子

6万

积分

版主

发表于 2013-11-27 23:53 | 显示全部楼层 |返回版面
PCB板看着很精致
欢迎进入【TI DSP 论坛】 & 【DSP 技术】
          TI忠诚粉丝!
     

589

主题

2万

帖子

6万

积分

版主

发表于 2013-11-27 23:53 | 显示全部楼层 |返回版面
真心不错   
欢迎进入【TI DSP 论坛】 & 【DSP 技术】
          TI忠诚粉丝!
     

64

主题

255

帖子

286

积分

禁止发言

 楼主| 发表于 2013-11-28 09:54 | 显示全部楼层 |返回版面
本帖最后由 zkcaptain 于 2013-11-29 14:47 编辑

主楼更新AHRSupdate算法,姿态更新频率接近400Hz,试了下108Mhz下,更新频率400Hz-500hz之间。

注意跑108Mhz,需要修改延迟函数和串口函数,适当增加一下延迟函数的数值避免I2C通信失败,修改串口函数是为了避免108Mhz下串口乱码问题,具体修改方式参考论坛顶置帖子。

5

主题

105

帖子

318

积分

资深技术员

发表于 2013-11-28 20:15 | 显示全部楼层 |返回版面
很不错的设计。赞一个

76

主题

576

帖子

1763

积分

助理工程师

发表于 2013-11-28 20:55 | 显示全部楼层 |返回版面
好厉害

4

主题

22

帖子

66

积分

初级技术员

发表于 2013-11-28 20:59 | 显示全部楼层 |返回版面
这么厉害  搞人真多

0

主题

26

帖子

78

积分

初级技术员

发表于 2013-12-2 13:07 | 显示全部楼层 |返回版面
收了额看看,***太差了,连文章都不给看。

21

主题

220

帖子

674

积分

高级技术员

发表于 2013-12-2 18:16 | 显示全部楼层 |返回版面
这要置顶啊,很精彩

0

主题

26

帖子

78

积分

初级技术员

发表于 2013-12-3 22:25 | 显示全部楼层 |返回版面
为什么自己做,程序就会跑飞了。在传感器自我校准那个函数。self_test的函数。不会啊
     

64

主题

255

帖子

286

积分

禁止发言

 楼主| 发表于 2013-12-4 09:29 | 显示全部楼层 |返回版面
baoliguo 发表于 2013-12-3 22:25
为什么自己做,程序就会跑飞了。在传感器自我校准那个函数。self_test的函数。不会啊 ...



这个函数,当result=0x01时,表示陀螺仪自检完毕;当result=0x02时,表示加速度计自检完毕;当result=0x04时,表示磁力计自检完毕。
根据自己的需要先通过mpu_set_sensors()这个函数开启accel、gyro或compass,然后再修改自检里if(result == 0x??)里的值。
例如你只开启了accel和gyro,那么result==0x03,如果你3个都开启了,那么result==0x07。

自检过程中要保持传感器水平和稳定,,不然会自检失败。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册 手机登录

x

0

主题

26

帖子

78

积分

初级技术员

发表于 2013-12-4 09:52 | 显示全部楼层 |返回版面
zkcaptain 发表于 2013-12-4 09:29
这个函数,当result=0x01时,表示陀螺仪自检完毕;当result=0x02时,表示加速度计自检完毕;当result=0 ...

恩,我检测返回值是0x03,而且这个板子中的compass坏了。又焊了一块板子,当我使用bypass模式下读写compass,开始x轴有参数,其它两个都是零,后来转动芯片,x,y,z都有参数,后来,参数都是在增加,或者负增加。
     

64

主题

255

帖子

286

积分

禁止发言

 楼主| 发表于 2013-12-4 12:41 | 显示全部楼层 |返回版面
baoliguo 发表于 2013-12-4 09:52
恩,我检测返回值是0x03,而且这个板子中的compass坏了。又焊了一块板子,当我使用bypass模式下读写compa ...

mpu9150这个芯片的磁力计不好用,你可以按下面的步骤试试:
读取顺序:
1.关闭MPU9150的I2C_MASTER模式
2.延迟至少1ms左右
3.开启bypass

4.读取compass数据

5.开启MPU9150的I2C_MASTER模式
6.延迟2ms左右
7.关闭bypass

以上这个顺序我试了很多遍,少1条都不行,有时候虽然少其中1条可以读,但是过一会或者晃一晃数据就不变了。。

第2、6条这个延迟你可以试,找到最小的延迟时间。官方库里给的是3ms延迟,但是我觉得1.5ms就够了,2ms比较安全,但是这样多少都会影响姿态更新频率
     

0

主题

30

帖子

3017

积分

中级工程师

发表于 2013-12-4 20:17 | 显示全部楼层 |返回版面
做个记号,有时间再慢慢研究~

0

主题

3

帖子

9

积分

实习生

发表于 2013-12-6 16:20 | 显示全部楼层 |返回版面
感谢分享!!!!!

0

主题

26

帖子

78

积分

初级技术员

发表于 2013-12-10 09:51 | 显示全部楼层 |返回版面
zkcaptain 发表于 2013-12-4 12:41
mpu9150这个芯片的磁力计不好用,你可以按下面的步骤试试:
读取顺序:
1.关闭MPU9150的I2C_MASTER模式

你好,我看你的源程序中,使用AK89xx_BYPASS模式,那么你的电路上MPU 9150的int脚是不是没有接呢?我猜测我上一个芯片的ak8975的损坏就是电路上设计出问题,而且软件却使用的AK89xx_BYPASS模式,这样烧坏了ak8975芯片。你能否告诉我关于芯片引脚你的链接方案。急等。
您需要登录后才可以回帖 登录 | 注册 手机登录

本版积分规则

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