# Why is my simple boost converter giving me such a high peak output voltage?

I am trying to understand switch-mode power supply fundamentals through a simulation in LTSpice.

I wanted to build an excruciatingly simple boost converter circuit following a teaching model often given in textbooks, but I can't get this thing to behave at all as I expect it to, probably because things are very different in practice :)

Here is the schematic diagram exported from LTSpice (note that it uses ISO symbols; the component on the right is a resistor): The supply voltage is 5V and I am seeking to increase it to 12V with a load current of 1A, or an output power of 12W. I selected a switching frequency of 20kHz. By my math, I need a duty cycle of 0.583 to do this, so the on time should be 29.15 µs. Assuming an efficiency of 0.90, the input power will be 13.34W and the input current 2.67A.

Assumptions that may be getting me into trouble:

• Perhaps the efficiency is totally unrealistic for a design this simple and my input current is much higher than I expect.
• Initially I didn't care much about ripple so I just picked the inductor and capacitor randomly.
• Maybe the switching frequency was too small.

I ran the simulation with a time of 10ms (should be visible in the graphic).

What I expected to see is a voltage of 5V, perhaps with a slight ripple, at point 2 (between the inductor and the NMOS) and a voltage of 12V with a ripple at point 3 (between the diode and the capacitor).

Instead, what comes out is what looks like total chaos -- I get a peak voltage of 23V that oscillates around 11.5V at point 2 and a slightly lower peak voltage of just over 22.5V that oscillates around 17V at point 3: On the hunch that my switching frequency might be too low, I tried increasing it to 200kHz (T=5µs, Ton=2.915µs) and now I get something more like what I was looking for, which is a peak voltage of 12.8V at point 2 (oscillating between that and 0V) and a peak of 12V at point 3 (oscillating about 11.8V): There was significant ripple in the voltage. I tried increasing the size of the inductor to 100µH but all it seemed to affect was the startup oscillation. So I increased the capacitance to 10µF, and that seemed to work, the voltage oscillation at point 3 is much smaller. The image above is the result with a 10µF capacitor.

My questions, then, are:

• what is wrong with my original model?
• is 20kHz a completely unrealistic switching frequency (seems strange that it would be)?
• if I wanted a 20kHz switching frequency, what do I have to change to make the circuit work as expected? A much bigger inductor?
• is it normal for the voltage on the input side to be similar to the voltage on the output side when the circuit has reached steady-state?
• what equation should I use to size the capacitor?
• Sounds like the pulses are saturating the inductor at the lower frequency. Sep 10, 2012 at 1:43
• That means I need a much larger inductance, right? Sep 10, 2012 at 2:01
• Can an (ideal) inductor get saturated in Spice? Sep 10, 2012 at 2:34
• Nope. It cannot saturate. Sep 10, 2012 at 3:12
• Just a quick comment: if you're only interested in general behaviour, then it's much faster to use SW instead of NMOS (.model sw sw(ron=10m vt=0.5), and D with a simple .model d d(vfwd=0.2 ron=50m) card added on the schematic. Using "real-life" components requires larger matrix calculations and, possibly, additional snubbers. A few cents, that's all.
Sep 10, 2012 at 13:28 Your boost is operating in discontinuous conduction mode or DCM (inductor current goes to zero each switching cycle). The duty cycle becomes a function of load as well as the duty cycle. If you increase the load, the inductor value, or switching frequency, you'll reach a point where you'll see your regulation where you expect it - this is called CCM, or continuous conduction mode. The inductor current doesn't fall to zero, but continuously flows. Your duty cycle formula will be valid here.

20 kHz is very slow for a boost converter. 14A peak inductor current is also unrealistic. Most PFC boost converters operate from 70 to 100 kHz. Lower frequency converters generally need larger inductors. If you want to achieve CCM at 20kHz, you'll need a much larger boost inductance value. Try 470uH in your simulation and you'll see the voltage closer to 12V. (If you had a controller in your model, it would automatically adjust the duty cycle to achieve 12V regardless of CCM or DCM operation).

Because your converter is so heavily into DCM, the switching node voltage resembles the output voltage. If you get closer to CCM, you'll see a clearer picture.

For this simulation, the capacitor is sized such that the switch on-time voltage sag (caused by the load) isn't excessive. In real life, there are other parameters that matter (overall loop stability, ripple current and life rating) that you must consider, along with proper MOSFET choice, reverse recovery and softness of the boost diode...

• +1 - nice answer. I'd increase the output cap to 47uF or higher also. Sep 10, 2012 at 3:41

With the components values that you have selected it is indeed more suitable to run with the 200kHz frequency. Even at 200kHz I find that a more suitable output capacitor may be more like 33 or 47uF.

If you are using an ideal inductor with no equivalent series resistance specified then I would suggest that you try one of the realistic inductors from the LTSpice library such as the Coiltronics CTX10-3. That one has a DCR of 0.028 ohms. That will help to reduce the initial surge of the startup current.

Also note that a realistic design with an actual switching VR controller would have a soft start feature that gradually brings the PWM duty cycle up to its operating level without the huge initial surge. Also a controller would monitor output voltage via a divider and compare it to a reference to continually adjust the PWM duty cycle thus regulating the output voltage.

I've also had problems with this circuit in LTspice. I don't think my problem was exactly the same as yours but this is the only decent result when searching for "ltspice boost converter" so I'll put my answer here.

Here are the things I did wrong:

1. I used the generic "nmos" model. It doesn't work. I don't know why but it seems like it has a really high resistance even in the on state which is weird. Anyway, the way to fix it is to place the generic nmos, then right click it and click "Pick new transistor", then choose one from the list, e.g. IRFP4667.

2. My filtering capacitor was way too big. This means the output voltage takes on the order of seconds to settle (fine in real life, but annoying in a simulation).

Here is my final circuit: Details (probably not critical):

• I gave the 5V voltage source a series resistance of 1 ohm.
• The inductor has a series resistance of 6 ohms.
• Pulse train parameters are Ton = 8us, Toff = 2us (T=10us; 100 kHz).

If anyone knows why the standard nmos model doesn't work let me know!

You said, "I wanted to build an excruciatingly simple boost converter circuit". I wanted to do the same thing, and built many a Joule Thief in LTSpice, and I put it into the same category -- The Joule Thief is really a self-optimizing boost converter disguised as a hobbyist circuit, but I've learned a lot about boost converters from stepping the Joule Thief parameters. And because it's self-optimizing, it almost always does something and gives you a feel for how each aspect of the circuit affects things. Here is a Joule Thief for you to mess with: So, that's one way. But...

If you want to link Joule Thief experiments in LTSpice with a recipe-like approach, look up a couple of the 34063 datasheets like this MC34063A from ON Semi. There is a table that gives formulaic recipes for the boost converter, buck converter, and inverted boost converter.

Here is the schematic for the boost converter: And here is the formulaic table, to be followed step-by-step from top-to-bottom: If you alternate playing with these two directions, I believe that you can "teach yourself" some of that intuition which you want to get.

I could not find an MC34063 in the LTSpice library, but you can go through the exercise from the table, and then pull up a Joule Thief or any boost converter chip from the LTSPice library, and plug the components a given scenario has given you, and it should be close to what you want, and then you can tweak it. HTH.