優(yōu)勝從選擇開始,我們是您最好的選擇!—— 中州期刊聯(lián)盟(新鄉(xiāng)市博翰文化傳媒有限公司)
0373-5939925
2851259250@qq.com
我要檢測 我要投稿 合法期刊查詢
您的位置:網(wǎng)站首頁 > 優(yōu)秀論文 > 正文

舵機(jī)在機(jī)器人技術(shù)中的應(yīng)用及編程方法

作者:秦萍來源:原創(chuàng)日期:2013-12-07人氣:1808
 1 舵機(jī)結(jié)構(gòu)及工作原理
舵機(jī)主要由舵盤、減速齒輪組、位置反饋電位器、直流電機(jī)、控制電路板組成,其工作原理(圖1所示):控制電路接收信號源的控制脈沖,并驅(qū)動電機(jī)轉(zhuǎn)動;齒輪組將電機(jī)的速度成大倍數(shù)縮小,并將電機(jī)的輸出扭矩放大響應(yīng)倍數(shù),然后輸出;電位器和齒輪組的末級一起轉(zhuǎn)動,測量舵機(jī)軸轉(zhuǎn)動角度;電路板檢測并根據(jù)電位器判斷舵機(jī)轉(zhuǎn)動角度,然后控制舵機(jī)轉(zhuǎn)動到目標(biāo)角度或保持在目標(biāo)角度。
2 舵機(jī)的控制方法
舵機(jī)的控制信號為周期為20ms的脈寬調(diào)制信號,該脈沖的高電平部分一般為0.5ms~2.5ms,對應(yīng)的舵機(jī)轉(zhuǎn)動角度為0~180°,理想情況下脈沖高電平寬度與舵機(jī)轉(zhuǎn)動角度成正比。即舵機(jī)轉(zhuǎn)動角度=180°×(脈沖高電平寬度-0.5)/2??梢杂脝纹瑱C(jī)作為舵機(jī)的控制單元,使PWM信號的脈沖寬度實(shí)現(xiàn)微秒級的變化,從而提高舵機(jī)的轉(zhuǎn)角精度。單片機(jī)完成控制算法,再將計算結(jié)果轉(zhuǎn)化為PWM信號輸出到舵機(jī),由于單片機(jī)系統(tǒng)是一個數(shù)字系統(tǒng),整個系統(tǒng)工作可靠。單片機(jī)控制系統(tǒng)對舵機(jī)輸出轉(zhuǎn)角的控制,分為兩個步驟。第一步是產(chǎn)生基本的周期為20ms的PWM信號,第二步是PWM信號脈寬的確定,調(diào)整占空比??刂葡到y(tǒng)中實(shí)現(xiàn)一個舵機(jī)的控制,通常采用使用單片機(jī)的一個定時器來實(shí)現(xiàn)。根據(jù)PWM信號占空比,分別設(shè)定定時器中斷的初值,將20ms分為兩次中斷執(zhí)行,一次短時間中斷和一次較長時間中斷,控制輸出信號的電平變換,產(chǎn)生要求的PWM信號。
3 應(yīng)用舉例及編程方法
我們采用宏晶STC12C5A60S2單片機(jī),它是宏晶科技生產(chǎn)的高速、低功耗、超強(qiáng)抗干擾的新一代單片機(jī),指令代碼完全兼容傳統(tǒng)8051,但速度快近十倍。制作的自動投球機(jī)器人,機(jī)器人每次攜帶6個小球,通過單片機(jī)控制兩個舵機(jī)制作兩個擋板,擋板配合動作,將小球投到指定位置。兩個擋板初始位置為:下面的擋板1在“擋”位置、上面的擋板2在“縮”位置,開始向投球機(jī)器人裝入小球。啟動投球機(jī)器人后,擋板2運(yùn)動到“擋”位置,按照規(guī)定的路線循跡運(yùn)動,運(yùn)動到指定位置后,投球機(jī)器人開始投球。具體動作為:擋板1“縮”,投下一個小球,然后擋板1“擋”,擋板2“縮”,第二個小球落到最下面的位置,然后擋板2“擋”,等待投球;依次類推,投入六個小球后,工作結(jié)束。
單片機(jī)晶振頻率為12MHz,P36輸出舵機(jī)1的PWM控制信號,P37作為輸出舵機(jī)2的PWM控制信號,分別采用16位定時器T0、T1產(chǎn)生兩路PWM信號P36、P37。
以舵機(jī)1控制為例,通過設(shè)定定時器T0工作在定時模式,定時時間到產(chǎn)生中斷來產(chǎn)生PWM信號。特殊功能寄存器AUXR中的T0x12、T1x12位分別設(shè)定T0、T1對系統(tǒng)時鐘進(jìn)行12分頻還是不分頻計數(shù)定時,我們設(shè)定T0x12、T1x12為“0”,選擇對系統(tǒng)時鐘12分頻計數(shù)定時,則定時器計一個數(shù)時間為1us,產(chǎn)生2ms時間需計數(shù)2000個。初始時舵機(jī)1帶動擋板1運(yùn)動到“擋”位置,根據(jù)擋板運(yùn)動位置(舵機(jī)轉(zhuǎn)動角度)確定脈寬的初始值a,即a=(2000/180)*舵機(jī)轉(zhuǎn)動角度+500。然后設(shè)定定時器T0的初值TH0=-(65536-a)/256、TL0=-(65536-a)%256;并置輸出P36為高電平,啟動定時器T0,T0開始定時。當(dāng)定時器計數(shù)溢出時,觸發(fā)計數(shù)器溢出中斷函數(shù)void timer0() interrupt 1 using 1,在子函數(shù)中,改變輸出P36為反相(此時變?yōu)榈碗娖剑嬎鉩i =20000-a,并重新設(shè)定定時器T0的初值,直到定時器再次產(chǎn)生溢出中斷,重復(fù)上一過程。
參考程序(部分):
#define uchar unsigned char
#define uint unsigned int
sbit dj1=P3^6;
sbit dj2=P3^7;
uint a,bi,ci,d;
void timer0( ) interrupt 1 using 1
{
dj1=!dj1;
ci=20000-a;
TH0=(65536-ci)/256;
TL0=(65536-ci)%256;
TF0=0;
}
void djdang1()/*擋板1擋位置函數(shù)*/
{
dj1=1;
a=(2000/180)*130+500;
TH0=-(a/256);
TL0=-(a%256);
EA=1;
ET0=1;TR0=1;
}
void djsuo1()/*擋板1縮位置函數(shù)*/
{
dj1=1;
a=(2000/180)*70+500;
TH0=-(a/256);
TL0=-(a%256);
EA=1;
ET0=1;TR0=1;
}
void S_T() /*程序初始化*/
{
TMOD=0X11;
P3M1=0x00;
P3M0=0xff;
AUXR=0X00;
start_=1;
while(start_==1) //等待按鍵
{;}
}
void main() /*主函數(shù)*/
{
S_T();
djdang1();
djsuo2();
delay_ms(10000); /裝入小球
djdang2();
delay_ms(900);
……… ;//運(yùn)行到指定位置
djsuo1();
delay_ms(800);
djdang1();
delay_ms(850);
djsuo2();
delay_ms(800);
djdang2();//投入一個小球
……………
}

網(wǎng)絡(luò)客服QQ: 沈編輯

投訴建議:0373-5939925????投訴建議QQ:

招聘合作:2851259250@qq.com (如您是期刊主編、文章高手,可通過郵件合作)

地址:河南省新鄉(xiāng)市金穗大道東段266號中州期刊聯(lián)盟 ICP備案號:豫ICP備2020036848

【免責(zé)聲明】:中州期刊聯(lián)盟所提供的信息資源如有侵權(quán)、違規(guī),請及時告知。

版權(quán)所有:中州期刊聯(lián)盟(新鄉(xiāng)市博翰文化傳媒有限公司)

關(guān)注”中州期刊聯(lián)盟”公眾號
了解論文寫作全系列課程

核心期刊為何難發(fā)?

論文發(fā)表總嫌貴?

職院單位發(fā)核心?

掃描關(guān)注公眾號

論文發(fā)表不再有疑惑

論文寫作全系列課程

掃碼了解更多

輕松寫核心期刊論文

在線留言