前言:什麼是 28BYJ48 步進馬達與 ULN2003 驅動板?
在 Arduino 自動化專案(如自動窗簾、遙控雲台、3D 列印機與機械手臂)中,直流馬達(DC Motor)只能持續旋轉卻無法精確控制角度。
28BYJ48 減速步進馬達(Stepper Motor) 能將電脈衝訊號轉化為角位移,每次給予一個脈衝訊號,馬達就會旋轉一個固定的角度。搭配 ULN2003 達林頓陣列驅動板(Darlington Transistor Array),不僅能放大電流驅動馬達,板上的 4 顆 LED 燈還能直觀顯示目前的相序狀態!
一、 28BYJ48 步進馬達規格與核心數學計算
1. 28BYJ48 關鍵規格說明
工作電壓: 5V DC
相數與線數: 5 線 4 相(5-Wire 4-Phase)
內建齒輪減速比: 約
1 : 64原始步距角(Stride Angle): (四相八拍模式下)
2. 馬達旋轉一圈需要多少步?(關鍵計算)
28BYJ48 內部為減速馬達,齒輪組的實際減速比約為 1:64:
四相半步(Half-step, 8 拍)模式:
一圈步數
四相全步(Full-step, 4 拍,Stepper.h 預設模式):
一圈步數
二、 實驗材料與電路接線圖
🛠️ 所需材料清單
Arduino Uno R3 開發板 × 1
28BYJ48 步進馬達(5V DC) × 1
ULN2003 步進馬達驅動板 × 1
杜邦線 × 6 根
🛍️ 準備好你的硬體工具了嗎? 推薦選購:米羅科技 – Arduino 程式學習爆款套件組(包含 28BYJ48 馬達、ULN2003 驅動板與豐富驅動專案模組)
🔌 電路接線圖與腳位對照表 (Pin Mapping)
依據實物圖片,接線分為 控制訊號線 與 電源供電線 兩大部分:
詳細引腳連接對照表
💡 接線小提示:
馬達端的 5 色排線(藍、粉、黃、橘、紅)有防呆設計,直接插入 ULN2003 驅動板右側的白色專用插座即可。
三、 Arduino 步進馬達程式範例(配合圖中腳位)
由於圖片中的 IN1~IN4 分別接在 Pin 11、10、9、8,搭配 Stepper.h 函式庫時,腳位宣告順序需對應為 (11, 9, 10, 8)才能完美實現順暢旋轉!
安裝 Stepper 程式庫:
本次試驗使用arduino直接驅動步進驅動器,需安裝 Stepper 函式庫。
- 在 Arduino 整合環境功能表點選 草稿碼 / 匯入程式庫 / 管理程式庫
- 在右上方搜尋框輸入「 Stepper 」,下方會列出所有符合條件的程式庫,不同程式庫使用的程式碼並不相同。此處點 選「 Stepper」,該項目右下角會出現「安裝」鈕,按「安裝」鈕開始安裝。
💻 完整程式碼
/*
* 【Arduino入門教學】第20篇:28BYJ48步進馬達 + ULN2003驅動板
* 發佈單位:米羅科技文創學院
* 說明:依據實際配線圖控制 28BYJ48 步進馬達進行正反轉旋轉
*/
#include <Stepper.h> // 引用 Arduino 內建步進馬達函式庫
// 全步模式下旋轉一圈所需的步數 (2048 步)
const int STEPS_PER_REV = 2048;
// 初始化 Stepper 物件:Stepper(一圈步數, Pin_IN1, Pin_IN3, Pin_IN2, Pin_IN4)
// 依據圖中接線 (IN1:Pin11, IN2:Pin10, IN3:Pin9, IN4:Pin8)
// 腳位順序設定為:(11, 9, 10, 8)
Stepper myStepper(STEPS_PER_REV, 11, 9, 10, 8);
void setup() {
Serial.begin(9600);
// 設定馬達轉速為 10 RPM (轉/分)
myStepper.setSpeed(10);
Serial.println("【Mirotek】28BYJ48 步進馬達測試開始...");
}
void loop() {
// 1. 順時針旋轉一圈
Serial.println("正轉 1 圈中...");
myStepper.step(STEPS_PER_REV);
delay(1000);
// 2. 逆時針旋轉一圈
Serial.println("反轉 1 圈中...");
myStepper.step(-STEPS_PER_REV);
delay(1000);
}
四、 常用 Stepper.h 語法與調速解析
五、 常見問題與除錯 (FAQ)
Q1: 馬達發出「嗡嗡聲」劇烈抖動,但軸心完全不會轉動?
解答:
腳位宣告順序錯誤: 請檢查程式中
Stepper的腳位宣告順序是否為(8, 10, 9, 11),如果寫成(8, 9, 10, 11),相序切換順序會錯亂導致馬達原地震動。轉速設定太高: 28BYJ48 帶有減速齒輪,極限轉速約在 15~18 RPM。若
setSpeed設定超過 20,馬達會因為追不上頻率而失步(Stall)。供電不足: 請確認 ULN2003 的 VCC 是否有提供穩定的 5V 電源。
Q2: 馬達停止轉動後,ULN2003 驅動板和馬達感覺發熱正常嗎?
解答:
Stepper.h在執行完step()後,最後一個觸發的腳位會持續維持高電位供電(鎖定轉矩 Hold Torque),因此會有電流持續通過並產生發熱。若長時間不用,可在程式中將 IN1~IN4 腳位全部寫入LOW以省電並降低溫度。
🔗 延伸閱讀與推薦課程



