| 大致上的架構如下
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
                                        
  | 
                                     
                                  |