# Critical inductance for buck converter

I have this problem: -

The critical current must be $$\P_{out} = V_{out}I_{crit} \Rightarrow I_{crit}=\dfrac{45\text{W}}{16\text{V}} = 2.8125 \text{A} \$$

Using eq. 3.43 from Ned Mohan's book we have

$$I_{crit} = \frac{V_{in}}{2Lf_{sw}}\cdot D(1-D)$$

Solving for $$\L\$$, using that for a buck $$\D=\dfrac{V_{out}}{V_{in}}\$$ and inserting values gives us

$$L = \frac{V_{in}}{2I_{crit}f_{sw}}\cdot D(1-D) = \frac{42\text{V}}{2\cdot2.8125\text{A} \cdot 160\text{kHz}} \cdot \frac{16\text{V}}{42\text{V}}\Bigg(1-\frac{16\text{V}}{42\text{V}} \Bigg) =11.005\text{uH}$$

I have some questions. First, is my calculation correct? Second, what does this critical inductance tell us about the circuit? Would we ever want to use this inductor value in our buck converter?

EDIT

Attempting to replicate aconcernedcitizen's LT-Spice simulation yields good results, but they are not quite identical: -

• Your calculations look good to me. And critical inductance is L_min for CCM so, you can use a large inductance.
– G36
Commented Mar 13, 2022 at 11:09
• I doubt anyone will get angry if you checked for yourself. Commented Mar 13, 2022 at 14:51
• @aconcernedcitizen Okay, I will from now on. One last thing, though. I have tried to recreate your simulation myself in LT-Spice and it gave similar results, but not quite. Your simulation of I(L1) seems to have a sharper "snap" at 0A such that the buck actually operates in BCM. However, with the exact same values my I(L1) seems to spend a noteworthy time at 0A, thus operating in DCM instead of BCM. Did you use some special settings that are not shown in the picture you have linked?
– Carl
Commented Mar 14, 2022 at 20:47
• @Carl No, but you did, two things: vfwd is 10u, not 1m (but it looks like it goes unnoticed), and you have added vrev=1k, which I didn't. This last one seems to influence the behaviour, and I'd venture a guess it's because of the rather large dynamic range (10u and 1k). Possible solutions: remove vrev, remove revepsilon (or both), make revepsilon=1m, make vrev=0.1k. Commented Mar 14, 2022 at 22:56
• @Carl Try this: delete your .model lines and replace them with these (you'll need to use Ctrl+Enter appropriately): .model diode d ron=1m roff=10meg vfwd=1m vrev=100 epsilon=1m revepsilon=1.model switch sw ron=1m roff=10meg vt=0.5 vh=-0.5 (that's vh=-500m, not 50m, and vfwd=1m is more than enough, no need to tempt the numerical devil). The level=2 was a whim at the time, and it also cheats you in the initial transient (becaue Ilimit defaults to 10, and I haven't touched that setting). Commented Mar 15, 2022 at 9:26

To avoid the extended discussion, yes, the calculations are correct (also noted by @G36, in the comments), and the verification confirms it:

As for why your results differ, even after the last comment, my settings only differ by having checked Supply a min. inductor damping if no Rpar is given and Enable beta circuit matrix optimizations in the Control Panel > Hacks! tab -- they're not the cause.

However, if I add Rser=0.5 to the inductor, the result I get is suspiciously similar to yours:

When I said to check whether you have parasitics defined, or not, you probably relied on RClick, only, which brings up the default component editor. And here is the catch: relying on the default dialog means that LTspice will add the relevant parasitics, all in one line, on the SpiceLine, in the "advanced" component attribute editor (Ctrl+RClick, seen in the picture above). But if you add any of the parasitics elsewhere, for example in the Value2, as seen above, bringing up the default component attribute editor will not show anything, but the value is there.

What's more, manually adding Rser=1k, for example, will make it appear in the SpiceLine, where it is added normally. And, because the 4 lines Value, Value2, SpiceLine, and SpiceLine2, are nothing but graphical helpers (minor exceptions apply), anything written in those lines will be concatenated and the netlist will show everything in one line. Thus, anything on the SpiceLine will appear after enything on the Value2 line, and so it will take precedence (1k will be considered, not 0.5).

So, with these in mind, the lesson to learn is to not waste people's time by verifying hidden attributes with the "advanced" component attribute editor, Ctrl+RClick. BTW, you should have also checked the overall current shape, it should have warned you that there are hidden settings about.

• Thank you for the thought, but you shouldn't have used the bounty. Reading it now, the conclusion sounds a bit harsh, and that was not my intention -- using <strike> was meant as a tongue-in-cheek. (also, it's spelled LTspice, but there are so many variants floating about, that it's probably a case of "to each his own") Commented Mar 15, 2022 at 17:32