Modeling of peak current mode controlled Boost converter

Ming Sun

Ming Sun / December 22, 2022

28 min read––– views

Boost converter block diagram

The peak current mode controlled Buck converter is as shown in Fig. 1[1].

Peak-current mode controlled Buck converter block diagram
Fig. 1Peak-current mode controlled Buck converter block diagram[1]

From Fig. 1, we can easily draw the peak current mode controlled Boost converter block diagram as shown in Fig. 2.

Peak-current mode controlled Buck converter block diagram
Fig. 2Peak-current mode controlled Buck converter block diagram

RFB1 and RFB2 is the feedback divider. The Error amplifier can be implemented by an OTA, where ro stands for the output impedance of the OTA. The compensation network is a Type-II compensator, which is comprised of R1, C1 and C2. The biggest advantage of current mode control is that the output complexed poles are gone, which makes the compensation of the converter very easy to be designed.

As the name peak current mode control indicated, the inductor peak current is being sensed through switch S1. To avoid subharmonic oscillation, a ramp is needed.

Small signal deriviation for Gvc

From inductor voltage second balance equation, we have[2]:

`sL*hat(i) = -D^'*hat(v)+hat(d)*V`
(1)

For the output capacitor charge balance equation, we have[2]:

`sC*hat(v) = D^'*hat(i) - hat(d)*I - hat(v)/R`
(2)

Gvc transfer function derivation in Matlab

From Ref. [3], we have derived the transfer function He(s), which can be used to mimic the subharmonic pole behavior. We can use He(s) in the following Matlab script for peak current mode controlled boost converter Gvc transfer function derivation.

gvc.m
clc; clear; close all;

syms Vg V R C L I
syms Ts
syms D Dp
syms He wn Q
syms s
syms Rsns Sr Se Sf
syms v i d vc 
syms Gvc



eqn1 = s*L*i == -Dp*v + d*V;
eqn2 = s*C*v == Dp*i - d*I - v/R;
eqn3 = He*i*Rsns == vc - Se*d*Ts - Sr*d*Ts;
eqn4 = V == Vg/Dp;
eqn5 = I*Dp == V/R;
eqn6 = Sr == Vg/L*Rsns;
eqn7 = Gvc == v/vc;
eqn8 = He == 1 - s/(2/Ts) + (s/(pi/Ts))^2;

results = solve(eqn1, eqn2, eqn3, eqn4, eqn5, eqn6, eqn7, eqn8, ...
    Gvc, v, d, V, i, Sr, He, I);

Gvc = simplify(results.Gvc)

[num,den] = numden(Gvc)

Gvc0 = subs(Gvc, s, 0)

pretty(Gvc0)

The derived transfer function is as shown in Fig. 3, where we need to do the simplification so that we can get a simplified equation which we guide us to design the control loop and compensator.

Gvc derived results from Matlab
Fig. 3Gvc derived results from Matlab

Here, let us assume the following condition for the boost converter:

  • Vin = 3.8V
  • Vout = 20V
  • Dp = Vin/Vout = 0.19
  • D = 1-Dp = 0.81
  • R = 20Ω
  • L = 1µH
  • C = 10µF (derated)
  • fsw = 3MHz
  • Rsns = 0.3Ω
  • Se tracks inductor current down-slope

The above parameters will help us on the following equation simplifications.

Simplification - DC gain of Gvc

Here, we are going to use wxMaxima to do the simplification as shown in Fig. 4.

Gvc0 DC gain simplification in wxMaxima
Fig. 4Gvc0 DC gain simplification in wxMaxima

To further simplify the Math equation shown in Fig. 4, we need to plug in the circuit conditions we just defined in the above section by using the following Matlab script.

gvc0_simplify.m
clc; clear; close all;

Vg=3.8; V=20; R=20; L=1e-6; C=10e-6;
fsw=3e6;
Rsns=0.3;

Dp = Vg/V; D = 1-Dp;
Ts = 1/fsw;

Se = (V-Vg)/L*Rsns;

term1 = Dp^3*R*Rsns*Ts*Vg;
term2 = 2*L*Rsns*Vg;
term3 = Dp^3*L*R*Se*Ts;

fprintf("\nD: %.2f", D);
fprintf("\nDp: %.2f", Dp);
fprintf("\nSe: %.2f", Se);
fprintf("\nDp^3*R*Rsns*Ts*Vg: %s", term1);
fprintf("\nDp^2*L*Rsns*Vg: %s", term2);
fprintf("\nDp^3*L*R*Se*Ts: %s\n", term3);

Matlab analysis result is as shown in Fig. 5.

Gvc DC gain term analysis from Matlab
Fig. 5Gvc DC gain term analysis from Matlab

Based on the Matlab result, we can set several terms in the denominator to be zero as shown in Fig. 6.

Gvc DC gain term simplification in wxMaxima
Fig. 6Gvc DC gain term simplification in wxMaxima

From Fig. 6, we have:

`G_{vc0} = (R*D^')/(2R_(sns) + D^('3)*R*S_e*T_s/V_g)`
(3)

We can get some insights from Eq. 3:

  • Higher current sense gain Rsns would result a lower DC gain of Gvc. We can understand it in this way. When we have a perturbation on the VEA voltage, the sensed inductor current will follow due to the closed loop nature. Basically, the product (iL*Rsns) remains constant. The higher the Rsns, the smaller iL perturbation will be. Smaller iL perturbation would result a smaller Vout change on the output voltage.

  • Increasing the compensation ramp Se will decrease the DC gain. Basically, when we have a higher and higher Se, the control loop is going to behave more and more like a voltage mode controller. For the same amount of perturbation on VEA, the perturbation on the duty cycle is much smaller and as a result a smaller Vout change on the output voltage.

RHP zero

From Fig. 3, we can easily tell the RHPz (right half plane zero) to be:

`omega_(rhpz) = (R*D^('2))/L`
(4)

RHPz is present for any converter if the inductor is not directly connected with the Vout capacitor. Basically, whenever Vout has an undershoot, the switching regulator needs to energize the inductor fist. During this time, the Vout will keep decreasing and that is the fundamental reason why RHPz is present.

Dominant pole

It is going to take a lot of effort to derive the dominant pole and the subharmonic oscillation pole. From Matlab we have:

  • den = Dp(2RSeDp^3LTspi^2 + 2RRsnsVgDp^3Tspi^2 + 2CRSeDpL^2Tspi^2s^2 + 2SeDpL^2Tspi^2s + 2CRRsnsVgDpLTspi^2s^2 + 2RsnsVgDpLTspi^2s + 2CRRsnsVgLTs^2s^3 + 4RsnsVgLTs^2s^2 - CRRsnsVgLTspi^2s^2 - 2RsnsVgLTspi^2s + 2CRRsnsVgLpi^2s + 4RsnsVgL*pi^2)

From the above equation, we notice that it is a third-order system. Let us assume that we have one dominant pole and two complexed poles. Therefore, the denominator can be written as:

`den=(1+s/omega_p)*[1+s/(omega_nQ)+(s/omega_n)^2]`
(5)

Eq. 5 can be re-written as:

`den=1 + s/omega_p+s/(omega_nQ) + (s/omega_n)^2 + s^2/(omega_pomega_nQ) + s^3/(omega_pomega_n^2)`
(6)

Here we assume:

`omega_p text( << ) omega_nQ`
(7)

Therefore, Eq. 6 can be simplified as:

`den=1 + s/omega_p + s^2/(omega_pomega_nQ) + s^3/(omega_pomega_n^2)`
(8)

The denominator result we got from Matlab can be written in the following form:

`den = 1 + d_1s + d_2s^2 + d_3s^3`
(9)

The following Matlab script is used to plug in the parameter and check which term can be ignored.

simplify_d1.m
clc; clear; close all;

Vg=3.8; V=20; R=20; L=1e-6; C=10e-6;
fsw=3e6;
Rsns=0.3;

Dp = Vg/V; D = 1-Dp;
Ts = 1/fsw;

Se = (V-Vg)/L*Rsns;

term1 = (Dp-1)*L*Rsns*Ts*Vg;
term2 = C*L*R*Rsns*Vg;
term3 = Dp*L^2*Se*Ts;

term4 = Dp^3*R*Rsns*Ts*Vg;
term5 = 2*L*Rsns*Vg;
term6 = Dp^3*L*R*Se*Ts;


fprintf("\n(Dp-1)*L*Rsns*Ts*Vg: %s", term1);
fprintf("\nC*L*R*Rsns*Vg: %s", term2);
fprintf("\nDp*L^2*Se*Ts: %s", term3);
fprintf("\n--------------------");
fprintf("\nDp^3*R*Rsns*Ts*Vg: %s", term4);
fprintf("\n2*L*Rsns*Vg: %s", term5);
fprintf("\nDp^3*L*R*Se*Ts: %s\n", term6);

The calculated result from Matlab is as shown in Fig. 7.

d1 terms calculated result from Matlab
Fig. 7d1 terms calculated result from Matlab

Then we can use wxMaxima for simplification. Eventually, the simplified result for d1 is as shown in Fig. 8.

d1 simplified result from wxMaxima
Fig. 8d1 simplified result from wxMaxima

From Fig. 8, we have:

`d_1 = (RC)/2`
(10)

Next, let us try to simplify the term d2. The Matlab script is as shown below.

simplify_d2.m
clc; clear; close all;

Vg=3.8; V=20; R=20; L=1e-6; C=10e-6;
fsw=3e6;
Rsns=0.3;

Dp = Vg/V; D = 1-Dp;
Ts = 1/fsw;

Se = (V-Vg)/L*Rsns;

term1 = (2*C*Dp-C)*L*R*Rsns*Ts*Vg*pi^2;
term2 = 2*C*Dp*L^2*R*Se*Ts*pi^2;
term3 = 4*L*Rsns*Ts^2*Vg;

term4 = 2*Dp^3*R*Rsns*Ts*Vg;
term5 = 4*L*Rsns*Vg;
term6 = 2*Dp^3*L*R*Se*Ts;


fprintf("\n(2*C*Dp-C)*L*R*Rsns*Ts*Vg*pi^2: %s", term1);
fprintf("\n2*C*Dp*L^2*R*Se*Ts*pi^2: %s", term2);
fprintf("\n4*L*Rsns*Ts^2*Vg: %s", term3);
fprintf("\n--------------------");
fprintf("\n2*Dp^3*R*Rsns*Ts*Vg: %s", term4);
fprintf("\n4*L*Rsns*Vg: %s", term5);
fprintf("\n2*Dp^3*L*R*Se*Ts: %s\n", term6);

The calculated d2 terms from Matlab are as shown in Fig. 9.

d2 terms calculated result from Matlab
Fig. 9d2 terms calculated result from Matlab

The simplified d2 result by wxMaxima is as shown in Fig. 10.

d2 simplified result in wxMaxima
Fig. 10d2 simplified result in wxMaxima

From Fig. 10, we have:

`d_2 = ((2D^'-1)RCR_(sns)T_sV_g + 2CD^'LRS_eT_s)/(4R_(sns)V_g)`
(11)

Eq. 11 can be re-written as:

`d_2 = ((2D^'-1)RCT_s*V_g/L*R_(sns) + 2CD^'RS_eT_s)/(4*V_g/L*R_(sns))`
(12)

We know that:

`S_r = V_g/L*R_(sns)`
(13)

Therefore, by combing Eq. 12~13, we have:

`d_2 = ([(2D^'-1)*S_r + 2D^'S_e]*R*C*T_s)/(4*S_r)`
(14)

let us try to simplify the term d3. The Matlab script is as shown below.

d3_simplify.m
clc; clear; close all;

Vg=3.8; V=20; R=20; L=1e-6; C=10e-6;
fsw=3e6;
Rsns=0.3;

Dp = Vg/V; D = 1-Dp;
Ts = 1/fsw;

Se = (V-Vg)/L*Rsns;

term4 = Dp^3*R*Rsns*Ts*Vg;
term5 = 2*L*Rsns*Vg;
term6 = Dp^3*L*R*Se*Ts;


fprintf("\nDp^3*R*Rsns*Ts*Vg: %s", term4);
fprintf("\n2*L*Rsns*Vg: %s", term5);
fprintf("\nDp^3*L*R*Se*Ts: %s\n", term6);

The calculated d2 terms are as shown in Fig. 11.

d3 terms calculated result from Matlab
Fig. 11d3 terms calculated result from Matlab

The simplified d2 result by wxMaxima is as shown in Fig. 12.

d3 simplified result in wxMaxima
Fig. 12d3 simplified result in wxMaxima

From Fig. 12, we have:

`d_3 = (R*C*T_s^2)/(2pi^2)`
(15)

By comparing Eq. 8~9, we have:

`omega_p = 1/d_1`
(16)

Then, we can plug in Eq. 10 into Eq. 16, the dominant pole frequency can be calculated as:

`omega_p = 1/d_1 = 2/(RC)`
(17)

Again, by comparing Eq. 8~9, we have:

`omega_n = sqrt(1/(d_3omega_p))`
(18)

Then, we can plug in Eq. 15 into Eq. 18, the subharmonic oscillation pole frequency can be calculated as:

`omega_n = sqrt(1/((R*C*T_s^2)/(2pi^2)*2/(RC))) = pi/T_s = (2*pi*f_(SW))/2`
(19)

As the name indicated, the subharmonic oscillation pole is located at half of the switching frequency, which is exactly as we expected.

Again, by comparing Eq. 8~9, we have:

`Q = 1/(d_2*omega_p*omega_n)`
(20)

Then, we can plug in Eq. 14 and Eq. 17~18 into Eq. 20, the qualifty factor can be calculated as:

`Q = 1/(([(2D^'-1)*S_r + 2D^'S_e]*R*C*T_s)/(4*S_r)*2/(RC)*pi/T_s)`
(19)

Eq. 19 can be simplified as:

`Q = 1/(pi*[D^'(1+S_e/S_r)-0.5])`
(20)

Eq. 20 successfully predicts the subhamonic oscillation behavior of the current mode controller. For example, if we do not have the compensation ramp, Se be equal to 0. Then at 50% duty cycle, quality factor Q will become infinity and subhamonic oscillation will happen.

Peak current mode controlled Boost converter Gvc transfer function

`G_(vc) = G_(vc0) * (1-s/omega_(rhpz))/(1+s/(omega_nQ)+(s/omega_n)^2)`
(21)

Where, the DC gain is:

`G_{vc0} = (R*D^')/(2R_(sns) + D^('3)*R*S_e*T_s/V_g)`
(22)

The dominant pole is:

`omega_p = 2/(RC)`
(23)

The subhamonic oscillation pole is:

`omega_n = pi*f_(SW)`
(24)

The quality factor Q is:

`Q = 1/(pi*[D^'(1+S_e/S_r)-0.5])`
(25)

The right half plane zero is:

`omega_(rhpz) = (R*D^('2))/L`
(26)

References and downloads

[1] A New Small-Signal Model for Current-Mode Control - page 24

[2] Gvd derivation of Boost converter - Voltage Mode

[3] He(s) derivation for peak current mode control


HomeWikis
SnippetsAbout
Google ScholarLinkedIn