SOFT-SWITCHING BIDIRECTIONAL DC-DC CONVERTER USING A LOSSLESS ACTIVE SNUBBER

Photo of author

By Jackson Taylor

Untitled

BASIC CIRCUIT

YouTube video

HARDWARE

SIMULATION

YouTube video
YouTube video
zvs matlab

zvs in matlab for switch S1

HARDWARE

IMG 1 IMG 2 IMG 3
  • BATTERY -4V AND 12V 
  • Micro controller -dspic30f2010
  • drivers -fan7392 and tlp250
  • MOSFET -CSD19534 (OR USE IRF540)
  • DIODE -BYQ28E

waveforms

zvs waveforms for switch S1

waveform 1 waveform 2

waveforms S1-gate and Vds1 without snubber (no zvs)

waveform 3 waveform 4 waveform 5 waveform 5

waveforms S1-gate and Vds1 with snubber ( zvs)

zvs waveforms for switch S2

waveform S2 1

waveforms S2-gate and Vds2 without snubber (no zvs)

waveform S2 2 waveform S2 3

waveforms S1-gate and Vds1 with snubber ( zvs)

gate waveform

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(yellow) and S4(blue)

Design

DUTY CYCLE CALCULATION

Gain = Vhi / Vlo = 14/2 = 7

DUTY CYCLE = 1/(Gain + 1) = 1/(7+1) = 0.125 = 12.5%

DUTY CYCLE (BOOST) = 12.5%

INDUCTOR VALUE CALCULATION

Vout = 14 V
Vlo = 2 V
Vhi = 14 V
Iin = 5 A
Fout = 100 kHz
Fsw = 1000 kHz
Ts = 1 / Fsw = 1 µs
Vout = (Vhi * D + Vlo * (1‑D)) / 2
Vout = 7 V (boost mode)
Gain = Vhi / (2*Vlo) = 14 / 4 = 3.5
D = 1 / (Gain + 1) = 1 / (3.5 + 1) = 0.222 = 22.2%
L = (Vhi – Vlo) * D * Ts / (Iin) = (14‑2) * 0.222 * 1 µs / 5 A = 0.53 µH ≈ 1 µH (standard value)

Auxiliary Inductor design

Is1 = Vhi * ∆Ts / (2 L2)
∆Ts = 1 µs
For boost mode Is1 = 5 A
L2 = 14 * 1 µs / (2 * 5 A) = 1.4 µH ≈ 1.4 µH

Auxiliary Capacitor design

Vca = Vhi / 2 = 7 V
During dead time the current through the capacitor is 5 A
C = I * dt / dV = 5 A * 1 µs / 7 V = 0.71 µF ≈ 1 µF (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;
}
See also
High Boost Ratio Hybrid Transformer DC-DC Converter for PhotovoltaicModule 24 TO 410VDC