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
zvs waveforms for switch S1
zvs waveforms for switch S2
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)
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;
}