這位同學,請先理解PID。在此實驗中,PID是一種算法,所謂P是指計算你測量值與目標值的差值。
假設,你目標值為輸出10V,但目前測量值是1V,則P為10-1,那么我現在直接讓1V+9V不就可以了嘛?
事實上這么做并不可行因為你無法標定準確輸出9V,那么我們可以以1V為單位每次+1V(這里不是標定1V是近似值)這樣+1次測量一次,如以此來需要9次可接近(注意是接近或者超過)10V,這個每次加1則叫做D!D并不是固定的每次加1,而是(10-1)*k,這里K叫做系數,每次取這個值就會無限接近目標值,但無限是相對的,最終(目標值-測量值)*k1會達到趨近于0但大于零,且不等于目標值。這也不是我們想要的,這時候I登場了,它的作用就是修正這個誤差,即累計誤差,多次誤差累計到一定數值則跳變修正最小誤差,這樣就可以使目標值=測量值。這就是PID的含義(個人理解不對之處還請指正)。
實際使用中P有系數KP,D有系數KD,I有系數KI,KP+KD+KI=1
每次PID修正值=P*KP+D*KD+I*KI
D=P*K1
I=∑(目標值-測量值)
這些系數需要你在實驗中確定,KP,KD,KI這三個系數在PID系統中有個名字叫權重。
粗略說了以下個人對PID的理解,希望你能理解PID算法后自行編寫代碼,PID代碼僅僅4行。 |