智能车制作

 找回密码
 注册

扫一扫,访问微社区

楼主: 仪124
打印 上一主题 下一主题

陀螺仪问题

  [复制链接]

38

主题

276

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3032
威望
1999
贡献
135
兑换币
1253
注册时间
2013-1-25
在线时间
449 小时
11#
发表于 2014-9-3 12:42:44 | 只看该作者
仪124 发表于 2014-9-3 12:16
多谢岱默科技的支持

不客气
回复 支持 反对

使用道具 举报

23

主题

241

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1405
威望
717
贡献
428
兑换币
453
注册时间
2014-2-6
在线时间
130 小时
12#
 楼主| 发表于 2014-9-3 12:46:01 | 只看该作者
allenanswerzq 发表于 2014-9-2 18:55
感觉不太对啊。低通滤波配置了没

大神,我用的是互补滤波,低通滤波应该指的是调整加速度计系数对不对?
回复 支持 反对

使用道具 举报

38

主题

276

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3032
威望
1999
贡献
135
兑换币
1253
注册时间
2013-1-25
在线时间
449 小时
13#
发表于 2014-9-3 12:47:53 | 只看该作者
仪124 发表于 2014-9-3 12:26
老大,我是直接采集未做处理就直接输出,陀螺仪输出是角速度,按理平躺应该是没有输出才对,但为什么还会 ...

不知道你算法里面有没有抑制温漂,陀螺仪L3G4200的温漂很大,即使放着不动也会在某一个定值附近上下有大约400左右杂乱的波动。
回复 支持 反对

使用道具 举报

23

主题

241

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1405
威望
717
贡献
428
兑换币
453
注册时间
2014-2-6
在线时间
130 小时
14#
 楼主| 发表于 2014-9-3 12:51:04 | 只看该作者
allenanswerzq 发表于 2014-9-3 12:31
老大。数字芯片你要配置寄存器的。配置成低通滤波输出试试。另外。你设定的变量类型也可能很重要的。

老大,L3G4200的寄存器配置了,安他发的资料上配的。加速度计,陀螺仪所有相关的变量类型都是float,互补滤波也一样。同学之前全为int,显示的要好一些,只是没有浮点运算。是不是我的程序有问题?



        float i = 0.98;//0.98

         陀螺仪采集
         Gyro_Collect = (L3G4200D_GetData(OUT_X_H,OUT_X_L))*0.007;
        加速度计采集       
         Accelera_Collect = ADC_GetConversionValue(ADC0_SE14_PC0);
        加速度计处理
         Accelera_Calibration=(Accelera_Collect - Accelera_OFFSET)* Accelera_ANGLE_RATIO;
         互补滤波片
         Complement= i * ( Complement+Gyro_Collect*0.01 ) + (1 - i) * Accelera_Calibration;     


多谢了。
回复 支持 反对

使用道具 举报

23

主题

241

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1405
威望
717
贡献
428
兑换币
453
注册时间
2014-2-6
在线时间
130 小时
15#
 楼主| 发表于 2014-9-3 12:52:18 | 只看该作者
2601819196 发表于 2014-9-3 12:47
不知道你算法里面有没有抑制温漂,陀螺仪L3G4200的温漂很大,即使放着不动也会在某一个定值附近上下有大约 ...

确实如此,我用加速度计抑制温飘,能不能详细介绍一下,多谢了。
回复 支持 反对

使用道具 举报

38

主题

276

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3032
威望
1999
贡献
135
兑换币
1253
注册时间
2013-1-25
在线时间
449 小时
16#
发表于 2014-9-3 13:38:46 | 只看该作者
仪124 发表于 2014-9-3 12:52
确实如此,我用加速度计抑制温飘,能不能详细介绍一下,多谢了。

AngleVeloc = -((int)(AngleVelocAD - AngleVeloc_Offset)/240) * 4;
这样可以抑制陀螺仪的零点漂移,,使得陀螺仪静止不动是角速度输出为0,不过降低了陀螺仪原先的灵敏度,不过相对于ENC-03来说还是要高。

至于除的240这个数根据具体的陀螺仪来定。
回复 支持 反对

使用道具 举报

2

主题

74

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1484
威望
663
贡献
387
兑换币
439
注册时间
2013-11-16
在线时间
217 小时
17#
发表于 2014-9-3 14:51:11 | 只看该作者
推荐用visualscope
回复 支持 反对

使用道具 举报

6

主题

618

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6491
威望
3362
贡献
527
兑换币
2332
注册时间
2013-8-31
在线时间
1301 小时
18#
发表于 2014-9-3 15:37:28 | 只看该作者
仪124 发表于 2014-9-3 12:51
老大,L3G4200的寄存器配置了,安他发的资料上配的。加速度计,陀螺仪所有相关的变量类型都是float,互补滤 ...

这段代码是没有问题的。  i2c_write_reg(l3g4200_i2c,l3g4200_add,L3G_CTRL_REG2,0x00);//高通滤波模式选择   i2c_write_reg(l3g4200_i2c,l3g4200_add,L3G_CTRL_REG3,0x00); //数据准备
   i2c_write_reg(l3g4200_i2c,l3g4200_add,L3G_CTRL_REG4,0x20);//2000dps //0xA0
   i2c_write_reg(l3g4200_i2c,l3g4200_add,L3G_CTRL_REG5,0x02);//低通滤波  重要
   i2c_write_reg(l3g4200_i2c,l3g4200_add,L3G_CTRL_REG1,0xcf);//数据输出速率800hz,,使能三轴输出  //0xCF ,
这是我配置这个陀螺仪的代码。我就用的这个陀螺仪,觉得挺好的。



回复 支持 反对

使用道具 举报

23

主题

241

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1405
威望
717
贡献
428
兑换币
453
注册时间
2014-2-6
在线时间
130 小时
19#
 楼主| 发表于 2014-9-3 15:47:00 | 只看该作者
allenanswerzq 发表于 2014-9-3 15:37
这段代码是没有问题的。  i2c_write_reg(l3g4200_i2c,l3g4200_add,L3G_CTRL_REG2,0x00);//高通滤波模式选 ...

多谢老大。
回复 支持 反对

使用道具 举报

23

主题

241

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1405
威望
717
贡献
428
兑换币
453
注册时间
2014-2-6
在线时间
130 小时
20#
 楼主| 发表于 2014-9-3 16:19:00 | 只看该作者
wondre 发表于 2014-9-3 14:51
推荐用visualscope

多谢。
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2025-1-12 23:32 , Processed in 0.088891 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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