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