STM32ベースの同期整流Buck-Boostデジタル電源 オープンソース

この画像の測定は間違っていて、実際のリプルはそれほど大きくありません。私が帯域幅を100Mにして測定したためです。20Mに下げると、リプルは数百mVほどになります。

スレ主さん、こんにちは。回路図と波形を拝見しましたが、問題はスイッチング電源開発において非常に典型的なものです。4つの疑問について、一つずつお答えします。

  1. 高周波スパイク(115MHzのリンギング):これはスイッチング素子の切り替え瞬間に起きる典型的な寄生発振(リンギング)です。1周期に4回出現するのは、あなたのHブリッジトポロジにおいて、Buck段とBoost段の上下アームがターンオン・ターンオフする瞬間に、寄生インダクタンスとMOSの寄生容量( C_{oss} )が高周波共振を起こしているためです。
  • 消除方法:まず、オシロスコープのプローブで長いアースクリップを使用しないことを確認し、代わりにスプリングアースで測定してください。そうしないと、長いアース線がアンテナのようにこのスパイクを増幅してしまいます(これは単なる測定上の「錯覚」かもしれません)。もし実際に存在する場合は、MOSFETのD-S端子間にRCスナバ回路(Snubber)を並列に接続するか、ゲート抵抗に小さな抵抗を直列に挿入してターンオン速度を緩和する必要があります。
  1. ADCが頻繁に焼損する原因:サンプリングの図を見ると、オペアンプ OPA2188 は +5V駆動 になっています。ツェナーダイオード D7(BAT54C)を追加していますが、接続方法が間違っています!BAT54C はコモンカソードダイオードであり、カソードを信号線に、2つのアノードをGNDに接続していても、これは負電圧を防ぐことしかできず、出力が 3.3V を超える正電圧を全く防ぐことができません。オペアンプの出力が何らかの過渡的な切り替え(コンデンサ追加によるサージなど)によって直接 5V に引き上げられると、STM32 の ADC ピン(5V耐性なし)は瞬時に焼損します。追加した 1K抵抗(R12)の電流制限では、過渡的な衝撃に耐えるのに不十分な可能性があります。
  2. ADCピンの保護推奨:
  • オペアンプの電源を直接 3.3V(MCUと同じ電源)に変更し、根本からオペアンプの出力が最高でも 3.3V を超えないように制限する。
  • どうしても 5V オペアンプを使用する必要がある場合は、D7 を BAT54S(一方をGND、もう一方を MCU の 3.3V 電源レールに接続)に変更してください。こうすれば、電圧が 3.3V + 0.3V を超えた際に 3.3V レールへ導通して保護されます。
  1. レイアウト(Layout)の原則:2つのホットループ(Hot Loops)を最小にすることを最優先してください。入力側(Cin → ハイサイドMOS → ローサイドMOS → GND)および出力側(Cout → ハイサイドMOS → ローサイドMOS → GND)の高周波電流変化率( di/dt )は非常に大きく、この2つのループの設計が甘いと、図中の高周波グリッチが跳ね上がります。大ループ(全体の入力から全体の出力)は主に直流および低周波なので、十分な通電能力とコンデンサによるフィルタリングを確保すれば問題ありません。
「いいね!」 1

スレ主の代わりにちょっと見てみたけど、メインMCUを2個連続で焼いちゃうのはしんどいね。でも原因が分かれば安心だ。

高周波スパイクについてだけど、オシロスコープで測った周波数をよく見ると115MHzにもなってるよね。この周波数帯は、かなりの確率でオシロスコーププローブのアースクリップが引き込んだ空間放射結合によるものだよ。プローブ付属の黒い小さなアースバネを使って、出力コンデンサの両端に直接当てて測ってみて。絶対スパイクがだいぶ小さくなるから。

STM32のADCがなぜ全滅したかということだけど:

大きな方向性として図3を見ると、オペアンプは5V電源で駆動している。STM32のピンはADC入力モードに設定した場合、5V耐性がない(絶対最大定格は一般的に V_{DDA} + 0.3V 程度)。コンデンサを追加して再び電源を入れた際、過渡応答で出力にオーバーシュートが生じ、オペアンプが飽和してほぼ5Vまで出力され、それが直接STM32に流れ込んで壊してしまったんだと思う。

もう一つ細かい点として、図のD7にはBAT54Cと書いてあるけど、この型番はコモンカソードだよね。図の描き方を見ると、ピンを全部GNDに繋いでない?それだと負電圧しかクランプできないよ。正電圧が3.3Vを超えても全く働かない。迷わずBAT54Sに交換して、片方のダイオードのカソードを3.3V電源に繋ぐことをお勧めするよ。そうすれば正負両方のクランプが効くようになる。

レイアウトについては、大きなループは無理に極限まで小さくする必要はないよ。重要なのは、2つのスイッチングのホットループ(Hot Loops)を必ずぎゅっとコンパクトにまとめること。入力コンデンサと出力コンデンサは対応するMOSFETのピンにできるだけ密着させ、GNDは大面積でベタ塗りしよう。次回の通電が無事に成功して、煙が出ないことを祈ってるよ!

「いいね!」 1

痛っ!STM32チップ2つからマジックスモークを出しちゃうのは痛い勉強代だけど、誰でも通る道だよ。

まず最初に:**オシロのプローブの当て方を直そう。**その115MHzのリンギングは、スイッチングノードに標準の6インチワニ口クリップグラウンドリードを使った時に起こるものと全く同じだ。空間の高周波EMIを拾ってしまうんだ。出力コンデンサのすぐ両端にグラウンドスプリングチップを当てよう。

さて、なぜADCが焼けるのかについて話そう。VOUTのサンプリング回路を見てほしい。オペアンプは5Vレールで動いている。出力コンデンサを追加したことで、過渡特性が変わってしまった。起動時、オペアンプはおそらく5Vレールに張り付いただろう。あの1Kの抵抗があっても、STM32のESDダイオードに過大な電流を流し込み、内部のADCマルチプレクサを焼き切ってしまうんだ。それと、ダイオードの型番を確認してくれ:BAT54Cはコモンカソードだ。残りの2つのピンが両方ともGNDに繋がっているよね。つまり、負の過渡電圧しか保護できないということだ。正の過電圧には全く効いていない!

3つ目のMCUを救うためのすぐできる対処法:

  1. BAT54CをBAT54Sに交換する。クランプピンを3.3Vレールに繋ぐこと。
  2. 5Vまで測る必要がないなら、OPA2188の電源を3.3Vにするだけでいい。レール・ツー・レールのオペアンプだから、2.72Vのフルスケール信号でも全く問題なく動作するよ。

レイアウトに関しては:2つのホットループ(VinコンデンサからBuckスイッチまで、そしてVoutコンデンサからBoostスイッチまで)を小さくするだけでいい。ループをコンパクトに保ち、ソリッドなグラウンドプレーンを使えば、うまくいくよ。

「いいね!」 1

その現象は、ADCポートが過電圧をくらった時にとても似ているね。RCローパスフィルタは平均値しかフィルタリングできず、nsレベルのスパイクは防げない。特に、出力コンデンサをいくつか追加してから電源を入れるとおかしくなるということは、起動時のサージやリンギングがさらにひどくなっている証拠だ。STM32のADC入力ピン自体には保護ダイオードが内蔵されているが、長期的にスパイク電流を吸収するためにあるわけではなく、注入電流制限を超えれば普通に壊れる。ADCの前に1k〜10kの直列抵抗を追加し、3.6V前後のクランプダイオードを入れるか、直接TVS/小信号ショットキーで保護することをお勧めする。レイアウト面では、高di/dtのホットループは必ず最小にし、サンプリング配線はSWノードに沿って配線しないようにしよう。

「いいね!」 1
  1. 選んだMOSの入力容量Cissが少し大きめで、高周波スイッチングにはあまり向いていません。スイッチング周波数はいくつに設定していますか?
  2. ADCピンに3.3VのTVS/ESDダイオードを追加して電圧をクランプするか、3.3V電源へショットキーダイオードを接続して、電圧を3.3Vにクランプすることができます。
  3. 入出力ループを最小限にし、大きなループも小さく保つようにしてください。

スイッチング周波数は100Kで、前にスイッチングロスを計算してみたところ、定格出力時で1Wくらいでしたね。私が設計したのは15-60V→30V5Aです。

こんにちは大神、質問なんですが、私が作った完成品が、なぜ12V入力の時は降圧出力しかできないのでしょうか?12V電源を入力して無負荷の状態だと、画面では0.5〜12Vの出力はすべて正常なのですが、13Vあたりまでツマミを回すと出力が出なくなり、さらに回しても出力はずっと12Vのままになってしまいます :sob: 私はブログ主の方と全く同じように作っており、回路図やPCBはいじっていません。大神の方、どうかご回答をお願いします :sob:

半田不良がないか確認して

皆さんに伺いたいのですが、MOSFETのG、D、Sの3端子間がすべて互いに導通/ショートしている状況に遭遇したことはありますか?これは何が原因で起こり得るのでしょうか?何を基準に判断すべきでしょうか?

現在の私の制御方式は電圧フィードフォワードのみで、入力電圧と目標出力電圧から両側のデューティ比目標値を計算し、そのデューティ比目標値に基づいてソフトスタートに入ります。500Hzの周波数で割り込みをトリガーし、割り込みがかかるたびにMOSFETのデューティ比を0.02変化させています。以下は電源投入時の記録です。

  1. 入力58V、出力30V、入力コンデンサ220μF、出力コンデンサ470μFの条件では、無負荷/20Rの抵抗負荷のいずれでも正常に動作していました。その後、出力コンデンサを数個追加しました。

  2. 入力58V、出力30V、入力コンデンサ220μF、出力コンデンサ470μF×2の緑と金の電解コンデンサ、100μFの固体コンデンサ、600nFのフィルムコンデンサ、インダクタ100μH(飽和電流はメーカー公称12A)という条件で、回路に電源を投入したところ、Buck側の2つのMOSFETのG、D、Sの3端子間がすべて互いに導通/ショートしていましたが、Boost側には問題ありませんでした。MOSFETの破損は電源投入過程で発生したと思われます。

  3. AIによると、出力コンデンサの容量を増やしたことで必要な充電電流が大きくなり、MOSFETが破損した可能性があるとのことでした。しかし、なぜBuck側だけが破損し、Boost側は破損しないのでしょうか?

あなたの話だと、降圧しかできず昇圧できないということですか?ブースト側のMOSFETが正常にスイッチングしているか、駆動信号が正常か確認してください。

使用しているMOSはCSD19534Q5Aです

インダクタの種類は何ですか?一体成型インダクタですか?トロイダルインダクタですか?磁気コアは何ですか?センダストですか?スイッチング周波数はどのくらいですか?

MOSの温度測った?損失が大きすぎて過熱して破裂したんじゃない?

MOSFETのGDS3つの端子がすべて短絡する(通称「炸管」:素子破裂)現象に遭遇すると、本当に頭が痛いですよね。電源開発において、この極めて破壊的な故障は通常、シリコンチップ内部で致命的な熱暴走(直接溶融)が発生し、3つの電極の物理的な分離層が完全に焼き切られて溶着してしまったことを意味します。

あなたが観察した現象は非常に典型的です。AIが「出力コンデンサの容量増大により充電電流が大きくなった」と言ったのは方向性としては正しいですが、これは表面的な原因を説明しているに過ぎません。あなたの制御ロジックとハードウェアパラメータを踏まえ、この「事故」の根本的な原因と、なぜ偏ってBuck側だけが破裂したのかを深く検証してみましょう。


一、 なぜBuck側だけが破裂し、Boost側は無事なのか?

入力58V、出力30Vの動作条件において、あなたの回路は降圧(Buck)モードで動作しています。
このモードでは:

  • Buck側のMOSFET(入力側): 高周波のハードスイッチング動作を行っており、58Vの高電圧を「チョッピング」する役割を担っています。ハイサイドFETは極めて大きなスイッチングストレスに耐えており、ローサイドFET(同期整流FET)も頻繁なスイッチングに追従する必要があります。
  • Boost側のMOSFET(出力側): 「貫通」状態(またはハイサイド常時ON、ローサイド常時OFF)にあります。これらは高周波スイッチングを行わず、電流を伝導するだけです。

サージ過電流が発生した場合、エネルギーは58V入力側から供給されます。 Buck側のハイサイドFETは、電源とインダクタを繋ぐ「最初の関門」です。システムが制御不能になり電流が瞬時に急増したとき、最初に巨大な衝撃電流($I^2R$熱損失)を受けるのは、Buck側で高周波スイッチングを行っているFETです。Boost側のFETは常時ONであるため、導通損失を受けるだけで、スイッチングに伴う動的損失や電圧スパイクがないため、通常は耐え切れます。


二、 GDS全短絡を招く「連鎖殺人犯」(原因分析)

あなたの制御方式には致命的な落とし穴があります。それは、純粋な電圧フィードフォワードによるオープンループ制御(電流ループなし)と、極めて大きな出力コンデンサの組み合わせです。

以下は、MOSFET破損に至る完全な連鎖です:

1. 致命的な制御ロジック:電流フィードバックの欠如

現在のあなたの制御は「目標デューティ比を計算 → ソフトスタートのステップ」となっています。これは、マイクロコントローラが盲目であることを意味し、現在インダクタにどれだけの電流が流れているのかを全く把握していません。
コンデンサの充電公式 I = C \frac{dV}{dt} によれば、出力コンデンサを470uFからほぼ1100uFに増やすと、30Vまで充電するために必要な電荷量は倍増します。ソフトスタートのデューティ比のステップ速度が固定されている(2msごとに2%増加)ため、デューティ比の強制的な上昇はLCフィルタに電圧を確立させることを強い、巨大な過渡電流を要求することになります。

2. インダクタの瞬間的な磁気飽和(主要な犯人)

使用しているインダクタの公称飽和電流は12A、インダクタンスは100uHです。
純粋な電圧フィードフォワードでは、デューティ比のステップ(毎回2%)により、インダクタに加わるボルト・秒積が瞬時にアンバランスになります。総容量が1000uFを超えるコンデンサアレイの場合、初期電圧が0Vのときは短絡状態と同等です。
急増するサージ電流が12Aを超えると、インダクタが磁気飽和します。いったん飽和すると、インダクタンスは瞬間的に暴落し(ほぼ0に近づく)、インダクタはもはやエネルギー蓄積素子ではなく、抵抗が極めて小さな導線になってしまいます!

3. 貫通と熱溶融(GDS全短絡の最終決定打)

インダクタが電流制限作用を失うと、58Vの入力電圧がほぼ直接、Buck側ハイサイドFETの R_{ds(on)} と極めて小さな寄生抵抗に加わります。

  • 電流は瞬時に数十アンペア、あるいは数百アンペアまで急増する可能性があります。
  • ミラー誤導通: 極めて高い di/dt により、インダクタや配線の寄生インダクタンスに激しい発振が生じます( V = L \frac{di/dt}{dt} )。この高周波・高電圧のスパイクは、MOSFETのミラー容量( C_{gd} )を通じてゲート(Gate)に結合されます。ゲート駆動能力が不足しているか、ターンオフ抵抗が大きすぎると、電圧が強制的に引き上げられ、Buck側のハイサイドとローサイドの2つのMOSFETが**同時にオン(貫通:Shoot-through)**してしまいます。
  • 58Vが直接グラウンドに短絡し、巨大な短絡電流に伴って、MOSFET内部のシリコンウェハは瞬時に数百度から上千度に達し、ゲート酸化膜(極めて薄い二酸化ケイ素絶縁層)が破壊され、G、D、Sの3端子の金属が物理的に溶融して短絡します。

三、 何に基づいて判断し検証すべきか?

上記の推論を裏付けるために、以下の側面から事後判断を行うことができます:

  1. インダクタの状態確認: 100uHインダクタの磁気コアが熱で変色していないか、あるいはコイルに焼焦げの跡がないか確認します。電流は一瞬の出来事ですが、深刻な飽和過電流は物理的な痕跡を残すことがあります。
  2. ゲートドライバIC (Gate Driver) の確認: GDSが全短絡している以上、58Vの高電圧が確実にGate端子を通ってドライバIC(IR2104やEG8010など)に逆流しており、ドライバICも高い確率で焼損しており、マイクロコントローラのPWMピンも損傷している可能性があります。
  3. ソフトスタートスロープの計算: 500Hzの割り込み = 2ms周期。毎回0.02(2%)変化します。0%から仮に50%のデューティ比まで増やすのに、わずか50msしかかかりません。電流制限がない状態で、50ms以内に1000uFを30Vまで充電する場合、平均充電電流を見積もってみてください。ピーク電流は間違いなくインダクタの12Aをはるかに超えています。

四、 根本的な改善提案

この問題を根本的に解決し、再びFETを破裂させるのを防ぐには、システムに以下のアップグレードを行う必要があります:

  1. ハードウェア過電流保護 (OCP) の導入は必須: これは最後の砦です。Buck側のローサイドFETまたはメインバスラインで電流をサンプリングし、電流が10Aを超えたら(飽和に対するマージンを残すため)、直ちにハードウェア回路でPWM信号をブロックします。ソフトウェアの割り込みに完全に依存して事態を救うことは絶対に避けてください。
  2. 電流内側ループの追加(閉ループ制御): 「計算で出した」デューティ比で回路に無理やり対抗しないでください。成熟したDC-DCコンバータは必ずデュアル閉ループ(外側ループで電圧制御、内側ループで電流制御)でなければなりません。電圧誤差から電流指令値を生成し、この指令値の最大値が10Aを超えないように制限し、その後、電流ループがデューティ比を動的に調整するようにします。
  3. オープンループのソフトスタートを極限まで緩やかにする: まだデュアル閉ループアルゴリズムを書けない場合は、0.02のステップを非常に小さく(例えば0.001に)変更するか、割り込み周波数を下げて、コンデンサが平らに充電するための十分な時間を持たせる必要があります。同時に、オシロスコープでインダクタ電流をキャプチャし、起動段階の最高ピーク電流が10A未満になることを確認してください。

インダクタはセンダストのトロイダルインダクタだと思います。スイッチング周波数は100Kで、MOSの温度は測定していません。通電して数秒で焦げ臭い匂いがしたのですぐに電源を切りましたし、温度を測る機器もないので。

インダクタに焼け焦げの跡があるのは確かなようですが、それが通電によるものなのか、半田付けの際に熱で焦がしてしまったのかは分かりません。ゲートドライバICは正常に動作しています。

オシロスコープはありますか?インダクタに検出抵抗を直列に入れて、オシロスコープでその両端の電圧変化を測ることで、インダクタのピーク電流を測ってみることができます。

ちょっと質問なのですが、基板発注時にこの積層順序はどう選べばいいですか?

ファイルに既に積層順序があるため、インピーダンスは不要です。