謝邵春 陳楊 彭友玉 張雯麗 鄭辰雅
摘 要:針對機器人運動控制不精確,如實際轉向與控制轉向有偏差,導致調整麻煩,通常需要傳感器(如使用光電編碼器)進行反饋控制。若輪子直徑不一樣,會造成控制量上的累積誤差。為了解決該問題,設計了一個基于STM32微控制器的機器人運動精確控制系統(tǒng),對由于直徑不同導致的誤差進行標定補償,實現機器人行走,尤其是轉向時角度的精確控制。該設計,以PID為基本控制算法,STM32F4單片機為控制核心,使用其通用定時器的輸入捕獲功能來采集光電編碼器的輸出,進而產生受PID算法控制的PWM脈沖,對直流電機的轉速進行控制,實現機器人精度高的運動性能控制。
關鍵詞:STM32;PID控制;運動精確控制;PWM
中圖分類號:TP242 文獻標志碼:A 文章編號:2095-2945(2018)16-0035-03
Abstract: In view of the imprecise motion control of the robot, such as the deviation between the actual steering and the control steering, which leads to the adjustment trouble, it usually needs the sensor (such as using photoelectric encoder) to carry on the feedback control. If the wheel diameter is different, it will cause the cumulative error on the control quantity. In order to solve this problem, a precise control system of robot motion based on STM32 microcontroller is designed. The error caused by different diameters is calibrated and compensated to realize the precise control of the robot's walking angle, especially when it is steering. This design takes PID as the basic control algorithm and STM32F4 single chip microcomputer as the control core, uses the input and capture function of its universal timer to collect the output of the photoelectric encoder, and then produces the PWM pulse controlled by the PID algorithm. The speed of DC motor is controlled to realize the motion performance control of robot with high precision.
Keywords: STM32; PID control; precise motion control; PWM
引言
直流電動機應用于實際多個領域內,因為它具有較好的調速性能、啟動轉矩大、控制性能優(yōu)等特點[1-2]。單片機的應用使直流調速進入一個更加智能與可靠的新階段[3]。
現有的直流調速系統(tǒng)在應用于機器人行走控制時,一般存在控制不精確的缺點。本設計基于一款性價比高、功耗低的STM32單片機為控制核心,結合PID控制技術,將電機轉速控制作為研究對象,以掃地機器人為依托平臺,微控制器產生的PWM脈沖受PID程序算法控制,以實現對直流電機轉速的控制,同時使用光電編碼器實時測量旋轉的角度,反饋到單片機中,實現角度的閉環(huán)控制,進而實現對機器人轉向活動的精確控制。
1 系統(tǒng)結構
根據設計的目的和要求,給出了如圖1所示的總體系統(tǒng)框圖。圖中STM32單片機為系統(tǒng)的核心控制器件,負責旋轉角度的模糊控制。針對轉向控制,在編程時把每個預定角度對應電機所需旋轉的圈數輸入單片機中,機器人在運轉時,旋轉角度信息通過光電編碼器輸出到單片機輸入捕捉通道內,由高低電平的變化數目,可換算成實際轉過的角度,再與預設定角度對比得出偏差值,用PID算法調整控制STM32單片機中通用定時器的PWM生成模塊,改變PWM脈沖的占空比,再將PWM脈沖送到L298N電機驅動模塊中,控制直流電機轉速。由此可得到電機需要的實時轉速,從而實現機器人轉向角度的精確控制。
2 硬件設計
2.1 STM32F4微控制器
經過分析對比各種型號的微控制器,最終選定了ALIENTEK探索者STM32F4單片機作為此設計的微控制器,選擇理由有:(1)接口種類豐富。開發(fā)板提供多種標準接口,如不同電壓的電源接口,方便外設的供電。(2)功能滿足設計需求。板載多種定時器(如高級定時器TIM1和TIM8,通用定時器TIM2到TIM5)可用于各種用途,包括輸入捕捉,或者生成輸出波形(輸出比較、PWM和帶死區(qū)插入的互補PWM)。
2.2 直流電機驅動模塊
根據設計要求,電機驅動電路使用L298N集成電路。L298N為雙全橋式驅動芯片,其設計可接受標準TTL邏輯電平信號。一個L298N芯片可驅動2個46V,2A以下的電機。驅動電路如圖2所示。OUT1,OUT2和OUT3,OUT4之間可分別接電動機,且可以直接通過接收前段信號來調節(jié)輸出電壓,控制直流電機轉速。ENA,ENB接PWM控制使能端,控制電機的停轉狀態(tài)[4]。
2.3 光電編碼器
作為角度測量模塊,用來反饋當前旋轉角度值,且就本設計而言要求測量精度較高,故選擇具有較高精度的光電編碼器作為角度傳感器,其部分參數分別如表1,表2所示。實物圖如圖3所示。
表1 碼盤技術參數
黃色和藍色的兩根信號線,其輸出為TTL電平信號,可以直接連接單片機。測電機正反轉即用這兩個電平進行區(qū)分。
設AB為信號線,A先有脈沖,證明是正轉;B先有脈沖,證明是反轉。標定時確定好車輪旋轉一圈編碼器輸出高低電平的變化數目,為后面編程控制旋轉角度提供數據。
3 軟件設計
3.1 PID算法
本系統(tǒng)設計的核心算法為PID算法,PID控制原理簡單,是一種穩(wěn)定、使用很廣泛的控制方法。采用增量式PID控制算法控制PWM脈沖的占空比,該算法不需要對誤差進行累加,可以避免計算溢出,防止積分飽和。它根據本次采集的數據與設定值進行比較得出偏差e(k),對偏差進行PID運算,最終利用運算結果改變PWM脈沖的占空比,以實現對電機電壓的調節(jié),進而控制電機轉速。移動機器人的左右兩個輪子由兩個獨立直流電機分別控制,對這兩個電機的PID控制系統(tǒng)結構是相同的。式(1)為增量式PID控制算式:
?駐U(k)=Kp[e(k)-e(k-1)]+Kie(k)+Kd[e(k)-2e(k-1)+e(k-2)](1)
其中,Kp、Ki、Kd分別為比例、積分、微分增益。通過設置合適的參數可達到較好的控制精度。PID控制系統(tǒng)結構如圖4所示
圖中Vin為預定角度值、Vout為實際已旋轉的角度。把每個特定角度對應電機所需旋轉的圈數編程輸入單片機中,在機器人運轉時,用單片機輸入捕捉高低電平的變化,則可知實際已轉過的角度,與預設定角度對比,由PID算法公式算出當前電機需要的轉速,從而達到精確控制角度的目的。
機器人前段平均分布5個紅外線避障傳感器,按相對位置可分為:右側、右上、前方、左上、左側。其中預設障礙情況分為4種,對應角度規(guī)則有:
(1) 無障礙:左側(右側)、前方均無障礙物,規(guī)則為:直行。
(2) A類障礙:右側、右上方有障礙物,規(guī)則為:左轉90°。
(3) B類障礙:左側、左上方有障礙物,規(guī)則為:右轉90°。
(4) C類障礙:左側、右上方均有或前方、左右側均有障礙物,規(guī)則為:右轉180°。
3.2 減少系統(tǒng)誤差的方法
在機器人移動過程中,對控制結果影響比較大的誤差主要是系統(tǒng)誤差。對移動機器人而言系統(tǒng)誤差是無法避免的,在機器人制造裝配完成時就作為一種物理屬性而存在,雖然在之后的使用過程中機器人的一些機械特性會發(fā)生變化,但從總體來看,系統(tǒng)誤差的變化不大,近似可看成一個定值。故可在一開始使用時即進行消除或補償。
在上述系統(tǒng)誤差中,兩個車輪的直徑不同是引起系統(tǒng)誤差的主要因素。針對該系統(tǒng)誤差,有如下的解決方法:在使用前,單獨對兩個車輪分別進行檢查標定,即行走相同的距離或旋轉相同的弧度,觀察光電編碼器旋轉的圈數(角度)是否一致,差值分別是多少,記下后在之后的編程中對其差值進行補償,保證機器人行走時兩個車輪運行同步。
3.3 程序流程圖
在已知補償量的前提下,開始時硬軟件進行初始化,機器人啟動行走,當碰到障礙物時,根據5個紅外傳感器的狀態(tài)執(zhí)行對應的避障程序,開始旋轉預定的角度,此時旋轉角度信息通過光電編碼器輸出到單片機輸入捕捉通道內,由高低電平的變化數目,可換算成實際轉過的角度,再與預設定角度對比得出偏差值,若偏差不為0,則調用PID算法調整控制STM32中通用定時器的PWM生成模塊,改變PWM脈沖的占空比,再將PWM脈沖送到L298N電機驅動模塊中,控制直流電機轉速,控制機器人繼續(xù)旋轉直至角度偏差接近0。之后初始化軟硬件,等待下一次避障控制。PID算法流程圖如圖5所示:
4 結論
基于STM32微控制器的機器人運動精確控制系統(tǒng),對由于直徑不同導致的誤差進行標定補償,實現了機器人行走,尤其是轉向時角度的精確控制。該設計,以PID為電機控制算法,同時使用光電編碼器實時測量旋轉的角度,實現角度的閉環(huán)反饋控制,從而實現機器人轉向角度的較高精度控制。對機器人的運動控制設計具有一定導參考價值。但是對如何降低轉向時的響應延遲時間以及選擇更加合理的PID參數以達到更高的控制精度,還需要做進一步探討。
參考文獻:
[1]徐麗春.基于模糊PID的直流電機控制系統(tǒng)研究[J].煤礦機械,2014,35(08):45.
[2]趙正黎,于惠鈞,張發(fā)明,等.基于模糊PID控制的直流電機調速系統(tǒng)[J].湖南工業(yè)大學學報,2015,29(2):38.
[3]直流電機PID調速系統(tǒng)[D].陜西:陜西理工學院,2012.
[4]尹慧,詹新生.基于單片機控制的角度自動調整系統(tǒng)設計[J].電子設計工程,2012,20(2):132-134.
[5]王國宇.基于STM32的無刷直流電機控制系統(tǒng)設計及仿真研究[D].廣西:廣西師范大學,2016.
[6]張益平.基于PID控制的直流電機調速系統(tǒng)設計[J].2009,9(4):60-61.
[7]史罕初.移動機器人在未知環(huán)境下自定位導航和地圖創(chuàng)建[D].浙江:浙江工業(yè)大學,2006.