摘 要:為了實現對機器人、無人機的控制,提出一種利用微處理器產生多路舵機控制信號的方法。該方法以AT89C52單片機作為控制芯片,通過實驗實現了8路舵機控制脈沖的生成,可廣泛應用于機器人、無人機等控制系統,并按上位機與下位機的通信要求設計了一種簡單的通信協議,以滿足實時控制的需要。
關鍵詞:機器人; 舵機控制器; 多通道; 通信協議
中圖分類號:TN919-34文獻標識碼:A
文章編號:1004-373X(2010)21-0073-03
Design of Multi-channel Servo Controller
HUO Li-xia1, LUO Wei-bing2, CHI Xiao-peng1
(1. Post-graduate Management Team, Engineering College of CAPF, Xi’an 710086, China;
2. Department of Communication Engineering, Engineering College of CAPF, Xi’an 710086, China)
Abstract: In order to realize the control of the robot and the unmanned aircraft, a method of generating control signals by a servo microprocessor is proposed in this paper. Taking the AT89C52 single chip microcomputer as a control chip, eight steering servo control pulse is realized by the method, which can be widely used in robotics, unmanned aircraft and other control systems. In order to meet the needs of real-time control, a simple communication protocol is designed according to the communication requirement of the uper computer and the lower computer.
Keywords: robot; servo controller; multi-channel; communication protocol
在機器人、無人機等運動或執行控制系統器的設計中, 舵機控制效果是系統性能的重要影響因素[1]。舵機可以在微機電系統和機器人系統中作為基本的輸出執行機構,其控制和輸出會涉及到多路控制信號的產生問題。如機器人的頭、肩、肘、腕、指等關節,無人飛機的舵面,無人駕駛汽車的方向盤和油門等,都需要由舵機信號來驅動,所以在這一類的控制器中需要多路的PWM信號來控制舵機,從而完成多通道并行控制任務。
1 單路舵機輸出控制原理
1.1 舵機結構及工作原理
舵機是一種位置伺服的驅動器,主要由以下幾個部分組成,舵盤、減速齒輪組、位置反饋電位計、直流電機、控制電路板等[2]。
舵機是一個典型閉環反饋系統(如圖1所示),它的工作原理如下,控制電路板接受來自信號線的控制信號,控制電機轉動,電機帶動一系列齒輪組,減速后傳動至輸出舵盤。舵機的輸出軸和位置反饋電位計是相連的,舵盤轉動的同時,帶動位置反饋電位計,電位計將輸出一個電壓信號到控制電路板,進行反饋,然后控制電路板根據所在位置決定電機的轉動方向和速度,從而達到定位。
圖1 一種9克舵機
1.2 單路舵機的控制信號原理
舵機的控制信號通常為PWM信號,即脈寬控制信號[3],如圖2所示。
圖2 單路舵機控制信號波形
其中脈沖寬度從06~24 ms,相對應舵盤的位置為 -90°~+90°,呈線性變化,如圖3所示。也就是說,給它提供一定的脈寬,它的輸出軸就會保持在一個相對應的角度上,無論外界轉矩怎樣改變,直到給它提供一個另外寬度的脈沖信號,它才會改變輸出角度到新的對應的位置上[4]。
圖3 舵機脈寬—轉角關系圖
舵機內部有一個基準電路,產生周期20 ms,寬度1.5 ms的基準信號,有一個比較器,將外加信號與基準信號相比較,判斷出方向和大小,從而產生電機的轉動信號。由此可見,舵機是一種位置伺服的驅動器,適用于那些需要角度不斷變化并可以保持的驅動當中。例如機器人的關節、飛機的舵面以及無人駕駛汽車的方向盤和油門等。
2 用定時器實現多路舵機PWM控制信號輸出
對一個機器人關節的控制僅需要一個舵機就可以了,但在機器人、無人機等系統的控制過程中,需要同時實現對多個舵機的控制,也就是說,需要多路PWM信號來完成控制任務。如圖1所示,單路舵機信號在20 ms周期內[5-6],考慮保護時隙,t的最大取值為25 ms,則20 ms內最多可以周期性地輸出8路控制信號(20/2.5=8)[7]。若使用微處理器的定時器來實現的話,每個定時器可以控制8路輸出,N個定時器則可以輸出8N個通道。
本文所設計的舵機控制器若以MSC-51單片機為核心,使用12 MHz的晶振,它的時間周期就是1/12 μs,而它的一個機器周期則是12×(1/12)=1 μs。如果舵機的有效行程為(°)/10 μs,其控制的角度定時精度是可以達到1 μs,約0.1°,因此,任意類型的單片機都能夠滿足舵機的控制精度要求。利用單片機的串行通信口可以實現與上位的PC機的通信,進而實現多路舵機的同步控制。以AT89C52為例說明該方法的實現過程,設單片機的P1.0~P1.7端口為控制輸出,8路舵機控制脈沖[8]如圖4所示。
本文的設計中,采用P1口作為舵機信號輸出控制端口,分別對應CH1~CH8通道,在晶振為12 MHz,采用定時器方式1工作方式。
舵機控制器軟件控制分為兩個部分,即主程序和中斷服務程序。主程序完成定時器初始化、串口信令解析、舵機位置刷新的工作。設置各通道序號為i,當前定時器脈寬定時為Time,Tab[i]為各通道最新定時值。定時器初始化進行定時器工作模式及初值設置,各舵機位置初始化使所有舵機的位置定在0°的位置,使舵機處于等待指令的狀態。串口信令程序將接收到的指令解析,并隨時提取信令中各通道舵機的最新值。舵機位置刷新程序實時計算最新舵量并修改每個通道的定時值Tab[i],供定制中斷服務程序調用。中斷程序流程圖如圖5所示。
圖4 8路舵機控制脈沖
圖5 程序流程圖
中斷復位程序依次修改各個通道對應I/O口的輸出電平,并依次加載下一通道的定時器計數值,通道號計數指針累加。當計數指針為8時表明各通道輸出結束,剩余時間I/O口全部置0,下一輪循環開始。
3 串行通信協議的設計
為了滿足上位機對舵機控制器的實時控制,可以設計一個簡單通用的控制協議。從便于輸出控制的角度來考慮,可以設置單通道控制和多通道控制兩個信令,采用二進制命令行格式,固定幀長。
本文采用基于短幀的協議設計思想,每個舵機動作對應的控制信號是一幀一幀發送的,動作的分解和步長由功能強大的上位機完成,而下位機只負責完成對應的偏轉角度執行。一個標準的串行通信短幀包含幀首、數據和幀尾幾部分[9],每個部分可以根據實際需要定義。
(1) 幀首,表示本數據幀的開始,用于數據幀的同步和控制的類型屬于串口通信協議,并為下位機是否接收此數據幀的標志。一般可以設0xFE為單通道控制幀,0xFF為多通道控制幀。
(2) 數據,表示上位機通過串口要控制的舵機輸出通道號以及通道所對應的舵量偏轉值。
(3) 幀尾,表示此幀信號的結束,一般可以用0xF0表示。
單通道控制信令較為簡單,如圖6所示,其幀首為0xFE,CHn表示該幀所控制的通道號,Dn則表示所控制的通道對應的舵量偏轉值,0xF0作為該幀結束的標志。例如,當幀數據為“FE 01 5A F0”時,表示CH1通道信號置于中位(90°=0x5A)。
多通道控制信令格式如圖7所示,幀首為0xFF,其控制命令的數據長度可以每個字節對應一個通道,±90°可以用數字0~180表示,對應二進制數為0x00~0XB4。例如,當幀數據為“FF 5A 5A 5A 5A 78 78 3C 3C F0”時,則表示CH1~CH4通道都居中,CH5,CH6為+30°;CH7,CH8為-30°。
圖6 單通道信令格式
圖7 多通道信令格式
4 結 語
本文所提出的多路舵機控制器的設計方法是以微處理器為核心,利用定時器中斷實現了對多路舵機的控制信號輸出,并可以實現上位機與下位機的通信控制,可適用于機器人、無人機等需要控制多個舵機的場合,以及其他需要產生多路PWM系統。
參考文獻
[1]成光華,毛建國.四足機器人中各關節的控制[J].電子元器件應用,2008,10(1):44-47.
[2]萬小丹,孔凡讓.基于AT89C52單片機的機器人關節控制系統設計[J].機電一體化,2008(2):38-40.
[3]梁鋒,王志良.多舵機控制在類機器人上的應用[J].機器人技術,2008,24(1):242-245.
[4]劉歌群,盧京潮.用單片機產生7路舵機控制PWM的方法[J].機械與電子,2004(2):76-78.
[5]PU Long-mei, LI Hong. A research about device of DC-PWM speed adjustment by MCU controlling [J]. The World of Inverters, 2006(3): 34-38.
[6]吳華波,錢春來.基于AT89C2051的多路舵機控制器設計[J].應用天地,2006(8):55-58.
[7]儲忠,阮堅實.基于AT89S52的六足機器人運動控制器的設計[J].工礦自動化,2008(4):62-65.
[8]梁磊,王樹強.多路PWM信號產生算法研究[J].電氣電子教學學報,2008(4):47-49.
[9]王麗,雷秀.基于PC機與單片機AT89C52的串行通信協議設計[J].機電工程技術,2006,35(2):19-21.
[10]徐愛鈞,彭秀華.Keil CX51 V7.0單片機高級語言編程與μvision 2應用實踐[M].北京:電子工業出版社,2008.