• Resolved

Resoanant converter PID coefficients

I think the coefficient b1 derived on page 25 in ResonantConv.pdf part of the resonant converter kit has an error. It should be

b1 = -Kp-2Kd

The integral term is not suppose to be there.

  • Sunil,


    The difference b/w the two (the approximation you reached at and the one we use ) is that we use two different types of approximations while transferring from s domain to Z domain, we use Euler for differential term and integral for the trapezoidal,

    Using which one gets,



    B2= Kd

    Now when you apply Euler’s only you would get


    B1=-Kp-2Kd < note no Ki component>

    B2= Kd


    There is nothing conceptually wrong in using two different approximations, both are correct,

    I am attaching a paper, written by Richard Poley, describing the conversion method we use,

    Hope this helps


    Manish Bhardwaj

  • In reply to Manish Bhardwaj:


    Will they not produce two different results ?

  • In reply to sunil barot:

    Yes they would give you slightly different results, but as whe you are transferring from s to z or vice versa your results are dependent on the approximation you use,

    None is incorrect, but some approximations are better while tuning for different attributes,

    In our experience we have found the approximation we use to be better for the power supplies tuning,

    Note: for best results you may want to tune all the 2p2z parameters, it just depends on the plant and how tight control you want to achieve,


    Manish Bhardwaj

  • In reply to Manish Bhardwaj:

    how can i tune the 2p2z coefficients?

    what's means of below code?


     fs=100000; //100Khz
     pi=3.14;wz1 = 2*pi*fz1;
     wz2 = 2*pi*fz2;
     wp1 = 0; //Integrator pole at f=0
     wp2 = 2*pi*fp2;

     wr = sqrt(wz1*wz2);
     Q = wz1*wz2/((wz1+wz2)*wr);
     c2 = Kdc/(wr*wr);
     c1 = Kdc/(Q*wr);
     c0 = Kdc;
     d2 = 1/wp2;
     d1 = 1;
     d0 = 0;
     den =  4*d2*fs*fs + 2*d1*fs + d0;
     B0_I = (4*c2*fs*fs + 2*c1*fs + c0)/den;
     B1_I = (-8*c2*fs*fs           + 2*c0)/den;
     B2_I = (4*c2*fs*fs - 2*c1*fs + c0)/den;
     A1_I = ((-8*d2*fs*fs           + 2*d0)/den)*-1.0;
     A2_I = ((4*d2*fs*fs - 2*d1*fs + d0)/den)*-1.0;

  • In reply to peter shi:

    The code maps the analog compensators poles and zeroes to the coefficients for the digital 2p2z structure.

    This is handy when one is trying to tune the system using poles and zeroes