センターアラインド PWM とサンプル位置
アップダウンカウントではカウンタがゼロから周期値まで上がって再び下がるので、PWM の 1 周期に自然なイベントが 2 つあります。カウンタがゼロになる谷と、周期値に等しくなる山です。カウンタが比較値より大きいときにハイサイドをオンにすると、オン時間は山を、オフ時間は谷を中心に置かれます。
インダクタ電流は三角波で、その中間値はちょうどオン時間とオフ時間の中央に来ます。そのため谷か山でサンプリングすれば、フィルタなしでその周期の平均電流が得られ、この 2 つのイベントが ADC トリガとしてよく使われます。トリガ遅延をゼロからずらすとサンプルにリップルの一部が混じります。初期値では、谷で 1 µs 遅れるごとに 4 A リップルのうち 0.2 A の誤差が出ます。
サンプリング時間、リンギング、ローサイドシャント
ADC のサンプルホールドにはサンプリング窓が必要で、その間ずっと信号が整定していなければなりません。デッドタイム後の相補スイッチのエッジも含め、スイッチングエッジのたびにパワーループと電流センサにリンギングが起きます。窓がそのリンギングの中に入ると、変換値は振動のどこに当たったかで変わります。アニメーションではリンギングが見えるよう実際より遅く描き、判定には整定時間だけを使います。
ローサイドのソースに置いたシャントは、ハイサイドがオフの間だけ相電流を流します。そのため谷でのサンプリングは、オフ時間の中にデッドタイム、整定、サンプリング時間が収まるときだけ有効で、これがデューティを制限します:D_max = 1 − 2·(t_dead + max(t_settle − t_delay, t_delay + t_acq))/T_s。初期値(20 kHz、デッドタイム 0.5 µs、整定 1.5 µs、サンプリング 0.5 µs)では D_max は 92 % です。3 シャントのドライブでは、窓が最も短い相を飛ばして残り 2 相から復元する方法がよく使われます。
変換から新デューティまで:遅れの出どころ
変換が終わると ADC が変換完了割り込みを出し、制御則が実行され、新しい比較値が書き込まれます。タイマはこの値をすぐには使いません。比較レジスタはシャドウ構造で、選んだカウンタイベントでのみアクティブレジスタにコピーされます。そうすることで周期の途中で書き込んでもグリッチやパルス抜けが起きません。
谷でサンプリングし、シャドウを谷でのみロードすると、新しいデューティはサンプルから 1 周期後に反映されます。初期値では 49.5 µs、つまり 0.99 T_s です。谷と山の両方でロードすれば、割り込みが山の前に終わる限りおよそ半周期に縮まり、間に合わなければ次の谷にずれ込みます。次のサンプル時点まで割り込みが終わらなければループはオーバーランしており、このタイミングはもう成り立ちません。
ループ設計では、この経路を計算遅れ(ここでは最大 1 周期)に PWM 更新そのもののおよそ半周期を加えたものとしてモデル化するのが一般的です。デジタル電流ループのクロスオーバーを制限するのは、たいてい変換器ではなくこの遅れです。
代表的な 2 つの MCU ファミリでの表し方
TI C2000 ePWM:タイムベースが CTR = Zero と CTR = PRD のイベントを生成し、アップダウンカウントモードの周期は 2·TBPRD·T_TBCLK です。イベントトリガサブモジュールが選んだイベントを ADC の変換開始信号 SOCA または SOCB に変え、ETSEL[SOCASEL] の選択肢には CTR = Zero と CTR = PRD があります。比較レジスタはシャドウ構造で、シャドウからアクティブへのロードは CTR = Zero、CTR = PRD、またはその両方で行えます(CMPCTL[LOADAMODE])。出典:TMS320F2837xD テクニカルリファレンスマニュアル(SPRUHM8)の ePWM の章、および TMS320x28xx/28xxx ePWM モジュールリファレンスガイド(SPRU791)。個々のデバイスがどの選択肢を持つかは、その TRM に記載されています。
STM32 タイマ:センターアラインドモードではオーバーフローとアンダーフローの両方で更新イベントが発生し、ARR、PSC、CCRx などのバッファ付きレジスタは更新イベントでプリロード値がロードされます。リピティションカウンタで更新頻度を下げられます。トリガ出力 TRGO は TIMx_CR2 の MMS ビットで更新イベントや OCxREF 信号などから選び、STM32G4 などのシリーズのアドバンストコントロールタイマには、タイマと ADC の同期用に TRGO2 が追加されています。出典:ST アプリケーションノート AN4013「Introduction to timers for STM32 MCUs」。ADC がレギュラー変換とインジェクテッド変換用のタイマトリガを選ぶ方法は ADC のバージョンによって異なり、全シリーズのフィールド名は確認できていないので、使用するデバイスのリファレンスマニュアルの ADC の章で確認してください。
実機での確認
空いている GPIO を割り込みの先頭で High、最後で Low にし、PWM 出力と電流センサ信号と一緒にオシロスコープで観測してください。1 回の取り込みで実際のサンプル時点、割り込みの長さ、次のサンプルまでの余裕が見え、設定がタイミング図どおりに動いているかを確かめる最も速い方法です。
アニメーションはこのページに示した式どおりに描いています。教科書やソフトウェアライブラリによって規約が異なるので、数値を比べる前に使っているコードの規約を確認してください。