当前位置:编程学习 > C/C++ >>

算法模板-PID

int Error[3]={0,0,0};  
int Pwm;  
int Kp,Ki,Kd;  
int speed[2];  
int base_speed;  
  
void Mot_PID(int now_cnt, int target_cnt)  
{  
    Error[2]=Error[1];  
    Error[1]=Error[0];  
    Error[0] = (target_cnt - now_cnt)>>3;      
      
    Pwm = Pwm + Kp*(Error[0]-Error[1]) + Ki*Error[0] + Kd*(Error[0]-2*Error[1]+Error[2]);  
              
    if (Pwm>0)  
    {  
        if (Error[0] > 11) Pwm=1000;  
        if (Pwm>1000) Pwm=1000;  
        PWMDTY23=Pwm;  
        PWMDTY45=0;  
  
    }  
    else  
    {          
        Pwm = -Pwm;  
       // if (Error[0]<-11) Pwm=1000;   //bang-bang  
        PWMDTY23=0;  
        PWMDTY45=Pwm;  
    }              
}  
  
//*****************电机控制******************  
void Mot_Ctrl(int center_n){  
    int y;  
      
    y=speed[0]*10+(speed[1]-speed[0])*center_n/4; //get target speed  
    Mot_PID(y);  
}  
补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,