算法模板-PID

2014-11-23 22:08:32 来源: 作者: 浏览: 2
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);
}
-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: