Calculate Vout ripple for Buck converter
Ming Sun / December 05, 2022
17 min read • ––– views
VOUT peak to peak ripple calculation
The Buck converter block diagram is as shown in Fig. 1.
Fig. 1 shows the inductor current ripple in the time domain. Between t0 and t2, the voltage across the inductor is VIN-VOUT. As a result, the inductor current slope is positive and inductor current is increasing. Between t2 and t4, the voltage across the inductor is -VOUT. As a result, the inductor current slope is negative and inductor current is decreasing.
The inductor average current can be calculated as:
The inductor current up slope can be calculated as:
By combing Eq. 1~2 and Fig. 2, the inductor peak current can be calculated as:
The DC component of the inductor current flows into the output resistor R. The AC components of the inductor current flows into the capacitor, which will generate the VOUT ripple. The AC current flows through the output capacitor C is as shown in Fig. 3.
Between t1 and t3, there are positive current flowing into the output capacitor C, which will make the output voltage increasing. The output voltage ripple can be calculated as:
By combing Eq. 3~4, we have:
Continuous waveform
The current flowing through the capacitor between t0 and t2 can be written as:
Assuming the output voltage at t0 is V0, the capacitor voltage can be calculated as:
By combining Eq. 6~7, we have:
We know that:
Therefore, the minimum output voltage can be calculated as:
Assume the output voltage at t2 is V2. From Eq. 8, we have:
The AC current transfer function between t2 and t4 can be written as:
Where,
The capacitor voltage between t2 and t4 can be calculated as:
By combing Eq. 12~14, we have:
We know that:
Therefore, the maximum output voltage can be calculated as:
By combing Eq. 11 and Eq.17, we have:
By combing Eq. 10 and Eq.18, we have:
Eq. 19 matches with Eq. 5 result derived from the charge perspective.
We know that the average voltage of the capacitor should be equal to VOUT. First, let us integrate the capacitor output between t0 and t2 based on Eq. 8. We have:
Eq. 19 can be further simplified as:
From Eq. 15, we have:
Eq. 21 can be further simplifed as:
By definition, we have:
By combining Eq. 20, 22, 23, we have:
Therefore, we have:
Verification
The Matlab script for plotting the inductor current and VOUT ripple is as shown below.
clc; clear; close all;
Vin = 5;
D = 0.5;
L = 1e-6;
C = 1e-6;
R = 1;
Tsw = 1e-6;
Dp = 1 - D;
N = 100;
dt =Tsw/N;
V = D*Vin;
Iave = V/R;
Sr = (Vin-V)/L;
Sf = -V/L;
Imin = Iave - Sr*0.5*D*Tsw;
Imax = Iave + Sr*0.5*D*Tsw;
% V0 = 2.423;
V0 = V*(1-(Dp^2-D*Dp)*Tsw^2/24/L/C);
V2 = V0;
Vo_min = V0 - V*D*Dp*Tsw^2/8/L/C;
Vo_max = V0 + V*Dp^2*Tsw^2/8/L/C;
k=1;
for i=0:dt:D*Tsw
t(k) = i*1e6;
I(k) = Imin + Sr*i;
Vo(k) = V0 - V*Dp*Tsw/2/L/C*i + Sr*i^2/2/C;
k = k+1;
end
for i=D*Tsw:dt:Tsw
t(k) = i*1e6;
I(k) = Imax + Sf*(i-D*Tsw);
Vo(k) = V2 + V*Dp*Tsw/2/L/C*(i-D*Tsw)+Sf/2/C*(i-D*Tsw)^2;
k = k+1;
end
for i=Tsw:dt:Tsw+D*Tsw
t(k) = i*1e6;
I(k) = Imin + Sr*(i-Tsw);
Vo(k) = V0 - V*Dp*Tsw/2/L/C*(i-Tsw) + Sr*(i-Tsw)^2/2/C;
k = k+1;
end
for i=Tsw+D*Tsw:dt:2*Tsw
t(k) = i*1e6;
I(k) = Imax + Sf*(i-Tsw-D*Tsw);
Vo(k) = V2 + V*Dp*Tsw/2/L/C*(i-Tsw-D*Tsw)+Sf/2/C*(i-Tsw-D*Tsw)^2;
k = k+1;
end
yyaxis('left');
plot(t,I, "LineWidth",2,'Color', '#0284C7');
hold on;
plot([0,2*Tsw*1e6],[Iave,Iave], '--', "LineWidth",1);
% text(0.05e-6, Iave+0.06, '$I_{ave}$ ', 'Interpreter','latex', 'Color', '#0284C7', 'FontSize',16);
plot([D*Tsw*1e6,D*Tsw*1e6],[Imin,Imax], '-.', "LineWidth",1);
plot([Tsw*1e6+D*Tsw*1e6,Tsw*1e6+D*Tsw*1e6],[Imin,Imax], '-.', "LineWidth",1);
% text(0.52e-6, 2.1, '$DT_{S}$ ', 'Interpreter','latex', 'Color', '#0284C7', 'FontSize',16);
plot([0.5*D*Tsw*1e6,0.5*D*Tsw*1e6],[Imin,Imax], ':', "LineWidth",1);
plot([Tsw*1e6+0.5*D*Tsw*1e6,Tsw*1e6+0.5*D*Tsw*1e6],[Imin,Imax], ':', "LineWidth",1);
% text(0.26e-6, 2.1, '$\frac{DT_S}{2}$ ', 'Interpreter','latex', 'Color', '#0284C7', 'FontSize',20);
plot([D*Tsw*1e6+0.5*Dp*Tsw*1e6,D*Tsw*1e6+0.5*Dp*Tsw*1e6],[Imin,Imax], ':', "LineWidth",1);
plot([Tsw*1e6+D*Tsw*1e6+0.5*Dp*Tsw*1e6,Tsw*1e6+D*Tsw*1e6+0.5*Dp*Tsw*1e6],[Imin,Imax], ':', "LineWidth",1);
grid on;
ylim([Imin, Imax]);
ylabel("Inductor current [A]");
yyaxis('right');
plot(t,Vo, "LineWidth",2);
grid on;
ylim([Vo_min, Vo_max]);
ylabel("Output voltage [V]");
xlabel('Time [µs]')
The Matlab plot for duty cycle of 50% is as shown in Fig. 4.
The Matlab plot for duty cycle of 50% is as shown in Fig. 5.
To verify the results and math derivation above, let us build a Buck converter test bench in Simplis as shown in Fig. 6.
The simulation results from Simplis are as shown in Fig. 7.
We can copy the data from Simplis into csv file and use Matlab to compare the results, which is as shown in Fig. 8.
The inductor current matches very well between Simplis simulation results and the Math derivations, while the inductor current shows some mismatches between the two.
References and downloads
[1] Fundamentals of power electronics - Chapter 2
[2] Popular converters and the conversion ratio derivation
[3] Matlab script for comparison inductor current and output ripple