智能车制作

标题: 陀螺仪问题 [打印本页]

作者: 仪124    时间: 2014-9-2 17:19
标题: 陀螺仪问题
[attach]69701[/attach]
大神,怀疑上次的L3G4200坏了,这次换了一个新的,车平躺在地上,白色是输出的陀螺仪波形,请问陀螺仪好这没?多谢。

作者: allenanswerzq    时间: 2014-9-2 18:55
感觉不太对啊。低通滤波配置了没
作者: ccs5433    时间: 2014-9-2 19:03
把放大倍数调小点试试
作者: 头上两只角    时间: 2014-9-2 21:15
虚拟示波器自己做的??????
作者: 2601819196    时间: 2014-9-3 11:49
感觉采集回来的不太对啊。
[attach]69713[/attach]
可以试试这个四通道的示波器上位机
下面是通信协议
[attach]69714[/attach]
我们采集回来是这样的(蓝色的时陀螺仪数据):
[attach]69715[/attach]




作者: 仪124    时间: 2014-9-3 12:16
2601819196 发表于 2014-9-3 11:49
感觉采集回来的不太对啊。

可以试试这个四通道的示波器上位机

多谢岱默科技的支持

作者: 仪124    时间: 2014-9-3 12:17
头上两只角 发表于 2014-9-2 21:15
虚拟示波器自己做的??????

不是,用论坛里一个元老做的

作者: 仪124    时间: 2014-9-3 12:21
allenanswerzq 发表于 2014-9-2 18:55
感觉不太对啊。低通滤波配置了没

白色是陀螺仪采集到的值直接输出,没有经过任何处理。

作者: 仪124    时间: 2014-9-3 12:26
allenanswerzq 发表于 2014-9-2 18:55
感觉不太对啊。低通滤波配置了没

老大,我是直接采集未做处理就直接输出,陀螺仪输出是角速度,按理平躺应该是没有输出才对,但为什么还会有波形产生?老大,我用的是L3G4200,多谢了。

作者: allenanswerzq    时间: 2014-9-3 12:31
仪124 发表于 2014-9-3 12:26
老大,我是直接采集未做处理就直接输出,陀螺仪输出是角速度,按理平躺应该是没有输出才对,但为什么还会 ...

老大。数字芯片你要配置寄存器的。配置成低通滤波输出试试。另外。你设定的变量类型也可能很重要的。

作者: 2601819196    时间: 2014-9-3 12:42
仪124 发表于 2014-9-3 12:16
多谢岱默科技的支持

不客气

作者: 仪124    时间: 2014-9-3 12:46
allenanswerzq 发表于 2014-9-2 18:55
感觉不太对啊。低通滤波配置了没

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

作者: 2601819196    时间: 2014-9-3 12:47
仪124 发表于 2014-9-3 12:26
老大,我是直接采集未做处理就直接输出,陀螺仪输出是角速度,按理平躺应该是没有输出才对,但为什么还会 ...

不知道你算法里面有没有抑制温漂,陀螺仪L3G4200的温漂很大,即使放着不动也会在某一个定值附近上下有大约400左右杂乱的波动。
作者: 仪124    时间: 2014-9-3 12:51
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;     


多谢了。

作者: 仪124    时间: 2014-9-3 12:52
2601819196 发表于 2014-9-3 12:47
不知道你算法里面有没有抑制温漂,陀螺仪L3G4200的温漂很大,即使放着不动也会在某一个定值附近上下有大约 ...

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

作者: 2601819196    时间: 2014-9-3 13:38
仪124 发表于 2014-9-3 12:52
确实如此,我用加速度计抑制温飘,能不能详细介绍一下,多谢了。

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

至于除的240这个数根据具体的陀螺仪来定。

作者: wondre    时间: 2014-9-3 14:51
推荐用visualscope
作者: allenanswerzq    时间: 2014-9-3 15:37
仪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 ,
这是我配置这个陀螺仪的代码。我就用的这个陀螺仪,觉得挺好的。




作者: 仪124    时间: 2014-9-3 15:47
allenanswerzq 发表于 2014-9-3 15:37
这段代码是没有问题的。  i2c_write_reg(l3g4200_i2c,l3g4200_add,L3G_CTRL_REG2,0x00);//高通滤波模式选 ...

多谢老大。

作者: 仪124    时间: 2014-9-3 16:19
wondre 发表于 2014-9-3 14:51
推荐用visualscope

多谢。

作者: 仪124    时间: 2014-9-3 19:45
2601819196 发表于 2014-9-3 13:38
AngleVeloc = -((int)(AngleVelocAD - AngleVeloc_Offset)/240) * 4;
这样可以抑制陀螺仪的零点漂移,, ...

多谢

作者: 仪124    时间: 2014-9-3 19:46
allenanswerzq 发表于 2014-9-3 15:37
这段代码是没有问题的。  i2c_write_reg(l3g4200_i2c,l3g4200_add,L3G_CTRL_REG2,0x00);//高通滤波模式选 ...

多谢,老大

作者: 仪124    时间: 2014-9-3 19:53
仪124 发表于 2014-9-3 19:45
多谢

多问一句,为什么要加  ( int )  这样对互补的精度影响大不,如果不加对抑制温飘影响大不?多谢。

作者: xhyscqcssllw    时间: 2014-9-3 21:15
2601819196 发表于 2014-9-3 11:49
感觉采集回来的不太对啊。

可以试试这个四通道的示波器上位机

感谢分享
作者: 2601819196    时间: 2014-9-3 22:12
仪124 发表于 2014-9-3 19:53
多问一句,为什么要加  ( int )  这样对互补的精度影响大不,如果不加对抑制温飘影响大不?多谢。

主要是抑制零点漂移的这个。(int)好像是多余的。
作者: 仪124    时间: 2014-9-11 17:03
allenanswerzq 发表于 2014-9-3 15:37
这段代码是没有问题的。  i2c_write_reg(l3g4200_i2c,l3g4200_add,L3G_CTRL_REG2,0x00);//高通滤波模式选 ...

[attach]70111[/attach][attach]70112[/attach]
[attach]70113[/attach]
[attach]70114[/attach]


大神,我按你的建议配置低通滤波器,在 定义的CTRL_REG5中
BOOT,FIFO_EN, 保留,HPEN,INT_SEL1,INT_SEL0,OUT_SEL1,OUT_SEL0
HPEN,INT_SEL1,INT_SEL0为滤波器配置全为高时 high-pass ang loew-pass filter are used  for interrupt generation




[attach]70115[/attach]



作者: 仪124    时间: 2014-9-11 17:08
仪124 发表于 2014-9-11 17:03
大神,我按你的建议配置低通滤波器,在 定义的CTRL_REG5中
BOOT,FIFO_EN, 保留,HPEN,INT_SEL1 ...

不好意思,刚才电脑坏了,只说了一半。两个黑色波形图是配置的图   HPEN,INT_SEL1,INT_SEL0 111 或000稳定后的波形,发现变化不大,配制成低通滤波之后波形变化也不大,请问我哪一方面配错了,多谢。
作者: allenanswerzq    时间: 2014-9-11 18:19
仪124 发表于 2014-9-11 17:08
不好意思,刚才电脑坏了,只说了一半。两个黑色波形图是配置的图   HPEN,INT_SEL1,INT_SEL0 111 或000稳定 ...

我也早就忘了啊,以前也是看手册配置的,不过我看你配置怎么有中断呢?

作者: 仪124    时间: 2014-9-11 18:32
allenanswerzq 发表于 2014-9-11 18:19
我也早就忘了啊,以前也是看手册配置的,不过我看你配置怎么有中断呢?

不好意思,配置看错了,原来的程序被格式化,只好再些一遍,请问你调平衡车多久,能否把平衡车的重心做成可在一定范围内可变的,例如加配重,我调平衡车想试一下?

作者: allenanswerzq    时间: 2014-9-11 19:33
仪124 发表于 2014-9-11 18:32
不好意思,配置看错了,原来的程序被格式化,只好再些一遍,请问你调平衡车多久,能否把平衡车的重心做成 ...

重心这块,我也挺失败的,我把E车直接都倒过来装了,在后期就有点不太稳了。建议你找今年强队的技术报告,多看看人家的吧。
作者: q7915239    时间: 2014-11-23 16:28
解决了没??
作者: 仪124    时间: 2014-11-26 18:32
q7915239 发表于 2014-11-23 16:28
解决了没??

多谢,陀螺仪坏之前车基本可以站起,多谢你了
作者: jbb0523    时间: 2015-4-26 10:30
陀螺仪输出的是角速度,那什么输出的是角度呢?kalman滤波器的输入参数不是一个角度一个角速度么?
作者: 荒城ideal    时间: 2017-3-12 20:24
感谢分享,学习了




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2