1.簡介
在這篇教學中,我們將介紹如何利用 Arduino 控制伺服馬達(Servo)的轉動,伺服馬達廣泛應用於玩具、機械手臂、機器人等裝置中。
它的特點是能夠精確控制轉動角度,常見的伺服馬達可以旋轉 0° 至 180°,並透過 PWM(脈寬調變)進行控制,市面上有多種伺服馬達型號可供選擇,而這篇教學將以最常見的 SG90 為例,帶你一步步了解如何控制它的轉動。
【產品規格】
- 材質:塑膠
- 尺寸:長23 x寬12.2 x 高29 mm
- 重量:9克
- 扭矩:1.5 kg/cm
- 工作電壓:4.2-6V
- 溫度範圍:0度~55度
- 無負載運行速度:0.3s/60度
- 死區設定:10 ms
- 電線長度:20cm ,暗灰線為GND、紅線為VCC、橙黃線為脈衝訊號
- 配件:固定螺絲x2、主軸螺絲x1、方向軸x3

2. 原理說明
伺服馬達的旋轉角度是通過調節 PWM(脈寬調變)信號來決定旋轉的角度。標準的PWM信號週期為20毫秒(即50Hz),而脈寬通常分佈在1毫秒到2毫秒之間,這對應伺服馬達旋轉範圍的0°到180°。
在實際應用中,伺服馬達的脈寬範圍可能會略有不同。例如:對於SG90伺服馬達,脈寬範圍0.75~2.25ms (Max0.5~2.5ms),並對應旋轉角度的範圍,具體數值可能因不同廠牌的伺服馬達而有所變化。

3.材料介紹與準備
4.範例一
首先學習使用 Arduino IDE 內建的 Servo 函式庫,這是一個專門用來控制伺服馬達的庫,透過它我們可以很容易地讓 SG90 伺服馬達轉動到指定的角度,並且能夠進行歸零定位,接線方式如下:
- 暗灰線(GND):接地(GND)
- 紅線(VCC):供電,一般接5V
- 橙黃線(脈衝訊號):接收控制訊號,連接到Arduino數位輸出腳位

程式說明:
#include<Servo.h> //載入函式庫,這是內建的不用安裝
Servo myservo; //建立馬達名稱myservo
void setup() {
myservo.attach(9); //馬達訊號腳位設定9
}
void loop() {
myservo.write(90); //設定伺服馬達移動到90度位置
}
測試結果:

5.範例二
接著控制讓SG90馬達在指定角度內來回旋轉,單顆伺服馬達在運作時,所需電流大約是300mA,所以如果你需要同時控制2顆以上的伺服馬達運作時,就要外接高電流的變壓器來供電囉,不然就會經常出現抖動的情況。
程式說明:
#include <Servo.h> //載入函式庫,這是內建的不用安裝
Servo myservo; //建立馬達名稱myservo
void setup() {
myservo.attach(9); //馬達訊號腳位設定9
}
void loop() {
for(int i = 0; i <= 180; i+=1){
myservo.write(i); //使用write傳入角度,從0度轉到180度
delay(20);
}
delay(1000); //延遲1秒
for(int i = 180; i >= 0; i-=1){
myservo.write(i); //使用write,傳入角度,從180度轉到0度
delay(20);
}
delay(1000); //延遲1秒
}
測試結果:
