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