Skip to content
Σ.𝕊.
Go back

Saturable Inductors

Edit page

A friend recently asked me where the inductor equation comes from. Around the same time, I was looking into companion models (discrete-time models) to simulate saturable inductors in real-time on FPGA. To test different alternatives, I needed a continuous reference. Since it had been a while since I thought about coils and fields, I figured it was time to go back to basics. In this post, we derive the inductor equation from first principles and build a smooth saturation model based on the hyperbolic tangent function.

Table of Contents

Open Table of Contents

1. The Relevant Maxwell Equations

Before diving into the details, here are the equations we’ll need. The physics of inductors rests on two of Maxwell’s equations and one constitutive relation:

CHdl=Ienc(Ampeˋre’s Law)CEdl=ddtSBdA(Faraday’s Law)B=μH(Constitutive Relation)\begin{aligned} \oint_{\mathcal{C}} \vec{H} \cdot d\vec{l} &= I_{\text{enc}} && \text{(Ampère's Law)} \\[6pt] \oint_{\mathcal{C}} \vec{E} \cdot d\vec{l} &= -\frac{d}{dt}\iint_{\mathcal{S}} \vec{B} \cdot d\vec{A} && \text{(Faraday's Law)} \\[6pt] \vec{B} &= \mu \vec{H} && \text{(Constitutive Relation)} \end{aligned}

The idea is:

  1. Use Ampère to find H\vec{H} from the current
  2. Use the constitutive relation to get B\vec{B}
  3. Use Faraday to get the induced voltage

The result is the inductor equation V=LdIdtV = L \frac{dI}{dt}.

Two remarks. First, IencI_{\text{enc}} is really SJdA\iint_{\mathcal{S}} \vec{J} \cdot d\vec{A}, the integral of current density over the surface. For discrete wires, this just means counting how many times the wire pierces the surface.

Second, the full Ampère’s Law includes a displacement current term:

Hdl=Ienc+ddtDdA\oint \vec{H} \cdot d\vec{l} = I_{\text{enc}} + \frac{d}{dt}\iint \vec{D} \cdot d\vec{A}

For power inductors, the displacement current term is negligible: the device is tiny compared to the electromagnetic wavelength at typical operating frequencies, so the fields adjust almost instantaneously. In other words, we can drop the term entirely. This is called the quasi-static regime, and it lets us use the static form of Ampère’s Law at each instant.

2. The H\vec{H} and B\vec{B} Fields

The key to understanding power inductors is separating two concepts that often get tangled together: the magnetic field strength H\vec{H}, which is the effort applied by the circuit, and the magnetic flux density B\vec{B}, the response of the magnetic core.

Coil inductor with magnetic field lines

2.1 Magnetic Field Strength (HH)

The magnetic field strength is the driving force generated by the current flowing through the coil. It is defined rigorously by Ampère’s Law in integral form:

CHdl=Ienc\oint_{\mathcal{C}} \vec{H} \cdot d\vec{l} = I_{\text{enc}}

This states that the line integral of H\vec{H} along a closed loop C\mathcal{C} equals the total free current passing through the surface bounded by that loop.

Applying Ampère’s Law to a Solenoid:

To find the H\vec{H} field inside the coil, we define a rectangular Amperian loop of length ll that cuts through the windings.

Amperian loop through solenoid cross-section

  1. Path Integral: We integrate along the length ll inside the core where H\vec{H} is parallel to the path (by the right-hand rule). The return path is outside the core where the field is negligible. Assuming H\vec{H} is uniform inside the core:

    Hdl=Hl\oint \vec{H} \cdot d\vec{l} = H \cdot l
  2. Enclosed Current: If our loop encloses NN turns of wire, each carrying current II:

    Ienc=NII_{\text{enc}} = N \cdot I
  3. The Resulting Formula:

    Hl=NI    H=NIlH \cdot l = N \cdot I \implies H = \frac{N \cdot I}{l}
    • Unit: Amperes per meter (A/m\text{A/m}).
    • Key Insight: HH is purely geometric. It depends only on the current and the winding density N/lN/l. It is independent of the core material.

Why is the field negligible outside?

This commonly stated assumption deserves justification, but I couldn’t find a simple one beyond “experience says so.” One can use the Biot-Savart law to compute the external field and get estimates, but I chose to trust established wisdom and moved on.

Griffiths offers reasonable intuition: for an infinitely long solenoid, the external field is exactly zero. For a finite solenoid, it’s not strictly zero, but becomes negligible when the length is large compared to the diameter. The idea is that field lines close through the core, and the return path outside spreads over such a large volume that the field strength becomes tiny. In power inductors, the high-permeability core concentrates the flux even more, making the external field negligible for practical purposes.

Free vs. Bound Currents

I said above that HH is independent of the core material. This is because Ampère’s Law uses free current, which must be distinguished from microscopic currents inside the core:

Maxwell’s equations define H\vec{H} to depend only on free current, so we can compute HH from the wire current alone. The core material shows up when we relate H\vec{H} to B\vec{B}.

2.2 Magnetic Flux Density (B\vec{B})

So H\vec{H} is the “effort applied by the current”. The flux density B\vec{B} is what the material gives back: the actual magnetic field inside the core. The two are related by the constitutive relation:

B=μHB = \mu \cdot H

Remark on field lines. You’ll often hear B\vec{B} described as “density of magnetic field lines.” The idea: pick a few starting points and trace curves that follow the field direction. Where lines bunch together, the field is strong; where they spread apart, it’s weak. This only works as a comparison between regions (in a uniform field, the lines are parallel and equally spaced, so there’s no “bunching” to see). Still, it’s why people say that evaluating the flux (Φ=BdA\Phi = \int \vec{B} \cdot d\vec{A}) amounts to “counting how many lines pass through a surface.” A useful intuition, but as Feynman warns in his lectures, the picture has limitations and shouldn’t be pushed too far.

2.3 Permeability (μ\mu)

Permeability measures how easily a material aligns its internal magnetic domains with the external field:

μ=μ0μr\mu = \mu_0 \cdot \mu_r

A core with μr=2000\mu_r = 2000 generates a BB-field 2000 times stronger than an air core for the same current.

Physical Origin: Bound Currents

Relative permeability is the multiplier we care about. It says how much bound current the material recruits internally.

  1. Decomposition of BB: The total flux density inside the core is:

    B=μ0(H+M)B = \mu_0 (H + M)

    where MM is the magnetization (magnetic moment per unit volume).

  2. Engineering Definition: We simplify by grouping both effects

    B=μ0μrHB = \mu_0 \mu_r H
  3. Solving for Permeability:

    μr=1+MH\mu_r = 1 + \frac{M}{H}
  4. Physical Interpretation: Since magnetization MM is proportional to bound surface current and HH is proportional to free current:

    μr1+Bound CurrentFree Current\mu_r \approx 1 + \frac{\text{Bound Current}}{\text{Free Current}}

For example, if a ferrite core has μr=2000\mu_r = 2000, then M/H=1999M/H = 1999 and the material does 99.95% of the work in creating the flux.

2.4 Magnetic Flux (Φ\Phi)

The average value of the normal component of the B\vec{B} field through a surface times the area of that surface is the magnetic flux through that surface:

Φ=SBdA\Phi = \iint_{\mathcal{S}} \vec{B} \cdot d\vec{A}

This integral appears on the right-hand side of Faraday’s Law. Introducing Φ\Phi here is primarily for convenience. But defining it clarifies why B\vec{B} is called the flux density: it is the physical field that must be integrated to obtain the flux, which is ultimately our quantity of interest.

In a solenoid, the right-hand rule tells us that B\vec{B} points along the core axis. If we take a cross-sectional cut through the core, the field is perpendicular to that surface, so BdA\vec{B} \parallel d\vec{A} and the integral simplifies to

Φ=BA\Phi = B \cdot A

3. From Magnetic Flux to Inductance

3.1 The Physics of Terminal Voltage

Faraday’s Law applies to the circulation of an electric field around a closed loop, but an inductor is an open circuit with two terminals. To get from a closed-loop integral to a voltage across terminals, we apply Faraday’s Law to a specific loop C\mathcal{C} that follows the coil wire from start to finish, and then loop back in the air gap (outside the inductor) to close the loop:

CEdl=wireEdlPath A+gapEdlPath B\oint_{\mathcal{C}} \vec{E} \cdot d\vec{l} = \underbrace{\int_{\text{wire}} \vec{E} \cdot d\vec{l}}_{\text{Path A}} + \underbrace{\int_{\text{gap}} \vec{E} \cdot d\vec{l}}_{\text{Path B}}

Inside the Wire (Path A): The wire is a conductor, so E0\vec{E} \approx 0 along path A. The integral vanishes.

Across the Gap (Path B): Since the wire contributes nothing to the integral, the entire Electromotive Force (EMF) must appear across the gap:

0+gapEdl0 + \int_{\text{gap}} \vec{E} \cdot d\vec{l}

This line integral is exactly the definition of voltage between two terminals. Following standard circuit conventions (defining voltage to oppose current change), we drop the negative sign:

V=ddtgapEdlV = - \frac{d}{dt}\int_{\text{gap}} \vec{E} \cdot d\vec{l}

Why is this voltage unique?

Strictly speaking, in time-varying magnetic fields, voltage is path-dependent. However, in circuit theory, we work under the Lumped Element Approximation. We suppose that change in the magnetic flux is mostly contained inside the core. Accordingly, the electric field in the air gap is conservative (×E0\nabla \times \vec{E} \approx 0), and line integrals outside the inductor do not depend on the path. This ensures that the voltage measured across the terminals is well-defined and doesn’t depend on how you arrange your voltmeter leads. This is why in nodal analysis, it makes sense to work with nodal voltages (potential voltage at terminals).

In reality, magnetic effects are important to some applications, where even different elements of a circuit non-negligibly affect each other across the air gap.

3.2 Flux Linkage and Inductance

An inductor consists of a coil with NN turns in series (think of it as NN coils of a single turn one after the other). So breaking out path integral of the previous section, we find that the total voltage is the sum of the voltages induced in each turn:

Vtotal=k=1NVk-turn=NdΦdtV_{\text{total}} = \sum_{k=1}^{N} V_{k\text{-turn}} = N \cdot \frac{d\Phi}{dt}

This leads to the concept of flux linkage, ψ=NΦ\psi = N\Phi, which is the total effective flux with the contribution of all turns. The inductor’s voltage is the rate of change of flux linkage:

V=dψdtV = \frac{d\psi}{dt}

Now, we can find a formula for the inductance LL, based on datasheet parameters.

Coil parameters: cross-sectional area, length, number of turns

  1. Start with flux linkage: ψ=NΦ\psi = N \cdot \Phi
  2. Substitute Flux: Φ=BA=(μH)A\Phi = B \cdot A = (\mu H) \cdot A
  3. Substitute H-Field: H=NIlH = \frac{N I}{l}

Combining these gives the relationship between flux linkage and current:

ψ=N(μNIlA)=μN2AlI\psi = N \cdot \left(\mu \frac{N I}{l} \cdot A\right) = \frac{\mu N^2 A}{l} \cdot I

The constant of proportionality is the inductance, LL:

L=μN2Al\boxed{L = \frac{\mu N^2 A}{l}}

which satisfies

V=dψdt=LdIdtV = \frac{d\psi}{dt} = L \frac{dI}{dt}

The N2N^2 Factor:


4. The Physics of Saturation

Saturation is the main limitation of magnetic cores. It happens when the magnetic domains are fully aligned and can’t contribute any more flux.

4.1 The Mechanism

The permeability μ\mu represents the ability of microscopic magnetic domains to align with HH:

4.2 The B-H Curve

The relationship between HH (drive) and BB (response) is nonlinear:

4.3 Consequences of Saturation

When a core saturates, μr\mu_r drops from thousands to approximately 1:

  1. μ\mu decreases dramatically.
  2. LL collapses (since LμL \propto \mu).
  3. In V=LdIdtV = L \frac{dI}{dt}, if L0L \to 0 while VV is maintained, then dIdt\frac{dI}{dt} \to \infty.

Result: Uncontrolled current spike, potentially destroying power switches.


5. A Smooth Saturation Model

Let’s build a model that captures the smooth roll-off into saturation. Real ferrites don’t have a sharp knee. They bend gradually.

5.1 Model Structure

The model has two parts:

  1. The ferromagnetic core is modeled by the hyperbolic tangent (tanh\tanh) function, which provides the smooth saturation knee.
  2. The air contribution is a linear term that represents the residual inductance (LairL_{air}) when the core is fully saturated (acting like an air-core inductor). It’s typically a small fraction of the unsaturated inductance.

We model the flux linkage ψ\psi as a function of current II using a hyperbolic tangent plus a linear term:

ψ(i)=Ψsattanh(IIcritS)ferromagnetic core+LairIair contribution\psi(i) = \underbrace{\Psi_{\text{sat}} \cdot \tanh\left( \frac{I}{I_{\text{crit}} \cdot S} \right)}_{\text{ferromagnetic core}} + \underbrace{L_{\text{air}} \cdot I}_{\text{air contribution}}

where:

and

SymbolDescriptionUnit
NNNumber of turns-
AcA_cCross-section area
lml_mMagnetic path lengthm
μ0\mu_0Permeability of free spaceH/m
μr\mu_rRelative permeability-

5.2 The Sharpness Factor

The standard tanh(x)\tanh(x) function has a fixed curvature that begins flattening relatively early. Real N87 ferrite maintains high permeability longer, then saturates more abruptly.

The sharpness factor S<1S < 1 compresses the x-axis:

5.3 Linear Model for Small Signals

For the companion model validation, we need the small-signal inductance at I0I \approx 0:

L0=dψdii=0=LunsatS+LairL_0 = \left.\frac{d\psi}{di}\right|_{i=0} = \frac{L_{\text{unsat}}}{S} + L_{\text{air}}

Note that L0>LunsatL_0 > L_{\text{unsat}} when S<1S < 1. The sharpness factor effectively increases the apparent permeability for small signals.


6. Example: E65/N87 Power Inductor

A common combination in power electronics is the E65 core geometry with N87 ferrite material.

Note on core geometry: The derivations above assume a simple solenoid, but E65 is an E-core (shaped like the letter E). For such cores, manufacturers provide effective cross-sectional area and effective magnetic path length that account for the non-uniform geometry. These effective parameters allow the solenoid formulas to be applied directly. The values below are the effective parameters for an E65/32/27 core set.

Note on air gaps: The example below uses an ungapped core, resulting in a low critical current (0.84 A). In practice, power inductors almost always include an air gap, which reduces the effective permeability (e.g., from 2500 to 50–200) and proportionally increases the saturation current. The gap also stores most of the magnetic energy and linearizes the B-H curve, making inductance more stable over a wider current range.

DesignationCategoryParameters
E65Core geometryAc=5.30×104A_c = 5.30 \times 10^{-4} m², lm=0.150l_m = 0.150 m
N87Core materialμr2500\mu_r \approx 2500, Bsat=0.35B_{\text{sat}} = 0.35 T

6.1 Computed Parameters

With N=20N = 20 turns:

ParameterFormulaValue
Base inductanceLunsat=μ0μrAcN2/lmL_{\text{unsat}} = \mu_0 \mu_r A_c N^2 / l_m4.44 mH
Saturation flux linkageΨsat=BsatAcN\Psi_{\text{sat}} = B_{\text{sat}} \cdot A_c \cdot N3.71 mWb
Critical currentIcrit=Ψsat/LunsatI_{\text{crit}} = \Psi_{\text{sat}} / L_{\text{unsat}}0.84 A
Air inductanceLair=Lunsat/20L_{\text{air}} = L_{\text{unsat}} / 200.22 mH
SharpnessSS0.55
Small-signal inductanceL0=Lunsat/S+LairL_0 = L_{\text{unsat}}/S + L_{\text{air}}8.29 mH

The small-signal inductance is roughly 1.87× higher than the base inductance computed from μr\mu_r alone. This is because we force the tanh curve to fit the sharp saturation knee of N87 ferrite.


7. Python Implementation

Flux linkage curve for a saturable inductor

# E65/N87 (FERRITE CORE) INDUCTOR MODEL

import numpy as np
import matplotlib.pyplot as plt

# Physical parameters (E65/32/27 core set)
N = 20                  # Number of turns
Ac = 5.30e-4            # Cross-section area [m²]
lm = 0.150              # Magnetic path length [m]
mu0 = 4 * np.pi * 1e-7  # Permeability of free space [H/m]
mur = 2500              # Relative permeability (N87)

# Derived quantities
L_unsat = (mur * mu0 * Ac * N**2) / lm
L_air = L_unsat / 20.0

# Saturation parameters
B_sat = 0.35                # Saturation flux density [T]
Psi_sat = B_sat * Ac * N    # Saturation flux linkage [Wb]
I_crit = Psi_sat / L_unsat

# Model parameters
sharpness = 0.55
L_0 = (L_unsat / sharpness) + L_air


def psi(i):
    """Flux linkage as function of current."""
    return Psi_sat * np.tanh(i / (I_crit * sharpness)) + L_air * i


# Plotting
if __name__ == "__main__":
    i_fine = np.linspace(-2, 2, 1000)

    plt.figure(figsize=(10, 6))

    # Linear model (tangent at origin)
    plt.plot(
        i_fine,
        L_0 * i_fine * 1000,
        "b:",
        lw=1.5,
        alpha=0.6,
        label=f"$L_0$ = {L_0 * 1e3:.1f} mH (small-signal)",
    )

    # Linear model (base inductance)
    plt.plot(
        i_fine,
        L_unsat * i_fine * 1000,
        "g--",
        lw=1.5,
        alpha=0.6,
        label=f"$L_{{unsat}}$ = {L_unsat * 1e3:.1f} mH (from $\\mu_r$)",
    )

    # Tanh model
    plt.plot(i_fine, psi(i_fine) * 1000, "k-", lw=2, label="Tanh model (N87)")

    # Saturation lines
    plt.axhline(
        y=Psi_sat * 1000,
        color="r",
        ls="--",
        alpha=0.3,
        label=f"$\\Psi_{{sat}}$ = {Psi_sat * 1e3:.2f} mWb",
    )
    plt.axhline(y=-Psi_sat * 1000, color="r", ls="--", alpha=0.3)

    plt.xlabel("Current $I$ [A]")
    plt.ylabel("Flux linkage $\\psi$ [mWb]")
    plt.title("E65/N87 Ferrite Inductor: Flux Linkage vs Current")
    plt.grid(True, alpha=0.3)
    plt.legend()
    plt.tight_layout()
    plt.savefig("inductor_flux_linkage.png", dpi=150)
    plt.show()

    # Print summary
    print(f"L_unsat (from μ_r):     {L_unsat * 1e3:.3f} mH")
    print(f"L_0 (small-signal):     {L_0 * 1e3:.3f} mH")
    print(f"I_crit:                 {I_crit:.3f} A")
    print(f"Sharpness factor:       {sharpness}")

8. Summary of Notation

SymbolNameUnitDescription
HHMagnetic field strengthA/mThe “drive.” Created by current. Independent of core.
BBMagnetic flux densityTThe “response.” Energy carrier. Dependent on core.
μ\muPermeabilityH/mThe “multiplier.” Slope of the B-H curve.
Φ\PhiMagnetic fluxWbTotal field through cross-section (BdA\iint \vec{B} \cdot d\vec{A}).
ψ\psiFlux linkageWbTotal flux linked by all turns (NΦN \Phi).
LLInductanceHGeometry + material ability to store energy.
IsatI_{\text{sat}}Saturation currentACurrent where μ\mu drops (magnetic limit).

References

  1. D. J. Griffiths, Introduction to Electrodynamics, 4th ed. Cambridge University Press, 2017. (See discussion of the infinitely long solenoid and external fields.)

  2. R. P. Feynman, R. B. Leighton, and M. Sands, The Feynman Lectures on Physics, Vol. II, Ch. 22. (See discussion of EMF and the electric field inside conductors.)

  3. TDK, “Ferrites and Accessories: SIFERRIT Material N87,” Data Handbook.

  4. Monolithic Power Systems, “Understanding Power Inductor Parameters.” Available: https://www.monolithicpower.com/learning/resources/understanding-power-inductor-parameters?srsltid=AfmBOooHAYTf-PMxOmALcHNVaNNctxo9DUB4rNJZBZth7k21C4RdMZBh


Edit page
Share this post on:

Previous Post
Keyboard Layout
Next Post
PhD Preface