智能车制作

标题: 直立车的速度环计算 [打印本页]

作者: nfdianzi    时间: 2014-4-12 00:33
标题: 直立车的速度环计算
直立车的速度环中
但是速度环的运算过程中,浮点型数乘以比1.0小的数,结果会变成几万多,不解
(用虚拟示波器来看的)
比如,用官方的代码,
g_fCarSpeed=(g_nLeftMotorPulseSigma+g_nRightMotorPulseSigma)*0.5;
欧姆龙的编码器,
nLeftMotorPulseSigma和g_nRightMotorPulseSigma是正交解码得到的速度,
相加的结果还是正常的,但是乘以0.5之后就结果就变得很大(用虚拟示波器看的),
是数据溢出之类的问题吗?


作者: 直立摄像头    时间: 2014-4-12 08:44
我也遇到这样的问题,还在找原因
作者: huang91    时间: 2014-4-12 10:52
改成   g_fCarSpeed=(g_nLeftMotorPulseSigma+g_nRightMotorPulseSigma)>>1;
作者: nfdianzi    时间: 2014-4-12 12:04
但是后面乘以p参数和乘以i参数的时候,还是会遇到类似的问题,就是结果飚得很大
作者: nfdianzi    时间: 2014-4-12 12:17
fP=fDelta*SPEED_CONTROL_P; //比例控制      
fI=fDelta*SPEED_CONTROL_I; //积分控制
也就是这里,fDelta是一个很正常的数,但是乘上SPEED_CONTROL_P或者SPEED_CONTROL_I这些小于1的数以后,结果还是编程了上万
作者: nfdianzi    时间: 2014-4-12 12:19
这是我使用正交解码的代码
    g_nLeftMotorPulseSigma=FTM1_CNT;
    FTM1_CNT=0;
    g_nRightMotorPulseSigma=FTM2_CNT;
    FTM2_CNT=0;
就是一个简单的赋值和清零,这样对吗?
作者: 南宫封枫    时间: 2014-4-12 12:41
g_fCarSpeed=((float)(g_nLeftMotorPulseSigma+g_nRightMotorPulseSigma))*0.5; 这样试一下
作者: nfdianzi    时间: 2014-4-12 15:08
乘以小于1的数和除以大于一的数都不行
作者: 刘德华    时间: 2017-4-24 09:21
有确切的解决方法吗 我们也遇到了这个问题,不知道改什么。




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