标题: 直流电机调速 PID算法出来的的当前速度在设定速度附近震荡 [打印本页]

作者: w1232    时间: 2018-5-7 21:48
标题: 直流电机调速 PID算法出来的的当前速度在设定速度附近震荡
PID算法出来的的当前速度在设定速度附近震荡
计算调速如下
ivoid PID()
{
    p1.e2=tar_spd - speed;           //比例 计算当前误差,可以粗调
    p1.vpa=p1.Kp*(p1.e2-p1.e1) //增量式PID计算
            +p1.Ki*p1.e2
            +p1.Kd*(p1.e2+p1.e0-2*p1.e1);
    p1.vpa=p1.vpa*0.1;//因为比例系数扩大了10倍,所以这里要除掉
    p1.e0=p1.e1;          //把上次误差给上上次误差
    p1.e1=p1.e2;  //当前误差给到上次
    p1.pa+=p1.vpa;//调节后的量
}

/**************计算调速*****************/
void action()
{
    float c;
    if(p1.pa<0)
      c=0;
           else   if(p1.pa<10)
      c=p1.pa*1.67+5;
           else   if(p1.pa<29)
      c=p1.pa*2.5-5;   
        else   if(p1.pa<32)
          c=p1.pa*2.5+2.5;
        else
          c=p1.pa*5-85;
        PWM_val= c;
}



作者: w1232    时间: 2018-5-9 20:52
没有人吗,有没有大神教教
作者: shaye457470072    时间: 2018-6-6 18:11
你这个用的增量式PID,控制量其实是靠积分累加起来的,但是控制精度应该能到1%以内,应该是你的参数没有调好
作者: shaye457470072    时间: 2018-6-6 18:13
你这个应该是参数没调好,用的什么反馈?




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1