PWM (Pulse Width Modulation)

PWM 頻率公式: (PWM 頻率 = 波形完整週期重複速度)

Fpwm = Fclock / (DIV × PERIOD)

DIV:粗調,分大塊控制 PWM 頻率
PERIOD:細調,精確控制 PWM 頻率與 DUTY 解析度

最常見做法:
先選適合應用的 PWM 頻率 → 透過 DIV 粗調
再用 PERIOD 精調 DUTY 解析度

DIV(分頻器 / Divider / Prescaler)

功能:
把系統時鐘分頻,決定 PWM 計數器的速度。
也就是將原本的數個步數計算為一個步數。

可調性:
大部分 MCU 都提供可調 DIV 的選項。
一般是有限的幾個預設值,例如 DIV = 1, 2, 4, 8, 16, 64, 256 等。

調整效果:
DIV ↑ → 計數器跑慢 → PWM 頻率下降
DIV ↓ → 計數器跑快 → PWM 頻率上升

限制:
不是任意數字,通常是離散選項。

舉例說明:
假設系統時鐘 48 MHz,PWM 計數器, Period = 1000

DIV    計數器時計     完成 1 個 PWM 週期時間           PWM 頻率
 1     48 MHz        1000 / 48 MHz ≈ 20.8 μs        48000 Hz
 8      6 MHz        1000 / 6 MHz ≈ 166.7 μs         6000 Hz
64      0.75 MHz     1000 / 0.75 MHz ≈ 1.33 ms        750 Hz

為什麼單靠 PERIOD 不夠?
計數器的最大值有限制
MCU 計數器位寬有限(8-bit、16-bit、32-bit)
例如 16-bit 計數器最大值 = 65535
如果希望 PWM 頻率非常低(週期很長),可能超過 16-bit 計數器最大值 → 無法用 PERIOD 調整
這時就需要 DIV,把計數器時計降低,才能達到低頻 PWM

精細調整占空比
高 DIV → 計數器跑慢 → 同一週期值(PERIOD)對應的占空比變慢
方便在高頻系統中保留 DUTY 解析度

適應不同頻率需求
有些應用需要高頻(LED 調光、馬達控制),有些需要低頻(伺服控制、蜂鳴器)
DIV 提供粗調頻率的手段,PERIOD 提供細調頻率和占空比解析度

PERIOD(計數器週期 / ARR / TOP)

功能:
決定計數器完成一個 PWM 週期所需的步數(已經經過任何分頻後的時鐘)。

可調性:
幾乎所有 MCU 都允許設置任意週期值(受寄存器位寬限制,例如 8、16 或 32 bit)。

調整效果:
PERIOD ↑ → PWM 週期變長 → PWM 頻率下降
PERIOD ↓ → PWM 週期變短 → PWM 頻率上升

優點:
可以精細調整 PWM 頻率,同時影響 DUTY 解析度。
PERIOD 大 → 步數多 → DUTY 可以更細 → 解析度高
PERIOD 小 → 步數少 → DUTY 解析度低

舉例說明:
假設:
計數器週期(Period) = 100
PWM DUTY 設為 25

運作過程:
計數器值 PWM 輸出
0–24 高電平
25–99 低電平
計數器總步數 = 100
占空比步進 = 1 / 100 → 1%
計數器每加 1 → 占空比改變 1%

實例:

(FSCPxDIV)
DIVSEL[7]
FAN_OUT_DIVISOR[6:0]

fFANOUT = 16MHz / [(FAN_OUT_DIVISOR + 1) x 128 x (STEP+1) x 256<DIVSEL>] , where STEP is set at Register FSCPxCFG Bit2 or Bit6
也就是說 DIV 的值可以是 (1 ~ 128) 或 (1 ~ 128) x 256。
PERIOD 可以是 128 或是 256。
DUTY 的值,依 PERIOD 的值,可以是 0 ~ 128 或是 0 ~ 255。

(FSCPxCFG)
Bit2: PWM(2x) STEP (PWM resolution)
= 0, PWM resolution is 1/128
= 1, PWM resolution is 1/256

Bit6: PWM(2x+1) STEP (PWM resolution)
= 0, PWM resolution is 1/128
= 1, PWM resolution is 1/256

(FSCPxDUTY)
[7:0]
Fan speed control port duty
If STEP = 0 (set at Register FSCPxCFG Bit2 or Bit6), the resolution of duty-cycle is 1/128.
(i.e. PWM_DUTY[6:0] is valid for duty-cycle control.)
If STEP = 1 (set at Register FSCPxCFG Bit2 or Bit6), the resolution of duty-cycle is 1/256.
(i.e. PWM_DUTY[7:0] is valid for duty-cycle control.)

PWM 風扇

通常有 4 根線路,各自功能如下:

線色               功能        說明
黑色 (GND)         地線        風扇供電接地
紅色 (VCC)         電源        一般為 12V(或 5V)固定電壓
黃色 (TACH / RPM)  轉速回報     風扇每轉一圈輸出脈衝,讓主機或 H/W Monitor 讀取轉速
藍色 (PWM)         PWM 控制    透過 PWM 信號控制風扇轉速

Reference

 ChatGPT

文字內容 或 影像內容 部份參考、引用自網路,如有侵權,請告知。