National Central University
Uedu Main Site
Explore Uedu
Student Console
Register as Member/Login
Research Informed Consent Center
Survey Center
Educational Big Data Challenge
Claim or create a course
Try an AI Scenario Task
Support & Messages
Uptime Data

UeduGPTs

--

Jupyters

3

Local AI

--

Uedu Code

--

中央大學 AQI 72 24°C PM2.5 13
AI Reply Desktop Notifications

Show a desktop notification when the AI TA finishes replying

Chat Message Notifications

Notify me when classmates post messages in the forum

Sound notification

Play an alert sound whenever there is a new notification

Unit 09

直流馬達、伺服馬達與步進馬達

三種馬達的原理、驅動方式與適合的用途
Interaction 25 minute(s)

Learning Objectives

  • 說明直流馬達怎麼反轉與調速,讀懂 H 橋驅動板的 IN1、IN2、EN
  • 用 50 Hz 的 PWM 脈波寬度控制伺服馬達的角度
  • 照相位順序讓步進馬達的線圈通電,比較全步與半步
  • 依需求選擇合適的馬達

讓作品動起來

自走車要前進後退、機械手臂要轉到某個角度、印表機的噴頭要一格一格精準移動:這三件事剛好對應三種最常用的馬達。

直流馬達 伺服馬達 步進馬達
控制什麼 轉速與方向 角度(常見 0~180°) 一次轉固定的角度(一步)
怎麼控制 電壓(PWM)與正負極 50 Hz 脈波的寬度 依順序讓線圈通電
知道自己在哪嗎 不知道 知道(內部有位置感測器) 不知道,靠「數步數」
常見用途 輪子、風扇、幫浦 舵、夾爪、轉向 印表機、雕刻機、轉盤

上一課學過:馬達需要的電流遠超過 GPIO 能提供的,而且是會產生反向電壓的線圈。所以三種馬達都要經過驅動電路, 而且最好用獨立的電源(例如電池盒),再和開發板共地。馬達啟動時電流很大,和開發板共用電源容易讓電壓下降、開發板重新開機。

直流馬達與 H 橋

直流馬達的兩條線接上電源就會轉;正負極對調,就反轉;電壓越高轉得越快。

用一個電晶體只能控制「轉或不轉」。要能反轉,需要四個開關排成 H 字形的 H 橋(H-bridge):

      +V ──┬────────────┬──
           S1           S2
           ├──( 馬達 )──┤
           S3           S4
     GND ──┴────────────┴──

S1 與 S4 導通,電流從左往右流過馬達;S2 與 S3 導通,電流反過來。絕對不能讓同一邊的上下兩個開關同時導通(S1 與 S3), 那會讓電源直接短路到地。市售的驅動板(例如 L298N、TB6612FNG 模組)把 H 橋與保護電路做好了,用三支腳控制:

IN1 IN2 EN(PWM) 結果
1 0 大於 0 正轉,轉速看工作週期
0 1 大於 0 反轉
相同 相同 大於 0 煞車:馬達兩端接在一起,很快停下
任意 任意 0 滑行:四個開關都斷開,慢慢停下

煞車與滑行的細節依驅動晶片而不同,以規格書為準。

逐步看:正轉、調速、煞車、反轉

驅動板的 IN1、IN2 接 GPIO26、27,EN 接 GPIO25(PWM)。電路畫面上「直流馬達」卡片的數字是轉速比例,負數代表反轉。

伺服馬達:脈波寬度決定角度

伺服馬達(servo)裡面有小馬達、減速齒輪、一個量角度的位置感測器(通常是可變電阻)和控制電路。 它一直比較「現在的角度」與「被要求的角度」,自己修正,這叫閉迴路控制:放開之後就停在那個角度,有外力推它也會頂回去。

控制線上送的是 PWM:頻率 50 Hz(週期 20 ms),高電位的寬度決定角度。常見規格是 1 ms 到 2 ms(1.5 ms 是中間), 很多小型伺服接受更寬的範圍;Uedu 的模擬器用 0.5 ms 對應 0°、2.5 ms 對應 180°。實際範圍看規格,超出範圍可能讓伺服頂到極限、發熱。

from machine import Pin, PWM

servo = PWM(Pin(18), freq=50)

def set_angle(deg):
    us = 500 + deg / 180 * 2000          # 0°=500 微秒,180°=2500 微秒
    servo.duty_ns(int(us * 1000))        # duty_ns:高電位維持幾奈秒

伺服有三條線:電源(常見 5V)、GND、訊號。多顆伺服同時動作時電流不小,要用獨立的電源。 另外有一種連續旋轉伺服,脈波寬度控制的是轉速與方向,不是角度。

步進馬達:照順序讓線圈通電

步進馬達裡面有好幾組線圈圍著一個磁鐵轉子。讓某一組線圈通電,轉子就被吸過去對齊; 照順序換下一組線圈通電,轉子就跟著轉一小格,這一格叫一步。送幾步就轉幾格,不需要感測器也知道轉了多少, 但如果負載太重、轉得太快,轉子跟不上就會失步,程式卻不知道。

入門常見的 28BYJ-48 有四組線圈(A、B、C、D),搭配 ULN2003 驅動板(裡面是電晶體陣列與續流二極體)。三種通電順序:

模式 順序 特色
單相全步 A → B → C → D 一次一組線圈,最省電,力量較小
雙相全步 AB → BC → CD → DA 一次兩組,力量較大
半步 A → AB → B → BC → C → CD → D → DA 每步只轉一半的角度,比較細、比較順

28BYJ-48 內部有減速齒輪,規格是輸出軸轉一圈約 2048 個全步、4096 個半步(實際齒輪比略有差異,要精準定位時需要校正)。 順序反過來送,馬達就反轉;順序錯了(例如 A → C → B),轉子會抖動或不轉。

下面先用 LED 看半步的順序,再到馬達實驗室親手操作三種馬達。

逐步看:半步順序

四顆 LED 代表 28BYJ-48 的四組線圈(模擬器沒有步進馬達零件,用 LED 看哪幾組通電)。 程式照半步的順序送 8 步,看亮燈的組合怎麼「一組、兩組」交替往前移。

馬達實驗室:H 橋、伺服、步進

上面切換三種馬達。直流馬達按 IN1、IN2 並調整 EN;伺服馬達拖曳脈波寬度;步進馬達選模式後一步一步送。依序完成任務。

互動練習:用旋鈕控制伺服馬達

伺服馬達的訊號線接 GPIO18,可變電阻(旋鈕)接 GPIO34。依序完成任務:

  1. 直接執行起始程式,看伺服轉到 0°、90°、180°。
  2. 改程式:每 0.05 秒讀一次旋鈕(0~4095),換算成 0~180°,讓伺服跟著旋鈕轉。
  3. 回答一個問題。

可以拖曳輸入設定裡可變電阻的開始與結束值,再執行一次。

小測驗:直流與伺服

1.

H 橋驅動板上 IN1=0、IN2=1、EN 是 100% 的 PWM,馬達會怎樣?

2.

下面的程式會印出什麼?

def pulse_us(deg):
    return 500 + deg / 180 * 2000

print(pulse_us(0), pulse_us(90), pulse_us(180))
3.

伺服馬達放開之後還會停在原本的角度,被輕輕推動也會轉回來,原因是什麼?

第 1 次作答

小測驗:步進馬達

1.

28BYJ-48 依規格半步模式轉一圈是 4096 步。下面的程式會印出什麼?

steps_per_rev = 4096
deg = 90
print(steps_per_rev * deg // 360)
2.

單相全步原本照 A → B → C → D 的順序會正轉,改成 D → C → B → A 會怎樣?

3.

想做一個每次精準轉 15° 的展示轉盤,不想加角度感測器,最適合哪一種馬達?

第 1 次作答

重點整理

  • 直流馬達:電壓決定轉速(用 PWM 調整),正負極對調就反轉;用 H 橋驅動板的 IN1、IN2 控制方向、EN 控制速度。
  • 伺服馬達:50 Hz 的 PWM,高電位的寬度決定角度;內部有位置感測器,是閉迴路控制。
  • 步進馬達:照順序讓線圈通電,一次轉固定的一步;半步更細,順序反過來就反轉;沒有回授,負載太重會失步。
  • 三種馬達都要經過驅動電路,用獨立電源並和開發板共地。

下一課介紹開發板和模組之間怎麼「說話」:UART、I2C、SPI 三種序列通訊。

這一課完成了!
Next lesson:通訊方式:UART、I2C、SPI
你目前沒有登入,學習進度只存在這個瀏覽器。 Login 後,進度會跟著帳號,換電腦也看得到。