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 | 0° |
| 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のタイマ機能により生成され、デューティ比を変更することで出力を制御する。