octavetransfer-function

How to plot a transfer function from a Cauer network


The picture below shows a Cauer network, which is a continued fraction network.

Cauer Network

I have built the 3rd olrder transfer function 3rd Octave like this:

function uebertragung=G(R1,Tau1,R2,Tau2,R3,Tau3)
s= tf("s");
C1= Tau1/R1;
C2= Tau2/R2;
C3= Tau3/R3;
# --- Uebertragungsfunktion 3.Ordnung --- #

uebertragung= 1/((s*R1*C1)^3+5*(s*R2*C2)^2+6*s*R3*C3+1);

endfunction

R1,R2,R3,C1,C2,C3 are the 6 parameters my characteristic curve depends on.

I need to put this parameters into the tranfser function, get a result and plot the characteristic curve from the data.

The characteristic curve shows thermal impedance vs time. Like these 2 curves from an igbt data sheet.

Characteristic Curve

My problem is I don't know how to handle transfer functions properly. I need data to plot the characteristic curve but I don't know how to generate them out of the transfer function.

Any tips are welcome. Do I have to make Laplace transformation?

If you need further Information ask me and I try to provide them all.


Solution

  • From the data sheet, the equation they are using for their transient thermal impedance graph is the Foster chain step function response:

    Z(t) = sum (R_i * (1-exp(-t/tau_i))) = sum (R_i * (1-exp(-t/(R_i*C_i)))) 
    

    I verified that the stage R's and C's in the table by the graph will produce the plot you shared with that function.

    The method for producing a step function response of an s-domain (Laplace domain) impedance function (Z) is to take the inverse Laplace transform of the product of the transfer function and 1/s (the Laplace domain form of a constant value step function). With the Foster model impedance function:

    Z(s) = sum (R_i/(1+R_i*C_i*s))
    

    that will produce the equation above.

    Using the transfer function in Octave, you can use the Control package function step to calculate the transient response for you rather than performing the inverse Laplace transform yourself. So once you have Z(s), step(Z) will produce or plot the transient response. See help step for details. You can then adjust the plot (switch to log scale, set axes limits, etc) to look like one of the spec sheet plots.

    Now, you want to do the same thing with a Cauer network model. It is important to realize that the R's and C's will not be the same for the two models. The Foster network is a decoupled model that has each primary complex pole isolated by layout, but the R's and C's are actually convolutions of the physical thermal resistances and capacitances in the real package. On the contrary, the Cauer model has R's and C's that match the physical package layers, and the poles in the s-domain transfer function will be complex products of the multiple layers.

    So, however you are obtaining your R's and C's for the Cauer model, you can't just use the same values they have in their Foster model parameter table. They can be calculated from physical layer and material properties, however, assuming you have that information. Once you do have useful values, the procedure for going from Z(s) to the transient impedance function is the same for either network, and they should produce the same result.

    As an example, the following procedure should work in both Octave and Matlab to plot the Thermal impedance curve from the spec sheet data using the Foster Z(s) model as a starting point. For the Cauer model, just use a different Z(s) function.

    (Note that Octave has some issues in the step function that insert t = 0 entries into the time series output, even when they aren't specified, which can cause some errors when trying to plot on a log scale. so this example puts in a t=0 node then ignores it. wanted to explain so that line didn't seem confusing).

    s = tf('s')
    R1 = 8.5e-3; R2 = 2e-3;
    tau1 = 151e-3; tau2 = 5.84e-3;
    C1 = tau1/R1; C2 = tau2/R2;
    input_imped = R1/(1+R1*C1*s)+R2/(1+R2*C2*s)
    times = linspace(0, 10, 100000);
    [Zvals,output_times] = step(input_imped, times);
    loglog(output_times(2:end), Zvals(2:end));
    xlim([.001 10]); ylim([0.0001, .1]);
    grid;
    xlabel('t [s]');
    ylabel('Z_t_h_(_j_-_c_) [K/W] IGBT');
    text(1,0.013 ,'Z_t_h_(_j_-_c_) IGBT');
    

    Plot of thermal impedance produced with Octave 4.2.1 and Control package 3.0.0