經(jīng)常玩NXT的朋友肯定對NXT的電機印象深刻,使用非常方便。轉(zhuǎn)速,角度和方向都可以隨意控制。
在計劃制作小愛的時候,我也一直希望能找到這樣的電機。查了一些資料,覺得比較容易控制的有舵機和步進(jìn)電機。舵機的主要玩家是船模和航模的愛好者們。大海航行靠舵手,舵機就是用來控制舵角的,它的最大特點是可以方便的控制角度,它的限制是舵角一般不超過180度。步進(jìn)電機就強多了,既可以控制角度,還可以連續(xù)旋轉(zhuǎn),它的問題是輸出就是一個光軸,需要加工配套的零件才能使用,另外價格好像會更貴一點。
我計劃用舵機來實現(xiàn)小愛的機械臂,最主要的考慮原因是舵機自帶很多舵角之類的配件,比較容易安裝,畢竟機械加工是制作過程中最麻煩的部分。另外,一般機械臂的關(guān)節(jié)轉(zhuǎn)角也不需要大于180度,用舵機就足夠了。下面是使用Arduino開發(fā)板控制舵機的一個小實驗。
先抄一段說明:舵機,又稱伺服馬達(dá),是一種具有閉環(huán)控制系統(tǒng)的機電結(jié)構(gòu)。舵機主要是由外殼、電路板、無核心馬達(dá)、齒輪與位置檢測器所構(gòu)成。其工作原理是由控制器發(fā)出PWM(脈沖寬度調(diào)制)信號給舵機,經(jīng)電路板上的IC處理后計算出轉(zhuǎn)動方向,再驅(qū)動無核心馬達(dá)轉(zhuǎn)動,透過減速齒輪將動力傳至擺臂,同時由位置檢測器(電位器)返回位置信號,判斷是否已經(jīng)到達(dá)設(shè)定位置,一般舵機只能旋轉(zhuǎn)180度。
舵機結(jié)構(gòu)圖
舵機有3根線,棕色為地,紅色為電源正,橙色為信號線,但不同牌子的舵機,線的顏色可能不同,請大家注意。
舵機的轉(zhuǎn)動的角度是通過調(diào)節(jié)PWM(脈沖寬度調(diào)制)信號的占空比來實現(xiàn)的,標(biāo)準(zhǔn)PWM(脈沖寬度調(diào)制)信號的周期固定為20ms(50Hz),理論上脈寬分布應(yīng)在1ms到2ms之間,但是,事實上脈寬可由0.5ms到2.5ms之間,脈寬和舵機的轉(zhuǎn)角0°~180°相對應(yīng)。有一點值得注意的地方,由于舵機牌子不同,對于同一信號,不同牌子的舵機旋轉(zhuǎn)的角度也會有所不同。
舵機角度和占空比的關(guān)系
?下面這個小實驗的目標(biāo)是用電位器控制舵機的角度,正好在前一個實驗里,電位器都還沒有拆掉。需要特別注意的是供電部分,舵機轉(zhuǎn)動時電流會比較大,Arduino上的電源芯片可能會因過流保護到發(fā)熱而損壞,電源需要接到外部供電,切不可使用USB供電。
舵機的棕色線接GND,紅色線接VIN(我猜這個是直接連到外接電源的正極),黃色是數(shù)據(jù)線,接在PWM的7號管腳。電位器的連接稍微有點變換,因為管腳們施展不開,我把正極連在3.3V的接口上,這樣模擬輸入的范圍就變成了0到660左右。前面說了,舵機分別用0.5ms到2.5ms之間的脈沖來對應(yīng)0到180度左右的角度,我們可以用pulsewidth=(angle*11)+500這樣的公式,把0到180度的轉(zhuǎn)角映射到500到2480的脈沖時間。
接線圖
下面看代碼:
int readPin = 6;?? //用來連接電位器 int servopin = 7;??? //定義舵機接口數(shù)字接口7 void servopulse(int angle)//定義一個脈沖函數(shù) { ? int pulsewidth=(angle*11)+500;? //將角度轉(zhuǎn)化為500-2480的脈寬值 ? digitalWrite(servopin,HIGH);??? //將舵機接口電平至高 ? delayMicroseconds(pulsewidth);? //延時脈寬值的微秒數(shù) ? digitalWrite(servopin,LOW);???? //將舵機接口電平至低 ? delayMicroseconds(20000-pulsewidth); } void setup() { ?? pinMode(servopin,OUTPUT);//設(shè)定舵機接口為輸出接口 } void loop() { ? //讀取電位器(傳感器)的讀數(shù),接到3.3V,值范圍從0到660左右 ? int readValue = analogRead(readPin); ? //把值的范圍映射到0到165左右 ? int angle = readValue / 4; ? //發(fā)送50個脈沖 ? for(int i=0;i<50;i++) ? { ???? //引用脈沖函數(shù) ???? servopulse(angle); ? } }實驗結(jié)果:當(dāng)旋轉(zhuǎn)電位器的時候,舵機的角度隨之改變。不過最終轉(zhuǎn)角并沒有達(dá)到180度,在某些范圍內(nèi),電位器旋轉(zhuǎn)時,舵機沒有轉(zhuǎn)動。網(wǎng)上舵機的說明也提到了這點,識別的角度范圍是有限的。具體的有效角度范圍,我還沒有測量,等將來開始制作的時候再說。
【本文標(biāo)簽】: 多層 pcb 多層PCB面板 沉金板 公司設(shè)備
【責(zé)任編輯】:鼎紀(jì)電子PCB??? 版權(quán)所有:http://ai-hots.com/轉(zhuǎn)載請注明出處
掃一掃更精彩!
2001-2018 深圳鼎紀(jì)電子有限公司 版權(quán)所有
粵ICP備16081348號
全國服務(wù)熱線:0755-27586790
24小時銷售熱線:18025855806|18682125228
地址:深圳市寶安區(qū)西鄉(xiāng)黃崗嶺工業(yè)區(qū)灣區(qū)人工智能產(chǎn)業(yè)園B棟605
深圳鼎紀(jì)電子有限公司:單面PCB板