6th Tutorial on PSpice

Mutual Inductances in PSpice

Users of PSpice often need to model inductors that are magnetically coupled. This may occur in steady-state power system simulations, or in power electronics transient circuit simulations where linear or nonlinear transformer models are used. In some cases it is necessary to model weakly coupled inductors. This tutorial will address the issues of modeling magnetic coupling in these circumstances.

Basic Linear Coupled Inductors

Linear Coupled Inductors

In the above figure two inductors are coupled by a coefficient of coupling, k. Their nodes are designated by small integers, and polarity marks have been added. The polarity information is passed to PSpice by the order of the nodes. If the coefficient of coupling is k = 0.8, a valid PSpice coding could be:

*name node1 node2 inductance (comment line)
L1    1     2     40mH
L2    3     4     10mH
*name ind1  ind2  k (comment line)
K12   L1    L2    0.8

Note that the polarity marks in the figure are beside nodes 1 and 3 of the inductors. In the listing, these are entered as the leftmost nodes. An equivalent polarity relationship could be indicated by reversing both nodes on both inductors. The coupling of the coils is entered by including a new part that must begin with the letter, K. The "K" part name is followed by a list of the coupled inductors, then by the value of the coefficient of coupling. The coefficient of coupling must occupy the range, 0 ≤ k ≤ 1.

Multiple Couplings with Different Values

Mutual Inductances with Different Coupling Values

In the above figure, each inductor has mutual coupling with more than one other conductor, but at different values; i.e., the coefficient of coupling is different for at least one of the pairs. In this case, PSpice requires a separate "K" part for each coefficient of coupling as in the following code:

La     1     2     15mH
Lb     3     4     12mH
Lc     5     6     10mH
Kab    La    Lb    0.08
Kbc    Lb    Lc    0.075
Kca    Lc    La    0.04

Note that the polarities of the inductors, and therefore the sense of the mutual coupling is accounted for by the order of the nodes entered for the self inductance parts. In this case, different symbols have been used in the figure to assure that it is understood which pairs are coupled and in what sense. In general, if there are n coils, there will be ½ n(n-1) "K" parts needed.

Multiple Couplings with Same Values

Mutual Inductances with Same Coupling Values

In the above example, we assume that all inductors share identical coefficients of coupling. This is a reasonable assumption when coil symmetry exists and all coils are wound on a common core. Under these conditions, PSpice allows a single "K" part to describe all the coupling.

La    1    2    25uH
Lb    3    4    50uH
Lc    5    6   100uH
Ld    7    8   200uH
Kall  La  Lb  Lc  Ld  0.98

Again, the polarity information is entered by the order of the nodes for the self inductances. Since all the coupling coefficients were the same, only one "K" part was needed instead of six.

Nonlinear Core Model

Hysteresis Loop for a Saturable Core

Occasionally, we need to model some specific magnetic core material properties such as magnetic saturation and loss factors. This requires an additional statement in PSpice. The above figure shows a typical hysteresis loop of magnetic flux density, B, plotted as a function of magnetic field intensity, H. The effects of this can be modeled in PSpice for a specific sample of the core material with dimensions of the core and its nonlinear magnetic properties.

Two Views of a Ferrite Pot Core

The above figure shows a typical ferrite "pot" core where the view on the left is the perspective one sees looking into an open core half, while the view on the right is a section view of a complete pot core transformer with two windings.

When specifying a nonlinear core, an additional PSpice statement is needed. This is the ".MODEL" statement. MODEL statements are required for most of the more complex parts used in PSpice. We will explain this by presenting an example and then dissecting its parts.

L1  1  2  25; <== 25 turns in winding
L2  3  4  50; <== 50 turns in winding
Knl L1 L2 0.98 my_core; <== "my_core" is a model name
.MODEL my_core Core(MS=400K A=45 C=0.4 K=25
+ AREA=1.38 PATH=4.52)

Several things are different about this example. First, the values after the node numbers in the "L1" and "L2" statements are the numbers of turns in the windings, instead of the inductance in henrys. This interpretation is triggered in PSpice whenever the inductor part name is mentioned in a "K" part listing that references a .MODEL statement. The next thing that is different is the model statement. All model statements have a similar form so that learning about this one will help you understand other model statements you will encounter later. The last item on the "K" part listing was the model name we are declaring. It is "my_core" in this instance. A model name does not have to start with any particular letter; i.e., you can use about any name you want as long as you avoid illegal characters such as embedded spaces. The .MODEL statement defines the model we are creating. Hence, the second item in the model statement is the model name. The third item in the model statement is the model type. In our case, this is "Core." There are many pre-defined model types in PSpice. The model type sets the rules on how to interpret the model parameters. In the "Core" model type, the parameters are: MS, the magnetic saturation in gauss; A, the thermal energy parameter in amp/meter; C, the domain flexing parameter (dimensionless); K, the domain anisotropy parameter in amp/meter; AREA, the cross-sectional flux area in cm2; and PATH, the magnetic path length in cm.  Since the format within the model statement is "parameter_name = value," the order of the parameters is not important.  Since all the parameters have default values, they need not be entered if you are satisfied with the default.  The "Core" model type has another parameter, GAP, which is the air gap length.  It has a default value of zero, so we did not need to specify it in our example.

There appears to be a great deal of tedious detail in the above procedure. However, we normally find the details of a core model already provided in a parts library, just as we would for a standard type of diode or transistor. Our purpose here is to explain the usage, not the derivation of the models.

Uncoupled, Nonlinear Inductor

It is possible to use the nonlinear core model to create a single nonlinear inductor. We still need the "K" part and the .MODEL statement. An example follows:

Lsat 1 2 35; <== 35 turns
Ksat LSAT 0.999 my_new_model
.MODEL my_new_model Core(MS=500K A=40 C=0.42 K=26
+ AREA=1.25 PATH=5.63)

Notice that only one inductor is in the "K" part list. This use of the core model for a single, uncoupled inductor is not supported in some versions of SPICE.

Back to Main Page