舵機(jī)概述
舵機(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)。
舵機(jī)工作原理
一般來(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ī)的PWM信號(hào)
1.PWM信號(hào)的定義
PWM信號(hào)為脈寬調(diào)制信號(hào),其特點(diǎn)在于他的上升沿與下降沿之間的時(shí)間寬度。具體的時(shí)間寬窄協(xié)議參考下列講述。我們目前使用的舵機(jī)主要依賴(lài)于模型行業(yè)的標(biāo)準(zhǔn)協(xié)議,隨著機(jī)器人行業(yè)的漸漸獨(dú)立,有些廠商已經(jīng)推出全新的舵機(jī)協(xié)議,這些舵機(jī)只能應(yīng)用于機(jī)器人行業(yè),已經(jīng)不能夠應(yīng)用于傳統(tǒng)的模型上面了。目前舵機(jī)可能是這個(gè)過(guò)渡時(shí)期的產(chǎn)物,它采用傳統(tǒng)的PWM協(xié)議,優(yōu)缺點(diǎn)一目了然。優(yōu)點(diǎn)是已經(jīng)產(chǎn)業(yè)化,成本低,旋轉(zhuǎn)角度大(目前所生產(chǎn)的都可達(dá)到185度);缺點(diǎn)是控制比較復(fù)雜,畢竟采用PWM格式。但是它是一款數(shù)字型的舵機(jī),其對(duì)PWM信號(hào)的要求較低:(1)不用隨時(shí)接收指令,減少CPU的疲勞程度;(2)可以位置自鎖、位置跟蹤,這方面超越了普通的步進(jìn)電機(jī)。
其PWM格式注意的幾個(gè)要點(diǎn):(1)上升沿最少為0.5mS,為0.5mS---2.5mS之間;(2)HG14-M數(shù)字舵機(jī)下降沿時(shí)間沒(méi)要求,目前采用0.5Ms就行;也就是說(shuō)PWM波形可以是一個(gè)周期1mS的標(biāo)準(zhǔn)方波;(3)HG0680為塑料齒輪模擬舵機(jī),其要求連續(xù)供給PWM信號(hào);它也可以輸入一個(gè)周期為1mS的標(biāo)準(zhǔn)方波,這時(shí)表現(xiàn)出來(lái)的跟隨性能很好、很緊密。
2.PWM信號(hào)控制精度制定
如果采用的是8位單片機(jī)AT89C52CPU,其數(shù)據(jù)分辨率為256,那么經(jīng)過(guò)舵機(jī)極限參數(shù)實(shí)驗(yàn),得到應(yīng)該將其劃分為250份。那么0.5mS---2.5Ms的寬度為2mS=2000uS。2000uS÷250=8uS,則:PWM的控制精度為8us。我們可以以8uS為單位遞增控制舵機(jī)轉(zhuǎn)動(dòng)與定位。舵機(jī)可以轉(zhuǎn)動(dòng)185度,那么185度÷250=0.74度,則:舵機(jī)的控制精度為0.74度。
1DIV=8us;250DIV=2ms時(shí)基寄存器內(nèi)的數(shù)值為:(#01H)01----(#0FAH)250。共185度,分為250個(gè)位置,每個(gè)位置叫1DIV。則:185÷250=0.74度/DIVPWM上升沿函數(shù):0.5ms+N×DIV0us≤N×DIV≤2ms0.5ms≤0.5ms+N×DIV≤2.5ms
單片機(jī)控制舵機(jī)及程序
正是舵機(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)生周期20ms的脈沖信號(hào),根據(jù)需要,改變輸出脈寬?;舅悸啡缦拢ㄕ?qǐng)對(duì)照下面的程序):
我用的晶振頻率為12M,2051一個(gè)時(shí)鐘周期為12個(gè)晶振周期,正好是1/1000ms,計(jì)數(shù)器每隔1/1000ms計(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ù),就是voidtimer0(void)interrupt1using1,在子函數(shù)中,改變輸出p12為反相(此時(shí)跳為低位),在用20000(代表20ms周期)減去高位用的時(shí)間a,就是本周期中低位的時(shí)間,c=20000-a,并設(shè)定此時(shí)的計(jì)數(shù)器初值為c,直到定時(shí)器再次產(chǎn)生溢出中斷,重復(fù)上一過(guò)程。
#include《reg51.h》
#defineucharunsignedchar
#defineuintunsignedint
uinta,b,c,d;
sbitp12=P1^2;
sbitp13=p1^3;
sbitp37=P3^7;
voidtimer0(void)interrupt1using1
{p12=!p12;
c=20000-c;
TH0=-(c/256);TL0=-(c%256);
if(c》=500&&c《=2500)c=a;
elsec=20000-a;
}
voidtimer1(void)interrupt3using1
{p13=!p13;
d=20000-d;
TH1=-(d/256);TL1=-(d%256);
if(d》=500&&d《=2500)d=b;
elsed=20000-b;
}
voidmain(void)
{TMOD=0x11;
p12=1;
p13=1;
a=1500;
b=1500;
c=a;d=b;
TH0=-(a/256);TL0=-(a%256);
TH1=-(b/256);TL1=-(b%256);
EA=1;
ET0=1;TR0=1;EX0=1;EX1=1;
ET1=1;TR1=1;
PX0=0;PX1=0;PT1=1;PT0=1;
for(;;)
{
}
}
因?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)的原因。
評(píng)論
查看更多