標(biāo)題: 直流電機(jī)調(diào)速 PID算法出來(lái)的的當(dāng)前速度在設(shè)定速度附近震蕩 [打印本頁(yè)]

作者: w1232    時(shí)間: 2018-5-7 21:48
標(biāo)題: 直流電機(jī)調(diào)速 PID算法出來(lái)的的當(dāng)前速度在設(shè)定速度附近震蕩
PID算法出來(lái)的的當(dāng)前速度在設(shè)定速度附近震蕩
計(jì)算調(diào)速如下
ivoid PID()
{
    p1.e2=tar_spd - speed;           //比例 計(jì)算當(dāng)前誤差,可以粗調(diào)
    p1.vpa=p1.Kp*(p1.e2-p1.e1) //增量式PID計(jì)算
            +p1.Ki*p1.e2
            +p1.Kd*(p1.e2+p1.e0-2*p1.e1);
    p1.vpa=p1.vpa*0.1;//因?yàn)楸壤禂?shù)擴(kuò)大了10倍,所以這里要除掉
    p1.e0=p1.e1;          //把上次誤差給上上次誤差
    p1.e1=p1.e2;  //當(dāng)前誤差給到上次
    p1.pa+=p1.vpa;//調(diào)節(jié)后的量
}

/**************計(jì)算調(diào)速*****************/
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    時(shí)間: 2018-5-9 20:52
沒(méi)有人嗎,有沒(méi)有大神教教
作者: shaye457470072    時(shí)間: 2018-6-6 18:11
你這個(gè)用的增量式PID,控制量其實(shí)是靠積分累加起來(lái)的,但是控制精度應(yīng)該能到1%以內(nèi),應(yīng)該是你的參數(shù)沒(méi)有調(diào)好
作者: shaye457470072    時(shí)間: 2018-6-6 18:13
你這個(gè)應(yīng)該是參數(shù)沒(méi)調(diào)好,用的什么反饋?




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1