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