楊 進(jìn),劉麗華
(廣州鐵路職業(yè)技術(shù)學(xué)院,廣州510430)
智能移動(dòng)機(jī)器人集成了機(jī)械、電子、計(jì)算機(jī)、自動(dòng)控制、人工智能等多學(xué)科的研究成果,在當(dāng)前機(jī)器人研究領(lǐng)域具有突出地位[1]。其執(zhí)行元件的伺服系統(tǒng)的性能將決定機(jī)器人的性能,伺服系統(tǒng)的開發(fā)也是機(jī)器人開發(fā)過程中難度最大的。目前,應(yīng)用于移動(dòng)機(jī)器人的執(zhí)行元件有步進(jìn)電機(jī)、有刷直流電機(jī)和無刷直流電機(jī)。步進(jìn)電機(jī)多建立開環(huán)控制,對(duì)負(fù)載的變化不能做出響應(yīng),只適合于開發(fā)平地使用的機(jī)器人。直流電機(jī)具有更好的機(jī)械特性,與光電編碼器配合使用建立伺服控制閉環(huán)能在一定的負(fù)載范圍內(nèi)實(shí)現(xiàn)自動(dòng)調(diào)節(jié)電機(jī)電樞電壓。
ATmega8L微處理器是一款高性能、低功耗的8位AVR微處理器,采用先進(jìn)的 RISC結(jié)構(gòu)[2]。ATmega8L具有:8K字節(jié)的系統(tǒng)內(nèi)可編程Flash,擦寫壽命達(dá)10000次;512字節(jié)的EEPROM,擦寫壽命達(dá)100000次;1K字節(jié)的片內(nèi)SRAM;兩個(gè)具有獨(dú)立預(yù)分頻器的8位定時(shí)器/計(jì)數(shù)器,其中之一有比較功能;一個(gè)具有預(yù)分頻器、比較功能和捕捉功能的16位定時(shí)器/計(jì)數(shù)器;6路10位逐次比較式ADC(PDIP封裝);獨(dú)立振蕩器的實(shí)時(shí)計(jì)數(shù)器 RTC;三通道PWM;兩個(gè)可編程的串行USART等[3]。
采用ATmega8L微處理器作為智能移動(dòng)機(jī)器人的控制核心,采用光電編碼器、光纖放大器、光電開關(guān)等傳感器作為信息反饋器件,基于嵌入式分層控制方法,設(shè)計(jì)出移動(dòng)機(jī)器人的控制系統(tǒng)。采用AVR-GCC編譯軟件[4]編程,實(shí)現(xiàn)該機(jī)器人能夠在不被干預(yù)的情況下,自動(dòng)找到運(yùn)行的路徑,并在行進(jìn)的過程中自動(dòng)避開障礙物,體現(xiàn)出一定的智能性。同時(shí),通過遙控模塊還可以實(shí)現(xiàn)人工遙控模式的運(yùn)行方式。下面將詳細(xì)介紹機(jī)器人控制系統(tǒng)的結(jié)構(gòu)重點(diǎn),并重點(diǎn)介紹機(jī)器人執(zhí)行元件的伺服系統(tǒng)。
移動(dòng)機(jī)器人的控制系統(tǒng)采用嵌入式分層控制[5]的系統(tǒng)結(jié)構(gòu):主、從控制器都是采用ATmega8L微處理器;主控制器接收控制指令,并采集光纖放大器和光電開關(guān)所反饋的環(huán)境信息,經(jīng)過一系列的邏輯處理,得到對(duì)應(yīng)的電機(jī)速度控制值;從機(jī)則接收主機(jī)所傳給的速度目標(biāo)值,并實(shí)時(shí)控制電機(jī)的轉(zhuǎn)動(dòng)速度;在兩級(jí)控制間通過DMX512串行通信協(xié)議[6],實(shí)現(xiàn)數(shù)據(jù)準(zhǔn)確穩(wěn)定地傳輸。
如圖1所示,左側(cè)結(jié)構(gòu)框圖為信息管理層的結(jié)構(gòu)。左側(cè)光纖放大器和右側(cè)光纖放大器分別反饋回一個(gè)模擬量信號(hào),該信號(hào)將隨所探測到的顏色變化而變化。ATmega8L微處理器通過內(nèi)部10位模數(shù)轉(zhuǎn)換器采集這兩個(gè)信號(hào),并轉(zhuǎn)換成數(shù)字量。設(shè)定一個(gè)閥值,微處理器將分別對(duì)高于和低于該閥值的信號(hào)賦予一個(gè)邏輯量,用于區(qū)別軌跡區(qū)域和背景區(qū)域,從而識(shí)別出運(yùn)行的軌跡。而光電開關(guān)將發(fā)射紅外線,經(jīng)障礙物反射,被傳感器檢測到,從而發(fā)生開關(guān)信號(hào)的變化,微處理器將根據(jù)邏輯陣列確定障礙物相對(duì)機(jī)器人的方向,并調(diào)用避障子程序躲避該障礙物。另外遙控模塊將向主控制器傳遞遙控指令,主要包括速度的設(shè)置和運(yùn)行模式的切換等。
右側(cè)結(jié)構(gòu)圖為伺服控制層,存在一個(gè)速度控制閉環(huán)。伺服控制系統(tǒng)的執(zhí)行元件為無刷直流旋轉(zhuǎn)電機(jī),系統(tǒng)的控制量是電機(jī)的轉(zhuǎn)速。反饋元件采用旋轉(zhuǎn)式光電編碼器,反饋信號(hào)為光電編碼器的脈沖信號(hào)(A、B兩相)。以ATmega8L微處理器作為計(jì)算控制單元,并在程序中設(shè)定速度采樣頻率為2KHz左右。在每個(gè)采樣周期內(nèi),微處理器計(jì)數(shù)編碼器反饋的脈沖數(shù)。通過比較A、B兩相脈沖狀態(tài)的變化并計(jì)數(shù)脈沖數(shù),得到實(shí)時(shí)的速度值,再與目標(biāo)速度數(shù)據(jù)比較,經(jīng)過離散PID調(diào)解器計(jì)算,求得對(duì)電機(jī)的控制字。該控制字將修改單片機(jī)輸出的PWM信號(hào)的占空比值,并通過OC1A和OC1B引腳輸出兩路PWM信號(hào)。經(jīng)過對(duì)應(yīng)的兩路H橋驅(qū)動(dòng)電路[7]放大后,改變了兩路電機(jī)的電樞電壓有效值,從而實(shí)現(xiàn)速度的閉環(huán)控制。
圖1 機(jī)器人控制系統(tǒng)的結(jié)構(gòu)
圖2為伺服系統(tǒng)的控制電路。其中,系統(tǒng)供電為12伏直流電源,12伏電壓是作為電機(jī)的驅(qū)動(dòng)電壓。12伏電壓通過三端穩(wěn)壓塊LM7805[8]可以獲得穩(wěn)定的5伏電壓,為ATmega8L微處理器和伺服電機(jī)的光電編碼器提供額定的工作電壓。
ATmega8L微處理器使用8M赫茲晶振作為時(shí)鐘源,采用上電復(fù)位方式。ATmega8L微處理器作為控制核心,通過INT0和PD4引腳接收左側(cè)伺服電機(jī)的反饋信號(hào),通過INT1和PD5接收右側(cè)電機(jī)的反饋信號(hào);并通過 OC1A和OC1B引腳輸出兩路PWM信號(hào),通過PC0和PC1輸出電機(jī)的方向控制信號(hào)。并且,微處理器通過RXD、TXD引腳和主控制層的控制器實(shí)現(xiàn)串行通信,接收主控制層發(fā)送的電機(jī)速度目標(biāo)值,并向主控制層返回電機(jī)的運(yùn)行實(shí)時(shí)情況。在電路中,每路信號(hào)都外接上拉電阻。另外,并設(shè)計(jì)有ISP接口,可以使用通用的AVR ISP編程器很方便地下載程序。
機(jī)器人采用直流電機(jī)驅(qū)動(dòng),并通過相對(duì)式旋轉(zhuǎn)光電編碼器反饋位置信號(hào)。光電編碼器采用的是HEDS-5540型號(hào),為500線,輸出A、B、Z三相TTL信號(hào),其中A、B兩相信號(hào)相差1/4周期,如圖3所示。左側(cè)光電編碼器的A相信號(hào)與INT0(INT1)相連,B相信號(hào)則與PD4(PD5)連接,右側(cè)光電編碼器的A相信號(hào)與INT1相連,B相信號(hào)則與PD5連接。微控制器通過A相信號(hào)上升沿觸發(fā)外部中斷,其外部中斷初始化程序?yàn)?
MCUCR=0x0f;
GICR=0xc0;
圖2 伺服系統(tǒng)的控制電路
圖3 編碼器TTL信號(hào)
外部中斷子程序則對(duì)反饋的A、B信號(hào)進(jìn)行計(jì)數(shù),獲得速度值,其流程圖如4所示。
圖4 定時(shí)器0比較中斷子程序流程圖
速度的采樣時(shí)間為0.5ms,由八位計(jì)時(shí)/計(jì)數(shù)器2的溢出中斷設(shè)定。每次執(zhí)行溢出中斷子程序,都初始化速度值為0。
微控制器通過串行通信,接收到信息管理層傳送的電機(jī)速度目標(biāo)值(V_object)。電機(jī)當(dāng)前速度值(V_current)與目標(biāo)值的偏差(Δei)作為變量,經(jīng)過PI調(diào)節(jié)器的運(yùn)算,得到電機(jī)電樞電壓[9]的有效值ui,該值將直接改變輸出PWM信號(hào)的占空比。
其中,KP為比例增益,KI為積分增益。
本文使用 Ziegler-Nichols方法整定 KP、KI的取值。該方法整定比例增益KP的思想是,首先置KI=0,然后增加KP直至系統(tǒng)開始震蕩,并記錄系統(tǒng)震蕩頻率ωm,將所得KP值乘以0.6,即為整定后的比例增益KP。KI的整定公式為:
由于電機(jī)最大轉(zhuǎn)速的限制和積分項(xiàng)的存在,在伺服控制中,將出現(xiàn)“飽和”現(xiàn)象[10],控制量被限制在一個(gè)有限的范圍內(nèi),即umin≤u≤umax。積分飽和將導(dǎo)致超調(diào)量和系統(tǒng)的調(diào)節(jié)時(shí)間增加。本文中,采用了積分分離法來解決。
積分分離法的基本思路是,當(dāng)偏差大于某個(gè)規(guī)定的門限值時(shí),取消積分作用,從而使積分不至于過大。只有當(dāng)Δei較小時(shí),才引入積分作用,以消除靜態(tài)誤差。其算法公式(1)變換為:
式中,稱KL為邏輯系數(shù)
按電路圖完成系統(tǒng)控制電路的制作。如圖5所示,機(jī)器人通過車載蓄電池供電,由兩塊控制電路板控制,一塊為按圖2所設(shè)計(jì)的信息控制電路,另一塊為伺服控制電路。使用WinAVR軟件按流程圖編寫好程序后,通過ISP下載線將機(jī)器碼分別下載到兩個(gè)ATmega8L微處理器中。在圖5中,a圖為機(jī)器人自動(dòng)沿黃色描繪的跡線運(yùn)動(dòng),b圖為機(jī)器人自動(dòng)沿著墻體運(yùn)行。
基于AVR微控制器開發(fā)出一臺(tái)智能移動(dòng)機(jī)器人,實(shí)驗(yàn)結(jié)果顯示機(jī)器人能夠可靠地自動(dòng)避開障礙物并找到自己運(yùn)行的目標(biāo)。通過伺服驅(qū)動(dòng),機(jī)器人能平穩(wěn)較快速地前行,還具有清晰的控制系統(tǒng)結(jié)構(gòu),而且開發(fā)的成本低廉,所以該機(jī)器人的技術(shù)尤其適用于開發(fā)自動(dòng)化教學(xué)設(shè)備。同時(shí),該機(jī)器人技術(shù)還可以廣泛應(yīng)用于其他自動(dòng)設(shè)備的開發(fā)。
[1]徐國華,譚民.移動(dòng)機(jī)器人的發(fā)展現(xiàn)狀及其趨勢[J].機(jī)器人技術(shù)與應(yīng)用,2001(3):7-14.
[2]徐玉,韓波,李平.基于AVR的舵機(jī)控制其設(shè)計(jì)[J].工業(yè)控制計(jì)算機(jī),2004(11):38-40.
[3]ATmega8芯片數(shù)據(jù)官方手冊(cè)[DB/OL].http://www.atmel.com/.
[4]馬潮,詹衛(wèi)前,耿德根.ATmega8原理及應(yīng)用手冊(cè)[M].北京:清華大學(xué)出版社,2003.
[5]韓大鵬,韋慶.機(jī)器人控制器的一種模塊化設(shè)計(jì)方法[J].微計(jì)算機(jī)信息,2005(5):3 -4.
[6]趙文峰.控制系統(tǒng)設(shè)計(jì)與仿真[M].西安:西安電子科技大學(xué)出版社,2002.
[7]何希才,姜余祥.電動(dòng)機(jī)控制電路應(yīng)用實(shí)例[M].北京:中國電力出版社,2005.
[8]閻石.數(shù)字電子技術(shù)基礎(chǔ)[M].北京:高等教育出版社,1998.
[9]從爽,李澤湘.實(shí)用運(yùn)動(dòng)控制技術(shù)[M].北京:電子工業(yè)出版社,2006.
[10]楊樹興,李擎,蘇中,等.計(jì)算機(jī)控制系統(tǒng)[M].北京:機(jī)械工業(yè)出版社,2006.