康雅微
(天津機(jī)電職業(yè)技術(shù)學(xué)院,天津300131)
移動(dòng)機(jī)器人馬達(dá)的智能控制,使機(jī)器人能夠穩(wěn)定、快速、平滑地行駛和精確地定位。因此,硬件與軟件的選用及配合,就顯得極為重要。本文介紹選用AVR AT mega 128單片機(jī)作為核心控制板、內(nèi)置編碼器的DC馬達(dá)作為驅(qū)動(dòng)、雙路H橋馬達(dá)驅(qū)動(dòng)芯片L298作為單電源H橋電路驅(qū)動(dòng)DC馬達(dá)硬件,能夠簡(jiǎn)化電路,功能全面穩(wěn)定;軟件編寫采用精度為1/10的圓周、PID算法,實(shí)現(xiàn)閉環(huán)控制,使系統(tǒng)更加精確、精準(zhǔn)。
(1)移動(dòng)機(jī)器人馬達(dá)的智能控制過(guò)程。當(dāng)單片機(jī)mega 128發(fā)出信號(hào)后,由于馬達(dá)之前未動(dòng),反饋信號(hào)為0,偏差信號(hào)等于單片機(jī)發(fā)出信號(hào)減去反饋信號(hào),通過(guò)PID(比例積分微分)算法,使單片機(jī)發(fā)出信號(hào)能夠快速、準(zhǔn)確地傳遞給L298芯片,最終控制DC馬達(dá)旋轉(zhuǎn)。由于馬達(dá)內(nèi)置的編碼器,能將旋轉(zhuǎn)的方向和角度以電信號(hào)反饋給單片機(jī)mega 128,如果偏差信號(hào)為0,則說(shuō)明馬達(dá)旋轉(zhuǎn)不能達(dá)到預(yù)設(shè)值,偏差信號(hào)越大,則離預(yù)設(shè)值越遠(yuǎn)。利用這個(gè)偏差信號(hào),最終達(dá)到預(yù)設(shè)值,實(shí)現(xiàn)精確控制。
圖1 機(jī)器人馬達(dá)控制系統(tǒng)框圖
(2)DC(direct current)馬達(dá)。DC(direct current)馬達(dá)應(yīng)用廣泛,由可充電電池供電,攜帶方便,非常適用于移動(dòng)機(jī)器人。機(jī)器人DC馬達(dá)實(shí)際上使用的是DC減速馬達(dá),即在DC馬達(dá)上加上一個(gè)齒輪箱子,隨著DC減速馬達(dá)齒輪比率,來(lái)減少馬達(dá)旋轉(zhuǎn)速度,馬達(dá)轉(zhuǎn)矩增加。根據(jù)齒輪箱子,我們這里選擇的是減速比為1/50、額定轉(zhuǎn)矩為0.19 N·m、旋轉(zhuǎn)速度為102 r/min。4個(gè)馬達(dá)中只有后方的2個(gè)馬達(dá)安裝了磁氣式增量型編碼器,根據(jù)編碼器的輸出脈沖A相、B相的相位差,判斷馬達(dá)的轉(zhuǎn)向:A相為計(jì)數(shù)器,檢測(cè)B相的為L(zhǎng)OW的情況,馬達(dá)按照順時(shí)針旋轉(zhuǎn);若檢測(cè)B相的為HIGH的情況,馬達(dá)按照逆時(shí)針旋轉(zhuǎn)。當(dāng)馬達(dá)旋轉(zhuǎn)1周時(shí),編碼器上發(fā)生13個(gè)脈沖信號(hào),由于馬達(dá)減速比為1/50,所以馬達(dá)旋轉(zhuǎn)1周時(shí)發(fā)生650次脈沖,則馬達(dá)旋轉(zhuǎn)數(shù)為Z/650。
(3)利用獨(dú)立電源控制DC馬達(dá)的正反轉(zhuǎn),H橋型電路是必要的。L298內(nèi)置2路H橋型驅(qū)動(dòng)馬達(dá)電路,最大電源電壓為46 V,能夠驅(qū)動(dòng)2組DC馬達(dá),每一組可流過(guò)2 A的電流。當(dāng)2組被連接到一排時(shí),能流過(guò)的電流高達(dá)4 A,機(jī)器人4個(gè)馬達(dá)中同側(cè)的2個(gè)使用1個(gè)L298 H橋型芯片,4個(gè)馬達(dá)共需2個(gè)芯片即可。
圖2 減速比為1/50馬達(dá)特性
(4)單片機(jī)mega 128中16位定時(shí)器/計(jì)數(shù)器實(shí)現(xiàn)PWM(Pulse Width Modulation)脈沖寬度調(diào)制。脈沖寬度傳輸信號(hào)的變化,取決于PWM調(diào)制方法(保持脈沖的周期不變,只改變高低電平之比),用來(lái)控制馬達(dá)的電壓,進(jìn)而控制馬達(dá)轉(zhuǎn)速。
圖3 PWM調(diào)制方式
(1)PID(比例積分微分)控制機(jī)器人車輪速度保持固定。
操作控制量=KP×誤差+Ki×誤差累積值+Kd×與旋轉(zhuǎn)誤差的差。
其中,KP,Ki,Kd分別為比例、積分時(shí)間、微分時(shí)間常數(shù)。
根據(jù)系統(tǒng)響應(yīng)曲線可得:合理的比例項(xiàng)能實(shí)現(xiàn)減少上升時(shí)間,使車輪盡快達(dá)到目標(biāo)旋轉(zhuǎn)速度;積分項(xiàng)使得超調(diào)量很小,即誤差在最小;微分項(xiàng)是在比例項(xiàng)減少上升時(shí)間的同時(shí),也減小過(guò)沖,并減小趨穩(wěn)時(shí)間。通常控制有PI、PD和PID。以下兩條語(yǔ)句分別是PID控制右輪和左輪轉(zhuǎn)速的指令。
(2)馬達(dá)旋轉(zhuǎn)周數(shù)的細(xì)化。馬達(dá)旋轉(zhuǎn)一周時(shí)發(fā)生650個(gè)脈沖,若要馬達(dá)繼續(xù)旋轉(zhuǎn),只能按650整數(shù)倍,即旋轉(zhuǎn)周數(shù)為整數(shù)。這樣車輪走過(guò)的距離,為車輪圓周的整數(shù)倍,顯然若想讓車輪的距離更短,就有些困難了。這里通過(guò)軟件編程可以實(shí)現(xiàn)1/10圓周的距離。原程序?yàn)間oal_cnt*=650;修改后的一部分程序?yàn)椋?/p>
使用Atmel公司的AVR Studio集成開發(fā)環(huán)境,通過(guò)新建工程建立一個(gè)文件并輸入源程序,選擇所用單片機(jī)型號(hào)及其頻率和優(yōu)化參數(shù),編譯無(wú)誤后,在線串口下載到“機(jī)器人”中。安裝好機(jī)器人電池,即可根據(jù)已下載好的指令穩(wěn)定運(yùn)行,精確定位。
移動(dòng)機(jī)器人馬達(dá)的智能控制,不僅需要以ATmega 128為核心的合理硬件架構(gòu),更需要軟件方面相得益彰的配合,這樣才能發(fā)揮其最大的功能。
[1]梅麗鳳.單片機(jī)原理及接口技術(shù)[M].北京:清華大學(xué)出版社,2006.
[2]李 軍.51系列單片機(jī)高級(jí)實(shí)例開發(fā)指南[M].北京:北京航空航天大學(xué)出版社,2004.
[3]金鐘夫.AVR ATmega128單片機(jī)C程序設(shè)計(jì)與實(shí)踐[M].北京:北京航空航天大學(xué)出社,2007.