1.舵機介紹
舵機是一種位置伺服的驅(qū)動器,常被用于遙控汽車、機器人等領(lǐng)域,結(jié)構(gòu)主要包括小型直流電機、變速齒輪組、可調(diào)電位器和控制電路板四個部分,如下圖,舵機的外部一般接有三根線,分別是黑(接地線)、紅(電源線)、棕(白或者黃,信號線)三種顏色進行區(qū)分。
2.舵機工作原理
2.1-基準信號
舵機的內(nèi)部有一個基準電路,可以產(chǎn)生周期為20ms且寬度為1.5ms的基準信號,由信號發(fā)生器或者單片機發(fā)出信號,舵機內(nèi)部電路則將獲得的直流偏置電壓與電位器的電壓進行比較,獲得一個電壓差輸出,然后經(jīng)由舵機內(nèi)部電路板上的IC來判斷轉(zhuǎn)動方向,之后驅(qū)動馬達轉(zhuǎn)動,通過減速齒輪組將動力輸出至擺臂,同時由位置檢測器送回信號,判斷是否已經(jīng)到達指定位置。
2.2-轉(zhuǎn)動角度
舵機的轉(zhuǎn)動角度是通過調(diào)節(jié)PWM(脈沖寬度調(diào)制)信號的占空比來實現(xiàn)的標準PWM信號的周期固定為20ms,頻率50Hz,以常見的9g舵機為例,脈寬在0.5ms和2.5ms之間調(diào)節(jié)就對應(yīng)著舵機轉(zhuǎn)角的0°~180°,如下圖:
對應(yīng)關(guān)系如下:
3.PWM的實現(xiàn)
void Timer0_Init()//定時器0初始化
{
TMOD = 0X01; //設(shè)置定時器模式
TH0 = (65536-500)/256; //設(shè)置定時器初值
TL0 = (65536-500)%256;
ET0 = 1; //允許定時器0中斷
TR0 = 1; //啟動定時器0
EA = 1; //打開總中斷
}
void Timer0_Int() interrupt 1//定時器0的中斷服務(wù)函數(shù)
{
TR0 = 0; //關(guān)閉定時器0
TH0 = (65536-500)/256; //設(shè)置定時器初值
TL0 = (65536-500)%256;
counter++;
if(counter >= 40) //20ms到了
{
counter = 0;
}
if(counter < angle)
{
Pwm_val = 1;
}
else
{
Pwm_val = 0;
}
TR0 = 1; //啟動定時器0
}
4.實物結(jié)果展示
基于51單片機的舵機控制文章來源:http://www.zghlxwxcb.cn/news/detail-599513.html
5.資料分享
單片機+舵機+PWM+獨立按鍵文章來源地址http://www.zghlxwxcb.cn/news/detail-599513.html
到了這里,關(guān)于基于51單片機的舵機控制(PWM)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!