The inductor current and the output voltage
A boost has two parts that store energy: the inductor and the capacitor. This chapter works out how each one behaves.
Each follows from one law. Everything later in the course comes out of these two: the averaged model, the wrong-way response, and why the capacitor has to be large.
Here is the converter again, with the switch node $v_m$ marked.
The inductor current
The current in an inductor is set by the voltage across it. That is the inductor's law,
$$ v_L = L\,\frac{di_L}{dt}, $$and it says how fast the current changes. A positive voltage makes the current rise. A negative voltage makes it fall.
So to follow the current, follow the voltage across the inductor through the two switching states.
Bottom switch closed. The inductor sits across the input, so $v_L = V_{in}$. That is positive, so the current rises, at the rate $di_L/dt = V_{in}/L$.
Top switch closed. The inductor now reaches from the input up to the output, so $v_L = V_{in} - V_{out}$. The boost steps up, so $V_{out} > V_{in}$ and this is negative. The current falls again.
The result is a triangle. The current rises while the bottom switch is on and falls while the top switch is on, the same every cycle.
The output voltage
The output voltage works the same way, but with the capacitor. The capacitor's law is
$$ i_C = C\,\frac{dv_{out}}{dt}, $$so the current into the capacitor says how fast the output voltage changes. To follow the output voltage, follow the current at the output node.
The load draws a steady current. If the output voltage is roughly constant, so is the resistor current $I_{out}=V_{out}/R$.
The inductor is different. It only reaches the output during the off-time, when the top switch is closed. During the on-time the output is disconnected and the inductor gives it nothing.
Put those two together at the output node:
During the off-time, the inductor delivers current to the output. It supplies the load, and what is left over flows into the capacitor. So $i_C>0$ and the output voltage rises.
During the on-time, the inductor delivers nothing, so the capacitor supplies the load alone. Current flows out of the capacitor. So $i_C<0$ and the output voltage falls.
That rise and fall is the output-voltage ripple. It is also why the output current arrives in pulses instead of continuously.
The averaged model
Those two behaviours give us a simpler picture of the boost. Stop tracking the individual switching cycles and keep only the averages.
Take the inductor first. It only cares about the voltage on each side. On its left is the input, $V_{in}$. On its right is the switch node, which on average sits at $v_m = (1-D)\,V_{out}$. We set that voltage with the duty cycle. So in the averaged model the inductor has the input on one side and a duty-controlled source on the other.
Now the output. It only cares about the current into the capacitor. The inductor reaches the output for the fraction $1-D$ of each cycle, so on average it delivers $(1-D)\,i_L$. The averaged model feeds the capacitor and the load with that average current.
This is the picture the control chapters use, because it shows how the output reacts when the duty changes.
It also shows one thing that makes the boost harder than the buck. The duty multiplies the output quantities, not the input. So the link between the knob $D$ and the result $V_{out}$ is not a straight line.
As a check, set the inductor's average voltage $V_{in}-(1-D)V_{out}$ to zero. You get back $V_{out}=V_{in}/(1-D)$ from Chapter 1.
The wrong-way response
The same two behaviours explain something a boost does that a buck never does.
Say the controller wants more output voltage. Its only lever is the duty. To push more energy out, it first has to store more in the inductor, which means keeping the bottom switch on longer.
But during the on-time the output is disconnected, and the capacitor supplies the load alone. So during that longer on-time the output voltage drops. Only once the inductor has charged up does the extra energy reach the output and lift it.
Ask a boost for more, and it first gives you less.
This behaviour has a name: a right-half-plane (RHP) zero. You do not need the maths behind the name, only the behaviour. Ask for more and you get a short dip before the rise. Every converter that feeds its output in pulses from a stored-energy stage has it, so the boost, the buck-boost and the flyback all do. You cannot design it away. A buck has nothing like it. What it means in practice is that a boost has to be controlled gently, and that shapes the next two chapters.
Sizing the inductor and capacitor
How big should $L$ and $C$ be? Their size sets the ripple: how much the inductor current moves up and down, and how much the output voltage moves up and down. Both formulas come from the two laws above.
Start with the inductor. The on-time lasts $D/f_{sw}$, and through it the current rises at $V_{in}/L$. Rate times time gives the ripple.
The capacitor formula has the same $D$ in it, but for a different reason. The boost disconnects the output for the whole on-time, so the capacitor carries the load alone through it. The longer the on-time, the more charge it has to give up.
Note which current that is. It is the output current, not the inductor current, because the inductor is not connected to the output during the on-time at all.
$$ \Delta i_L = \frac{V_{in}\,D}{L\,f_{sw}}, \qquad\qquad \Delta V_{out} \approx \frac{I_{out}\,D}{C\,f_{sw}}. $$For a resistive load, the output current is
$$ I_{out} = \frac{V_{out}}{R}. $$A bigger inductor, or a higher switching frequency, gives smaller current ripple. A bigger capacitor gives smaller voltage ripple. Same trade-offs as the buck.
Take the numbers from the Welcome table: $V_{in}=12\ \mathrm{V}$, $D=0.5$, $L=100\ \mu\mathrm{H}$, $C=100\ \mu\mathrm{F}$, $f_{sw}=100\ \mathrm{kHz}$, $I_{out}=2.4\ \mathrm{A}$.
$$ \Delta i_L = \frac{12 \times 0.5}{100\times10^{-6} \times 100\times10^{3}} = 0.6\ \mathrm{A}, \qquad\quad \Delta V_{out} \approx \frac{2.4 \times 0.5}{100\times10^{-6} \times 100\times10^{3}} = 0.12\ \mathrm{V}. $$And $D$ is not a free choice. It follows from the voltage ratio: $D = 1 - V_{in}/V_{out} = 1 - 12/24 = 0.5$, the same value the Welcome table started from.
One difference from the buck is worth flagging. A boost needs a larger output capacitor, and we have already seen why.
In a buck the inductor feeds the output all the time, so the capacitor only smooths a gentle current. In a boost the output is disconnected for the whole on-time and the capacitor holds the load up on its own. Carrying that takes more capacitance.
The inductor current is set by the voltage across it, $v_L = L\,di_L/dt$. It rises while the bottom switch is on and falls while the top switch is on. The output voltage is set by the current into the capacitor, $i_C = C\,dv_{out}/dt$. It rises when the inductor charges the capacitor and falls when the capacitor supplies the load alone. The averaged model follows from those two. And because the output is fed only in pulses, a boost needs a bigger capacitor than a buck, and it dips the wrong way before it rises.
Controlling the boost
So far we have set the duty cycle $D$ by hand. In a real boost a controller sets it automatically, thousands of times a second, to hold the output where we want it.
This chapter says what the controller is for and shows the two ways to build it. The next one shows them running.
Control objectives
The main objective is simple. Hold the output voltage at a target $V_{ref}$, whatever the input and the load do.
The controller measures the output and compares it with the target. The difference is the error. It then moves the duty: up if the output is too low, down if it is too high.
Some applications care about the inductor current as well, either to hold it or to limit it. In a boost the input current is the large one, so keeping it in check protects the switches.
Which of the two you care about decides which controller you pick.
The two controllers
There are two standard ways to do it, and the simulator has both.
Voltage control is a single loop. It watches the output voltage and sets the duty directly.
Cascade control puts a second, faster loop inside the first. The outer loop watches the voltage and asks for an inductor current. The inner loop makes the current follow that request.
The difference in one line. Use voltage control when you only care about the output voltage. Use cascade control when you also need to control or limit the current.
Cascade also handles the wrong-way dip better, which is why it is the usual industrial choice. But for simply holding the voltage, one loop is enough.
Both are the same controllers as in the buck course. For how a PI loop is built and tuned, go there. Here we keep to what the boost adds.
Here is the voltage loop doing its job. It starts cold, with the output near 0 V and no current in the inductor, while the reference is fixed at 24 V.
From duty to gate signal: PWM
One link in the loop is worth a sentence, because it is the same in every converter.
The controller's output is the duty, which is a continuous number. The switches only understand on or off. PWM, pulse-width modulation, turns one into the other. It compares the duty against a repeating triangular carrier and switches every time the carrier crosses it.
A controller that outputs a continuous number is much easier to design than one that has to work in on/off pulses. PWM is what lets it.
The two controllers in action
We control one thing, the output voltage $V_{out}$, with one knob, the duty cycle $d$. But in a boost the voltage and the current are tied together.
The inductor current is set by the voltage across the inductor,
$$ L\,\frac{di_L}{dt}=V_{in}-(1-d)V_{out}, $$and the output voltage is set by the current pushed into the capacitor,
$$ C\,\frac{dV_{out}}{dt}=(1-d)\,i_L-i_{load}. $$You cannot move the voltage without first moving the current. That is why every plot below shows the voltage next to the current, and why the second controller regulates the current directly.
Voltage control: one loop
The single loop measures $V_{out}$, takes the error $e = V_{ref}-V_{out}$, and sets the duty.
On top of that we add a feed-forward. We already know roughly what duty the operating point needs, $d_0 = 1 - V_{in}/V_{ref}$, so we hand the loop that value and let the PI trim what is left.
$$ d \;=\; \underbrace{1-\frac{V_{in}}{V_{ref}}}_{\text{feed-forward }d_0} \;+\; \underbrace{K_P\,e + K_I\!\int e\,dt}_{\text{PI trim}}, \qquad K_P = 8\times10^{-4},\; K_I = 0.6 $$The gains are deliberately small. The boost has a right-half-plane zero, from Chapter 2, so asking for more output first makes it drop. A fast loop fights its own response and rings. The feed-forward does most of the work, and the slow PI cleans up.
There is a second way to keep it gentle. Instead of jumping the reference straight to a new target, the loop can ramp it there, so the feed-forward duty moves gradually. The cold-start figure in Chapter 3 does not use that option: its reference stays fixed at 24 V.
The run below turns the ramp off on purpose, so the step in duty is sudden and the wrong-way dip is easy to see.
Step the target from 24 V to 30 V and watch all three signals at once. This is the real simulator output, not a sketch.
Read the plot from top to bottom and you can see the coupling. The duty moves first, the current responds, and the voltage follows the current.
The output overshoots and rings because a single loop fast enough to catch the voltage is already too fast for the wrong-way zero.
Cascade control: a current loop inside
Cascade control puts a fast current loop inside the slow voltage loop. The outer loop no longer sets the duty. It sets a current reference $i_{ref}$, and the inner loop drives the inductor current to it every switching cycle.
$$ \text{outer:}\quad i_{ref} = K_{P,V}\,e_V + K_{I,V}\!\int e_V\,dt \;\;\big(\text{clamped to } I_{max}\big), \qquad e_V = V_{ref}-V_{out} $$ $$ \text{inner:}\quad d = \Big(1-\frac{V_{in}}{V_{out}}\Big) + K_{P,I}\,e_I + K_{I,I}\!\int e_I\,dt, \qquad e_I = i_{ref}-i_L $$The gains are $K_{P,V}=1$ and $K_{I,V}=80$ outside, $K_{P,I}=0.5$ and $K_{I,I}=2000$ inside. The inner loop runs every switching cycle, so it is fast. The outer loop stays slow.
Regulating the current changes two things. The outer loop cannot request more than $I_{max}$, although the measured inductor current can briefly overshoot that request during a fast transient. And the outer loop now drives an easier system, a current source feeding the capacitor, so it can hold the voltage without the big voltage overshoot of the single loop.
Here is the cascade controller starting from a cold output, with its current request and 10 A request limit visible.
The middle panel is the point. The outer loop asks for current, the request is clamped, and the inner loop makes the inductor follow it. Controlling the current first is what keeps the voltage response under control.
Voltage control is one PI loop plus a feed-forward duty $d_0=1-V_{in}/V_{ref}$, kept slow because of the wrong-way zero. Cascade control puts a fast current loop inside it. The outer loop asks for a current, that request is capped, and the inner loop drives the measured current toward it. The boost's voltage is set by its current, so controlling the current first is what lets you control the voltage cleanly.
In a sentence
A boost is a buck with the input and output swapped. The inductor moves to the input, and the voltage ratio inverts to $V_{out}=V_{in}/(1-D)$. Its inductor current is set by the voltage across it, and its output voltage by the current into the capacitor. From those two come the averaged model, the need for a larger capacitor, and the dip before the rise. That dip means a boost has to be controlled more gently than a buck, which is why cascade control, with its inner current loop, is the usual choice.