韓玉龍 趙 瑾 申忠宇 王欣然
(南京師范大學電氣與自動化工程學院,江蘇 南京 210014)
?
競賽機器人多舵機控制方法的研究與實現(xiàn)
韓玉龍趙瑾申忠宇王欣然
(南京師范大學電氣與自動化工程學院,江蘇 南京210014)
摘要:針對競賽機器人中多舵機的運動控制,研究了以Atmega128為主控芯片的多路舵機控制方法的設計與實現(xiàn)。通過單片機內(nèi)部定時器匹配中斷和分時復用的方法,實現(xiàn)了多路舵機精準的位置控制,并實時優(yōu)化多路舵機的最小步長,滿足了多路舵機的速度控制要求。設計了AVR的Bootloader自引導程序,結合Visual Basic 6.0開發(fā)了一款簡易的多舵機可視化編程調(diào)試軟件,實現(xiàn)了PC機與AVR之間數(shù)據(jù)通信、下載、更新動作庫等功能。該軟件被成功應用于中國機器人大賽中。
關鍵詞:機器人多舵機單片機上位機PWM分時復用VB
0引言
直流伺服電機,也稱舵機,是一種位置控制伺服直流電機。舵機的控制信號實際上是一種脈沖寬度調(diào)制信號(pulse width modulation,PWM)。對于中國機器人大賽中的具有10個自由度的自由體操機器人而言,10個舵機形成了體操機器人的10個不同運動關節(jié),那么對于多舵機的控制就要產(chǎn)生多路獨立的PWM信號[1-3]。利用AVR單片機內(nèi)部定時器匹配中斷和分時復用的方法,通過單片機普通的數(shù)字I/O口,實現(xiàn)了多路脈寬可調(diào)的PWM波形輸出,且精度高[4]、成本低、性能穩(wěn)定[5]。結合自由體操機器人的動作要求,設計了一款競賽機器人控制系統(tǒng)電路,以及基于Visual Basic6.0的簡易編程調(diào)試軟件。
1競賽機器人控制系統(tǒng)電路設計
AVR單片機控制系統(tǒng)普遍應用于中國機器人大賽的自由體操機器人的比賽項目中。要完成比賽項目,首先必須通過AVR單片機產(chǎn)生10路PWM周期信號,其次還要確保脈寬隨時可控可調(diào)。針對方波的畸變,增加了光耦抗干擾電路設計,使得輸出的PWM精準、可靠性高;結合現(xiàn)場比賽規(guī)則和AVR單片機的特點,設計使用RS-232接口實現(xiàn)下位機與上位機的通信。競賽型機器人控制器的硬件均采用模塊化和功能化的結構設計方法??刂葡到y(tǒng)框圖如圖1所示。
圖1 控制系統(tǒng)框圖Fig.1 Block diagram of the control system
2電路設計
2.1系統(tǒng)電路設計
自由體操競賽機器人的控制器采用ATMEL公司的Atmega128單片機作為主控芯片。該款單片機基于RISC結構,具有8位低功耗CMOS微控制器,最大具有48個可編程的I/O口,非常適合控制多自由度的微小型機器人。該單片機中具有2個16位定時器、2個8位定時器、任選2個定時器,可滿足舵機最大精度的轉角控制??刂破鞑捎猛饨幼罡?6 MHz的石英晶振來產(chǎn)生系統(tǒng)時鐘,使得系統(tǒng)定時更加精準。
2.2光耦抗干擾電路
通過單片機輸出的PWM經(jīng)過光電耦合器,提高了抗干擾能力。但輸出的PWM波在傳輸?shù)倪^程中被反相了,因此從光耦出來的信號必須由反相器HEF40106施密特進行反相。在施密特反相器中對光耦出來的反相PWM進行恢復、整形,并消除上升沿和下降沿的畸變,產(chǎn)生標準的PWM方波信號。
2.3串口通信電路
AVR單片機接收上位機發(fā)送數(shù)據(jù),上傳、下載應用層代碼,以此來完成機器人的動作。內(nèi)部配有獨立的波特率發(fā)生率,能方便地與PC機實現(xiàn)串行通信。由于USART使用的是CMOS電平,須通過電平轉化才能實現(xiàn)RS-232通信。該電路采用MAX232電平轉換芯片。串行通信工作速率為19 200 bit/s,具體配置模式是1位起始位、8位數(shù)據(jù)位、1位停止位、無奇偶校驗等。
2.4電源設計電路
自由體操機器人選用的舵機工作額定電壓為7.4 V。在額定電壓下,可發(fā)揮舵機的最大轉速和扭矩。AVR128單片機供電額定電壓為3.3 V,須對供電電源進行降壓電路設計。本文采用三端穩(wěn)壓器1117。輸入端C1、C3電容用來抵消輸入、輸出線較長的電感效應,防止電路產(chǎn)生自激振蕩;C2用來濾除輸入電壓的高頻紋波。
3競賽機器人多舵機控制方法
對于多路舵機的同時運動,必須考慮對普通I/O數(shù)字端口的擴展,分時復用處理。首先利用了兩個定時器/計數(shù)器:一個是周期定時器,選用8位定時器/計數(shù)器T0;另一個是脈寬計數(shù)器,選用16位定時器T1。其中T1定時器定時周期設為10 μs,因為舵機的每度轉角對應脈寬為(2 500-500)/180=11.11 μs??梢源_定的是,采用10 μs定時,可以確保舵機的精度在1°以內(nèi)。
根據(jù)比賽現(xiàn)場的要求,實現(xiàn)了機器人的關節(jié)自由度速度配置,即在完成每個動作過程中就可以對每路舵機進行速度調(diào)節(jié)[6]。對AVR單片機進行了高級應用,對其程序區(qū)域固化,能適應自編程更新機制,即進行了自引導程序(bootloader)的實現(xiàn)和驗證。另開發(fā)了一款基于VB的可視化調(diào)試平臺,便于PC機與AVR單片機實現(xiàn)上傳、下載、更新動作庫等。
3.1舵機的組成及工作原理
模擬舵機由金屬外殼、一個小型直流電機、一組減速金屬齒輪組、一個旋轉電位器和一塊控制板組成。舵機的控制信號由PWM波決定。當PWM信號輸入舵機內(nèi)部的解調(diào)電路,將會獲得一個直流偏置電壓。舵機內(nèi)部產(chǎn)生一個周期為20 ms,脈寬為1.5 ms的基準信號,將獲得的直流偏置電壓與電位器反饋的電壓進行差運算,得到差值Ue。將此電壓差Ue送入控制電路中,以驅動電機的正反轉。通過級聯(lián)齒輪組降低轉速,獲得較大的扭矩,且級聯(lián)齒輪組末端連接電位器旋轉,直到Ue等于0,舵機保持穩(wěn)定狀態(tài),勵磁停轉。
模擬舵機有三根導線,分別是:電源正線、地線、信號線。電源正線、地線為舵機內(nèi)部直流電機供能,其電壓一般在4~7 V之間。方波的標準周期為20 ms。舵機的轉動角度在0°~180°之間。脈寬的持續(xù)時間決定舵機的轉動角度[7]。
3.2多路舵機分時復用控制方法
控制舵機從0°~180°轉角的脈寬為0.5~2.5 ms。出于舵機之間的差異性和安全性的考慮,控制舵機實際的脈寬在0.7~2.3 ms之間。由于其工作的脈寬小于周期的1/8,因此可以利用軟件定時和定時器硬件中斷產(chǎn)生8路穩(wěn)定的PWM。本方法實際相當于把20 ms的MCU時間作為一個控制周期,將2.5 ms作為每一個時間區(qū)間,這樣就可以利用每一個時間區(qū)間來調(diào)整每一路PWM輸出的脈寬,從而實現(xiàn)了多舵機不同位置在同一周期的控制。
3.3多路舵機分時復用軟件設計
多路舵機分時控制軟件實現(xiàn)過程如下: T0定時器用來產(chǎn)生2.5 ms的周期,并且在每個周期到來時,產(chǎn)生定時匹配中斷,在中斷程序中對應端口配置成高電平;T1定時器用來產(chǎn)生10 μs的定時周期,在每個周期到來時發(fā)生匹配中斷,用count來計數(shù)10 μs的個數(shù)。在主程序中不斷檢測相對應硬件端口脈寬數(shù)組中對應的值是否與count相等。如果相等,則拉低該位電平,并完成該端口的脈寬控制,下一次的高電平將在8個2.5 ms之后出現(xiàn),即完成周期為20 ms的PWM。分時復用軟件流程圖如圖2所示。
圖2 分時復用軟件流程圖Fig.2 Flowchart of the time division multiplexing program
3.4多舵機速度控制軟件設計
對于多路舵機的速度控制,按照機器人動作編排順序,數(shù)組a[i]代表每路舵機上一個動作的位置,b[i]代表每路舵機本次動作的位置,c[temp0]是找出舵機最大位置差,c[temp0]/vel的商作為速度控制中舵機所須分段執(zhí)行的段數(shù),c[i]/temp1為每路舵機最小步長,motion()子函數(shù)是調(diào)用舵機運動的相關指令。通過分解每個動作中,每路舵機須變化的位移,等分地執(zhí)行最小步長,并加入延時函數(shù),以此來完成對多路舵機的速度控制。
void setspeed(unsigned int vel)
{
Signed int i,k,m,temp0=0,temp1=0;
For(i=0;i<10;i++)
{
c[i]=b[i]-a[i];
If (fabs(c[temp0]) fabs(c[i]))
temp0=j;
}
temp1=fabs(c[temp0]/vel);
temp1++
for(j=0;j<10;j++)
{c[j]=(c[j]*32)/temp 1;
d[j]=a[j]*32;}
for(j=0;j<10;j++)
{
d[j]=d[j]+c[j];
a[j]=(d[j]/32);
}
motion();啟動多路舵機動作
}
}
部分程序和流程圖如圖3所示。
圖3 程序流程圖Fig.3 Flowchart of the program
3.5多舵機可視化編程軟件設計
綜合自由體操機器人的比賽情況,分時復用的方法僅限于AVRstudio等編程環(huán)境,采用C語言編程,動作修改難度大、耗時較長。因此,設計了一款針對競賽機器人的多舵機可視化編程軟件。這款可編程軟件是基于VisualBasic6.0環(huán)境下生成的可執(zhí)行文件,可在WindowsXP、Win7下運行簡易可編程軟件,能方便地實現(xiàn)PC機與AVR通信、下載動作指令等。
3.5.1AVR自引導程序軟件設計
AVR具備引導加載支持的用戶程序自編程功能,它提供了一個真正的由MCU本身自動下載和更新(采用讀/寫同時“Read-While-Write”進行的方式)程序代碼的系統(tǒng)程序自編程更新的機制[8]。利用AVR的這個功能,可以實現(xiàn)在應用編程(IAP)以及系統(tǒng)程序的遠程自動更新。IAP的本質(zhì)就是,MCU可以靈活地運行一個常駐Flash的引導加載程序,以實現(xiàn)對用戶應用程序的在線自編程更新。如給出一個實際的BootLoader程序,可以使用RS-232的數(shù)據(jù)接口和相關的協(xié)議讀取代碼,或者從程序存儲器中讀取代碼,然后將代碼寫入(編程)到Flash存儲器中。
3.5.2VB可編程軟件設計
VisualBasic6.0是一款可視化軟件開發(fā)平臺,利用VB提供的MSComm串行控件,可實現(xiàn)與AVR單片機的串口通信,參數(shù)初始化為“19 200,N,8,1”,即波特率為19 200,無奇偶校驗,8位數(shù)據(jù)位,1位停止位。水平滾動條HScrollbar配置成舵機0°~180°的轉角。Timer定時器提供了各個舵機運動的延時,整體控制時序。比如上位機代碼Axis[i](j)指令調(diào)用到上位機解析代碼,i解析成舵機號,j解析成具體的位置控制。
4結束語
自由體操機器人控制系統(tǒng)是由ATmega128單片機來實現(xiàn)的,其充分利用了單片機內(nèi)部的定時器、USART等片內(nèi)資源模塊,將分時復用的方法引入到單片機控制中,實現(xiàn)了對多路舵機的變速控制。試驗證明,該方法可行、穩(wěn)定,實現(xiàn)了對機器人的精準控制。下一步是尋求精度更高的控制策略,引入舵機的新型
控制算法[9-10],實現(xiàn)舵機的最優(yōu)控制等。
參考文獻:
[1] 紀浩,吳友強,鄒力涵.一種輪式移動機器人運動控制系統(tǒng)的實現(xiàn)[J],自動化儀表,2013,34(11):26-29.
[2] 候華,馮波,宋彬.自適應智能光電循跡系統(tǒng)的設計與實現(xiàn)[J],自動化儀表,2014, 35(3):77-81.
[3] 韓慶窯,洪草根,朱曉光,等.基于AVR單片機的多舵機控制系統(tǒng)設計及仿真[J].計算機測量與控制,2011:19(2):332-334.
[4] 蔣辰飛,劉子龍,胡少凱,等.基于AVR單片機的多舵機控制精度的研究[J].信息技術,2014(3):35-37.
[5] 付麗,劉衛(wèi)國,尹強.單片機控制多路舵機用PWM波產(chǎn)生方法[J].微特電機,2006(2):28-33.
[6] 柯文德,彭志平,蔡則蘇,等.防人機器人相似性運動軌跡跟蹤控制研究[J].自動化學報,2014,40(11):2404-2413.
[7] 李霞,蘇淵博.基于AVR單片機的電動舵機控制器設計[J].單片機與嵌入式系統(tǒng)應用,2013(5):63-69.
[8] 邵子揚.AVR單片機應用專題精講[M].2版.北京:北京航空航天大學出版社,2013:76-92.
[9] 吳正興,喻俊志,蘇宗帥,等.仿生機器魚S形起動的控制與實現(xiàn)[J].自動化學報,2013,39(11):1914-1922
[10]吳正興,喻俊志,譚明.兩類仿鲹科機器魚倒游運動控制方法的對比研究[J].自動化學報,2013,39(12):2032-2042.
中圖分類號:TH-3;TP242
文獻標志碼:A
DOI:10.16086/j.cnki.issn1000-0380.201607012
Research and Implementation of the Multiple Steering Engine Control Method for Competition Robot
Abstract:In view of the motion control of multi-steering engine in competition robots,the design and implementation of the control method with Atmega128 as the main control chip are studied for multi-steering engine.With the features of timer matching interrupt and time division multiplexing in single chip computer,the precise position control of multi-steering engine is realized,and the minimum step length of multi-steering engine is optimized in real time,which satisfies the speed control for multi-steering engine.The Bootloader for AVR is designed,and the visualized programming and debugging software is developed with help of Visual Basic 6.0 to meet the requirements of implementing functions of data communication between PC and AVR,download and update action library.The method has been applied in China Robocup.
Keywords:RobotMulti-steering engineSinglechipUpper computerPWMTime division multiplexingVB
修改稿收到日期:2015-12-29。
第一作者韓玉龍(1989—),男,現(xiàn)為南京師范大學控制理論與控制工程專業(yè)在讀碩士研究生;主要從事機器人控制方向的研究。