楊 進,劉麗華
(廣州鐵路職業技術學院,廣州510430)
智能移動機器人集成了機械、電子、計算機、自動控制、人工智能等多學科的研究成果,在當前機器人研究領域具有突出地位[1]。其執行元件的伺服系統的性能將決定機器人的性能,伺服系統的開發也是機器人開發過程中難度最大的。目前,應用于移動機器人的執行元件有步進電機、有刷直流電機和無刷直流電機。步進電機多建立開環控制,對負載的變化不能做出響應,只適合于開發平地使用的機器人。直流電機具有更好的機械特性,與光電編碼器配合使用建立伺服控制閉環能在一定的負載范圍內實現自動調節電機電樞電壓。
ATmega8L微處理器是一款高性能、低功耗的8位AVR微處理器,采用先進的 RISC結構[2]。ATmega8L具有:8K字節的系統內可編程Flash,擦寫壽命達10000次;512字節的EEPROM,擦寫壽命達100000次;1K字節的片內SRAM;兩個具有獨立預分頻器的8位定時器/計數器,其中之一有比較功能;一個具有預分頻器、比較功能和捕捉功能的16位定時器/計數器;6路10位逐次比較式ADC(PDIP封裝);獨立振蕩器的實時計數器 RTC;三通道PWM;兩個可編程的串行USART等[3]。
采用ATmega8L微處理器作為智能移動機器人的控制核心,采用光電編碼器、光纖放大器、光電開關等傳感器作為信息反饋器件,基于嵌入式分層控制方法,設計出移動機器人的控制系統。采用AVR-GCC編譯軟件[4]編程,實現該機器人能夠在不被干預的情況下,自動找到運行的路徑,并在行進的過程中自動避開障礙物,體現出一定的智能性。同時,通過遙控模塊還可以實現人工遙控模式的運行方式。下面將詳細介紹機器人控制系統的結構重點,并重點介紹機器人執行元件的伺服系統。
移動機器人的控制系統采用嵌入式分層控制[5]的系統結構:主、從控制器都是采用ATmega8L微處理器;主控制器接收控制指令,并采集光纖放大器和光電開關所反饋的環境信息,經過一系列的邏輯處理,得到對應的電機速度控制值;從機則接收主機所傳給的速度目標值,并實時控制電機的轉動速度;在兩級控制間通過DMX512串行通信協議[6],實現數據準確穩定地傳輸。
如圖1所示,左側結構框圖為信息管理層的結構。左側光纖放大器和右側光纖放大器分別反饋回一個模擬量信號,該信號將隨所探測到的顏色變化而變化。ATmega8L微處理器通過內部10位模數轉換器采集這兩個信號,并轉換成數字量。設定一個閥值,微處理器將分別對高于和低于該閥值的信號賦予一個邏輯量,用于區別軌跡區域和背景區域,從而識別出運行的軌跡。而光電開關將發射紅外線,經障礙物反射,被傳感器檢測到,從而發生開關信號的變化,微處理器將根據邏輯陣列確定障礙物相對機器人的方向,并調用避障子程序躲避該障礙物。另外遙控模塊將向主控制器傳遞遙控指令,主要包括速度的設置和運行模式的切換等。
右側結構圖為伺服控制層,存在一個速度控制閉環。伺服控制系統的執行元件為無刷直流旋轉電機,系統的控制量是電機的轉速。反饋元件采用旋轉式光電編碼器,反饋信號為光電編碼器的脈沖信號(A、B兩相)。以ATmega8L微處理器作為計算控制單元,并在程序中設定速度采樣頻率為2KHz左右。在每個采樣周期內,微處理器計數編碼器反饋的脈沖數。通過比較A、B兩相脈沖狀態的變化并計數脈沖數,得到實時的速度值,再與目標速度數據比較,經過離散PID調解器計算,求得對電機的控制字。該控制字將修改單片機輸出的PWM信號的占空比值,并通過OC1A和OC1B引腳輸出兩路PWM信號。經過對應的兩路H橋驅動電路[7]放大后,改變了兩路電機的電樞電壓有效值,從而實現速度的閉環控制。

圖1 機器人控制系統的結構
圖2為伺服系統的控制電路。其中,系統供電為12伏直流電源,12伏電壓是作為電機的驅動電壓。12伏電壓通過三端穩壓塊LM7805[8]可以獲得穩定的5伏電壓,為ATmega8L微處理器和伺服電機的光電編碼器提供額定的工作電壓。
ATmega8L微處理器使用8M赫茲晶振作為時鐘源,采用上電復位方式。ATmega8L微處理器作為控制核心,通過INT0和PD4引腳接收左側伺服電機的反饋信號,通過INT1和PD5接收右側電機的反饋信號;并通過 OC1A和OC1B引腳輸出兩路PWM信號,通過PC0和PC1輸出電機的方向控制信號。并且,微處理器通過RXD、TXD引腳和主控制層的控制器實現串行通信,接收主控制層發送的電機速度目標值,并向主控制層返回電機的運行實時情況。在電路中,每路信號都外接上拉電阻。另外,并設計有ISP接口,可以使用通用的AVR ISP編程器很方便地下載程序。
機器人采用直流電機驅動,并通過相對式旋轉光電編碼器反饋位置信號。光電編碼器采用的是HEDS-5540型號,為500線,輸出A、B、Z三相TTL信號,其中A、B兩相信號相差1/4周期,如圖3所示。左側光電編碼器的A相信號與INT0(INT1)相連,B相信號則與PD4(PD5)連接,右側光電編碼器的A相信號與INT1相連,B相信號則與PD5連接。微控制器通過A相信號上升沿觸發外部中斷,其外部中斷初始化程序為:
MCUCR=0x0f;
GICR=0xc0;

圖2 伺服系統的控制電路

圖3 編碼器TTL信號
外部中斷子程序則對反饋的A、B信號進行計數,獲得速度值,其流程圖如4所示。

圖4 定時器0比較中斷子程序流程圖
速度的采樣時間為0.5ms,由八位計時/計數器2的溢出中斷設定。每次執行溢出中斷子程序,都初始化速度值為0。
微控制器通過串行通信,接收到信息管理層傳送的電機速度目標值(V_object)。電機當前速度值(V_current)與目標值的偏差(Δei)作為變量,經過PI調節器的運算,得到電機電樞電壓[9]的有效值ui,該值將直接改變輸出PWM信號的占空比。

其中,KP為比例增益,KI為積分增益。
本文使用 Ziegler-Nichols方法整定 KP、KI的取值。該方法整定比例增益KP的思想是,首先置KI=0,然后增加KP直至系統開始震蕩,并記錄系統震蕩頻率ωm,將所得KP值乘以0.6,即為整定后的比例增益KP。KI的整定公式為:

由于電機最大轉速的限制和積分項的存在,在伺服控制中,將出現“飽和”現象[10],控制量被限制在一個有限的范圍內,即umin≤u≤umax。積分飽和將導致超調量和系統的調節時間增加。本文中,采用了積分分離法來解決。
積分分離法的基本思路是,當偏差大于某個規定的門限值時,取消積分作用,從而使積分不至于過大。只有當Δei較小時,才引入積分作用,以消除靜態誤差。其算法公式(1)變換為:

式中,稱KL為邏輯系數

按電路圖完成系統控制電路的制作。如圖5所示,機器人通過車載蓄電池供電,由兩塊控制電路板控制,一塊為按圖2所設計的信息控制電路,另一塊為伺服控制電路。使用WinAVR軟件按流程圖編寫好程序后,通過ISP下載線將機器碼分別下載到兩個ATmega8L微處理器中。在圖5中,a圖為機器人自動沿黃色描繪的跡線運動,b圖為機器人自動沿著墻體運行。

基于AVR微控制器開發出一臺智能移動機器人,實驗結果顯示機器人能夠可靠地自動避開障礙物并找到自己運行的目標。通過伺服驅動,機器人能平穩較快速地前行,還具有清晰的控制系統結構,而且開發的成本低廉,所以該機器人的技術尤其適用于開發自動化教學設備。同時,該機器人技術還可以廣泛應用于其他自動設備的開發。
[1]徐國華,譚民.移動機器人的發展現狀及其趨勢[J].機器人技術與應用,2001(3):7-14.
[2]徐玉,韓波,李平.基于AVR的舵機控制其設計[J].工業控制計算機,2004(11):38-40.
[3]ATmega8芯片數據官方手冊[DB/OL].http://www.atmel.com/.
[4]馬潮,詹衛前,耿德根.ATmega8原理及應用手冊[M].北京:清華大學出版社,2003.
[5]韓大鵬,韋慶.機器人控制器的一種模塊化設計方法[J].微計算機信息,2005(5):3 -4.
[6]趙文峰.控制系統設計與仿真[M].西安:西安電子科技大學出版社,2002.
[7]何希才,姜余祥.電動機控制電路應用實例[M].北京:中國電力出版社,2005.
[8]閻石.數字電子技術基礎[M].北京:高等教育出版社,1998.
[9]從爽,李澤湘.實用運動控制技術[M].北京:電子工業出版社,2006.
[10]楊樹興,李擎,蘇中,等.計算機控制系統[M].北京:機械工業出版社,2006.