概要
今回は、dsPIC33AKシリーズの第2世代(2nd Generation)に搭載されているPWM(Pulse-Width Modulation)モジュールの使い方についてご紹介します。
前回の記事では、dsPIC33AK MCシリーズに搭載されているPWM機能についてご紹介しました。
今回はその続きとして、dsPIC33AK MPSシリーズのPWMについて取り上げます。このシリーズに搭載されているPWMは、分解能78ピコ秒(ps)という非常に高精度な制御が可能で、微細な出力制御が求められるアプリケーションに最適です。
本記事では、特に初代(dsPIC33AK MCシリーズ)と第2世代目(dsPIC33AK MPSシリーズ)の違いに焦点を当て、それぞれの特徴や使い分けについて詳しく解説していきます。
記事変更履歴
| 公開/ 変更日 | 特記 |
| 25/5/24 | 初版公開。 |
| 25/5/26 | 対応型式の追加 |
| 25/6/14 | 開発環境の追加 |
| 25/6/25 | HRENビットにエラッタの可能性? — 高分解能設定が反映されない現象について |
| 25/11/15 | 微修正 |
関連リンク
内部リンク
外部リンク
初代dsPIC33AKシリーズからの変化点の紹介
dsPICシリーズにはモータ制御やスイッチング電源向けにPWMが搭載されてきました。
以下はその比較表です
| シリーズ名 | PWMチャンネル数(ペア) | 分解能(最小ステップ) | PWMレジスタ幅 |
|---|---|---|---|
| dsPIC33EP GS | 8 | 1040ps | 16bit |
| dsPIC33CK MC | 4 | 2000ps | 16bit |
| dsPIC33CH | 4 (Main) + 8 (Secondary) | 250 ps | 16bit |
| dsPIC33CK MP | 8 + 4 | 250 ps | 16bit |
| dsPIC33AK MC | 4 | 1250ps | 20bit |
| dsPIC33AK MPS | 8 + 4 | 78 ,1250 | 20bit |
変化点1) PWMの高分解能化
まず、dsPIC33AKシリーズの第2世代PWMモジュールにおける最大の進化ポイントは、分解能が78ピコ秒(ps)という超高精度に向上したことです。この圧倒的な分解能の向上により、電源制御アプリケーションにおいて次のようなアドバンテージが得られます。
- 出力電圧のきめ細かい制御が可能になり、高精度な電力供給を実現
- スイッチング周波数の高速化にも対応でき、ノイズ低減や小型化に貢献
- デューティ比制御の微細な調整ができ、負荷変動や環境変化にも強い制御系を構築可能
このように、dsPIC33AKの第2世代PWMは、高性能な電源制御設計におけるコアデバイスとして、これまで以上に強力な選択肢となっています。
近年の電源アプリケーションでは、高効率化と同時に小型化への要求がますます高まっています。特に、ACアダプタや充電器、産業用の電力変換装置では、回路全体の面積縮小と熱設計の最適化が設計上の重要課題です。
こうしたニーズに応える技術として注目されているのが、窒化ガリウム(GaN:Gallium Nitride)です。GaNは、次世代の電力変換技術として注目されている化合物半導体で、従来のシリコン(Si)や炭化ケイ素(SiC)と比較して、高速・高効率・高周波駆動を可能にする特長があります。以下に、GaN技術とSi、SiCの違いをまとめて解説します。
| 特性 / 材料 | シリコン(Si) | 炭化ケイ素(SiC) | 窒化ガリウム(GaN) |
|---|---|---|---|
| バンドギャップ(eV) | 1.1 | 3.3 | 3.4 |
| 絶縁破壊電界強度(MV/cm) | 0.3 | 3 | 3.3 |
| 電子移動度(cm2/Vs) | 1350 | 700 | 1500 |
| 性能指数(εμeEc3) | 1 | 440 | 1130 |
| スイッチング速度 | △(遅い) | ○(高速) | ◎(非常に高速) |
| 対応電圧帯域 | ~600V(主に) | 600V〜1700V以上 | ~600V中心(高耐圧品も登場) |
| 主な用途 | 一般的な低コスト電源 | 高電圧・高耐環境産業用途 | 高周波・高効率スイッチング |
| コスト | ◎(安価) | △(中程度) | △〜×(比較的高価) |
現在(2025年時点)、GaN(窒化ガリウム)デバイスは大電流向けではなく、1kW以下の電源で特に小型化が強く求められる分野を中心に活用が進んでいます。具体的には、USB PD充電器やドローン、サーバ用電源などで利用が拡大中です。
さて、PWMの分解能がなぜ重要なのか?という点について、具体的な数値で解説してみましょう。
例えば、スイッチング周波数が 100kHz(周期10μs) の場合、PWMの分解能が 1250ps(1.25ns) であれば、
10μs ÷ 1.25ns = 8000ステップ(≒0.0125%刻み)
つまり、デューティ比を0.0125%刻みで制御できるということになります。
一方で、スイッチング周波数が 1MHz(周期1μs) になると同じ1250psの分解能では、
1μs ÷ 1.25ns = 800ステップ(≒0.125%刻み)
たとえば、バックコンバータで入力電圧が20Vのとき、0.125%刻みだと出力電圧は約0.025V単位でしか制御できません。
ここで、もし分解能が 78ps のPWMを使えば…
1μs ÷ 78ps ≒ 12,820ステップ(≒0.0078%刻み)
つまり、出力電圧は理論上約0.00156V単位で制御可能になります。
これは極めて高精度な出力電圧制御が可能であることを意味し、GaNのような高速スイッチング素子との相性が非常に良いのです。
下記のようにHRENビットを1にすることで、PWMモジュール内のPLLがPWM入力クロックにロックし、それを16分割することで高分解能性能を実現します。(78ps = 1250ps / 16)
PGxCONbits.HREN = 1;
なお各モードにおいてPWMの最低周期設定値が決められております。それによると高分解能モードでさ最高12.5MHzの周波数を出力できる模様です。
| モード | 分解能 | 最低周期設定値(PGxPER) | 最高周波数 |
| Standard Resolution | 1250ps | 0x100 | 3.125MHz |
| High Resolution | 78.125ps | 0x400 | 12.5MHz |
変化点2) PGxTRIGの拡張
従来のdsPIC33Cシリーズや初代dsPIC33AKシリーズでは、PGxTRIG信号は3本(TRIGA、TRIGB、TRIGC)のみ搭載されており、これらは主にADCのサンプリングトリガとして使用されていました。
一方で、dsPIC33AKシリーズの第2世代PWMモジュールでは、このPGxTRIG信号が6本(TRIGA~TRIGF)に拡張されています。
この拡張により、Time Baseのキャプチャ用途に活用できるようになっています。
変化点3) Faultイベントの拡張
従来のdsPIC33Cシリーズおよび初代dsPIC33AKシリーズでは、PWMの動作を外部イベント入力によって制御できる機能として、以下の4つのPCI(PWM Control Input)が用意されていました
- Fault(フォルト保護)
- Current Limit(過電流制限)
- Feed Forward(先行制御)
- Sync/Trigger(同期・トリガ制御)
これらの入力は、アプリケーションに応じて柔軟に設定でき、PWM制御の安全性や精度を高める上で重要な役割を果たしていました。
第2世代のdsPIC33AKシリーズでは、フォルトイベントが2系統に拡張され、より高度なフェイルセーフ制御が可能になっています。
ただし、この2つのフォルトイベント間に優先順位が存在するのか、あるいは論理和(OR)で扱われるのか、あるいは後着優先で上書きされるのかといった詳細については、現時点(2025年)で公開されているデータシートからは明確に読み取ることができませんでした。
変化点4) PGxIOCONレジスタ
初代のPWMモジュールでは、PGxIOCONレジスタは1つの構成でしたが、第2世代では2つのレジスタに拡張されています。


| レジスタ名 | ビット名 | 機能 |
| PGxIOCON1 | CAPEN | 【新規】キャプチャポイント有効ビットの追加 |
| CAPTREN | 【新規】タイムベースキャプチャによるトリガの有効化ビット | |
| CAPTRSEL[1:0] | 【新規】タイムベースキャプチャトリガレジスタ選択ビット | |
| FORCEON | 【新規】デッドタイムを考慮したオーバーライドか即時オーバーライドかを設定 | |
| PGxIOCON2 | FLT2DAT | 【新規】フォルト2が発生した時のイベント |
| FLT1DAT | 【変更】フォルト1が発生した時のイベント |
変化点5) PGxEVTレジスタ
PGxEVTレジスタも新規機能が追加された影響でレジスタが2本に拡張されています。
| レジスタ名 | ビット名 | 機能 |
| PGxEVT1 | FLT2IEN | 【新規】フォルト2が発生した時に割り込みを発生させるか? |
| FLT1IEN | 【変更】フォルト1が発生した時に割り込みを発生させるか? | |
| DACTREN2 | 【新規】PGxTRIGEイベントがDACトリガとして使用するか? | |
| DACTREN1 | 【新規】PGxTRIGDイベントがDACトリガとして使用するか? | |
| PGxEVT2 | CAPTROFS[4:0] | 【新規】タイムベースキャプチャによるトリガオフセット設定 |
| CAPTRPS[4:0] | 【新規】タイムベースキャプチャポストスケーラ | |
| ADTR2OFS[4:0] | 【新規】ADCトリガー2へのオフセット設定 | |
| ADTR2PS[4:0] | 【新規】ADCトリガー2ポストスケーラ |
変化点6) PGxyPCI
PGxyPCIレジスタも新規機能が追加された影響でレジスタが2本に拡張されています。
| レジスタ名 | ビット名 | 機能 |
| PGxyPCI1 | BPSEL[7:0] | 【変更】PCI(PWM Control Input)をバイパスするソースとして、PWM1〜PWM4のいずれか1つを選択する形式となっていました。 第2世代のdsPIC33AKシリーズでは、PWM1〜PWM8に対応するようビットが拡張され、しかもこれらの複数のPWM出力を論理和(OR)で組み合わせてバイパスソースに指定できるようになりました。 |
| PGxyPCI2 | PSS[31:0] | 【新規】PCIソースとして32ビット幅として拡張されました。ソースとしては32個用意されており、BPSELと同様に論理和として各ビットを設定するのか、1つを選択する形式なのかが、データシートからは明確に読み取ることができませんでした。 |
HRENビットにエラッタの可能性? — 高分解能設定が反映されない現象について(25/6/25追加)
現在公開されているシリコンエラッタ(DS80001162B)には記載されていないものの、高分解能有効化ビット(HREN)に関する挙動に疑問が残る事象に遭遇しました。
HRENビットを 0 または 1 に設定しても、常に16倍モードになってしまうように見受けられます。
本来期待される分解能設定が反映されていない可能性があり、HRENビットに何らかのエラッタが存在しているのではと考えています。
もちろん、自身のレジスタ設定ミスの可能性も否定できないため、現在さらに詳細を調査中です。
同様の現象に遭遇した方がいれば、情報を共有いただけると助かります。
開発環境
開発環境を以下に示します。
今回はCPUボード(EV80L65A)で動作確認を行います。
| 項目 | 値 | リンク |
| ベースボード | dsPIC33A CURIOSITY PLATFORM DEVELOPMENT BOARD | dsPIC33A Curiosity Platform Development Board User’s Guide (microchip.com) |
| CPUボード(EV80L65A) | dsPIC33AK512MPS512 General Purpose Dual In-Line Module (DIM) | dsPIC33AK512MPS512 General Purpose Dual In-Line Module (DIM) | Microchip Technology |
| 統合開発環境 | MPLAB X IDE v6.25 | MPLAB® X IDE | Microchip Technology |
| コンパイラ | MPLAB XC DSC v3.21 | MPLAB® XC DSC Compiler | Microchip Technology |
(fig.2-1)本記事の動作確認環境

ブロック図
(執筆中)
ソースコード
執筆中
対応型式
高分解能PWMに対応したCPU型式は以下の「MPS」シリーズです。
・dsPIC33AK256MPS205・dsPIC33AK256MPS206・dsPIC33AK256MPS208・dsPIC33AK256MPS210・dsPIC33AK256MPS212
・dsPIC33AK256MPS505・dsPIC33AK256MPS506・dsPIC33AK256MPS508・dsPIC33AK256MPS510・dsPIC33AK256MPS512
・dsPIC33AK512MPS205・dsPIC33AK512MPS206・dsPIC33AK512MPS208・dsPIC33AK512MPS210・dsPIC33AK512MPS212
・dsPIC33AK512MPS505・dsPIC33AK512MPS506・dsPIC33AK512MPS508・dsPIC33AK512MPS510・dsPIC33AK512MPS512
以下のMCシリーズは、高分解能PWMには対応していませんので、ご注意ください。
・dsPIC33AK256MC205・dsPIC33AK256MC206・dsPIC33AK256MC208・dsPIC33AK256MC210・dsPIC33AK256MC505
・dsPIC33AK256MC506・dsPIC33AK256MC508・dsPIC33AK256MC510・dsPIC33AK512MC205・dsPIC33AK512MC206
・dsPIC33AK512MC208・dsPIC33AK512MC210・dsPIC33AK512MC505・dsPIC33AK512MC506・dsPIC33AK512MC508
・dsPIC33AK512MC510
記事についての注意点
本記事は慎重に内容を検討し正確さに努めておりますが、内容に誤りがあったとしても、この記事を参考にして生じた損害等については一切の責任を負いません。

コメント