伺服馬達(舵機)是做雲台、機械手臂、任何需要「轉到特定角度」應用的核心元件,跟一般直流馬達不一樣的地方在於它能精準控制角度,而不是只能全速轉動。
SG90跟MG90S怎麼選
SG90是最經典的入門舵機,塑膠齒輪、扭力較小(適合輕負載,例如小型雲台、指針裝置);MG90S是SG90的升級版,換成金屬齒輪,耐用度跟扭力都更好,如果你的機構需要頻繁動作或負載稍重(例如夾持機構、承重較大的雲台),直接上MG90S會省掉之後齒輪磨損打滑要換馬達的麻煩。
程式控制邏輯
- Arduino內建Servo.h程式庫,attach()指定腳位、write()指定角度(0-180度),三行程式碼就能讓舵機轉到你要的角度
- 供電要注意:多顆舵機同時動作瞬間電流會拉高,直接吃開發板的5V輸出容易造成電壓不穩(開發板重開機或舵機抖動),建議舵機另外獨立供電,只共地(GND共用)
- 角度轉動速度如果需要平滑漸進(而不是瞬間跳到目標角度),可以自己寫迴圈每次遞增1-2度並搭配短暫delay,效果會比write()直接跳過去自然很多
如果之後想玩機械手臂這種需要多顆舵機協同動作的專案,建議先把單顆舵機的角度控制、供電這些基本功練熟,再往上疊多軸協同的邏輯,一次全部一起弄很容易卡在「不知道是哪一顆的問題」。
材料清單(BOM)
| 品項 | 數量 | 備註 |
|---|---|---|
| Arduino UNO R3 開發板 | 1 | 本篇教學使用的開發板 |
| SG90 伺服馬達 | 1 | 輕負載入門選擇 |
| MG90S 伺服馬達 | 1 | 選用,金屬齒輪、負載較大時選這顆 |
| 外接電源(建議獨立5V) | 1 | 依需求自備,不要吃開發板USB供電 |
腳位接線對照表
| 開發板腳位 | 舵機接線 | 說明 |
|---|---|---|
| 5V(建議獨立供電) | 紅線(VCC) | 舵機供電正極 |
| GND | 咖啡色/黑線(GND) | 共地(務必與Arduino共地) |
| D9 | 橘線(訊號線) | PWM控制訊號 |
📷 〔照片預留位:請在這裡插入實際接線/組裝照片〕
完整程式碼
// SG90/MG90S伺服馬達基本角度控制
#include <Servo.h>
Servo myServo;
const int SERVO_PIN = 9;
void setup() {
myServo.attach(SERVO_PIN);
}
void loop() {
// 直接跳到目標角度(適合不需要平滑動作的應用)
myServo.write(0);
delay(1000);
myServo.write(90);
delay(1000);
myServo.write(180);
delay(1000);
// 平滑漸進轉動,比write()直接跳過去自然許多,適合雲台這類應用
for (int angle = 180; angle >= 0; angle -= 2) {
myServo.write(angle);
delay(15); // 調整這個延遲時間可以控制轉動速度
}
}
