多通道舵機控制器設(shè)計
摘要:為了實現(xiàn)對機器人、無人機的控制,提出一種利用微處理器產(chǎn)生多路舵機控制信號的方法。該方法以AT89C52單片機作為控制芯片,通過實驗實現(xiàn)了8路舵機控制脈沖的生成,可廣泛應(yīng)用于機器人、無人機等控制系統(tǒng),并按上位機與下位機的通信要求設(shè)計了一種簡單的通信協(xié)議,以滿足實時控制的需要。
關(guān)鍵詞:機器人;舵機控制器;多通道;通信協(xié)議
在機器人、無人機等運動或執(zhí)行控制系統(tǒng)器的設(shè)計中,舵機控制效果是系統(tǒng)性能的重要影響因素。舵機可以在微機電系統(tǒng)和機器人系統(tǒng)中作為基本的輸出執(zhí)行機構(gòu),其控制和輸出會涉及到多路控制信號的產(chǎn)生問題。如機器人的頭、肩、肘、腕、指等關(guān)節(jié),無人飛機的舵面,無人駕駛汽車的方向盤和油門等,都需要由舵機信號來驅(qū)動,所以在這一類的控制器中需要多路的PWM信號來控制舵機,從而完成多通道并行控制任務(wù)。
1 單路舵機輸出控制原理
1.1 舵機結(jié)構(gòu)及工作原理
舵機是一種位置伺服的驅(qū)動器,主要由以下幾個部分組成,舵盤、減速齒輪組、位置反饋電位計、直流電機、控制電路板等。
舵機是一個典型閉環(huán)反饋系統(tǒng)(如圖1所示),它的工作原理如下,控制電路板接受來自信號線的控制信號,控制電機轉(zhuǎn)動,電機帶動一系列齒輪組,減速后傳動至輸出舵盤。舵機的輸出軸和位置反饋電位計是相連的,舵盤轉(zhuǎn)動的同時,帶動位置反饋電位計,電位計將輸出一個電壓信號到控制電路板,進行反饋,然后控制電路板根據(jù)所在位置決定電機的轉(zhuǎn)動方向和速度,從而達到定位。
1.2 單路舵機的控制信號原理
舵機的控制信號通常為PWM信號,即脈寬控制信號,如圖2所示。
其中脈沖寬度從O.6~2.4 ms,相對應(yīng)舵盤的位置為-90°~+90°,呈線性變化,如圖3所示。也就是說,給它提供一定的脈寬,它的輸出軸就會保持在一個相對應(yīng)的角度上,無論外界轉(zhuǎn)矩怎樣改變,直到給它提供一個另外寬度的脈沖信號,它才會改變輸出角度到新的對應(yīng)的位置上。
舵機內(nèi)部有一個基準電路,產(chǎn)生周期20 ms,寬度1.5 ms的基準信號,有一個比較器,將外加信號與基準信號相比較,判斷出方向和大小,從而產(chǎn)生電機的轉(zhuǎn)動信號。由此可見,舵機是一種位置伺服的驅(qū)動器,適用于那些需要角度不斷變化并可以保持的驅(qū)動當(dāng)中。例如機器人的關(guān)節(jié)、飛機的舵面以及無人駕駛汽車的方向盤和油門等。
2 用定時器實現(xiàn)多路舵機PWM控制信號輸出
對一個機器人關(guān)節(jié)的控制僅需要一個舵機就可以了,但在機器人、無人機等系統(tǒng)的控制過程中,需要同時實現(xiàn)對多個舵機的控制,也就是說,需要多路PWM信號來完成控制任務(wù)。如圖1所示,單路舵機信號在20 ms周期內(nèi),考慮保護時隙,t的最大取值為2.5 ms,則20 ms內(nèi)最多可以周期性地輸出8路控制信號(20/2.5=8)。若使用微處理器的定時器來實現(xiàn)的話,每個定時器可以控制8路輸出,N個定時器則可以輸出8N個通道。
本文所設(shè)計的舵機控制器若以MSC-51單片機為核心,使用12 MHz的晶振,它的時間周期就是1/12μs,而它的一個機器周期則是12×(1/12)=1μs。如果舵機的有效行程為(°)/10μs,其控制的角度定時精度是可以達到1μs,約0.1°,因此,任意類型的單片機都能夠滿足舵機的控制精度要求。利用單片機的串行通信口可以實現(xiàn)與上位的PC機的通信,進而實現(xiàn)多路舵機的同步控制。以AT89C52為例說明該方法的實現(xiàn)過程,設(shè)單片機的P1.O~P1.7端口為控制輸出,8路舵機控制脈沖如圖4所示。
本文的設(shè)計中,采用P1口作為舵機信號輸出控制端口,分別對應(yīng)CH1~CH8通道,在晶振為12 MHz,采用定時器方式1工作方式。
舵機控制器軟件控制分為兩個部分,即主程序和中斷服務(wù)程序。主程序完成定時器初始化、串口信令解析、舵機位置刷新的工作。設(shè)置各通道序號為i,當(dāng)前定時器脈寬定時為Time,Tab[i]為各通道最新定時值。定時器初始化進行定時器工作模式及初值設(shè)置,各舵機位置初始化使所有舵機的位置定在0°的位置,使舵機處于等待指令的狀態(tài)。串口信令程序?qū)⒔邮盏降闹噶罱馕觯㈦S時提取信令中各通道舵機的最新值。舵機位置刷新程序?qū)崟r計算最新舵量并修改每個通道的定時值Tab[i],供定制中斷服務(wù)程序調(diào)用。中斷程序流程圖如圖5所示。
中斷復(fù)位程序依次修改各個通道對應(yīng)I/0口的輸出電平,并依次加載下一通道的定時器計數(shù)值,通道號計數(shù)指針累加。當(dāng)計數(shù)指針為8時表明各通道輸出結(jié)束,剩余時間I/O口全部置0,下一輪循環(huán)開始。
3 串行通信協(xié)議的設(shè)計
為了滿足上位機對舵機控制器的實時控制,可以設(shè)計一個簡單通用的控制協(xié)議。從便于輸出控制的角度來考慮,可以設(shè)置單通道控制和多通道控制兩個信令,采用二進制命令行格式,固定幀長。
本文采用基于短幀的協(xié)議設(shè)計思想,每個舵機動作對應(yīng)的控制信號是一幀一幀發(fā)送的,動作的分解和步長由功能強大的上位機完成,而下位機只負責(zé)完成對應(yīng)的偏轉(zhuǎn)角度執(zhí)行。一個標準的串行通信短幀包含幀首、數(shù)據(jù)和幀尾幾部分,每個部分可以根據(jù)實際需要定義。
(1)幀首,表示本數(shù)據(jù)幀的開始,用于數(shù)據(jù)幀的同步和控制的類型屬于串口通信協(xié)議,并為下位機是否接收此數(shù)據(jù)幀的標志。一般可以設(shè)0xFE為單通道控制幀,0xFF為多通道控制幀。
(2)數(shù)據(jù),表示上位機通過串口要控制的舵機輸出通道號以及通道所對應(yīng)的舵量偏轉(zhuǎn)值。
(3)幀尾,表示此幀信號的結(jié)束,一般可以用0xF0表示。
單通道控制信令較為簡單,如圖6所示,其幀首為0xFE,CHn表示該幀所控制的通道號,Dn則表示所控制的通道對應(yīng)的舵量偏轉(zhuǎn)值,0xF0作為該幀結(jié)束的標志。例如,當(dāng)幀數(shù)據(jù)為“FE 01 5A F0”時,表示CH1通道信號置于中位(90°=0x5A)。
多通道控制信令格式如圖7所示,幀首為0xFF,其控制命令的數(shù)據(jù)長度可以每個字節(jié)對應(yīng)一個通道,±90°可以用數(shù)字0~180表示,對應(yīng)二進制數(shù)為0x00~0XB4。例如,當(dāng)幀數(shù)據(jù)為“FF 5A 5A 5A 5A 78 78 3C 3C FO”時,則表示CH1~CH4通道都居中,CH5,CH6為+30°;CH7,CH8為-30°。
4 結(jié)語
本文所提出的多路舵機控制器的設(shè)計方法是以微處理器為核心,利用定時器中斷實現(xiàn)了對多路舵機的控制信號輸出,并可以實現(xiàn)上位機與下位機的通信控制,可適用于機器人、無人機等需要控制多個舵機的場合,以及其他需要產(chǎn)生多路PWM系統(tǒng)。