Arduino - 伺服電機

伺服電機是一種帶有輸出軸的小型裝置。通過向伺服機構傳送編碼訊號,可以將該軸定位到特定的角度位置。只要編碼訊號存在於輸入線上,伺服就會保持軸的角位置。如果編碼訊號改變,則軸的角位置改變。伺服系統用於無線電控制的航模電機中,也還可以用於無線電遙控車,木偶,當然還有機器人。

伺服電機

伺服系統在機器人技術中非常有用。電機體積小,內建控制電路,尺寸極其強大。諸如 Futaba S-148 之類的標準伺服系統具有 42 盎司/英寸的扭矩,其尺寸很大。它還消耗與機械負載成比例的功率。因此,輕載伺服系統不會消耗太多能量。

伺服電機的內部如下圖所示。你可以看到控制電路、電機、一組齒輪和外殼。你還可以看到連線外部世界的 3 根電線。一個用於電源(+5 伏),接地,白色線是控制線。

伺服電機控制電路

伺服電機的工作

伺服電機有控制電路和一個連線到輸出軸的電位計(一個可變電阻,又稱電位器)。在上圖中,可以在電路板的右側看到電位器。該電位器允許控制電路監控伺服電機的當前角度。

如果軸處於正確角度,則電機關閉。如果電路發現角度不正確,它將轉動電動機直到它達到所需的角度。伺服的輸出軸能夠在大約 180 度的範圍內行進。通常,它在 210 度範圍內,但是,它取決於製造商。普通伺服用於控制 0 到 180 度的角運動。由於主輸出齒輪上的機械擋塊,它在機械上不能再轉動。

施加到電機的功率與其需要行進的距離成比例。因此,如果軸需要轉動很長的距離,電機將全速運轉。如果只需要少量轉動,電機將以較慢的速度運轉。這稱為比例控制

如何傳送伺服轉動的角度?

控制線用於傳送角度控制訊號。該角度由施加到控制線的脈衝的持續時間確定。這稱為脈衝編碼調製。伺服器希望每 20 毫秒(0.02 秒)看到一個脈衝。脈衝長度將決定電機轉動的距離。例如,1.5 毫秒的脈衝將使電機轉到 90 度位置(通常稱為中性位置)。如果脈衝短於 1.5 毫秒,則電機將使軸更接近 0 度。如果脈衝長於 1.5 毫秒,則軸轉動接近 180 度。

角度轉彎

需要的元件

你將需要以下元件 -

  • 1×Arduino UNO 板
  • 1×伺服電機
  • 1×ULN2003 驅動 IC
  • 1×10KΩ 電阻器

程式

按照電路圖進行連線,如下圖所示。

伺服電機連線

草圖

在你的計算機上開啟 Arduino IDE 軟體。用 Arduino 語言編碼將控制你的電路。單擊“新建”開啟新的草圖檔案。

草圖

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);
}

程式碼注意

伺服電機有三個端子 - 電源,接地和訊號。電源線通常為紅色,應連線到 Arduino 上的 5V 引腳。接地線通常為黑色或棕色,應連線到 ULN2003 IC(10-16)的一個端子。為了保護你的 Arduino 電路板免受損壞,你需要一些驅動器 IC 才能做到這一點。在這裡,我們使用 ULN2003 IC 來驅動伺服電機。訊號引腳通常為黃色或橙色,應連線到 Arduino 引腳編號 9。

連線電位器

分壓器/分壓器是串聯電路中的電阻器,其將輸出電壓縮放到所施加的輸入電壓的特定比率。以下是電路圖 -

連線電位器

$$ V_ {out} =(V_ {in} \times R_ {2})/(R_ {1} + R_ {2}) $$

Vout 是輸出電位,取決於串聯的輸入電壓(V in)和電阻(R 1 和 R 2)。這意味著流過 R 1 的電流也將流過 R 2 而不被分開。在上面的等式中,隨著 R 2 的值改變,V out 相對於輸入電壓 V in 相應地縮放。

通常,電位計是分壓器,它可以根據可變電阻器的值來縮放電路的輸出電壓,可變電阻器的值使用旋鈕進行縮放。它有三個引腳:GND,訊號和+5V,如下圖所示 -

電位器描述

結果

通過改變電位器的旋鈕位置,伺服電機將改變其角度。