vin-に接続するのは、入力電流をサンプリング抵抗に流すためです。こうすれば、USB2のみを接続した場合でも入力電流をサンプリングできます。
ブログ主さんはソフトウェアを書く際、HRTIMのfaultイベントを使ったことはありますか?私はコンパレータを用いて、インダクタ電流が設定値を超えたらハードウェアで直接MOSFETをターンオフさせるようにしています。しかし、ソフトスタート中にPWM出力がオフになっているように見えることに気づきました。コンデンサの充電電流が大きすぎて設定値にヒットしてしまい、PWM出力がオフになっているのだと思います。STM32のHRTIMでCycle-by-Cycleを実現するにはどう設定すればいいか知りたいです。具体的には、ソフトスタート期間中に設定したインダクタ電流の最大値にヒットした場合、PWM出力は即座にオフになりますが、次のサイクルでは自動的にオンになるようにしたいのです。
測定回路の校正はしましたか?あなたが設計した基板には多くの寄生パラメータが存在し、測定回路のゲインに微小な変化をもたらすため、校正して初めて比較的精度よく正しい値を出力できるようになります。
ソフトウェアに変更はないか、サンプリング回路に問題がないか確認してください。
先輩、ハードウェア過電流保護(サイクルバイサイクル電流制限)を追加し、オープンループのソフトスタートも緩やかにしました(現在500Hz、ステップ0.001)。電流インナーループは追加していません。まずオープンループを完成させてからクローズドループを追加しようと思ったからです。
-
実機テストを行ったところ、無負荷時には回路が正常に動作するのですが、20Ωの負荷を追加する(出力電圧Voを30Vに設定)と、MOSが再び壊れてしまいました。考えられる原因は何でしょうか?
-
無負荷時と負荷接続時の回路とコードは全く同じなのに、なぜMOSが破損する状況が起きるのでしょうか?
-
次はどうすべきでしょうか?出力コンデンサの容量を小さくするべきでしょうか?以前、出力コンデンサの容量が比較的小さい時は、負荷接続時でも回路は正常に動作していました。しかし、出力コンデンサを追加してから電源を入れるとMOSが壊れてしまいました。出力コンデンサの容量を小さくすれば、回路は正常に動作するようになりますか?なぜこのようなことが起きるのでしょうか?
この問題は非常に典型的だ。ソフトスタート時の出力コンデンサ充電による突入電流は、確かに過電流保護を誤トリガしやすい。もし HRTIM Fault ラッチモード(Latched) を使っているなら、一度トリガされるとソフトウェアで手動クリアするまでずっとシャットダウンされたままになる。これがあなたが見ている「PWMが完全に停止する」という現象だ。
Cycle-by-Cycle(サイクルバイサイクル電流制限) を実現するための核心的なアイデアは、Fault は現在のサイクルのみを遮断し、次のサイクルで自動的に復帰する ことだ。HRTIM のハードウェアはこの機能を完全にサポートしており、ソフトウェアでサイクルごとに手動でフラグをクリアする必要はない。
いくつかの設定のポイントを紹介する。レジスタまたは HAL 設定に直接あてはめてくれればいい:
1. Fault ソースを「自動復帰」モードに設定する
HRTIM_FLTINR1/2 の中で、コンパレータに接続している Fault チャンネル(例えば Fault1)を見つけ、以下の2つのビットに注目する:
- FLTxP[1:0](Fault Polarity):使用するコンパレータの出力極性に合わせて設定する。通常はハイレベルアクティブだ。
- FLTxSRC[1:0](Fault Source):外部入力(COMPx_OUT または外部ピン)を選択する。
- FLTxF[3:0](Fault Filter):コンパレータのグリッチによる誤トリガを防ぐため、数 ns のフィルタをかけることをお勧めする。
最も重要なのは HRTIM_FLTxR レジスタの FLTxRSM(Fault Reset Mode) だ:
- 0:Immediate に設定する —— Fault 信号が消滅した後、PWM は直ちに復帰する。
- Latched(ラッチ)には設定しないこと。あれは故障保護用であり、サイクルバイサイクル電流制限用ではない。
2. Timer レベルの Fault 応答設定
HRTIM_TIMxFLTR レジスタ(x は使用する Timer に対応、例えば TIMA/B/C/D)で:
- FLTxEN:対応する Fault チャンネルをイネーブルにする。
- FLTLCK:ソフトスタート中はロックせず、自動復帰を維持することをお勧めする。
- Fault 保護出力状態:「出力無効レベル」(Active 状態で MOSFET をターンオフ)に設定する。具体的にはハイサイド/ローサイドのドライブがハイレベルアクティブかローレベルアクティブかによる。HRTIM の Fault 出力は Set/Reset 状態を独立して設定できる。
3. 重要:ブランキング(Blanking)またはソフトスタート中の閾値の一時的な引き上げ
ソフトスタート時、無充電のコンデンサへの充電電流は I = C × dV/dt となり、デューティ比の立ち上がりが速すぎると、この突入電流が正常動作時の電流制限点を簡単に超えてしまう。HRTIM のモードを変更するだけでなく、システムレベルでの対策も併用することをお勧めする:
案 A:ソフトスタート中の電流ブランキング(Current Blanking)
HRTIM 自体は Fault Blanking Window をサポートしており、PWM がオンになってから一定時間は Fault 入力をマスクできる。しかしこれはスイッチングノイズをマスクするのには適しているが、ソフトスタート時の数十 ms にわたる充電プロセスには少し足りない。
案 B:ソフトスタートの段階的電流制限(推奨)
- ソフトスタートの最初の 50ms〜100ms は、コンパレータの閾値を一時的に引き上げる(例:通常の電流制限が 10A の場合、ソフトスタート中は 15A または 20A に設定する)。
- 出力電圧が設定値の 80% 程度まで立ち上がったら、通常のサイクルバイサイクル電流制限の閾値に切り替える。
- この切り替えは HRTIM の DMA 連携やソフトウェアタイマーで実行でき、CPU サイクルを消費しない。
案 C:HRTIM の Delayed Protection モードを使用する
もし G474 の HRTIM を使用しているなら、Timer は Delayed Protection をサポートしている(HRTIM_OUTxR で設定)。Fault トリガ時にすぐにすべてをオフにするのではなく、デューティ比だけを制限するように設定できる。ただし、これはヒカップ(Hiccup)モードにより適しており、厳密な Cycle-by-Cycle ではない。
4. コードレベルの HAL サンプル(アイデア参考)
// Fault1を使用し、COMP1_OUTに接続、ハイレベルアクティブと仮定
HRTIM_FaultCfgTypeDef pFaultCfg = {0};
pFaultCfg.Source = HRTIM_FAULTSOURCE_DIGITALINPUT;
pFaultCfg.Polarity = HRTIM_FAULTPOLARITY_HIGH;
pFaultCfg.Filter = HRTIM_FAULTFILTER_NONE; // または2-3クロックのフィルタを追加
pFaultCfg.Lock = HRTIM_FAULTLOCK_READWRITE; // ロックしない
HAL_HRTIM_FaultConfig(&hhrtim, HRTIM_FAULT_1, &pFaultCfg);
// 重要:自動復帰モードに設定
HAL_HRTIM_FaultResetConfig(&hhrtim, HRTIM_FAULT_1, HRTIM_FAULTRESETMODE_IMMEDIATE);
// Timer AでFault1応答をイネーブル
HAL_HRTIM_TimerFaultConfig(&hhrtim, HRTIM_TIMERINDEX_TIMER_A, HRTIM_FAULT_1, HRTIM_TIMFAULTENABLE_FAULT1);
その後、割り込み処理内(割り込みを使用する場合)またはメインループ内で、Fault フラグを手動でクリアする必要はない。ハードウェアがコンパレータの出力が Low になった後、自動的に PWM を復帰させる。唯一気をつけるべき点は、連続して N サイクル Fault がトリガされた場合、それは本当の過電流であることを意味し、その時点でソフトウェアが介入してデューティ比を下げるかシャットダウンする必要があるということだ。
5. デバッグのヒント
オシロスコープで3つの波形をキャプチャして比較する:
- インダクタ電流(または検出抵抗の電圧)
- コンパレータ出力(HRTIM Fault ピンを直接見る)
- HRTIM PWM 出力
PWM がオフになった後、コンパレータ出力が Low になっているのに PWM が復帰しない場合 → FLTxRSM が Immediate に設定されておらず、Latched のままであることを示している。
PWM が毎サイクルオフになってはまたオンになる場合 → Cycle-by-Cycle が機能していることを示しているが、ソフトスタート電流が本当に大きすぎるため、案 B と組み合わせて一時的に閾値を引き上げる必要がある。
まとめ:あなたが求めている Cycle-by-Cycle とは、Fault 自動復帰モード + ラッチなし のことであり、HRTIM ハードウェアがネイティブでサポートしている。ソフトスタート時の誤トリガの問題については、HRTIM を変更するだけよりも、ソフトスタート段階でのコンパレータ閾値の動的調整と組み合わせることで、より確実に解決できる。
その問題は非常に典型的だ。無負荷なら生き延びるが、負荷を繋ぐと即爆するということは、オープンループのソフトスタートがそもそも「電流ストレス」の関門を通っていないことを意味している。
まずは3つの質問に直接答える:
-
無負荷では動くが20Rを繋ぐと爆するのは、負荷起動時のコイル電流=出力コンデンサの充電電流+負荷電流になるからだ。無負荷時はコイルがコンデンサを充電するだけで済み、電流は小さい。しかし20R負荷(1.5A)を繋いだ場合、同じデューティ比ステップであれば、コイルはこの1.5Aの直流成分をさらに背負わなければならず、ピーク電流がコイルの12Aという飽和点をあっさり突き抜けてしまう。コイルが一度飽和すれば導線と同義になり、58VがMOSのRds(on)とパターンの抵抗に直接印加され、電流は一瞬で数十アンペアに達する。その「サイクルバイサイクル電流制限」は、サンプリング点が間違っているか、飽和後の電流立ち上がりスルーレートに応答速度が追いついていないかで、全く守れていない。
-
コードは同じでも動作条件は天と地ほど違う。オープンループ制御は盲目であり、後段が無負荷か満負荷かに関わらず、決められたステップでデューティ比を押し上げる。無負荷起動は「散歩」であり、負荷起動は「重荷を背負って山登り」だ。回路に同じペースで走らせれば、負荷時のコイルピーク電流は無負荷時の数倍になり、爆しない方がおかしい。
-
出力コンデンサを減らせば確かに一時的に爆さなくなる。起動瞬間に必要な充電電荷量が減り、コイルのピーク電流が下がって飽和点から遠ざかるからだ。しかしこれはその場しのぎに過ぎない——これからの商品で小さいコンデンサしか使わないわけにはいかないだろう?根本的な原因は、制御に電流制限がないことだ。次にやるべきはコンデンサを調整することではなく、すぐにコイル回路に検出抵抗(または電流プローブ)を直列に入れ、オシロスコープで負荷起動時の電流波形をキャプチャして、ピークがどこまで行っているのかを確認することだ。
具体的な分析とアドバイス:
今の状態は「半裸同然」だ——ハードウェアOCPはあるが電流閉ループがない。ソフトスタートのステップ0.001は優しく聞こえるが、大容量コンデンサ+負荷の起動時には、コイルのピーク電流はとうに12Aを超えている。CSD19534Q5Aはパルス電流100Aに耐えられるが、それはコイルが飽和しておらず、電流が制御されていることが前提だ。コイルが飽和すると電流は制御不能になり、FETは数マイクロ秒で熱によってシリコンダイを溶かし貫通し、GDSが全短絡する。
なぜBuck側だけ爆するのか?
BuckモードではBuck側ハイサイドFETがメインスイッチであり、58V入力と飽和したコイルの「短絡に近い状態」に直接面している。Boost側ハイサイドFETは常時ONであり、比較的穏やかな負荷電流しか流れず、Buck側ハイサイドFETのような高周波ハードスイッチング+飽和冲击というダブルデバフがない。エネルギーは入力側から来るため、Buck側ハイサイドFETが最初の防波堤であり、これが先に死ぬのは極めて正常だ。
次にやるべきこと(優先度順):
-
波形をキャプチャして死因を確認する:出力コンデンサを470uFに戻し、20R負荷を繋ぎ、コイルに0.1Ωの検出抵抗を直列に入れる(または電流プローブを直接使い)、オシロスコープで起動電流を見る。起動ピークが15Aを超えていると賭けてもいい。コンデンサを減らした後、ピークが10A以内に下がって正常に起動するなら、起動電流の飽和がFET破壊の原因であると裏付けられる。
-
ハードウェアOCPを確認する:サイクルバイサイクル電流制限のサンプリング点はどこだ?Buck側ローサイドFET(続流期間)の電流を検出しているなら、ハイサイドFETがONしている期間の電流スパイクは全く見えず、少なくとも1スイッチング周期のデッドタイムが存在する。コイルの飽和はハイサイドFETのON期間に起きることが多く、ローサイドFETがONして過電流を検出する頃には、ハイサイドFETはすでに灰になっている。提案:
- 電流制限値を8〜9Aに設定する(3A以上のマージンを残し、12Aに張り付けて設定しないこと)
- 過電流検出からPWMオフまでの総遅延が**<500ns**であることを確認する
- ローサイド検出を使っているなら、母線またはコイルのハイサイド検出に変更するか、少なくともコンパレータを追加してハードウェアによる高速オフを実現すること
-
オープンループにこれ以上固執するな:オープンループでの負荷起動が不可能であることはすでに2度証明された。さっさと**電流内環(電流ループ)**を追加しろ。最も簡素なピーク電流制限で構わない——電圧ループの出力後にリミッタを追加し、電流指令を10A以内にクランプし、超えたらPWMを即座にシャットダウンするのだ。どんなソフトスタートステップより効く。ダブル閉ループ(電圧外環+電流内環)はBuck-Boostの絶対条件であり、選択肢ではない。
-
コイルはすでに死んでいる:コイルに焦げ痕があると言ったが、そのコイルはもう信頼できない。センダストコアは一度過飽和すると透磁率が永久に低下し、次は8Aで飽和するかもしれない。飽和電流20A以上のコイルに交換するか、少なくとも同型の新品に交換することを勧める。ここでケチるな、またMOSを爆させたらもっと高くつく。
-
出力コンデンサは増やしていいが、起動時は必ず電流制限すること:大容量コンデンサ自体は問題ないが、起動時は定電流充電でなければならない。成熟したソリューションは、まずコイル電流を(例えば5Aに)制限し、出力電圧が目標値付近まで上がってから定電圧閉ループに切り替える。今のオープンループ・ソフトスタートは本質的に「デューティ比固定で当てずっぽうに突っ込む」ものであり、たまたま当たれば生き延び、突っ込みすぎれば爆するだけだ。
まとめ:出力コンデンサを減らせば実験のために一時的に動かすことはできるが、オープンループ+大負荷起動のままであれば、FETが爆するのは時間の問題だ。最優先すべきは電流波形をキャプチャして飽和点を確認し、電流内環を追加することだ。コンデンサの容量で悩むのはやめろ、それは表面上の問題であり、制御ループの欠落こそが病根だ。
描き直したバージョンで試したところ、Buck側のSWピンの波形がこのようになってしまいました(黄色い線)。ハイサイドの駆動波形(赤い線)もテストし直してみましたが、どこを修正すればよいでしょうか?ブートストラップコンデンサでしょうか?それとも別の何かでしょうか?以前のバージョンではこの問題は起きていませんでしたが、何が原因で発生しているのでしょうか?
-
テストは入力17V、0.2A、固定デューティ比0.5、無負荷(10kΩ抵抗、付けても付けなくても同じ)の条件で行い、出力は約6.5Vでした(計算してみると、インダクタ両端の電圧が等しいと考えると確かにこの値になります)。なぜSWノードの電圧がこのような台形波になるのかが分かりません
-
1枚目の画像の黄色い線はインダクタ電流波形です
-
この画像はスマホで見た時はかなり鮮明だったのですが、アップロードしたらなぜかぼやけてしまいました
どこを変更しましたか?
レイアウトを見てみてください
1枚目は私の回路図、2枚目は20V以上でテストした際のBUCK側VS対GNDおよびインダクタの電流波形、3枚目は2枚目の拡大図、4枚目は20V未満でのVSとインダクタ電流です。PWMは100kHz、デューティ比は0.5に固定しています。
-
なぜ入力電圧を上げると、インダクタ電流のリップル周波数が低下するのか、また、MOSが2回目にターンオンしたとき、なぜVSは矩形波ではなく非常に尖った波形になるのでしょうか?
-
この問題はどのように解決すればよいでしょうか?
定電圧モードで出力5Vの設定時、電子負荷をオフにすると出力電圧=5Vですが、電子負荷を0.5Aに設定すると電子負荷の表示出力電圧が4.91Vになり、1.5Aに設定すると4.74Vになり、2.5Aに設定すると4.56Vになります。しかし、上記のいずれの状況においても、マイコンがサンプリングした出力電圧は常に5Vです。これは何が原因でしょうか?
配線損失による電圧降下ですが、電子負荷に接続しているケーブルが細すぎませんか?
確かに線損と関係していますね。私は14AWG規格のケーブルを使用していますが、動画のデモでは線損の影響を受けていないようにお見受けしました。どのようにされているのでしょうか?
じゃあ、電源基板の端子台の電圧が落ちてないか測ってみて。
兄弟、アップしてくれた回路図と波形を見たよ。この現象はSTM32でデジタル電源(特に自作のディスクリート駆動バックブースト)を作る時に超定番だね。
プログラムでPWMのデューティ比を固定50%(0.5)にハードコードしたなら、理論上はMCUはビタっと等幅の矩形波を出力し続けるはずだ。図3(>20V)で見られる「広いパルスと狭いパルスが交互に出る」「インダクタ電流リップルの周波数が乱れる(パルスキッピング / 大小波)」、そして「VSノードに極めて幅の狭いスパイクが出る」という現象は、本質的にその周期の駆動信号が異常に打ち切られていることによるものだ。
俺の経験から、原因と解決のアプローチを整理してやるよ:
1. なぜ電圧が上がるとこの現象が起きるのか?
入力電圧が<20Vから>20Vに上がると、最も直接的な変化はスイッチング素子が動作する際の dv/dt と di/dt が著しく大きくなることだ。これはいくつか致命的な連鎖反応を引き起こす:
-
ノイズ/グラウンドバウンス(Ground Bounce)によるMCUまたは駆動ロジックの誤動作: 電圧が上がると、スイッチング瞬間の高周波ノイズ(EMI)が強くなる。このノイズはMCUのPWM配線に簡単にカップリングするか、基準グランドレベルの激しい変動を引き起こす。駆動ICのロジック入力端がグリッチを読み取ってしまったり、マイコンのタイマが干渉を受けたりすると、本来半周期続くはずのPWMが早々にターンオフされ、君が見た「スパイク」が形成される。
-
ブートストラップ回路の機能不全またはVSの過大な負電圧: 君の回路図ではブートストラップコンデンサ(C25, C27、現在は100nFと思われる)を使用したハイサイド/ローサイド駆動方式を採用している。電圧が上がると、デッドタイム中のインダクタ続流電流によりVSノードに深い負電圧のリンギング(PGNDより低い電圧)が生じる。この負電圧が深すぎると、ブートストラップコンデンサの電荷が一瞬で吸い尽くされるか、駆動IC内部のアンダーボルテージロックアウト(UVLO)がトリガーされる。ブートストラップ電圧がドロップするとハイサイド素子がすぐにサボってオフになり、極めて幅の狭いスパイクとなる。
-
ハードウェア保護の誤トリガ(もし実装していれば): 君のボードに電流検出(例えば図のR27、R28などの5mΩ抵抗)に基づくハードウェア過電流保護やオペアンプコンパレータがある場合、電圧が上がるとスイッチング瞬間の「立ち上がりエッジスパイク(Leading Edge Spike)」も大きくなり、コンパレータが誤って反転して現在のPWMパルスを強制マスクしやすくなる。
-
インダクタが飽和に近づく: 主因ではないかもしれないが、電圧上昇によってピーク電流が大きくなり、インダクタのマージンが不足していると、電流の急上昇によるスパイクが上記のノイズ干渉をさらに悪化させる。
2. どう解決・調査するか?
焦って基板を大幅に修正するなよ。デジタル電源のバグ探しは「順に追って原因を突き止める」ことが大事だ。以下のステップで進めるのをお勧めする:
ステップ1:「犯人」が誰なのかを特定する(最重要!)
今はVSノードだけを測定している。オシロスコープの2チャンネルを使って、STM32のPWM出力ピンとVSノード(またはハイサイドFETのゲートピン)を同時に測定する必要がある。
-
ケースA: マイコンのピンで測った波形がすでに広い/狭い交互になっていてぐちゃぐちゃなら、強電がMCUに干渉している証拠だ。STM32の電源が安定しているか、強電と弱電のグランドがしっかり敷かれているか/1点接地になっているかを確認するか、PWMの駆動IC近くに小さなRCフィルタ(例えば数十Ωの直列抵抗と、22pFのグランドへのコンデンサ)を追加してみるといい。
-
ケースB: マイコンのピンからは完璧な50%矩形波が出力されているのに、VS端にスパイクが出るなら、駆動段に問題があるということだ。次のステップ2を重点的にチェックしてくれ。
ステップ2:駆動段の最適化
もし駆動側の問題なら、十中八九ブートストラップかスイッチング速度の速すぎが原因だ:
-
ブートストラップコンデンサの増量: 現在のC25、C27は100nFだが、100kHzで重負荷や高電圧で動作させるには少し心許ない。1uFのMLCCを並列に追加して、ハイサイドFETが導通を維持するための十分な電荷を確保することをお勧めする。
-
スイッチングノードのリンギングを抑える(重点): オシロスコープで波形の立下りエッジを拡大して見てみよう。VSノードが-2Vかそれ以下に突っ込んでいないか? もしそうなら、VS1-GND間、VS2-GND間に**RCスナバ(RC吸収回路)**を追加することをお勧めする。例えば数Ωの抵抗と数百pFのコンデンサを直列に接続して、リンギングを吸収させるんだ。
-
スイッチング速度を少し落とす: ハイサイドFETのゲートに小さな抵抗を直列に入れる(スペースがあればだが、回路図を見る限り直接接続されているようだ)。スイッチング損失を少し犠牲にしてdv/dtを下げれば、システム全体がはるかに安定する。
-
ダイオードの逆回復の確認: ブートストラップダイオードにはSS14(ショットキー)を使用しているが、耐圧40Vであり、入力>20Vでリンギングが加わると逆耐圧が少し厳しくなるかもしれない。耐圧がより高く回復が極めて速いダイオードに交換し、充電ピーク電流を制限するために2.2Ω程度の小抵抗を直列に入れることをお勧めする。
まずはマイコンピンのPWM発信源を測ってみてくれ。発信源が干渉されているのか、駆動段が耐えきれていないのかが分かれば、ピンポイントで対策できるからな。デバッグの成功を祈ってるよ!
波形と回路図を見てみましたが、この現象はかなり典型的です。根本的な原因は、入力電圧が上昇したことでインダクタが不連続導通モード(DCM)に入ってしまったことです。
1. なぜ入力電圧を上げると、リプルの「周波数が下がり」、2回目のVSターンオンは矩形波ではなく鋭いパルスになるのか?
PWM周波数は実は変わっておらず、依然として100Kです。電流波形の変形による視覚的効果に過ぎません。
現在、オープンループでデューティ比を50%に固定していますが、純粋なBuckモードでは出力はほぼ入力の半分になります。入力電圧が上昇すると、インダクタ電流のリプル ΔI = (Vin-Vout)×D/(L×f) は線形に増大します。リプルのピークトゥピーク値が平均出力電流の2倍を超えると、電流の谷値が直接0に突き当たり、CCMからDCMへと落ちてしまいます。
DCMに入ると、以下のようになります:
- オフ期間にインダクタ電流が早々に0まで下がり、還流ダイオードがカットオフされ、VSノードがハイインピーダンス状態となって寄生LCによる自由共振が起こるため、もはやクランプされて矩形波にはなりません。
- 次のサイクルでMOSが再びターンオンする時、インダクタ電流は0であり、ハードスイッチングに相当します——MOSが直接スイッチングノードの寄生容量を充放電し、di/dtが極めて大きくなるため、非常に鋭い電圧パルスを打ち出します。しかし、それを維持する持続的なインダクタ電流がないため、スパイクはすぐに放電され、矩形波のプラトーではなく狭いパルスのように見えます。
- いわゆる「リプル周波数の低下」とは、実際には大半のサイクルにおいて電流が0に張り付いており(わずかな共振変動のみ)、有効な三角波がごく一部しか占めていないため、視覚的に周波数が低くなったように見えることです。ひどい場合は、1サイクル飛ばしでエネルギーを伝達するパルススキップ現象も発生します。
また、これはブートストラップ駆動のハイサイドNMOSであるため、DCM下ではVSが長時間グラウンドに落ちず、ブートストラップコンデンサC7が充電できず、駆動能力が低下してターンオン波形はさらにひどくなります——回路図ではC7が100pFと記載されていますが、これも小さすぎます。ブートストラップコンデンサは通常数百nFから始まります。
2. どうやって解決するか?
いくつかの方向性を、優先度順に挙げます:
① CCMに戻す(根本治療)
- インダクタンス値の大きなインダクタに交換する:最大入力電圧に基づいて計算し、リプルのピークトゥピーク値が平均電流の30%~40%を超えないようにし、十分なマージンを確保します。これが最も直接的な方法です。
- 負荷を重くする:平均出力電流を高め、谷値電流を0点から「持ち上げ」ることで、DCMの問題かどうかを迅速に検証できます。
- スイッチング周波数を下げることでもリプルを減らせますが、100Kはかなり妥当なので、周波数から手を付けるのはお勧めしません。
② スパイクとリンギングの抑制(ストレスとEMIの改善)
- VSノードとグラウンド間にRCDスナバ(例:100Ωの抵抗+1nFのコンデンサ+高速リカバリダイオード)、あるいは簡単なRCスナバ(数十Ω+数百pF)を追加すると、スパイクとリンギングを明確に抑え込むことができます。
- レイアウトにおいて、スイッチングノードの銅箔面積をできるだけ小さくし、駆動ループを最短経路で配線し、寄生パラメータを減らします。
③ 制御方式の改善
- オープンループでの固定デューティ比は、それ自体がBuck-Boostのようなトポロジにはあまり適していません。電圧閉ループに変更し、入力変動時にデューティ比が自動調整されるようにすることをお勧めします。これにより、電圧の安定化とDCM問題の緩和の両方が可能です。
- どうしてもオープンループで動かす必要がある場合は、最大入力電圧に基づいてインダクタのパラメータを再設計し、全範囲でCCMを保証してください。
まとめると:本質は高電圧軽負荷でDCMに落ち込み、スパイクはゼロ電流ハードスイッチングの産物であるということです。 まず一時的に重い負荷を繋いで試してみてください。波形が低電圧時のような矩形波+三角波に戻れば、DCMの問題であることが確認できるので、後は大きなインダクタに交換するだけで済みます。
テスターで測ると電圧もドロップしており、ぴったり5Vではありません。しかし、テスターでケーブルの抵抗を測ると180mΩ前後で、電流を増やした際の電圧降下の幅と一致します。










