日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]調(diào)試了幾天的舵機(jī)今天終于可以受我控制了,把學(xué)習(xí)到得知識(shí)和大家分享一下。對(duì)遇到的問題期待和大家一起討論。

調(diào)試了幾天的舵機(jī)今天終于可以受我控制了,把學(xué)習(xí)到得知識(shí)和大家分享一下。對(duì)遇到的問題期待和大家一起討論。

下面和大家分享一下有關(guān)舵機(jī)的資料(資料來源于天祥電子)。

1、舵機(jī)實(shí)物圖片

2、舵機(jī)介紹

舵機(jī)英文叫Servo,也稱伺服機(jī)。其特點(diǎn)是結(jié)構(gòu)緊湊、易安裝調(diào)試、控制簡(jiǎn)單、大扭力、成本較低等。舵機(jī)的主要性能取決于最大力矩和工作速度(一般是以秒 /60°為單位)。它是一種位置伺服的驅(qū)動(dòng)器,適用于那些需要角度不斷變化并能夠保持的控制系統(tǒng)。在機(jī)器人機(jī)電控制系統(tǒng)中,舵機(jī)控制效果是性能的重要影響因素。舵機(jī)能夠在微機(jī)電系統(tǒng)和航模中作為基本的輸出執(zhí)行機(jī)構(gòu),其簡(jiǎn)單的控制和輸出使得單片機(jī)系統(tǒng)很容易與之接口。

3、舵機(jī)的工作原理

標(biāo)準(zhǔn)的舵機(jī)有3條引線,分別是:電源線Vcc、地線GND和控制信號(hào)線,如圖3所示。

圖3 標(biāo)準(zhǔn)舵機(jī)引線示意圖

在航模遙控系統(tǒng)中,控制信號(hào)由接收機(jī)的通道進(jìn)入信號(hào)調(diào)制芯片,獲得直流偏置電壓。他內(nèi)部有一個(gè)基準(zhǔn)電路,產(chǎn)生周期為20ms,寬度為1.5ms的基準(zhǔn)信號(hào),將獲得的直流偏置電壓和電位器的電壓比較,獲得電壓差輸出。最后,電壓差的正負(fù)輸出到電機(jī)驅(qū)動(dòng)芯片決定電機(jī)的正反轉(zhuǎn)。當(dāng)電機(jī)轉(zhuǎn)速一定時(shí),通過級(jí)聯(lián)減速齒輪帶動(dòng)電位器旋轉(zhuǎn),使得電壓差為0,電機(jī)停止轉(zhuǎn)動(dòng)。其實(shí)我們可以不用去了解它內(nèi)部的具體工作原理,知道它的控制原理就夠了。就象我們使用三極管一樣,知道可以拿它來做開關(guān)管或放大管就行了,至于管內(nèi)的電子具體怎么流動(dòng)是可以完全不用去考慮的。舵機(jī)的控制信號(hào)也是PWM信號(hào),利用占空比的變化改變舵機(jī)的位置。圖4為舵機(jī)輸出轉(zhuǎn)角與輸入信號(hào)脈沖寬度的關(guān)系,其脈沖寬度在0.5~2.5ms之間變化時(shí),舵機(jī)輸出軸轉(zhuǎn)角在0°~180°之間變化。

圖4 舵機(jī)輸出轉(zhuǎn)角與輸入信號(hào)脈沖寬度的關(guān)系

4、用單片機(jī)實(shí)現(xiàn)舵機(jī)轉(zhuǎn)角控制

單片機(jī)系統(tǒng)實(shí)現(xiàn)對(duì)舵機(jī)輸出轉(zhuǎn)角的控制,必須首先完成兩個(gè)任務(wù):首先是產(chǎn)生基本的PWM周期信號(hào),即產(chǎn)生20ms的周期信號(hào);其次是脈寬的調(diào)整,即單片機(jī)調(diào)節(jié)PWM信號(hào)的占空比。

單片機(jī)作為舵機(jī)的控制部分,能使PWM信號(hào)的脈沖寬度實(shí)現(xiàn)微秒級(jí)的變化,從而提高舵機(jī)的轉(zhuǎn)角精度。單片機(jī)完成控制算法,再將計(jì)算結(jié)果轉(zhuǎn)化為PWM信號(hào)輸出到舵機(jī),由于單片機(jī)系統(tǒng)是個(gè)數(shù)字系統(tǒng),其控制信號(hào)的變化完全依靠硬件計(jì)數(shù),所以受外界干擾較小,整個(gè)系統(tǒng)工作可靠。

單片機(jī)控制單個(gè)舵機(jī)是比較簡(jiǎn)單的,利用一個(gè)定時(shí)器即可,假設(shè)僅控制舵機(jī)5個(gè)角度轉(zhuǎn)動(dòng),其控制思路如下:只利用一個(gè)定時(shí)器T0,定時(shí)時(shí)間為0.5ms,定義一個(gè)角度標(biāo)識(shí),數(shù)值可以為1、2、3、4、5,實(shí)現(xiàn)0.5ms、1ms、1.5ms、2ms、2.5ms高電平的輸出,再定義一個(gè)變量,數(shù)值最大為40,實(shí)現(xiàn)周期為20ms。每次進(jìn)入定時(shí)中斷,判斷此時(shí)的角度標(biāo)識(shí),進(jìn)行相應(yīng)的操作。比如此時(shí)為5,則進(jìn)入的前5次中斷期間,信號(hào)輸出為高電平,即為2.5ms的高電平。剩下的35次中斷期間,信號(hào)輸出為低電平,即為17.5ms的低電平。這樣總的時(shí)間是20ms,為一個(gè)周期。

當(dāng)用單片機(jī)系統(tǒng)控制多個(gè)舵機(jī)工作時(shí),可以參考下以方法:以驅(qū)動(dòng)8路舵機(jī)為例,假設(shè)使用的舵機(jī)工作周期均為20ms時(shí),那么用單片機(jī)定時(shí)器產(chǎn)生的多路PWM波的周期也相同。使用單片機(jī)的內(nèi)部定時(shí)器產(chǎn)生脈沖計(jì)數(shù),一般來說,舵機(jī)工作正脈沖寬度小于周期的1/8,這樣能夠在1個(gè)周期內(nèi)分時(shí)啟動(dòng)各路PWM波的上升沿,再利用定時(shí)器中斷T0確定各路PWM波的輸出寬度,定時(shí)器中斷T1控制20ms的基準(zhǔn)時(shí)間。第1次定時(shí)器中斷T0按20ms的1/8配置初值,并配置輸出I/O口,第1次T0定時(shí)中斷響應(yīng)后,將當(dāng)前輸出I/O口對(duì)應(yīng)的引腳輸出置高電平,配置該路輸出正脈沖寬度,并啟動(dòng)第2次定時(shí)器中斷,輸出I/O口指向下一個(gè)輸出口。第2次定時(shí)器定時(shí)時(shí)間結(jié)束后,將當(dāng)前輸出引腳置低電平,配置此中斷周期為20ms的1/8減去正脈沖的時(shí)間,此路PWM信號(hào)在該周期中輸出完畢,往復(fù)輸出。在每次循環(huán)的第16次(2×8=16)中斷實(shí)行關(guān)定時(shí)中斷T0的操作,最后就能夠?qū)崿F(xiàn)8路舵機(jī)控制信號(hào)的輸出。

5、舵機(jī)與單片機(jī)連接原理圖

在用單片機(jī)驅(qū)動(dòng)舵機(jī)之前,要先確定相應(yīng)舵機(jī)的功率,然后選擇足夠功率的電源為舵機(jī)供電,控制端無需大電流,直接用單片機(jī)的I/O口就可操作,擴(kuò)展板上舵機(jī)信號(hào)線接單片機(jī)的P1.7,舵機(jī)與單片機(jī)連接原理圖如圖5所示。

圖5 舵機(jī)和單片機(jī)連接原理圖

根據(jù)我的調(diào)試經(jīng)驗(yàn),選擇足夠功率的電源為舵機(jī)供電是非常重要的,開始時(shí)我用單片機(jī)學(xué)習(xí)板調(diào)試,用示波器觀察了輸出地波形、占空比和脈寬都和資料里提到的完全一樣,但是舵機(jī)轉(zhuǎn)動(dòng)的就是不正常,有的時(shí)候吱吱的轉(zhuǎn)不動(dòng),有時(shí)候只是轉(zhuǎn)向一邊,怎么也不轉(zhuǎn)回來。個(gè)人覺得,所有問題的根源都在電源上,如果舵機(jī)供電正常,應(yīng)該沒有什么問題。

以下是我測(cè)試舵機(jī)的C語(yǔ)言代碼,參考至網(wǎng)絡(luò)。

#include

#define uint unsigned int

#define uchar unsigned char

uint j,a,num=2;

uchar pro;

uchar tab[]={10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,28,28,

25,24,30,30,30,20,19,18,17,16,15,14,13,12,11,10};

sbit PWM=P1^0; //舵機(jī)pwm//

sbit key1=P1^6;

sbit key2=P1^7;

void init()

{

TMOD=0x01;

EA=1;

TR0=1;

TH0 = 0xff;

TL0 = 0xce;

ET0=1;

}

void delay_us(uint x)

{

do {

x--;

}

while(x>1);

}

void delay_ms(uint x)

{

while(x!=0)

{

delay_us(500);

x--;

}

}

void dj(uint m) //舵機(jī)控制

{

pro=m;

}

void main()

{

init();

while(1)

{

// baidong();

if(key1==0)

{

delay_ms(5);

if(key1==0)

{

while(!key1);

num++;

if(num==6)

num=1;

}

}

if(key2==0)

{

delay_ms(5);

if(key2==0)

{

while(!key2);

num--;

if(num==0)

num=6;

}

}

if(num==1)

{

for(a=0;a<10;a++)

{

dj(tab[0]);

}

}

if(num==2)

{

for(a=0;a<10;a++)

{

dj(tab[6]);

}

}

if(num==3) //

{

for(a=0;a<10;a++)

{

dj(tab[9]);

}

}

if(num==4)

{

for(a=0;a<10;a++)

{

dj(tab[12]);

}

}

if(num==5)

{

for(a=0;a<10;a++)

{

dj(tab[15]);

}

}

}

}

void timer0() interrupt 1//定時(shí)0.1ms

{

TH0=0xff;

TL0=0xce;

j++;

if(j<=pro)

{

PWM=1;

}

else

{

PWM=0;

}

if(j==400) //周期20ms

{

j=0;

PWM=~PWM;

}

}

希望大家看了本文后能有些小收獲。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉