什么是伺服電機(jī)?
什么是伺服電機(jī),它們的用途是什么,它們由什么組成,以及它們?nèi)绾喂ぷ鳎?/p>
伺服電機(jī)是一種根據(jù)控制信號(hào)確定軸轉(zhuǎn)動(dòng)位置的電機(jī),通常用于通過(guò)調(diào)整襟翼來(lái)控制遙控飛機(jī),進(jìn)行無(wú)人機(jī)飛行定位,在流量控制中用于閥門(mén)控制,或用于連續(xù)驅(qū)動(dòng)機(jī)器人的輪子。它們可用來(lái)定位或調(diào)整任何您所能想到的東西。伺服電機(jī)包括一個(gè)直流電機(jī)、一個(gè)控制電路、幾個(gè)扭力齒輪以及一個(gè)塑料外殼。
它們?nèi)绾喂ぷ鳎?/p>
伺服電機(jī)通過(guò)利用脈沖寬度調(diào)制 (PWM) 信號(hào)按順時(shí)針或逆時(shí)針?lè)较颍ň唧w取決于信號(hào)的脈沖寬度)旋轉(zhuǎn)軸,來(lái)對(duì)軸位置進(jìn)行控制。通常,1 ms 脈沖寬度會(huì)按順時(shí)針?lè)较蛐D(zhuǎn)軸,2 ms 脈沖寬度會(huì)按逆時(shí)針?lè)较蛐D(zhuǎn)軸。要將軸定位在 ? 位置(或中間位置),通常使用 1.5 ms 脈沖。每個(gè)脈沖之間將需要 20 ms 間隔。下圖 2 顯示每個(gè)位置的定時(shí)。
圖 :不同軸位置的 PWM 定時(shí)
圖 :Parallax 的規(guī)格書(shū)中所示的布線連接。
如何為應(yīng)用選擇伺服電機(jī)
確定您需要的是有限旋轉(zhuǎn)(最大 180 度)還是連續(xù)旋轉(zhuǎn)。您還應(yīng)注意應(yīng)用所需的軸扭矩以及旋轉(zhuǎn)速度(以每分鐘轉(zhuǎn)數(shù) RPM 表示)。
如果您正在構(gòu)建一個(gè)移動(dòng)物體(如機(jī)器人),通常需使用連續(xù)旋轉(zhuǎn)伺服系統(tǒng)來(lái)驅(qū)動(dòng)輪子。另一方面,對(duì)于定位飛機(jī)模型的襟翼以進(jìn)行飛行控制、水閥、開(kāi)關(guān)或輔助機(jī)器人手臂所用的手柄等應(yīng)用,可以使用有限旋轉(zhuǎn)伺服系統(tǒng)。
下圖列出了一些可用的伺服系統(tǒng)模型。
使用 Arduino 平臺(tái)
(如果您不熟悉 Arduino,可訪問(wèn)此文章鏈接了解更多信息)
最常用的一款 Arduino 板稱(chēng)為“UNO”。還有幾個(gè)常用版本是我們分銷(xiāo)的產(chǎn)品,來(lái)自第三方 供應(yīng)商,例如 Adafruit、SparkFun、Seeed、DFRobot 等。我個(gè)人最喜歡的是來(lái)自 SparkFun 的 Red Board,這款產(chǎn)品在原始“UNO”板的基礎(chǔ)上新增了一些出色的改進(jìn)。我還使用過(guò) Adafruit 的“Flora”,它是一款性?xún)r(jià)比高且易于使用的圓形電路板。要查看 Digi-Key 的所有 Arduino 板,請(qǐng)單擊此鏈接。
如果您已熟悉如何 Arduino 板,可以跳過(guò)下面這一段:
我對(duì) Arduino 的描述如下:這是一款 IC 芯片和/或電路板,可在 Arduino IDE 這一常見(jiàn)的 IDE(集成開(kāi)發(fā)環(huán)境)中使用標(biāo)準(zhǔn) C 語(yǔ)言。您可以在 Arduino IDE 中創(chuàng)建代碼/軟件(即草圖),使主 IC 芯片(在常用電路板中為 ATMEGA328 微控制器)激活 I/O 引腳來(lái)執(zhí)行某些操作。您可以在 IDE 中的屏幕上獲得關(guān)于 IC 如何處理數(shù)據(jù)的反饋(使用串行命令),這類(lèi)似于使用 Windows 超級(jí)終端模式查看來(lái)自外界的串行反饋?;ヂ?lián)網(wǎng)上提供了大量在線支持以及諸多書(shū)籍和示例代碼。Arduino 一直在更新其 IDE,所以請(qǐng)確保下載了最新版本。它們有許多示例代碼和功能庫(kù),因此電路板可以充分發(fā)揮其作用。正如其稱(chēng)呼一樣,Arduino 板具有標(biāo)準(zhǔn)的引腳布局,而且還開(kāi)發(fā)出了一種稱(chēng)為“盾板”的標(biāo)準(zhǔn)版,可以為電路板添加不同的功能——這里是 Digi-Key 提供的各種電路板的鏈接。
我們來(lái)看一下如何使用 Red Board 驅(qū)動(dòng)伺服電機(jī):
首先,下載最新版本的 Arduino IDE,并啟動(dòng)該程序。然后連接 Red Board。
該電路板使用 mini-B 轉(zhuǎn) A USB 電纜進(jìn)行供電,連接后請(qǐng)將您的草圖或編寫(xiě)的代碼下載到板載 MCU。在此示例中,使用了稱(chēng)為“Servo- Sweep”的標(biāo)準(zhǔn)庫(kù)實(shí)例來(lái)驅(qū)動(dòng)伺服系統(tǒng)。
圖 :Servo Sweep 程序所在位置。
/* Sweep
by BARRAGAN 《http://barraganstudio.com》
This example code is in the public domain.
modified 8 Nov 2013
by Scott Fitzgerald
http://www.arduino.cc/en/Tutorial/Sweep
*/
#include 《Servo.h》
Servo myservo; // create servo object to control a servo
// twelve servo objects can be created on most boards
int pos = 0; // variable to store the servo position
void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop() {
for (pos = 0; pos 《= 180; pos += 1) // goes from 0 degrees to 180 degrees
// in steps of 1 degree
{
myservo.write(pos); // tell servo to go to position in variable ‘pos’
delay(15); // waits 15ms for the servo to reach the position
}
for (pos = 180; pos 》= 0; pos -= 1) // goes from 180 degrees to 0 degrees
{
myservo.write(pos); // tell servo to go to position in variable ‘pos’
delay(15); // waits 15ms for the servo to reach the position
}
}
然后,將 USB 電纜插入電路板,并在 IDE 左上角的“Tools”下選擇“Arduino UNO”板。在同一菜單中,選擇“Port”,以驗(yàn)證程序是否選中了電路板所連接的 COM 端口。最后,單擊左上角的下載按鈕(指向右側(cè)的小箭頭)。幾秒鐘后,Red Board 的一些 LED 會(huì)閃爍(表示正在將已編譯程序下載到該電路板)。
然后,將伺服電機(jī)連接到一個(gè)單獨(dú)的電源,其地線與電路板的地線需連在一起(USB 電源只能驅(qū)動(dòng)這么多的電流,這時(shí)伺服系統(tǒng)有點(diǎn)噪音,其感應(yīng)脈沖會(huì)對(duì)電路板產(chǎn)生不利影響)。
要控制電機(jī),需要將 PWM 輸入連接到電路板上。通過(guò)查看上面的代碼,我們可以知道要將 PWM 輸出連接到引腳 9。通過(guò)上圖 3,使用白色引線或中間導(dǎo)線,將其連接到電路板的引腳 9。
現(xiàn)在可以開(kāi)始運(yùn)行程序了。程序首先按順時(shí)針?lè)较虮M可能將軸歸零,然后按逆時(shí)針?lè)较蚓徛龗呙?180 度,之后又按順時(shí)針?lè)较驓w零。使用示波器可以測(cè)量程序所產(chǎn)生的 PWM 脈沖寬度。我們會(huì)發(fā)現(xiàn) 90 度時(shí)為 1.5 ms,0 度或順時(shí)針擺動(dòng)時(shí)接近 600 μs。180 度或逆時(shí)針擺動(dòng)時(shí),PWM 脈沖接近 2.2 ms。說(shuō)明該程序運(yùn)行良好,您可以更改一些值來(lái)查看各種效果,例如更改鎖定位置,或者將延遲更改為較小的值以加快掃描速度。
評(píng)論
查看更多