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.

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.

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.

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.

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.

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 cm^{2}; 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.

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.