BASIC CIRCUIT
HARDWARE
SIMULATION
zvs in matlab for switch S1
HARDWARE
- BATTERY -4V AND 12V
- Micro controller -dspic30f2010
- drivers -fan7392 and tlp250
- MOSFET -CSD19534 (OR USE IRF540)
- DIODE -BYQ28E
waveforms
zvs waveforms for switch S1
waveforms S1-gate and Vds1 without snubber (no zvs)
waveforms S1-gate and Vds1 with snubber ( zvs)
zvs waveforms for switch S2
waveforms S2-gate and Vds2 without snubber (no zvs)
waveforms S1-gate and Vds1 with snubber ( zvs)
gate waveforms at S1(yellow) and S2(blue)
gate waveforms at S1(yellow) and S3(blue)
gate waveforms at S1(yellow) and S4(blue)
gate waveforms at S2(driver output)
gate waveforms at S1(driver output-blue)
voltage across main inductor
voltage across auxilary inductor
output
Design
DUTY CYCLE CALCULATION
Gain of converter = 1/1-D
D is duty ratio
VOUT / VIN =1/1-D
1-D = 1/ (VOUT / VIN)
D = 1- 1/ (VOUT / VIN)
D = 1- 1/ ( 14/ 4)
D = 0.71
INDUCTOR VALUE CALCULATION
IN boost MODE (MODE 1), WHEN THE SWITCH S1 IS ON , VOLTAGE ACROSS THE INDUCTOR WILL BE EQUAL THE VOLTAGE OF THE BATTERY
VIN = VL =4
FOR AN INDUCTOR VOLTAGE CURRENT BASIC RELATION IS
VL = L * dI / dt
THEN, L = VL * dt / dI
L = VIN * dt / dI
HERE dt = DUTY CYCLE / FREQUENCY
Assume that operating frequency of the switch (mosfet here) =50 kHz
AND dI IS THE RIPPLE CURRENT OF INDUCTOR
IL = IIN=5A
Assume that inductor ripple current = 20% of inductor current
dI =10% * IL
dI =10% * 5A
dI =10% * 5A
dI = 0.5A
L = VIN * dt / dI
L = VIN * D / (F * di)
L = 4V * 0.71 / (50000 Hz * .5A)
L = 112uH
Auxiliary Inductor design
Current across switch is
Is1 =Vhi * ∆Ts / 2L2
∆Ts is the dead time between switch S1 and S2 which is taken as 1uS
For boost mode
Is1 = 5A
5A =Vhi * ∆Ts / 2L2
5A =14 * 1 uS / 2L2
L2 =14 * 1 uS / (2*5A)
L2 =14 * 1 uS / (2*5A)
L2 =1.4 uH
Auxiliary Capacitor design
The voltage across the auxiliary capacitor is given by,
Vca =Vhi / 2
Vca =14 / 2
Vca =7
During the dead time ,that is when both main switches are of current through capacitor will be
Ica = Is1 = Il2= 5A
FOR A CAPACITOR VOLTAGE CURRENT BASIC RELATION IS
I = C * dV / dt
C = I * dt / dV
dV is capacitor ripple voltage. Assume that output ripple voltage is about 1% of output voltage
dV = 7
C = I * dt / dV
C = I * dt / dV
C = 5 * 1uS/ 7
C = 0.71uF = 1uF (Standard value)
program(mikroc -dsPIC30f2010) (boost operation only)
//crystal of 16 MHz
#define boostgates1 LATE.F0 //S1
#define buckgates2 LATE.F1 //S2
#define snubberlowergates3 LATE.F2 //S3
#define snubberupperergates4 LATE.F3 //S4
void main()
{
TRISE.F0=0;TRISE.F1=0;TRISE.F2=0;TRISE.F3=0;
snubberupperergates4=0;
boostgates1=0;
snubberlowergates3=0;
buckgates2 =0;
while (1)
{
buckgates2 =1;snubberupperergates4=1;Delay_us(1); //s2 & s4 is on ,time =1
buckgates2 =0; Delay_us(1); //s2 off
boostgates1=1;Delay_us(11); //s2 off, s4 and s1 on,time =12
snubberupperergates4=0;//s4 -off & s1 on ,time =12
snubberlowergates3=1; Delay_us(1);//s3 on & s1 on ,time =13
boostgates1=0;Delay_us(1); //s1 off ,s3 on , time =13
buckgates2 =1; Delay_us(6);
snubberlowergates3=0;
}
}
program(mikroc -dsPIC30f2010) (buck or boost mode using mode switch)
//crystal of 16 MHz
#define boostgates1 LATE.F0 //S1
#define buckgates2 LATE.F1 //S2
#define snubberlowergates3 LATE.F2 //S3
#define snubberupperergates4 LATE.F3 //S4
#define modeswitch PORTD.F0 //modeswitch
void offallswitches(void);
int time=14,f=0;
void main()
{
TRISE.F0=0;TRISE.F1=0;TRISE.F2=0;TRISE.F3=0; //gates as output
TRISD.F0=1; //modeswitch
offallswitches();
while (1)
{
if(f==0) //boost mode duty
{
buckgates2 =1;snubberupperergates4=1;Delay_us(1); //s2 & s4 is on ,time =1
buckgates2 =0; Delay_us(1); //s2 off
boostgates1=1;Delay_us(14); //11 //s2 off, s4 and s1 on,time =12
snubberupperergates4=0;//s4 -off & s1 on ,time =12
snubberlowergates3=1; Delay_us(1);//s3 on & s1 on ,time =13
boostgates1=0;Delay_us(1); //s1 off ,s3 on , time =13
buckgates2 =1; Delay_us(4); //6
snubberlowergates3=0;
}
else if(f==1) //buck mode duty
{
buckgates2 =1;snubberupperergates4=1;Delay_us(1); //s2 & s4 is on ,time =1
buckgates2 =0; Delay_us(1); //s2 off
boostgates1=1;Delay_us(9); //11 //s2 off, s4 and s1 on,time =12
snubberupperergates4=0;//s4 -off & s1 on ,time =12
snubberlowergates3=1; Delay_us(1);//s3 on & s1 on ,time =13
boostgates1=0;Delay_us(1); //s1 off ,s3 on , time =13
buckgates2 =1; Delay_us(4); //6
snubberlowergates3=0;
}
if(modeswitch==0)
{ offallswitches();
if(f==0) f=1; else f=0;
Delay_ms(1000);
}
}
}
void offallswitches(void)
{
snubberupperergates4=0;
boostgates1=0;
snubberlowergates3=0;
buckgates2 =0;
}