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

真剣に回答を求めています。4スイッチのプロジェクトで、インダクタを計算する際、なぜbuckは極限値で計算するのに、boostはCCMで計算するのですか?もしboostも極限値で計算した場合、インダクタンスがかなり大きくなります。

良い質問ですが、その中には訂正が必要な前提が1つあります:「Boostは限界値で計算するとインダクタンスがずっと大きくなる」——この文は入力下限の方向では逆です。

まず2つの式を並べておきます(どちらも V_L·t/L から導出):

Buck:ΔI = (Vin − Vout)·D/(L·f)、D = Vout/Vin → ΔI = Vout·(1 − Vout/Vin)/(L·f)

Vout が固定のとき、Vin が大きいほど Vout/Vin は小さくなり、(1 − Vout/Vin) は大きくなるので、リップルは単調に大きくなります。したがって Buck の最悪点は必ず Vin_max という端点に来ます。「限界値を取る」は Buck では厳密に成り立ちます。

Boost:ΔI = Vin·D/(L·f)、D = 1 − Vin/Vout → ΔI = Vout·D(1−D)/(L·f) = Vin·(1 − Vin/Vout)/(L·f)

Vin で微分すると:1 − 2Vin/Vout = 0 → Vin = Vout/2、つまり D = 0.5。このとき ΔI_max = Vout/(4Lf)。

Boost のリップル極値は放物線の頂点であり、入力範囲のちょうど真ん中にあり、どの端点にもありません。 このプロジェクトでは Vout_max=48V なので、最悪点は Vin=24V です——そして 24V はまさに 12~48V 入力範囲の中点です。筆者は 24V を計算点に選んでいますが、実は正しく選んでいます。ただしそれは「リップル最悪点」であって、「限界値」ではありません。

ではあなたの疑問に答えます。同じ Boost で、入力下限 Vin=12V(D=0.75)に変えると:

  • リップル ∝ 12×(1−12/48) = 9 で、中点の 12 より25% 小さい

  • CCM の式を当てはめると L = Vout·D(1−D)²/(2·I·f) = 48×0.75×0.0625/(2×1×181333) = 6.2µH

6.2µH は 16.544µH よりずっと小さく、「ずっと大きくなる」ではありません。 あなたが直感的に思っている「ずっと大きくなる」は、実は Buck の単調性を Boost に誤って当てはめたものです。

もう1つ補足すると、CCM の判定式 L ∝ D(1−D)² 自体にも極値があり、微分すると (1−D)(1−3D)=0 → D = 1/3、つまり Vin = 32V、そこでは L = 19.6µH。したがって Boost の「最悪点」は判定基準によって変わります:リップルなら D=0.5(24V)、CCM なら D=1/3(32V)。どちらも端点ではありません。

最後に面白い結果です:両モードとも「25% リップル = 2.5A」で、それぞれの真の最悪点で計算し直すと——

  • Buck:Vin=48V, Vout=24V → ΔI ∝ 24×0.5 = 12 → L = 12/(2.5×181333) = 26.5µH

  • Boost:Vin=24V, Vout=48V → ΔI ∝ 48×0.25 = 12 → L = 26.5µH

まったく同じです。 なぜなら両トポロジーの最悪リップルはどちらも V_max/4 だからです。したがってこの2つのモードがインダクタンスに要求する値はもともと同じ大きさで、9.88 と 16.544 の差は純粋に計算点と判定基準の違いによるもので、トポロジーの違いではありません。

師匠、Simulinkのシミュレーションってやったことある?

シミュレーションを行っていない

やっぱりvscodeで一から手打ちするのが好き。何しろ個人的にESP32を使うのが好きだからね。このフォーラムに感謝。

ブロガーさん、BilibiliのDMを確認してもらえますか?お手数おかけします