單片機PID控制算法的最簡單程序
/*************定義全局變量*****************/
uchar Kp,Ti,Td
int Set_speed;
/*************PID初始化函數(shù)***************/
void PID_init(void){
Serror=0;
FError=0;
Kp=30;
Ti=500;
Td=10;
}
int PID_control(int Now_speed)
{
int Error,Serror,result;
Error=Now_speed-Set_speed;
Serror=Serror+Error;
result=(Kp*Error+Kp*0.05/Ti*Serror+Kp*Td/0.05*(Error-FError));
FError=Error;
//對占空比進行限幅處理
if(result<10)
{result=0;} else
if(result>1000)
{result=1000;}
return result;
}
評論