『壹』 51單片機實現電動機的PID恆速控制。
這是倒立擺系統的PID控制函數的一部分,你看看有沒有思路
/****************************************************************/
//定義結構體
/****************************************************************/
struct may_PID{
signed long Proportion; //比例 ;調節系數
signed long Integral; //積分 ;調節系數
signed long Derivative; //微分 ;調節系數
signed long SetPoint; //設定值 ;定值
signed long SumError; //偏差積分
signed long PrevError; //之前偏差值
}PID/*此處可放結構體變數名*/;
struct may_PID *pp; //定義結構體類型指針
//pp=malloc(sizeof(struct may_PID)); //為指針變數分配安全的地址空間;sizeof:其為計算位元組長度函數
/*****************************************************************/
/**************************PTD函數**************************************/
signed long PIDCalc(signed long NextPoint/*當前值*/ )
{
signed long dError;
Error = pp->SetPoint - NextPoint;//當前偏差
pp->SumError+=Error; //積分
dError=Error-pp->PrevError;//當前微分=當前偏差-之前偏差
pp->PrevError=Error; //把當前偏差賦予之前偏差變數,使其充當下次取樣的之前偏差
return (long)(pp->Proportion *Error //比例項
+pp->Integral*pp->SumError //積分項
+pp->Derivative*dError); //微分項
}
/*****************************************************************************/