舵機是什么?
伺服電機通常被稱為舵機,它是一種帶有輸出軸的小裝置。當我們向伺服器發(fā)送一個控制信號時,輸出軸就可以轉(zhuǎn)到特定的位置。只要控制信號持續(xù)不變,伺服機構(gòu)就會保持軸的角度位置不改變。如果控制信號發(fā)生變化,輸出軸的位置也會相應(yīng)發(fā)生變化。日常生活中,舵機常被用于遙控飛機、遙控汽車、機器人等領(lǐng)域。
舵機在機器人領(lǐng)域非常有用。因為舵機有內(nèi)置的控制電路,它們的尺寸雖然很小,但輸出力夠大。像Futaba S-148這樣的標準舵機能提供 0.3牛/米的扭矩,相對于它的外形大小來說這已經(jīng)足夠強大了。同時,舵機消耗的能量與機械負荷成正比。因此,一個輕載的舵機系統(tǒng)不會消耗太多的能量。
舵機的內(nèi)部結(jié)構(gòu)
舵機的內(nèi)部結(jié)構(gòu)如上圖所示。你可以看到控制電路,馬達,一組齒輪和外殼。
當然還包括電源線(+5V,紅色),地線(GND黑色)和PWM控制線(黃色或白色)。
舵機的工作原理
舵機內(nèi)部的控制電路,電位計(可變電阻器)和電機均被連接到電路板上,如內(nèi)部結(jié)構(gòu)圖的右邊部分。控制電路通過電位計可監(jiān)控舵機的當前角度。
如果軸的位置與控制信號相符,那么電機就會關(guān)閉。如果控制電路發(fā)現(xiàn)這個角度不正確,它就會控制馬達轉(zhuǎn)動,直到它達到指定的角度。舵機角度根據(jù)制造商的不同而有所不同。比如,一個180度的舵機,它可以在0度至180度之間運動。由于限位裝置被安裝在主輸出裝置上,超出這個范圍機械結(jié)構(gòu)就不能再轉(zhuǎn)動了。
舵機的輸出功率與它所需要轉(zhuǎn)動的距離成正比。如果輸出軸需要轉(zhuǎn)動很長的距離,馬達就會全速運轉(zhuǎn),如果它只需要短距離轉(zhuǎn)動,馬達就會以較慢的速度運行,這叫做速度比例控制。
如何讓舵機轉(zhuǎn)到指定角度?
控制線用于傳輸角度控制信號。這個角度是由控制信號脈沖的持續(xù)時間決定的,這叫做脈沖編碼調(diào)制(PCM)。舵機的控制一般需要一個20ms左右的時基脈沖,該脈沖的高電平部分一般為0.5ms-2.5ms范圍,總間隔為2ms。脈沖的寬度將決定馬達轉(zhuǎn)動的距離。例如:1.5毫秒的脈沖,電機將轉(zhuǎn)向90度的位置(通常稱為中立位置,對于180°舵機來說,就是90°位置)。如果脈沖寬度小于1.5毫秒,那么電機軸向朝向0度方向。如果脈沖寬度大于1.5毫秒,軸向就朝向180度方向。以180度舵機為例,對應(yīng)的控制關(guān)系是這樣的:
0.5ms————-0度;
1.0ms————45度;
1.5ms————90度;
2.0ms———–135度;
2.5ms———–180度;
用Arduino UNO 控制舵機
測試的硬件條件:
• 1 × Arduino UNO.
• 1 × 舵機.
• 1 × ULN2003 驅(qū)動IC(用于防止直接通過Arduino驅(qū)動舵機造成問題.)
• 1 × 10 KΩ 電阻.
按照下圖所示進行連接,如圖所示:
打開Arduino IDE,新建一個文件。
/* 使用可變電位計控制舵機轉(zhuǎn)動 */ #include Servo myservo; // 創(chuàng)建一個 servo object int potpin = 0; // analog pin 用來連接電位計 int val; // val存儲analog pin的值 void setup() { myservo.attach(9); // 連接舵機控制信號(黃或白)至 pin 9 } void loop() { val = analogRead(potpin); // 讀出可變電位計的值 (范圍 0 - 1023) val = map(val, 0, 1023, 0, 180); // 按舵機角度進行設(shè)置 (范圍 0 - 180) myservo.write(val); //根據(jù)val值設(shè)置舵機位置 delay(15); }
連線注意:舵機有三個引腳(電源、GND和信號)。電源線通常是紅色的,應(yīng)該連接到Arduino控制板上的5V針腳;GND地線通常是黑色或棕色的,應(yīng)該連接到ULN2003 IC上10-16針的任意一個;信號線通常是黃色或白色的,應(yīng)該連接到Arduino 9號引腳。
可變電位計
可變電位計是一個分壓器,它可以根據(jù)可變電阻的值來調(diào)整電路的輸出電壓,電阻是通過旋鈕來控制的。它有三個引腳:GND,信號, +5 V,如下圖所示
以上工作就緒并上傳代碼后,正常情況下當我們旋轉(zhuǎn)可變電位計,舵機將對應(yīng)改變其角度位置。