PWMタイマ
PWMタイマとは、タイマカウンタと比較器を用いて出力波形のオン時間とオフ時間を制御し、平均電圧・平均電力を任意に調整するためのハードウェア機能である。マイコンの周辺回路やFPGAのIPとして実装され、モータ駆動、LED調光、スイッチング電源、オーディオ用D級アンプなどで広く用いられる。基本は一定周期でカウントアップ(またはアップ/ダウン)するカウンタ値と設定値(コンペアレジスタ)の大小比較により出力ピンのHigh/Lowを切り替える方式であり、周期(キャリア周波数)とデューティ比を独立または連動して設定できることが多い。
基本構成と動作原理
典型的な構成要素は、(1)クロック源、(2)プリスケーラ、(3)タイマカウンタ(Nビット)、(4)周期レジスタ(ARR/Period)、(5)比較レジスタ(CCR/Compare)、(6)出力制御ロジック、である。クロックを分周して得たタイミングでカウンタが進み、カウンタ値がCCRと比較される。カウンタが0からPeriodまで進む「アップカウント」では、カウンタ<CCRの区間をHigh、以上でLowといったルールによりパルス幅が決まる。Periodを固定しCCRを変えるとデューティ比が変わり、CCRを固定しPeriodを変えるとキャリア周波数が変化する。
主な動作モード(エッジ/センタ)
- エッジアラインド方式:カウンタが0→Periodで折り返す単純なアップカウントで、立ち上がりが周期の先頭に整列する。実装が簡易で多チャンネルに向く。
- センタアラインド方式:アップ/ダウン(三角波)カウントで比較する。スイッチングのゼロ交差が中央に集まり、EMIスペクトル分布が緩和されるためモータや電源に好適である。
位相制御と同期
複数チャネルの位相をずらして発生する機能(フェーズシフトPWM)を備える場合、電源回路の入力リップル低減や多相モータのトルクリップル低減に寄与する。またマスタ/スレーブでタイマを同期し、同一基準で周期と位相を管理することが可能である。
分解能と周波数設計
分解能は概ね「Nビットであれば1/2^N」で表される。キャリア周波数fpwmはfclkを分周したftickとPeriodの関係でfpwm=ftick/(Period+1)となる。高周波化すると分解能(有効ビット)が低下し、低周波化すると分解能は向上するが可聴域でのノイズやトルクリップルが問題となる。設計では「必要分解能」「許容EMI」「応答速度」のトレードオフを整理する必要がある。
実効分解能とジッタ
デューティ比を時間平均で見ると分解能はビット数に依存するが、実際にはクロック源のジッタやキャプチャ/コンペアの更新タイミングによるグリッチで有効分解能が劣化しうる。更新イベントを周期境界に同期させる「シャドウレジスタ」を使うと出力の一貫性が高まる。
デューティ比制御とフィードバック
デューティ比DはCCR/(Period+1)で定義される(エッジアラインドの代表例)。開ループでは目標平均電圧Vavg=D×Vinを想定し、負荷応答に応じてDを計算する。閉ループでは電流/電圧/速度などのフィードバックを用いてPI/PID制御器がDを逐次更新する。ソフトウェアからはタイマ更新割り込みまたはDMAでCCRを書き換え、計測と演算のパイプラインを維持するのが定石である。
リニアリティ補正
ドライバの遅延やデッドタイム、スイッチのオン抵抗により出力のリニアリティが崩れる。テーブル補正やモデルベースの前補償を行うと、低デューティ域の階段状出力や高デューティ域の飽和を緩和できる。
補機能:デッドタイム・コンプリメンタリ出力
ハーフブリッジ/フルブリッジ駆動では上側FETと下側FETの同時導通(シュートスルー)を防ぐため「デッドタイム」を挿入する。多くのPWMタイマは相補出力(High/Lowの反転出力)やプログラマブルなデッドタイム生成器を内蔵する。さらにブレーキ入力、出力無効化(OSS/ブランキング)、過電流検出との連携などパワーエレクトロニクス向け安全機能を備える。
オーバーカレントと非常停止
コンパレータやホールセンサからの故障信号でPWM出力を即時シャットダウンする「ブレーク入力」を設けると、安全停止をハードウェアレベルで保証できる。復帰条件はソフトウェアの明示解除に限定し、誤復帰を防ぐ。
更新タイミングとDMA/割り込み
CCRやPeriodの更新は、波形途中での段差発生を避けるため周期境界(更新イベント)に合わせるのが望ましい。多数チャネルを高速更新する場合、DMAで比較レジスタに連続書き込みし、波形テーブルやスプライン補間値を逐次転送する。割り込みは位相基準や同期処理に限定し、CPU負荷を抑制する。
キャプチャ/コンペアの応用
入力キャプチャ機能で外部パルス幅を測定し、それをそのまま出力のCCRに反映することでフォロワ動作(パルス幅複製)が可能である。これにより信号条件変換や分解能拡張用のデジタルサーボが簡潔に実装できる。
多相PWMと電源・モータ応用
多相インターリーブ(例:3相/4相)では位相を等間隔に配置し、入力/出力リップルを低減する。モータではSVPWM(空間ベクトルPWM)を用い、3相のオンシーケンスを最適化してトルクリップルと損失を抑える。電源では位相ごとの電流バランスを維持するため、電流検出とフィードバックを各相に持たせる構成が一般的である。
スプレッドスペクトラム
EMIピークを抑えるため、周期を微小に拡散(ディザ)させる手法がある。拡散量は制御系の帯域より十分小さくし、制御安定性と効率への影響を最小化する。
設計ステップの実務ポイント
- 要件整理:必要なfpwm、有効ビット、遅延、安全機能、チャネル数を確定する。
- クロック計画:fclk、プリスケーラ、Periodの組を探索し、分解能とEMIの折衝点を選定する。
- 更新経路:割り込み優先度やDMA帯域を見積もり、リアルタイム性を担保する。
- 保護:デッドタイム、ブレーク入力、過熱/過電流連携を設定し、フェイルセーフを検証する。
- 検証:オシロスコープでデューティ、立上り/立下り、ジッタ、相間位相を計測し、モデルと突き合わせる。
実装形態(MCU/FPGA/外付けIC)
MCUでは高機能タイマ(例:アドバンストタイマ)がコンプリメンタリ出力やデッドタイムを標準搭載し、制御ループはCPUまたはDMAで実現する。FPGAでは任意ビット幅と多相数、独自の保護ロジックを組める柔軟性がある一方、クロックツリーとタイミングクロージャの設計負荷が増す。外付けドライバICはレベルシフトやブートストラップ、シャットダウン機能を集積し、パワーステージ設計を簡素化する。
ソフトウェアとのインタフェース
APIは「セットアップ(クロック/Period/モード)」「デューティ更新」「有効/無効」「非常停止/解除」で構成するのが扱いやすい。更新は固定小数点で記述し、丸め誤差が長期に偏らないようディザや分数分周を活用する。
よくある不具合と対策
- ハードスイッチングノイズ:センタアラインドやデッドタイム最適化、ゲート抵抗見直しで低減する。
- 可聴ノイズ:fpwmを20 kHz超に設定、またはスペクトラム拡散を導入する。
- 波形グリッチ:シャドウレジスタと同期更新、DMA一括転送で回避する。
- 熱暴走・過電流:ブレーク入力の即時遮断とリトライ制御、温度保護を併用する。
まとめのない設計ノート
PWMタイマの価値は、ビット分解能・周波数計画・保護機能・更新経路の総合最適にある。エッジ/センタ、位相同期、多相化、デッドタイム、スプレッドスペクトラムなどの機能を目的に応じて選び、計測系と連携した閉ループ更新を構成することで、実装は堅牢で拡張性の高いものとなる。
コメント(β版)