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)

Hardware Hack

Stop Buying New Batteries for Your Tech

Electronics are expensive, but their power sources don't have to be. Discover the simple engineering trick to recondition dead batteries and bring your gadgets back to 100% capacity.

Watch the Free Video
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)

Sustainable Tech

Keep Toxic E-Waste Out of Landfills

Don't throw away your failing laptop, phone, or car batteries. Learn how to recondition them at home in just a few hours. It's better for the planet—and your wallet.

Learn How It Works

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
SMART ECO BIN (GIVES YOU CHOCOLATE IF YOU DEPOSITE WASTE BOTTLE)

Revive Your Dead Electronics

Got a drawer full of dead gadgets or a failing car battery? Instead of paying a premium for replacements, use this simple trick to easily recondition them right from home.

See How It Works