Hard-Switching PWM Cuk Converter

Load the Package

<< NodAl.m
<< Average.m
<< KBM.m
<< Graphic.m

Topology Description

Circuit Description

NetList = {{VoltageSource, {1, 0}, Vg},
           {Inductor, {1, 2}, L1},
           {Switch, {2, 0}, S},
           {Capacitor, {2, 3}, C1},
           {Inductor, {4, 3}, L2},
           {Switch, {3, 0}, D},
           {Capacitor, {0, 4}, C2},
           {Resistor, {4, 0}, R}};
InputVars = {Vg};

State-Space Model

Switching Sequence

SwitchStates = {{S -> 1, D -> 0}, {S -> 0, D -> 1}};

State-Space Models

{A,  B,  StateVars}  =  
      StateSpaceModel[NetList,  InputVars,  SwitchStates]

Averaged Model

Additional Inputs

SlowFast = {{1, 2, 3, 4}, {}};

ns  =  Length[SlowFast[[1]]];
nf  =  Length[SlowFast[[2]]];
SlowVars  =  
        Table[StateVars[[SlowFast[[1,  i]]]]  /.  {t  ->  
                t0},  {i,  1,  ns}];
FastVars  =  
        If[nf == 0,  {}, 
          Table[StateVars[[SlowFast[[2,  i]]]],   {i,  1,  
              nf}]];

BCs = {0, (d Ts), Ts};
IV = {};

Averaged Modeling

FastSolus  =  
        Relaxation[A,  B,  InputVars,  SlowFast,  SlowVars,  FastVars,  
          BCs,  IV];

SlowEqus  =  
        Decoupling[FastSolus,  A,  B,  SlowFast,  SlowVars,  
          InputVars,  FastSolus[[3]]];

AveragedModel  =  
        Averaging[SlowEqus, BCs[[-1]]];
Simplify[
      AveragedModel  /.  {x[1][t0]  ->  iL1,  x[2][t0]  ->  
            iL2, x[3][t0]  ->  vC1,  x[4][t0]  ->  
            vC2}]

Ripple Estimation

Ripple = KBM[SlowEqus, AveragedModel, SlowVars, 2];

Simplify[Ripple /. {x[1][t0] -> iL1, x[2][t0] -> iL2, x[3][t0] -> vC1, x[4][t0] -> vC2}]