大致上的架構如下
float Kp , Ki , Kd; // Gain值依控制目標設定
float error_now = 0 , error_pre = 0,error_sum = 0, error_dot = 0;
float P_control = 0, I_control = 0, D_control = 0,control_signal = 0;
float sample_period; // 取樣週期依控制目標設定
//每次取樣後 計算控制輸出
P_control = Kp * error_now;
error_sum = error_now * sample_period + error_sum;
I_control = Ki * error_sum;
D_control = Kd * (error_now - error_pre)/sample_period;
control_signal = P_control + I_control + D_control;
再用control_signal去控制馬達
如果CPU是8-bit單晶片的話 可能就不方便用float
top
|
|