Spice model extraction for inductors

riccardo tinivella
3 min readJul 25, 2020

Have you measured your inductor and you don’t know how to extract the Spice model from that?

You can try to use this script : https://github.com/tinix84/choke_ac_model_fitting

But let start from the beginning, how does it look like the spice inductor models today in the industry?

Wuerth [https://www.we-online.com/web/en/electronic_components/produkte_pb/bauteilebibliotheken/ltspice/ltspice.php] and Coilcraft [https://www.coilcraft.com/modelsltpice.cfm] in the LTspice libraries they use similar model that looks like the one below:

Equivalent model for AC losses in chokes used by Wuerth or Coilcraft

The model is pretty simple, is the natural next step improving the simple Rdc-L model. More in detail what the model is doing is:

  1. Model DC resistance as Rser // Rpar
  2. Model any effect that goes with f² with the coefficient (2*pi*L1)²*Rp
  3. Model the first resonance of your inductor with Cpar

When is this model OK?

  1. Using the SMT inductor of Coilcraft and Wurth obviously 😊. Hi have remeasured them with a Bode100 and seem quite OK (sometimes the error of the provided model is more than 50% for the single frequency but for the first idea is not bad).See below:
  1. your convert works in CCM (continuos conduction mode) and your ripple is small in compare to DC component. This means AC ripple doesn’t produce so many high frequency harmonics and then the error is small (anyhow is just a simulation the tuning in the lab will be necessary anyhow)
  2. your inductor uses litz wire and the behavior is already capacitive before showing any behavior sqrt(f) like skin effect.

When is this model NOT OK?

1. The inductor is used in a frequency range where the skin losses dominate (proportional to sqrt(f) ):

a. you are using solid wire or foil

b. your Cpar is small (single layer inductor for example) and you can see skin effect

2. the inductor you are using show behavior like f (pretty common in large inductor, not SMT, or nanocrystalline)

Then how the script works?

It use matlab optimization toolbox and tune the Rp, Rser, Cpar, L to minimize the error between the measured curve and the fitted one.

If you launch run_me.m, the result should look like the one here below:

  • Red curve is the impedance magnitude of the measured choke (in this case is a 100uH/16A/3C95)
  • Blue curve is the model impedance before fitting
  • Yellow is the model after fitting
Fitting of magnitude impedance of measured chokes

How did I measure the choke impedance?

With 3 different instruments:

1. DC voltmeter+Power supply with 10A constant current(CC), to measure the DC resistance correctly (pay attention to the power supply, the new ones in CC are bad)

2. Agilent E4980A to measure more precisely at 50Hz (this was a choke for PFC)

3. A Wayne Kerr LCR meter to go above the limit of 2MHz of Agilent E4980A

This model for me is not enough, what should I do?

If the error for you is too much, due to different reason, then you can think to use some other models. Some common models are ones like cascode RL circuit or multiple poles like:

1. https://designers-guide.org/modeling/ind.pdf

2. https://indico.cern.ch/event/682148/contributions/289692ttachments/1614587/25677Frequency_Dependent_Parameters.pdf

3. Ridley’s model https://www.psma.com/sites/default/files/uploads/files/Magnetics%20Workshop%202017/Ridley_Spice%20Models%20For%20Conductor%20Losses.pdf

the way to fit these is not different that the methods used in the script, just a different fitting equation, do you want to contribute? 😊 fork my Github

--

--