コンテンツにスキップ

PWM

概要

PWM(Pulse Width Modulation:パルス幅変調)は、デジタル信号を用いてアナログ的な出力を実現するための制御方式である。

一定周期のパルス信号において、HIGH状態の時間を変化させることで平均電圧を調整する。

主にモータ速度制御、LED輝度制御、サーボモータ制御などに使用される。


基本原理

PWM信号は一定周期でHIGHとLOWを繰り返す。

HIGH ──────┐      ┌──────
           │      │
LOW  ──────┴──────┴──────

<---- T ---->

周期(T)は一定であり、HIGH時間のみを変化させる。


デューティ比

デューティ比(Duty Cycle)は、1周期におけるHIGH時間の割合を表す。

計算式:

デューティ比 [%] = (HIGH時間 ÷ 周期) × 100

25%

┌──┐      ┌──┐
│  │      │  │
└──┴──────┘  └────

50%

┌────┐    ┌────┐
│    │    │    │
└────┴────┘    └──

75%

┌────────┐ ┌────────┐
│        │ │        │
└────────┴─┘        └─

平均電圧

PWMでは平均電圧を制御できる。

例:3.3V系の場合

デューティ比 平均電圧
0% 0V
25% 約0.825V
50% 約1.65V
75% 約2.48V
100% 3.3V

計算式:

平均電圧 = 電源電圧 × デューティ比


PWM周波数

PWMの周波数は1秒間に繰り返される周期数を表す。

計算式:

周波数 = 1 ÷ 周期

周波数 周期
100 Hz 10 ms
1 kHz 1 ms
10 kHz 100 µs
20 kHz 50 µs

主な用途

LED輝度制御

デューティ比を変更することで明るさを制御する。

デューティ比 明るさ
0% 消灯
50% 半分
100% 最大

DCモータ速度制御

モータへ印加される平均電圧を変更し回転数を制御する。

デューティ比 回転速度
0% 停止
50% 中速
100% 最大

サーボモータ制御

サーボモータではPWMのデューティ比ではなく、パルス幅によって角度を指定する。

一般的な制御例

パルス幅 角度
1.0 ms
1.5 ms 90°
2.0 ms 180°

周期は通常20 ms(50 Hz)。


STM32でのPWM生成

STM32ではタイマ(TIM)を利用してPWMを生成する。

主な設定項目

項目 説明
Prescaler タイマ分周比
Counter Period PWM周期
Pulse デューティ比
Channel 出力チャンネル

利点

  • デジタル出力のみでアナログ的な制御が可能
  • 発熱が少なく効率が高い
  • マイコンで容易に生成できる
  • モータやLED制御に適している

欠点

  • 高周波ノイズが発生する
  • フィルタ無しでは完全なアナログ電圧にならない
  • 周波数設定を誤ると振動や可聴ノイズの原因となる

Asterでの利用

AsterではPWMを用いてアクチュエータ制御を行う。

使用用途

対象 用途
モータドライバ 回転速度制御
LED 状態表示
サーボ 角度制御(使用時)

制御フロー

AC
 ↓
ALEO
 ↓
STM32 PWM出力
 ↓
モータドライバ
 ↓
モータ

PWM出力はSTM32のタイマ機能により生成され、デューティ比を変更することで出力を制御する。