舵機(jī)是一種位置伺服的驅(qū)動(dòng)器,主要是由外殼、電路板,、無核心馬達(dá),、齒輪與位置檢測器所構(gòu)成,。其工作原理是由接收機(jī)或者單片機(jī)發(fā)出信號(hào)給舵機(jī),,其內(nèi)部有一個(gè)基準(zhǔn)電路,產(chǎn)生周期為20ms,,寬度為1.5ms的基準(zhǔn)信號(hào),,將獲得的直流偏置電壓與電位器的電壓比較,獲得電壓差輸出,。經(jīng)由電路板上的IC判斷轉(zhuǎn)動(dòng)方向,,再驅(qū)動(dòng)無核心馬達(dá)開始轉(zhuǎn)動(dòng),透過減速齒輪將動(dòng)力傳至擺臂,,同時(shí)由位置檢測器送回信號(hào),,判斷是否已經(jīng)到達(dá)定位。適用于那些需要角度不斷變化并可以保持的控制系統(tǒng),。當(dāng)電機(jī)轉(zhuǎn)速一定時(shí),,通過級(jí)聯(lián)減速齒輪帶動(dòng)電位器旋轉(zhuǎn),使得電壓差為0,,電機(jī)停止轉(zhuǎn)動(dòng),。一般舵機(jī)旋轉(zhuǎn)的角度范圍是0°到180°度。
舵機(jī)有很多規(guī)格,,但所有的舵機(jī)都有外接三根線,,分別用棕、紅,、橙三種顏色進(jìn)行區(qū)分,,由于舵機(jī)品牌不同,顏色也會(huì)有所差異,棕色為接地線,,紅色為電源正極線,,橙色為信號(hào)線。 舵機(jī)的轉(zhuǎn)動(dòng)的角度是通過調(diào)節(jié)PWM(脈沖寬度調(diào)制)信號(hào)的占空比來實(shí)現(xiàn)的,,標(biāo)準(zhǔn)PWM(脈沖寬度調(diào)制)信號(hào)的周期固定為20ms(50Hz),,理論上脈寬分布應(yīng)在1ms到2ms之間,但是,,事實(shí)上脈寬可由0.5ms到2.5ms之間,,脈寬和舵機(jī)的轉(zhuǎn)角0°~180°相對應(yīng)。有一點(diǎn)值得注意的地方,,由于舵機(jī)牌子不同,,對于同一信號(hào),不同牌子的舵機(jī)旋轉(zhuǎn)的角度也會(huì)有所不同,。
大概了解了舵機(jī)以后,我們就試著來控制一個(gè)舵機(jī)吧,,將GND和+5V連接好之后,,我選擇信號(hào)輸入口為數(shù)字接口7,至于供電部分要注意,,舵機(jī)轉(zhuǎn)動(dòng)時(shí)電流會(huì)比較大,,Arduino上的電源芯片可能會(huì)因過流保護(hù)到發(fā)熱而損壞,電源需要接到外部供電,,切不可使用USB供電(本人嘗試過,,深受其害)。 我本人更喜歡使用Arduino的傳感器擴(kuò)展板,,如下圖,,連接舵機(jī)或傳感器是超方便的。 連接好電路就來編寫程序吧,,我就讓舵機(jī)轉(zhuǎn)動(dòng)到我輸入數(shù)字所對應(yīng)的角度數(shù),,并將角度顯示到屏幕上。 程序如下: int servopin=7;//定義舵機(jī)接口數(shù)字接口7 if(val>'0'&&val<='9') } 下載完程序就可以輸入1到9的數(shù)字,讓你的舵機(jī)轉(zhuǎn)相應(yīng)的20°到180°了,。 這里還有一個(gè)引用庫函數(shù)的控制舵機(jī)的程序(取自Burn's Interactive ),供大家參考,。 arduino0012版本新增伺服電機(jī)控制lib,可以讓arduino更容易的控制伺服電機(jī),。 // 使用可變電阻控制伺服電機(jī)位置 Servo myservo; // 創(chuàng)建一個(gè)伺服電機(jī)對象 // 讀取來自可變電阻的模擬值(0到1023之間) delay(15); // 等待電機(jī)旋轉(zhuǎn)到目標(biāo)角度 |
|