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

[复制链接]
楼主: zkcaptain
| 2013-11-24 22:23 | 显示全部楼层
顶一顶。 关注楼主的进度。
| 2013-11-24 23:41 | 显示全部楼层
顶起来,赞一下
| 2013-11-26 18:52 | 显示全部楼层
开源了,谢谢楼主
| 2013-11-26 18:57 | 显示全部楼层
不懂算法:'(
| 2013-11-27 19:07 | 显示全部楼层
赞一个
| 2013-11-27 23:53 | 显示全部楼层
PCB板看着很精致
| 2013-11-27 23:53 | 显示全部楼层
真心不错   
 楼主 | 2013-11-28 09:54 | 显示全部楼层
本帖最后由 zkcaptain 于 2013-11-29 14:47 编辑

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

注意跑108Mhz,需要修改延迟函数和串口函数,适当增加一下延迟函数的数值避免I2C通信失败,修改串口函数是为了避免108Mhz下串口乱码问题,具体修改方式参考论坛顶置帖子。
| 2013-11-28 20:15 | 显示全部楼层
很不错的设计。赞一个
| 2013-11-28 20:55 | 显示全部楼层
好厉害
| 2013-11-28 20:59 | 显示全部楼层
这么厉害  搞人真多
| 2013-12-2 13:07 | 显示全部楼层
收了额看看,***太差了,连文章都不给看。
| 2013-12-2 18:16 | 显示全部楼层
这要置顶啊,很精彩
| 2013-12-3 22:25 | 显示全部楼层
为什么自己做,程序就会跑飞了。在传感器自我校准那个函数。self_test的函数。不会啊
 楼主 | 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
| 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都有参数,后来,参数都是在增加,或者负增加。
 楼主 | 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比较安全,但是这样多少都会影响姿态更新频率
| 2013-12-4 20:17 | 显示全部楼层
做个记号,有时间再慢慢研究~
| 2013-12-6 16:20 | 显示全部楼层
感谢分享!!!!!
| 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芯片。你能否告诉我关于芯片引脚你的链接方案。急等。
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

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