dsPIC33AKシリーズ㉚ 超高分解能PWMモジュールの使い方(2nd Generation)

dsPIC33Aシリーズ

概要

今回は、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/25HRENビットにエラッタの可能性? — 高分解能設定が反映されない現象について
25/11/15微修正

関連リンク

内部リンク

記事リンク
第1回dsPIC33AKシリーズについてdsPIC33Aシリーズに関して – ぴくおの電子工作的な何かWP (electricpico.com)
第2回開発ボード、コンフィグレーション設定、クロック設定についてdsPIC33AKシリーズ②開発ボード,コンフィグレーション設定,クロック設定について – ぴくおの電子工作的な何かWP (electricpico.com)
第3回CPU性能についてdsPIC33AKシリーズ③CPU性能について – ぴくおの電子工作的な何かWP (electricpico.com)
第4回FPU性能についてdsPIC33AKシリーズ④FPU性能について – ぴくおの電子工作的な何かWP (electricpico.com)
第5回DSPについてdsPIC33AKシリーズ⑤DSPについて – ぴくおの電子工作的な何かWP (electricpico.com)
第6回タイマー1割り込みの使い方dsPIC33AKシリーズ⑥Timer1割り込みの使い方 – ぴくおの電子工作的な何かWP (electricpico.com)
第7回PMUの使い方dsPIC33AKシリーズ⑦PMUの使い方 – ぴくおの電子工作的な何かWP (electricpico.com)
第8回高速ADCの使い方dsPIC33AKシリーズ⑧高速ADCの使い方 – ぴくおの電子工作的な何かWP (electricpico.com)
第9回高速OPAMPの使い方dsPIC33AKシリーズ⑨高速OPAMPの使い方 – ぴくおの電子工作的な何かWP (electricpico.com)
第10回DMAモジュールの使い方dsPIC33AKシリーズ⑩DMAモジュールの使い方 – ぴくおの電子工作的な何かWP (electricpico.com)
第11回WDTモジュールの使い方dsPIC33AKシリーズ⑪WDTモジュールの使い方 – ぴくおの電子工作的な何かWP (electricpico.com)
第12回DMTモジュールの使い方dsPIC33AKシリーズ⑫DMTモジュールの使い方 – ぴくおの電子工作的な何かWP (electricpico.com)
第13回I/Oインテグリティモニタモジュールの使い方dsPIC33AKシリーズ⑬I/Oインテグリティモニターモジュールの使い方 – ぴくおの電子工作的な何かWP (electricpico.com)
第14回QEIモジュールの使い方dsPIC33AKシリーズ⑭QEIモジュールの使い方 – ぴくおの電子工作的な何かWP (electricpico.com)
第15回UARTモジュールの使い方dsPIC33AKシリーズ⑮UARTモジュールの使い方 – ぴくおの電子工作的な何かWP (electricpico.com)
第16回DSPの使い方1 (デジタルフィルタ)dsPIC33AKシリーズ⑯ DSPの使い方1(デジタルフィルタ) – ぴくおの電子工作的な何かWP (electricpico.com)
第17回DSPの使い方2 (FFT)dsPIC33AKシリーズ⑰ DSPの使い方2(FFT) – ぴくおの電子工作的な何かWP (electricpico.com)
第18回DSPの使い方3 (自己相関アルゴリズム)dsPIC33AKシリーズ⑱ DSPの使い方3(自己相関アルゴリズム) – ぴくおの電子工作的な何かWP (electricpico.com)
第19回DSPの使い方4(LMSアルゴリズム)dsPIC33AKシリーズ⑲ DSPの使い方4(LMSアルゴリズム) – ぴくおの電子工作的な何かWP (electricpico.com)
第20回SPIモジュールの使い方dsPIC33AKシリーズ⑳ SPIモジュールの使い方 – ぴくおの電子工作的な何かWP (electricpico.com)
第21回高速コンパレータモジュールの使い方1dsPIC33AKシリーズ㉑ 高速コンパレータモジュールの使い方1 – ぴくおの電子工作的な何かWP (electricpico.com)
第22回CBGモジュールの使い方dsPIC33AKシリーズ㉒ CBGモジュールの使い方 – ぴくおの電子工作的な何かWP (electricpico.com)
第23回高速PWMの使い方dsPIC33AKシリーズ㉓ 高速PWMについて – ぴくおの電子工作的な何かWP
第24回SENTモジュールの使い方dsPIC33AKシリーズ㉔ SENTモジュールの使い方 – ぴくおの電子工作的な何かWP
第25回①AC負荷アナライザの製作①
~設計、ハードウエア編~
dsPIC33AKシリーズ㉕ AC負荷アナライザの製作①設計、ハードウェア編 – ぴくおの電子工作的な何かWP
第25回②AC負荷アナライザの製作②
~マイコンソフトウェア編~
dsPIC33AKシリーズ㉕ AC負荷アナライザの製作②マイコンソフトウェア編 – ぴくおの電子工作的な何かWP
第25回③AC負荷アナライザの製作③
~Windowsアプリ編~
dsPIC33AKシリーズ㉕ AC負荷アナライザの製作③Windowsアプリ編 – ぴくおの電子工作的な何かWP
第26回dsPIC33AKシリーズ㉖ MBISTの使い方dsPIC33AKシリーズ㉖ MBISTの使い方 – ぴくおの電子工作的な何かWP
第27回DSPの使い方5(行列)dsPIC33AKシリーズ㉗ DSPの使い方5(行列) – ぴくおの電子工作的な何かWP
第28回CLCの使い方(2nd Generation)dsPIC33AKシリーズ㉘ CLCモジュールの使い方(2nd Generation) – ぴくおの電子工作的な何かWP
第29回ADCモジュールの使い方
(2nd Generation)
dsPIC33AKシリーズ㉙ ADCモジュールの使い方(2nd Generation) – ぴくおの電子工作的な何かWP
第30回(本記事)dsPIC33AKシリーズ㉚ 超高分解能PWMモジュールの使い方(2nd Generation)dsPIC33AKシリーズ㉚ 超高分解能PWMモジュールの使い方(2nd Generation) – ぴくおの電子工作的な何かWP
(fig.1-1)各関連記事リンク

外部リンク

サイト      リンク先
プロダクトページdsPIC33AK512MPS512 | Microchip Technology
データシートww1.microchip.com/downloads/aemDocuments/documents/MCU16/ProductDocuments/DataSheets/dsPIC33AK512MPS512-Family-Data-Sheet-DS70005591.pdf
エラッタdsPIC33AK512MPS512 Family Silicon Errata and Data Sheet Clarification
プログラミングdsPIC33AK512MC510 and dsPIC33AK512MPS512 Family Programming Specification
リファレンスマニュアルdsPIC33A Programmer’s Reference Manual
CPUボードdsPIC33AK512MPS512 General Purpose Dual In-Line Module (DIM) | Microchip Technology
(fig.1-2)外部リンク

初代dsPIC33AKシリーズからの変化点の紹介

dsPICシリーズにはモータ制御やスイッチング電源向けにPWMが搭載されてきました。
以下はその比較表です

シリーズ名PWMチャンネル数(ペア)分解能(最小ステップ)PWMレジスタ幅
dsPIC33EP GS81040ps16bit
dsPIC33CK
MC
42000ps16bit
dsPIC33CH4 (Main) +
8 (Secondary)
250 ps16bit
dsPIC33CK
MP
8 + 4250 ps16bit
dsPIC33AK MC41250ps20bit
dsPIC33AK MPS8 + 478  ,125020bit
(fig.1-3)各dsPIC世代のPWMチャンネル、分解能、ビット幅

変化点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.13.3 3.4
絶縁破壊電界強度(MV/cm)0.3 3 3.3
電子移動度(cm2/Vs)13507001500
性能指数(εμeEc314401130
スイッチング速度△(遅い)○(高速)◎(非常に高速)
対応電圧帯域~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 Resolution1250ps0x1003.125MHz
High Resolution78.125ps0x40012.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)が用意されていました

  1. Fault(フォルト保護)
  2. Current Limit(過電流制限)
  3. Feed Forward(先行制御)
  4. Sync/Trigger(同期・トリガ制御)

これらの入力は、アプリケーションに応じて柔軟に設定でき、PWM制御の安全性や精度を高める上で重要な役割を果たしていました。

第2世代のdsPIC33AKシリーズでは、フォルトイベントが2系統に拡張され、より高度なフェイルセーフ制御が可能になっています。
ただし、この2つのフォルトイベント間に優先順位が存在するのか、あるいは論理和(OR)で扱われるのか、あるいは後着優先で上書きされるのかといった詳細については、現時点(2025年)で公開されているデータシートからは明確に読み取ることができませんでした。

変化点4) PGxIOCONレジスタ

初代のPWMモジュールでは、PGxIOCONレジスタは1つの構成でしたが、第2世代では2つのレジスタに拡張されています。

(fig.*-2-2)70005539C – 694 14.3 Register Summary より抜粋
(fig.*-2-2)DS70005591A – 995 15.3.1. Register Summary より抜粋
レジスタ名ビット名機能
PGxIOCON1CAPEN【新規】キャプチャポイント有効ビットの追加
CAPTREN【新規】タイムベースキャプチャによるトリガの有効化ビット
CAPTRSEL[1:0]【新規】タイムベースキャプチャトリガレジスタ選択ビット
FORCEON【新規】デッドタイムを考慮したオーバーライドか即時オーバーライドかを設定
PGxIOCON2FLT2DAT【新規】フォルト2が発生した時のイベント
FLT1DAT【変更】フォルト1が発生した時のイベント

変化点5) PGxEVTレジスタ

PGxEVTレジスタも新規機能が追加された影響でレジスタが2本に拡張されています。

レジスタ名ビット名機能
PGxEVT1FLT2IEN【新規】フォルト2が発生した時に割り込みを発生させるか?
FLT1IEN【変更】フォルト1が発生した時に割り込みを発生させるか?
DACTREN2【新規】PGxTRIGEイベントがDACトリガとして使用するか?
DACTREN1【新規】PGxTRIGDイベントがDACトリガとして使用するか?
PGxEVT2CAPTROFS[4:0]【新規】タイムベースキャプチャによるトリガオフセット設定
CAPTRPS[4:0]【新規】タイムベースキャプチャポストスケーラ
ADTR2OFS[4:0]【新規】ADCトリガー2へのオフセット設定
ADTR2PS[4:0]【新規】ADCトリガー2ポストスケーラ

変化点6) PGxyPCI

PGxyPCIレジスタも新規機能が追加された影響でレジスタが2本に拡張されています。

レジスタ名ビット名機能
PGxyPCI1BPSEL[7:0]【変更】PCI(PWM Control Input)をバイパスするソースとして、PWM1〜PWM4のいずれか1つを選択する形式となっていました。
第2世代のdsPIC33AKシリーズでは、PWM1〜PWM8に対応するようビットが拡張され、しかもこれらの複数のPWM出力を論理和(OR)で組み合わせてバイパスソースに指定できるようになりました。
PGxyPCI2PSS[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.25MPLAB® X IDE | Microchip Technology
コンパイラMPLAB XC DSC v3.21MPLAB® XC DSC Compiler | Microchip Technology

(fig.2-1)本記事の動作確認環境

(fig.2-2)ベースボード + CPUボード

ブロック図

(執筆中)

ソースコード

執筆中

対応型式

高分解能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

記事についての注意点

本記事は慎重に内容を検討し正確さに努めておりますが、内容に誤りがあったとしても、この記事を参考にして生じた損害等については一切の責任を負いません。

コメント

タイトルとURLをコピーしました