1,、概述 舵機(jī)最早出現(xiàn)在航模運(yùn)動(dòng)中,。在航空模型中,飛行機(jī)的飛行姿態(tài)是通過(guò)調(diào)節(jié)發(fā)動(dòng)機(jī)和各個(gè)控制舵面來(lái)實(shí)現(xiàn)的,。舉個(gè)簡(jiǎn)單的四通飛機(jī)來(lái)說(shuō),,飛機(jī)上有以下幾個(gè)地方需要控制: 1.發(fā)動(dòng)機(jī)進(jìn)氣量,來(lái)控制發(fā)動(dòng)機(jī)的拉力(或推力),; 2.副翼舵面(安裝在飛機(jī)機(jī)翼后緣),,用來(lái)控制飛機(jī)的橫滾運(yùn)動(dòng); 3.水平尾舵面,,用來(lái)控制飛機(jī)的俯仰角,; 4.垂直尾舵面,用來(lái)控制飛機(jī)的偏航角,; 遙控器有四個(gè)通道,,分別對(duì)應(yīng)四個(gè)舵機(jī),而舵機(jī)又通過(guò)連桿等傳動(dòng)元件帶動(dòng)舵面的轉(zhuǎn)動(dòng),,從而改變飛機(jī)的運(yùn)動(dòng)狀態(tài),。舵機(jī)因此得名:控制舵面的伺服電機(jī)。 不僅在航模飛機(jī)中,,在其他的模型運(yùn)動(dòng)中都可以看到它的應(yīng)用:船模上用來(lái)控制尾舵,,車(chē)模中用來(lái)轉(zhuǎn)向等等。由此可見(jiàn),,凡是需要操作性動(dòng)作時(shí)都可以用舵機(jī)來(lái)實(shí)現(xiàn),。 2、結(jié)構(gòu)和控制 一般來(lái)講,,舵機(jī)主要由以下幾個(gè)部分組成,, 舵盤(pán)、減速齒輪組,、位置反饋電位計(jì)5k,、直流電機(jī)、控制電路板等,。 工作原理:控制電路板接受來(lái)自信號(hào)線的控制信號(hào)(具體信號(hào)待會(huì)再講),,控制電機(jī)轉(zhuǎn)動(dòng),電機(jī)帶動(dòng)一系列齒輪組,,減速后傳動(dòng)至輸出舵盤(pán),。舵機(jī)的輸出軸和位置反饋電位計(jì)是相連的,,舵盤(pán)轉(zhuǎn)動(dòng)的同時(shí),帶動(dòng)位置反饋電位計(jì),,電位計(jì)將輸出一個(gè)電壓信號(hào)到控制電路板,,進(jìn)行反饋,然后控制電路板根據(jù)所在位置決定電機(jī)的轉(zhuǎn)動(dòng)方向和速度,,從而達(dá)到目標(biāo)停止,。 舵機(jī)的基本結(jié)構(gòu)是這樣,但實(shí)現(xiàn)起來(lái)有很多種,。例如電機(jī)就有有刷和無(wú)刷之分,齒輪有塑料和金屬之分,,輸出軸有滑動(dòng)和滾動(dòng)之分,,殼體有塑料和鋁合金之分,速度有快速和慢速之分,,體積有大中小三種之分等等,,組合不同,價(jià)格也千差萬(wàn)別,。例如,,其中小舵機(jī)一般稱(chēng)作微舵,同種材料的條件下是中型的一倍多,,金屬齒輪是塑料齒輪的一倍多,。需要根據(jù)需要選用不同類(lèi)型。 舵機(jī)的輸入線共有三條,,紅色中間,,是電源線,一邊黑色的是地線,,這輛根線給舵機(jī)提供最基本的能源保證,,主要是電機(jī)的轉(zhuǎn)動(dòng)消耗。電源有兩種規(guī)格,,一是4.8V,,一是6.0V,分別對(duì)應(yīng)不同的轉(zhuǎn)矩標(biāo)準(zhǔn),,即輸出力矩不同,,6.0V對(duì)應(yīng)的要大一些,具體看應(yīng)用條件,;另外一根線是控制信號(hào)線,,Futaba的一般為白色,JR的一般為桔黃色,。另外要注意一點(diǎn),,SANWA的某些型號(hào)的舵機(jī)引線電源線在邊上而不是中間,,需要辨認(rèn)。但記住紅色為電源,,黑色為地線,,一般不會(huì)搞錯(cuò)。 舵機(jī)的控制信號(hào)為周期是20ms的脈寬調(diào)制(PWM)信號(hào),,其中脈沖寬度從0.5ms-2.5ms,,相對(duì)應(yīng)舵盤(pán)的位置為0-180度,呈線性變化,。也就是說(shuō),,給它提供一定的脈寬,它的輸出軸就會(huì)保持在一個(gè)相對(duì)應(yīng)的角度上,,無(wú)論外界轉(zhuǎn)矩怎樣改變,,直到給它提供一個(gè)另外寬度的脈沖信號(hào),它才會(huì)改變輸出角度到新的對(duì)應(yīng)的位置上,。舵機(jī)內(nèi)部有一個(gè)基準(zhǔn)電路,,產(chǎn)生周期20ms,寬度1.5ms的基準(zhǔn)信號(hào),,有一個(gè)比較器,,將外加信號(hào)與基準(zhǔn)信號(hào)相比較,判斷出方向和大小,,從而產(chǎn)生電機(jī)的轉(zhuǎn)動(dòng)信號(hào),。由此可見(jiàn),舵機(jī)是一種位置伺服的驅(qū)動(dòng)器,,轉(zhuǎn)動(dòng)范圍不能超過(guò)180度,,適用于那些需要角度不斷變化并可以保持的驅(qū)動(dòng)當(dāng)中。比方說(shuō)機(jī)器人的關(guān)節(jié),、飛機(jī)的舵面等,。 常見(jiàn)的舵機(jī)廠家有:日本的Futaba、JR,、SANWA等,,國(guó)產(chǎn)的有北京的新幻想、吉林的振華等?,F(xiàn)舉Futaba S3003來(lái)介紹相關(guān)參數(shù),,以供大家設(shè)計(jì)時(shí)選用。之所以用3003是因?yàn)檫@個(gè)型號(hào)是市場(chǎng)上最常見(jiàn)的,,也是價(jià)格相對(duì)較便宜的一種(以下數(shù)據(jù)摘自Futaba產(chǎn)品手冊(cè)),。 尺 寸(Dimensions): 40.4×19.8×36.0 mm 重 量(Weight): 37.2 g 工作速度(Operating speed):0.23 sec/60°(4.8V) 0.19 sec/60°(6.0V) 輸出力矩(Output torque): 3.2 kg.cm (4.8V) 4.1 kg.cm (6.0V) 由此可見(jiàn),舵機(jī)具有以下一些特點(diǎn): >體積緊湊,,便于安裝,; >輸出力矩大,,穩(wěn)定性好; >控制簡(jiǎn)單,,便于和數(shù)字系統(tǒng)接口,; 正是因?yàn)槎鏅C(jī)有很多優(yōu)點(diǎn),所以,,現(xiàn)在不僅僅應(yīng)用在航模運(yùn)動(dòng)中,,已經(jīng)擴(kuò)展到各種機(jī)電產(chǎn)品中來(lái),在機(jī)器人控制中應(yīng)用也越來(lái)越廣泛,。 3,、用單片機(jī)來(lái)控制 正是舵機(jī)的控制信號(hào)是一個(gè)脈寬調(diào)制信號(hào),所以很方便和數(shù)字系統(tǒng)進(jìn)行接口,。只要能產(chǎn)生標(biāo)準(zhǔn)的控制信號(hào)的數(shù)字設(shè)備都可以用來(lái)控制舵機(jī),,比方PLC、單片機(jī)等,。這里介紹利用51系列單片機(jī)產(chǎn)生舵機(jī)的控制信號(hào)來(lái)進(jìn)行控制的方法,編程語(yǔ)言為C51,。之所以介紹這種方法只是因?yàn)楣P者用2051實(shí)現(xiàn)過(guò),,本著負(fù)責(zé)的態(tài)度,所以敢在這里寫(xiě)出來(lái),。程序用的是我的四足步行機(jī)器人,,有刪改。單片機(jī)并不是控制舵機(jī)的最好的方法,,希望在此能起到拋磚引玉的作用,。 2051有兩個(gè)16位的內(nèi)部計(jì)數(shù)器,我們就用它來(lái)產(chǎn)生周期20 ms的脈沖信號(hào),,根據(jù)需要,,改變輸出脈寬?;舅悸啡缦拢ㄕ?qǐng)對(duì)照下面的程序): 我用的晶振頻率為12M,,2051一個(gè)時(shí)鐘周期為12個(gè)晶振周期,正好是1/1000 ms,,計(jì)數(shù)器每隔1/1000 ms計(jì)一次數(shù),。以計(jì)數(shù)器1為例,先設(shè)定脈寬的初始值,,程序中初始為1.5ms,,在for循環(huán)中可以隨時(shí)通過(guò)改變a值來(lái)改變,然后設(shè)定計(jì)數(shù)器計(jì)數(shù)初始值為a,,并置輸出p12為高位,。當(dāng)計(jì)數(shù)結(jié)束時(shí),,觸發(fā)計(jì)數(shù)器溢出中斷函數(shù),就是void timer0(void) interrupt 1 using1 ,,在子函數(shù)中,,改變輸出p12為反相(此時(shí)跳為低位),在用20000(代表20ms周期)減去高位用的時(shí)間a,,就是本周期中低位的時(shí)間,,c=20000-a,并設(shè)定此時(shí)的計(jì)數(shù)器初值為c,,直到定時(shí)器再次產(chǎn)生溢出中斷,,重復(fù)上一過(guò)程。 # include <reg51.h> #define uchar unsigned char #define uint unsigned int
uint a,b,c,d; /*a為舵機(jī)1的脈沖寬度,,b為舵機(jī)2的脈沖寬度,,單位1/1000 ms */ /*c、d為中間變量*/ /*以下定義輸出管腳*/ sbit p12=P1^2; sbit p13=p1^3; sbit p37=P3^7; /*以下兩個(gè)函數(shù)為定時(shí)器中斷函數(shù)*/ /*定時(shí)器1,,控制舵機(jī)1,,輸出引腳為P12,可自定義*/ void timer0(void) interrupt 1 using 1 {p12=!p12; /*輸出取反*/ c=20000-c; /*20000代表20 ms,,為一個(gè)周期的時(shí)間*/ TH0=-(c/256); TL0=-(c%256); /*重新定義計(jì)數(shù)初值*/ if(c>=500&&c<=2500)c=a; else c="20000-a"; /*判斷脈寬是否在正常范圍之內(nèi)*/ } /*定時(shí)器2,,控制舵機(jī)2,輸出引腳為P13,,可自定義*/ void timer1(void) interrupt 3 using 1 {p13=!p13; d=20000-d; TH1=-(d/256); TL1=-(d%256); if(d>=500&&d<=2500)d=b; else d="20000-b"; } /*主程序*/ void main(void) {TMOD=0x11; /*設(shè)初值*/ p12=1; p13=1; a=1500; b=1500; /*數(shù)值1500即對(duì)應(yīng)1.5ms,,為舵機(jī)的中間90度的位置*/ c=a;d=b; TH0=-(a/256); TL0=-(a%256); TH1=-(b/256); TL1=-(b%256); /*設(shè)定定時(shí)器初始計(jì)數(shù)值*/ EA=1; ET0=1; TR0=1;EX0=1;EX1=1; ET1=1; TR1=1; PX0=0X1=0T1=1T0=1;/*設(shè)定中斷優(yōu)先級(jí)*/ for(;;) { /*在這個(gè)for循環(huán)中,可以根據(jù)程序需要 在任何時(shí)間改變a,、b值來(lái)改變脈寬的輸 出時(shí)間,,從而控制舵機(jī)*/ } } 因?yàn)樵诿}沖信號(hào)的輸出是靠定時(shí)器的溢出中斷函數(shù)來(lái)處理,時(shí)間很短,,因此在精度要求不高的場(chǎng)合可以忽略,。因此如果忽略中斷時(shí)間,從另一個(gè)角度來(lái)講就是主程序和脈沖輸出是并行的,,因此,,只需要在主程序中按你的要求改變a值,例如讓a從500變化到2500,,就可以讓舵機(jī)從0度變化到180度,。另外要記住一點(diǎn),舵機(jī)的轉(zhuǎn)動(dòng)需要時(shí)間的,,因此,,程序中a值的變化不能太快,不然舵機(jī)跟不上程序。根據(jù)需要,,選擇合適的延時(shí),,用一個(gè)a遞增循環(huán),可以讓舵機(jī)很流暢的轉(zhuǎn)動(dòng),,而不會(huì)產(chǎn)生像步進(jìn)電機(jī)一樣的脈動(dòng),。這些還需要實(shí)踐中具體體會(huì)。 舵機(jī)的速度決定于你給它的信號(hào)脈寬的變化速度,。舉個(gè)例子,,t=0試,脈寬為0.5ms,,t=1s時(shí),,脈寬為1.0ms,那么,,舵機(jī)就會(huì)從0.5ms對(duì)應(yīng)的位置轉(zhuǎn)到1.0ms對(duì)應(yīng)的位置,,那么轉(zhuǎn)動(dòng)速度如何呢?一般來(lái)講,,3003的最大轉(zhuǎn)動(dòng)速度在4.8V時(shí)為0.23s/60度,,也就是說(shuō),如果你要求的速度比這個(gè)快的話,,舵機(jī)就反應(yīng)不過(guò)來(lái)了,;如果要求速度比這個(gè)慢,可以將脈寬變化值線性到你要求的時(shí)間內(nèi),,做一個(gè)循環(huán),一點(diǎn)一點(diǎn)的增加脈寬值,,就可以控制舵機(jī)的速度了,。當(dāng)然,具體這一點(diǎn)一點(diǎn)到底是多少,,就需要做試驗(yàn)了,,不然的話,不合適的話,,舵機(jī)就會(huì)向步進(jìn)電機(jī)一樣一跳一跳的轉(zhuǎn)動(dòng)了,,嘗試改變這“一點(diǎn)”,使你的舵機(jī)運(yùn)動(dòng)更平滑,。還有一點(diǎn)很重要,,就是舵機(jī)在每一次脈寬值改變的時(shí)候總會(huì)有一個(gè)轉(zhuǎn)速由零增加再減速為零的過(guò)程,這就是舵機(jī)會(huì)產(chǎn)生像步進(jìn)電機(jī)一樣運(yùn)動(dòng)的原因,。
|