Arduino 伺服電機(jī)

2018-11-22 13:57 更新

伺服電機(jī)是一種有輸出軸的小型設(shè)備。通過向伺服發(fā)送編碼信號,可以將該軸定位到特定的角度位置。只要編碼信號存在于輸入線上,伺服將保持軸的角位置。如果編碼信號改變,則軸的角位置改變。實際上,伺服用于無線電控制的飛機(jī)中來定位控制面,如升降舵和方向舵。它們還用于無線電控制的汽車,木偶,當(dāng)然還有機(jī)器人。


伺服電機(jī)

伺服在機(jī)器人中非常有用。電機(jī)體積小,內(nèi)置控制電路,相對于它們尺寸來說非常強(qiáng)大。標(biāo)準(zhǔn)伺服如Futaba S-148具有42盎司/英寸的扭矩,這對于其尺寸來說是堅固的。它還吸取與機(jī)械負(fù)載成比例的功率。因此,輕負(fù)載伺服不會消耗太多能量。

伺服電機(jī)的內(nèi)膽如下圖所示。你可以看到控制電路,電機(jī),一組齒輪和外殼。還可以看到連接到外部的3根電線。一個是接電源(+5伏),一個接地,而白線是控制線。

伺服電機(jī)的內(nèi)膽

伺服電機(jī)的工作

伺服電機(jī)有一些控制電路和一個連接到輸出軸上的電位器(一個可變電阻,也稱為電位器)。在上圖中,電位器可以在電路板的右側(cè)看到。該電位器允許控制電路監(jiān)視伺服電機(jī)的當(dāng)前角度。

如果軸處于正確的角度,則電機(jī)關(guān)閉。如果電路發(fā)現(xiàn)角度不正確,則會轉(zhuǎn)動電機(jī)直到處于所需的角度。伺服的輸出軸能夠在180度左右的地方移動。通常情況下,它是在210度范圍內(nèi)的某個地方,然而,這取決于制造商。正常伺服用于控制0至180度的角運(yùn)動。由于主輸出齒輪上的機(jī)械止動裝置,機(jī)械上它無法轉(zhuǎn)動更遠(yuǎn)。

施加到電機(jī)上的功率與其需要行進(jìn)的距離成比例。因此,如果軸需要轉(zhuǎn)動較大的距離,電機(jī)將以全速運(yùn)轉(zhuǎn)。如果只需要少量轉(zhuǎn)動,電機(jī)將以較低的速度運(yùn)轉(zhuǎn)。這稱為比例控制。

如何溝通伺服應(yīng)該轉(zhuǎn)動的角度?

控制線用于傳達(dá)角度。該角度由施加到控制線的脈沖持續(xù)時間確定。這稱為脈沖編碼調(diào)制。伺服期望每20毫秒(0.02秒)看到一個脈沖。脈沖的長度將決定電機(jī)轉(zhuǎn)動的距離。例如,1.5毫秒脈沖將使電機(jī)轉(zhuǎn)到90度位置(通常稱為中性位置)。如果脈沖短于1.5毫秒,則電機(jī)將軸轉(zhuǎn)到更接近0度。如果脈沖長于1.5毫秒,則軸轉(zhuǎn)接近180度。

轉(zhuǎn)動角度

必需的組件

你將需要以下組件:

  • 1 × Arduino UNO板
  • 1 × 伺服電機(jī)
  • 1 × ULN2003驅(qū)動IC
  • 1 × 10KΩ電阻

程序

按照電路圖進(jìn)行連接,如下圖所示。

電路圖

草圖

在計算機(jī)上打開Arduino IDE軟件。使用Arduino語言進(jìn)行編碼控制你的電路。通過單擊“New”打開一個新的草圖文件。

Sketch

Arduino代碼

/* Controlling a servo position using a potentiometer (variable resistor) */

#include <Servo.h>
   Servo myservo; // create servo object to control a servo
   int potpin = 0; // analog pin used to connect the potentiometer
   int val; // variable to read the value from the analog pin

void setup() {
   myservo.attach(9); // attaches the servo on pin 9 to the servo object
}

void loop() {
   val = analogRead(potpin);
   // reads the value of the potentiometer (value between 0 and 1023)
   val = map(val, 0, 1023, 0, 180);
   // scale it to use it with the servo (value between 0 and 180)
   myservo.write(val); // sets the servo position according to the scaled value
   delay(15);
}

代碼說明

伺服電機(jī)有三個端子:電源,接地和信號。電源線通常為紅色,應(yīng)連接到Arduino上的5V引腳。接地線通常為黑色或棕色,應(yīng)連接到ULN2003 IC(10-16)的一個端子。為了保護(hù)你的Arduino板免受損壞,你將需要一些驅(qū)動IC來處理這些。這里我們使用ULN2003 IC來驅(qū)動伺服電機(jī)。信號引腳通常為黃色或橙色,應(yīng)連接到Arduino引腳9。

連接電位器

分壓器是串聯(lián)電路中的電阻器,其將輸出電壓縮放到施加的輸入電壓的特定比例。下面是電路圖:

連接電位計


公式

Vout是輸出電位,取決于施加的輸入電壓(Vin)和電阻(R1R2。這意味著流過R1的電流也將流過R2而不被分流。在上述等式中,隨著R的值改變,Vout相對于輸入電壓Vin而縮放。

通常,電位器是一個分壓器,它可以根據(jù)可變電阻的值而使用旋鈕來縮放電路的輸出電壓。它有三個引腳:GND,Signal和+5V,如下圖所示:

分壓器

結(jié)果

通過更改電位器的NOP位置,伺服電機(jī)將改變其角度。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號