智能车制作

标题: 智能车PID速度控制问题 [打印本页]

作者: renpeiyong9255    时间: 2011-3-31 17:03
标题: 智能车PID速度控制问题
大家好,下面是我的闭环速度控制pID子函数 大家认真看下帮忙解决下问题,先谢谢啦、、、
uint Setpoint=0;           //电机定义
uint Feedback=0;
float Kp=0.8;                      //比例常数
float Ki=0;                      //积分常数
float Kd=0;                      //微分常数
sint EE0=0;                      //当前误差
sint EE1=0;                      //前一次误差
sint EE2=0;                      //前前一次的误差
sint dianji1,dianji0;
float Zengliang;
int Dianji(int b,int c)                //电机PID
{
    EE0=b-c;                                        //增量计算     
    Zengliang=Kp*(EE0-EE1)+Ki*EE0+Kd*(EE0-2*EE1+EE2);
    dianji0=dianji1+Zengliang;
    EE2=EE1;                                       //存储误差,用于下次计算
    EE1=EE0;
    dianji1=dianji0;
    if(dianji0>=960)                               //电机占空比幅值
    dianji0=960;
    if(dianji0<0)
    dianji0=0;
    return dianji0;
}
我用的是PIT定时中断(定时了5ms)
Feedback=PACNT(5ms产生的脉冲数)这样n1(编码器齿轮转速)=60*Feedback/(0.005*200),电机齿轮与的齿数比为24:18,那么电机转速n2=(18/24)*n1,n2/15300=反馈的占空比/1200,算下来是7*Feedback/20,那么就可以用PWMDTY45=Dianji(Setpoint,7*Feedback)来控制电机的输出占空比了,但是经过调解PID参数却得不到理想的结果,不知道是怎么回事,电机的输出跳变很大,不稳定,而且不符合理想值
大家看看我的程序和思路对吗?麻烦大家了。。。谢谢




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