This example shows how to control the output voltage of a push-pull buck converter. The current flowing through the inductor reaches zero during the switch off cycle of the MOSFETs and therefore the DC-DC converter operates in Discontinuous Conduction Mode (DCM). This mode of conduction is mostly used for low-power applications. To convert and maintain the input DC voltage as a nominal output voltage, the PI Controller subsystem uses a simple integral control. During startup, the reference voltage is ramped up to the desired output voltage.
The converter operates in DCM only if
is the filter inductance.
is the load resistance.
is the switching period for each MOSFET. That is, , where is the switching frequency.
is the duty cycle of PWM input to the gate of each MOSFET. That is, , where is the ON time of the MOSFET.
open_system('ee_push_pull_converter_dcm.slx'); set_param(find_system('ee_push_pull_converter_dcm','FindAll', 'on','type','annotation','Tag','ModelFeatures'),'Interpreter','off');
The system is required to generate and maintain an output voltage of 80 V with a power requirement of 100 W. The input voltage is 400 V and the transformer turns ratio is 2. The load includes a constant resistive load. The 'ee_push_pull_converter_dcm_data.m' script defines the design parameters as variables in the MATLAB® workspace.
Input_Voltage = 400; % Input Voltage to the push-pull converter [V] Output_Voltage = 80; % Desired Output Voltage from the push-pull converter [V] Output_Power = 1000; % Full Load Power Output [W] fsw_Hz = 40000; % MOSFET Switching Frequency [Hz] primary_winding = 200; % Number of turns in the primary winding secondary_winding = 100; % Number of turns in the secondary winding TR = primary_winding/secondary_winding; % Turns Ratio Kp = 0.01; % Proportional Gain for PI Controller Ki = 20; % Integral Gain for PI Controller del_V = 1; % Peak-Peak Output Voltage Ripple as a percentage of Output Voltage K = 0.3; % Denotes trajectory that gives a relation between Output Voltage Ratio and Duty Cycle. Ts = 1e-7; % Sampling time for the solver
Based on the constraint established by K and the Duty Cycle, the operating mode switches between Discontinuous Conduction Mode (DCM) and Continuous Conduction Mode (CCM). The Output Voltage Ratios of CCM and DCM are:
Continuous Conduction Mode
Discontinuous Conduction Mode
The operating modes can be visualised for different values of K by generating a plot between the Output Voltage Ratio and the Duty Cycle. From this plot, find the corresponding Duty Cycle needed to achieve the Output Voltage Ratio as specified in the Design Parameters for the particular value of K chosen.
figure; D_range = 0:0.001:1; Voltage_ratio = zeros(length(D_range)); for i=1:length(D_range) K_crit = 1-D_range(i); if K < K_crit Voltage_ratio(i) = 2/(1+sqrt(1+4*K/D_range(i)^2)); else Voltage_ratio(i) = D_range(i); end end VR = Output_Voltage/(Input_Voltage/TR); Duty = sqrt(4*K/((2/VR-1)^2-1)); hold on; plot(Voltage_ratio,D_range); hold on; plot(VR,Duty,'*'); ylabel('Duty Cycle'); xlabel('Output to Input Voltage Ratio'); title('Discontinuous Mode Operating Region'); % The Open-Loop Duty Cycle required would be approximately 28.28% from the % graph.
I_average = Output_Power/Output_Voltage; % Average current that flows through the load R_const = Output_Voltage/I_average;
To estimate the inductance required for DCM, use this relationship between K, Resistance, and the Switching Time Period.
L_min = (K*R_const)/(2*2*fsw_Hz);
Verify the estimated inductance values result in DCM operation. If the value results in CCM operation, choose a different value of K and recalculate. Iterate until you find an inductance value that results in DCM operation.
The relation between the capacitance and the Output Voltage Ripple is
C_min = (2-(Duty/(Output_Voltage/(Input_Voltage/TR))))^2/(4*R_const*2*fsw_Hz*del_V*0.01);
Generate a plot to see the capacitance that is required for limiting the output voltage ripple varies depending on the design parameters. For this example, the marker at 1% Output Voltage Ripple corresponds to a capacitance of 8.157e-06 F.
del_V_range = 0.5:0.1:5; C_range = (2-(Duty/(Output_Voltage/(Input_Voltage/TR))))^2./(4*R_const*2*fsw_Hz*del_V_range*0.01); figure; hold on; plot(del_V_range,C_range); hold on; plot(del_V,C_min,'*'); xlabel('Voltage Ripple (%)'); ylabel('Capacitance (F)'); title('Capacitance Vs Voltage Ripple');
To view summary results during or after the simulation, open the Circuit Scope block from the Scopes subsystem or by entering, at the MATLAB command prompt:
To view the control and error data during or after the simulation, open the PI Controller Scope block from the Scopes subsystem or, enter:
open_system('ee_push_pull_converter_dcm/Scopes/PI Controller Scope');
After the simulation, to view logged Simscape™ data using the Simscape Results Explorer, enter: