楼主: zkcaptain
收起左侧

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

[复制链接]

2

主题

193

帖子

739

积分

高级技术员

 楼主| 发表于 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,其他脚没用
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

0

主题

1

帖子

3

积分

实习生

发表于 2013-12-10 17:34 | 显示全部楼层 |返回版面
lz,你好!我是使用AD画的,怕自己画的封装不正确,所以能给我MPU-9150的封装吗(LGA24)?比较急用!谢谢!
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

2

主题

193

帖子

739

积分

高级技术员

 楼主| 发表于 2013-12-11 13:37 | 显示全部楼层 |返回版面
bing20138 发表于 2013-12-10 17:34
lz,你好!我是使用AD画的,怕自己画的封装不正确,所以能给我MPU-9150的封装吗(LGA24)?比较急用!谢谢! ...

我找了半天找不到了。。。给你说一下注意事项:
1.焊盘往芯片外部最好要多出1mm方便用烙铁焊接,如果有风枪,那么此处可以不多加焊盘长度
2.焊盘往芯片中心位置多加个0.5-0.7mm,因为MPU9150的引脚在芯片下面,此处焊盘加的少了,会发现一边的引脚焊上了另一边的没焊上,这个跟制板的工艺也有关,有时候两边焊盘给你做的并不是对称的。

如果不放心,画完PCB以后用1:1打印出来,拿个芯片放上去看行不行。
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

2

主题

117

帖子

357

积分

资深技术员

发表于 2013-12-11 23:58 | 显示全部楼层 |返回版面
好强大,赞一个
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

5

主题

105

帖子

318

积分

资深技术员

发表于 2013-12-22 11:42 | 显示全部楼层 |返回版面
好强大
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

2

主题

49

帖子

150

积分

中级技术员

发表于 2013-12-22 11:51 | 显示全部楼层 |返回版面
只有膜拜了
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

0

主题

4

帖子

12

积分

实习生

发表于 2013-12-25 00:13 | 显示全部楼层 |返回版面
楼主的程序有问题啊,mpu9150的i2c从器件地址手册明明是0xd0,我用0xd0也是能正确读到数据的。但楼主程序里为什么定义的是0x68呢??这样也能读出数据?
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

2

主题

193

帖子

739

积分

高级技术员

 楼主| 发表于 2013-12-25 10:35 | 显示全部楼层 |返回版面
173795469 发表于 2013-12-25 00:13
楼主的程序有问题啊,mpu9150的i2c从器件地址手册明明是0xd0,我用0xd0也是能正确读到数据的。但楼主程序里 ...

这个我还是解释下吧,正规来说,MPU9150的地址应该是0xD0,但是一部分人(包括我)的程序里用的是I/O口模拟的I2C,在他们的程序里,对MPU9150的addr多做了一步“addr<<1”,这一部分人就用0x68来作为MPU9150的地址,而直接用addr的人,就需要用0xD0了,这主要看I2C的驱动怎么写了。

你仔细看下我的程序就明白了。

本帖子中包含更多资源

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

x
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

0

主题

4

帖子

12

积分

实习生

发表于 2013-12-25 14:36 | 显示全部楼层 |返回版面
zkcaptain 发表于 2013-12-25 10:35
这个我还是解释下吧,正规来说,MPU9150的地址应该是0xD0,但是一部分人(包括我)的程序里用的是I/O口模拟 ...

原来如此啊~ 麻烦问下,我看楼主的程序里磁力计的读取为         init_mx =(float)1.046632*mag[0]-1.569948;init_my =(float)mag[1]-8;init_mz =(float)mag[2];   不需要乘上最小LSB的0.3嘛??   还有我看手册上说磁力计的数据是以13位补码的形式给出,最高位13位为符号位,程序里不需要做相应的数据转换嘛??
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

2

主题

193

帖子

739

积分

高级技术员

 楼主| 发表于 2013-12-25 14:47 | 显示全部楼层 |返回版面
173795469 发表于 2013-12-25 14:36
原来如此啊~ 麻烦问下,我看楼主的程序里磁力计的读取为         init_mx =(float)1.046632*mag[0]-1.569 ...

乘以0.3是把磁场单位转换成高斯了,没必要,还增加了运算时间,算法里面对磁力计的数据做了归一化处理,所以对磁场强度的单位没要求,只需要做校准就可以了
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

0

主题

4

帖子

12

积分

实习生

发表于 2013-12-25 14:58 | 显示全部楼层 |返回版面
173795469 发表于 2013-12-25 14:36
原来如此啊~ 麻烦问下,我看楼主的程序里磁力计的读取为         init_mx =(float)1.046632*mag[0]-1.569 ...

我使用你的程序,读出的陀螺、加速度计的数据都是正确的,但是磁力计的数据感觉不对~ 表现在静止不动,磁力计的输出跳动非常大,不知为何~ 按理说虽然未做磁力计的校准,但静止的话起码数据应该比较稳定才对啊~
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

2

主题

193

帖子

739

积分

高级技术员

 楼主| 发表于 2013-12-25 15:02 | 显示全部楼层 |返回版面
173795469 发表于 2013-12-25 14:58
我使用你的程序,读出的陀螺、加速度计的数据都是正确的,但是磁力计的数据感觉不对~ 表现在静止不动,磁 ...

有各种你想象不到的干扰,磁力计本来就不是一个能在各个环境下提供可靠参考的东西。要真是数据不对,那就是代码的原因。
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

0

主题

4

帖子

12

积分

实习生

发表于 2013-12-25 15:40 | 显示全部楼层 |返回版面
楼主,我看你贴出来的图,航向角波动挺小的~  那你的磁力计静态下稳定么? 我使用你给出的程序, init_mx =(float)mag[0];  读出来的磁力计数据比如整体上是20, 会在18~23之间波动,这算正常么?
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

2

主题

193

帖子

739

积分

高级技术员

 楼主| 发表于 2013-12-25 15:45 | 显示全部楼层 |返回版面
173795469 发表于 2013-12-25 15:40
楼主,我看你贴出来的图,航向角波动挺小的~  那你的磁力计静态下稳定么? 我使用你给出的程序, init_mx = ...

很正常,磁场本来就不是恒定的。
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

0

主题

5

帖子

15

积分

实习生

发表于 2013-12-28 14:14 | 显示全部楼层 |返回版面
谢谢楼主.
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

31

主题

2189

帖子

6788

积分

版主

发表于 2013-12-29 23:18 | 显示全部楼层 |返回版面
这个必须顶。飞行器还是有技术含量的。
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

2

主题

3

帖子

67

积分

初级技术员

发表于 2013-12-30 00:54 | 显示全部楼层 |返回版面
楼主您好!请问您的代码在俯仰90度有奇异点吗?谢谢!
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

2

主题

193

帖子

739

积分

高级技术员

 楼主| 发表于 2013-12-30 09:47 | 显示全部楼层 |返回版面
ljs0370 发表于 2013-12-30 00:54
楼主您好!请问您的代码在俯仰90度有奇异点吗?谢谢!

有,请仔细看楼主位的帖子
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

0

主题

58

帖子

190

积分

中级技术员

发表于 2014-1-3 11:37 | 显示全部楼层 |返回版面
楼主,出了板子给寄块玩呗,3Q...
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

0

主题

6

帖子

21

积分

实习生

发表于 2014-1-7 21:26 | 显示全部楼层 |返回版面
谢谢分享
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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