之前的文章,完成了直流減速電機的PWM控制、電機測速。本篇文章,將實現電機的速度閉環控制。
在公眾號:小白學移動機器人,發送:速度PID,即可獲得本篇文章的STM32工程文件以及相關資料。 2.3.1 解決的問題 解決帶編碼器直流電機的速度閉環問題。 2.3.2 PID理論 將偏差的比例、積分、微分,通過線性組合構成控制量,用控制量對被控對象進行控制,這樣的控制器稱為PID控制器。在連續空間中,我們通常探討模擬PID的控制原理,如圖所示:
1.png (8.04 KB, 下載次數: 50)
下載附件
2020-10-4 16:42 上傳
我們這里用電機速度控制為例,講解PID控制系統。r(t)為設定電機速度、y(t)為實際電機速度、e(t)=y(t)-r(t)為速度差值作為PID控制器的輸入、u(t)為PID控制器的輸出,作用到被控對象電機上。根據模擬PID控制器,科學家們也得出了模擬PID控制的公式,如圖所示:
2.png (3.69 KB, 下載次數: 63)
下載附件
2020-10-4 16:42 上傳
其中Kp、Ti、Td,分別為控制器的比例系數、積分系數、微分系數。該理論用在控制的例子比比皆是。但是模擬PID控制系統是在連續空間的上描述的,無法在計算機上用代碼實現。于是就有數字PID控制理論,將連續空間的PID控制系統在離散空間上描述。積分變成了求和、微分變成了求斜率,于是就出現數字PID控制系統的理論公式,如圖所示:
3.png (3.26 KB, 下載次數: 65)
下載附件
2020-10-4 16:42 上傳
其中Kp、Ti、Td和上面描述的一樣,T為采用周期,ek是本次差值,ek-1上一次的差值,直接通過模擬PID轉化的數字PID又叫做位置式PID,該方式的PID的輸出直接是控制量,非常不適合經常出現異常的系統,另外一種方式是增量式PID,每次只輸出一個正向或者反向的調節量,就算出現異常,也不會產生巨大的影響。具體數學公式如下所示:該方法較多的應用于生產生活中,本文檔中電機的速度PID控制當然也不例外。
4.png (10.26 KB, 下載次數: 49)
下載附件
2020-10-4 16:42 上傳
有了上面的理論基礎,開始代碼實現的介紹。首先就是明確增量式PID系統的輸入、輸出、控制對象。將速度的設定值和速度的測得值作為PID控制器的輸入參數,PID的輸出參數為對PWM的調節偏差,控制對象PWM進而驅動電機達到設定速度。以上內容確定之后,就是PID控制器的代碼部分了。其實仔細看看增量式PID就只有一個公式,所以使用代碼實現并不困難。如下所示核心代碼就這一句。
5.png (6.73 KB, 下載次數: 56)
下載附件
2020-10-4 16:42 上傳
完成上面的代碼,只是完成速度PID的一部分,剩下的是尤為重要的PID參數整定。該整定方法豐富多樣,最為準確的是模型計算,但是對于我們做機器人多使用試湊法。雖然需要調節一段時間,但是不需要對機器人進行建模。試湊法一般按照P、I、D的順序進行調節。 初始時刻將Ki和Kd都設置成0,按照經驗設置Kp的初始值,就這樣將系統投入運行,由小到大調節Kp。求得滿意的曲線之后,若要引入積分作用,將Kp設置成之前的5/6,然后Ki由小到大開始調節。達到滿意效果之后,若要引入微分作用,將Kd按照經驗調節即可。經過有規律的試湊,最終達到一個我們滿意的就行。
|