打印

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

[复制链接]
楼主: zkcaptain
手机看帖
扫描二维码
随时随地手机跟帖
101
顶起来,赞一下

使用特权

评论回复
102
喵小棋| | 2013-11-26 18:52 | 只看该作者
开源了,谢谢楼主

使用特权

评论回复
103
张涛190| | 2013-11-26 18:57 | 只看该作者
不懂算法:'(

使用特权

评论回复
104
张亚杰| | 2013-11-27 19:07 | 只看该作者
赞一个

使用特权

评论回复
105
zhangmangui| | 2013-11-27 23:53 | 只看该作者
PCB板看着很精致

使用特权

评论回复
106
zhangmangui| | 2013-11-27 23:53 | 只看该作者
真心不错   

使用特权

评论回复
107
zkcaptain|  楼主 | 2013-11-28 09:54 | 只看该作者
本帖最后由 zkcaptain 于 2013-11-29 14:47 编辑

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

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

使用特权

评论回复
108
gongjinhua| | 2013-11-28 20:15 | 只看该作者
很不错的设计。赞一个

使用特权

评论回复
109
shenpingbing| | 2013-11-28 20:55 | 只看该作者
好厉害

使用特权

评论回复
110
朱海燕| | 2013-11-28 20:59 | 只看该作者
这么厉害  搞人真多

使用特权

评论回复
111
baoliguo| | 2013-12-2 13:07 | 只看该作者
收了额看看,***太差了,连**都不给看。

使用特权

评论回复
112
122541325| | 2013-12-2 18:16 | 只看该作者
这要置顶啊,很精彩

使用特权

评论回复
113
baoliguo| | 2013-12-3 22:25 | 只看该作者
为什么自己做,程序就会跑飞了。在传感器自我校准那个函数。self_test的函数。不会啊

使用特权

评论回复
114
zkcaptain|  楼主 | 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。

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

使用特权

评论回复
115
baoliguo| | 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都有参数,后来,参数都是在增加,或者负增加。

使用特权

评论回复
116
zkcaptain|  楼主 | 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比较安全,但是这样多少都会影响姿态更新频率

使用特权

评论回复
117
sl_168| | 2013-12-4 20:17 | 只看该作者
做个记号,有时间再慢慢研究~

使用特权

评论回复
118
xu_chun_hui| | 2013-12-6 16:20 | 只看该作者
感谢分享!!!!!

使用特权

评论回复
119
baoliguo| | 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芯片。你能否告诉我关于芯片引脚你的链接方案。急等。

使用特权

评论回复
120
zkcaptain|  楼主 | 2013-12-10 11:48 | 只看该作者
本帖最后由 zkcaptain 于 2013-12-10 11:49 编辑
baoliguo 发表于 2013-12-10 09:51
你好,我看你的源程序中,使用AK89xx_BYPASS模式,那么你的电路上MPU 9150的int脚是不是没有接呢?我猜测 ...

我不太确定你这么连是否是烧坏电路的原因,按说不会

我Int脚没有连,只是引出来了,也没用到int脚,mpu9150我只用了SDA和SDL,其他脚没用

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则