# 什麼是PID控制 PID是「Proportional–Integral–Derivative」的縮寫,是一種「自動控制」的方法,非常廣泛的應用在各個領域中,以達到精確的控制。 我們以機器手臂來做例子,當我們設定了一個終點座標,讓機器手臂移動過去,假如不使用PID控制,雖然機器忠實的執行在終點座標停下的指令,但會因為前進的慣性,機器手臂仍會在超過終點後的位置才停下來,無法很精確的剛好停在終點那個位置上。更糟糕的是,當機器手臂上的距離感測器(sensor)感測到衝過頭了,於是把訊息反饋(feedback)給MCU,MCU便命令手臂往回折返,但折返時卻仍然一樣會衝過頭,於是就變成像鐘擺一樣,在終點附近不斷晃動搖擺,當然這不是我們要的。 若需要比較精確的控制,則要使用PID控制方法。如上例所說,PID的P代表比例、I代表積分、D代表微分。若採用PID控制,則在一開始機器手臂的位置離終點座標還很遠的時候,PID的比例演算法(P)此時會占有比較大的權重。經過比例計算(P)後,由於目前距離較遠,P值還很大,MCU會讓機器手臂以比較快的速度往終點移動,並在快到終點時讓它逐漸慢下來。 而在目前座標與終點座標的差值更加縮小時,積分(PID的I)的計算便逐漸取得更大的權重。這個積分是計算一段時間內與終點座標誤差的總和,愈加接近終點,積分值自然會愈小,機器便可依據這個值來修正移動的速度。 最後,當距離差值更加縮小時,會計算期望值與實際值之間的變化率(PID的D,即微分),當變化率小於某個程度之後(看寫程式的人怎麼設定),MCU便認為機器手臂到達終點了,讓控制手臂移動的馬達完全停止轉動,機器手臂便可以很平順的剛好停在終點。 就像火車一樣,我們知道火車有很大的慣性,所以一定要事先計算距離提早進行剎車動作,才能準確地停在月台上。火車是由駕駛員控制的,所以人腦裡面早就「內建」PID控制法了,只是實在太過自然,我們平常不會特別把它拿出來討論而已。而PID控制就是用電腦來模擬這套作法,以前是用硬體裝置來實現,但現在PID是一套演算法,將程式內容寫在機器的單晶片(MCU、Micro Control Unit)裡面,可以不必加裝額外的硬體。 PID控制方法還有很多變體,例如機器人上坡時,馬達要用比例(P)演算法來加大出力,下坡時則剛好相反,並在接近終點時應用積分(I)演算法提早逐漸停下,並以微分(D)演算法判斷是否確實到達終點。類似的觀念,PID控制方法已經被廣泛的運用在工業製程、建築工程、交通系統、溫度控制、軍事領域、無人飛機、無人駕駛車的研發 … 已經無孔不入的應用了。 要特別注意的是P、I、D這三個值會同時一起被計算,並在不同階段賦予不同的權重,並不會只單純算到一個。至於要怎麼設定PID的權重和參數,則依據不同場合、不同需求、不同工程師來調整設定,沒有絕對的準則,但大致上的觀念就是這樣。