Open-Source STM32-Based Synchronous Rectification Buck-Boost Digital Power Supply

I sincerely seek an answer: in a four-switch project, when calculating the inductor, why is buck calculated using extreme values while boost is calculated using CCM? If boost were also calculated using extreme values, the inductance would be much larger.

That’s a good question, but there’s a premise that needs correcting: “For Boost, calculating the inductor at the extreme value makes it much larger”—that claim is backwards when it comes to the lower input limit.

First, let’s lay out the two formulas (both derived from V_L·t/L):

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

When Vout is fixed, the larger Vin is, the smaller Vout/Vin is and the larger (1 − Vout/Vin) is, so the ripple increases monotonically. Therefore, Buck’s worst case must land at the endpoint Vin_max. “Taking the extreme value” is strictly valid for Buck.

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

Differentiate with respect to Vin: 1 − 2Vin/Vout = 0 → Vin = Vout/2, i.e., D = 0.5. At this point ΔI_max = Vout/(4Lf).

Boost’s ripple extremum is the vertex of a parabola, in the exact middle of the input range, not at either endpoint. In your project Vout_max=48V, the worst case is Vin=24V—and 24V is exactly the midpoint of the 12~48V input range. The author chose 24V as the calculation point; in fact, that choice was correct, except that it’s the “worst-case ripple point,” not the “extreme value.”

Now to answer your question. Still with Boost, switching to the lower input limit Vin=12V (D=0.75):

  • Ripple ∝ 12×(1−12/48) = 9, which is 25% smaller than the 12 at the midpoint

  • Plug into the CCM formula L = Vout·D(1−D)²/(2·I·f) = 48×0.75×0.0625/(2×1×181333) = 6.2µH

6.2µH is much smaller than 16.544µH, not “much larger.” That “it will be much larger” in your intuition is actually you incorrectly carrying Buck’s monotonicity over to Boost.

One more thing: the CCM criterion L ∝ D(1−D)² itself also has an extremum; differentiating (1−D)(1−3D)=0 → D = 1/3, i.e., Vin = 32V, where L = 19.6µH. So Boost’s “worst case” follows the criterion: for ripple you look at D=0.5 (24V), for CCM you look at D=1/3 (32V). Neither is an endpoint.

One last interesting result: if both modes are recalculated at their respective true worst-case points with “25% ripple = 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

Exactly the same. Because the worst-case ripple for both topologies equals V_max/4. So the inductor requirements for these two modes are inherently the same size; the difference between 9.88 and 16.544 is purely caused by different chosen points and criteria, not by a difference in topology.

Hey, have you ever run Simulink simulations?

No simulation was performed.

I still prefer to hand-code everything in VSCode—after all, I personally like using the ESP32. Thanks to this forum.

Could you check your Bilibili DMs, blogger? Sorry for the trouble.