
- Arduino 教程
- Arduino - 首頁
- Arduino - 概述
- Arduino - 開發板描述
- Arduino - 安裝
- Arduino - 程式結構
- Arduino - 資料型別
- Arduino - 變數和常量
- Arduino - 運算子
- Arduino - 控制語句
- Arduino - 迴圈
- Arduino - 函式
- Arduino - 字串
- Arduino - 字串物件
- Arduino - 時間
- Arduino - 陣列
- Arduino 函式庫
- Arduino - I/O 函式
- Arduino - 高階 I/O 函式
- Arduino - 字元函式
- Arduino - 數學庫
- Arduino - 三角函式
- Arduino 高階應用
- Arduino - Due 和 Zero
- Arduino - 脈衝寬度調製 (PWM)
- Arduino - 隨機數
- Arduino - 中斷
- Arduino - 通訊
- Arduino - 積體電路 (IC)
- Arduino - 序列外圍介面 (SPI)
- Arduino 專案
- Arduino - 閃爍LED
- Arduino - 漸變LED
- Arduino - 讀取模擬電壓
- Arduino - LED 條形圖
- Arduino - 鍵盤登出
- Arduino - 鍵盤訊息
- Arduino - 滑鼠按鈕控制
- Arduino - 鍵盤序列埠
- Arduino 感測器
- Arduino - 溼度感測器
- Arduino - 溫度感測器
- Arduino - 水位檢測/感測器
- Arduino - PIR 感測器
- Arduino - 超聲波感測器
- Arduino - 連線開關
- 電機控制
- Arduino - 直流電機
- Arduino - 伺服電機
- Arduino - 步進電機
- Arduino 和聲音
- Arduino - 音調庫
- Arduino - 無線通訊
- Arduino - 網路通訊
- Arduino 有用資源
- Arduino - 快速指南
- Arduino - 有用資源
- Arduino - 討論
Arduino - 伺服電機
伺服電機是一種小型裝置,帶有一個輸出軸。透過傳送編碼訊號給伺服電機,可以將此軸定位到特定的角度位置。只要編碼訊號存在於輸入線上,伺服電機就會保持軸的角度位置。如果編碼訊號改變,軸的角度位置也會改變。實際上,伺服電機用於遙控飛機來定位控制面,例如升降舵和方向舵。它們也用於遙控汽車、木偶和機器人。

伺服電機在機器人技術中非常有用。這些電機體積小巧,具有內建控制電路,並且功率強大。標準伺服電機,例如 Futaba S-148,具有 42 oz/英寸的扭矩,對於其尺寸而言非常強大。它還按機械負載的比例消耗功率。因此,輕載伺服電機不會消耗太多能量。
下圖顯示了伺服電機的內部結構。您可以看到控制電路、電機、一組齒輪和外殼。您還可以看到連線到外部世界的 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 個 10 KΩ 電阻
步驟
按照電路圖,按照下圖所示進行連線。

草圖
在您的計算機上開啟 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 是輸出電壓,它取決於施加的輸入電壓 (Vin) 和串聯電阻 (R1 和 R2)。這意味著流過 R1 的電流也會流過 R2,不會被分割。在上式中,隨著 R2 值的變化,Vout 將根據輸入電壓 Vin 縮放。
通常,電位器是一個分壓器,它可以根據可變電阻的值縮放電路的輸出電壓,該可變電阻使用旋鈕進行縮放。它有三個引腳:GND、訊號和 +5V,如下圖所示:

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