# Push-Pull Buck Converter in Discontinuous Conduction Mode

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

• ,

where:

• .

• .

• 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 Model

open_system('ee_push_pull_converter_dcm.slx'); 

### Specify the Design Parameters

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 

### Operating Boundary Between Discontinuous Mode of Conduction and Continuous Mode of Conduction

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

### Calculate the Open-Loop Duty Cycle for DCM

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. 

### Determine the Constant Load Resistance

I_average = Output_Power/Output_Voltage; % Average current that flows through the load R_const = Output_Voltage/I_average; 

### Determine the Filter Inductance

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.

### Choose a Filter Capacitance

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); 

### Plot Capacitance Versus Voltage Ripple

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'); 

### Run the Simulation

sim('ee_push_pull_converter_dcm.slx'); 

### View Simulation Results

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:

open_system('ee_push_pull_converter_dcm/Scopes/Circuit Scope'); 

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:

sscexplore(simlog_ee_push_pull_converter_dcm); %
{"extraction_info": {"found_math": true, "script_math_tex": 0, "script_math_asciimath": 0, "math_annotations": 0, "math_alttext": 0, "mathml": 0, "mathjax_tag": 0, "mathjax_inline_tex": 0, "mathjax_display_tex": 0, "mathjax_asciimath": 1, "img_math": 0, "codecogs_latex": 0, "wp_latex": 0, "mimetex.cgi": 0, "/images/math/codecogs": 0, "mathtex.cgi": 0, "katex": 0, "math-container": 0, "wp-katex-eq": 0, "align": 0, "equation": 0, "x-ck12": 0, "texerror": 0, "math_score": 0.8762684464454651, "perplexity": 4013.0238948431843}, "config": {"markdown_headings": true, "markdown_code": true, "boilerplate_config": {"ratio_threshold": 0.3, "absolute_threshold": 10, "end_threshold": 15, "enable": true}, "remove_buttons": true, "remove_image_figures": true, "remove_link_clusters": true, "table_config": {"min_rows": 2, "min_cols": 3, "format": "plain"}, "remove_chinese": true, "remove_edit_buttons": true, "extract_latex": true}, "warc_path": "s3://commoncrawl/crawl-data/CC-MAIN-2020-16/segments/1585370521876.48/warc/CC-MAIN-20200404103932-20200404133932-00007.warc.gz"}