Using QA403 to measure impedance of an inductor?

Do you have any tips for measuring impedance of an inductor with the QA403?

I think repurposing the speaker impedance plug-in seems a good option, https://quantasylum.com/blogs/news/speaker-impedance-measurements with some additional offline processing to calculate and inductance or capacitance from the data.

In the example above, a low power audio amplifier is used to drive the speaker, so the L+ output from the QA403 connects to the amplifier.

Would it be possible to connect an inductor direct across the L+ output of the QA403 to eliminate the amplifier?

Or is the amplifier playing an important role by protecting the QA403ā€™s output ICs from too much current draw?

Maybe there is an easier way for doing this measurement? A frequency response plug-in?

Interested to hear what you think.

Iā€™m following the speaker measurement tutorial at the moment: creating my BNC board!

Hi @Dan, remember the QA403 output has a 100 ohm series R, so if you want to measure something like a 2.2uH inductor, the impedance of the output is huge compared to the inductor. Those types of things are why you usually want a bit more drive. You could also look at pairing the L with a known C and then looking at the resonant peak.

Hi Matt,

That makes sense. So connecting the speaker or DUT to a low output impedance amplifier is essential.

What kind of amplifier would you recommend for doing impedance measurements? An audio amplifier, chip amp? Or something a bit more special?

Thanks for the advice!

I have been using an Aiyma amplifier for making my speaker impedance measurements:

Really only need a couple of watts, plus I can use it for powering the speaker when doing speaker measurements or other things that may come up. It tests pretty good and my speaker impedance measurement results seem pretty good, though it takes a bit of doing to get the sweep levels set up correctly and of course you need to make the test cable.

Var, Iā€™m not sure the TPA3255 has a flat frequency response when changing the load, as most class D amplifier (Hypex UCD and B&O icepower where the first amplifiers to have a flat response whatever the load is). Expecially when measuring driver/speakers, the amplifier to be used has to be flat as a rule, otherwise you are measuring the driver+the amplifier. I built a measuring amplifier for the purpose, using the LM3886.

@clane, this is a very good point about class D. In the link below, you can see a TPA3255 running into 4 and 8 ohm resistive, and the response changes a fair bit due to the LC output filters. TI has some filterless amps around 5W that might not be so sensitive.

The QA461 Transducer Driver uses an OP564 linear amp with up to 1.5A of drive for this reason. It has about 1 MHz of bandwidth and current sensing of output, including front panel indicators for Over Current and Over Temp. I will try to share some measurements this weekend for characterizing L and C so you can see if it helps. It would be nice to have a generic automated test that would sweep a component and show the impedance over frequency so that the speaker plug-in wasnā€™t doing double duty.

I am looking at responses that I measured for the Aiyma amp, and it is pretty flat to about 10khz and then is up .7dB at 20khz at 30w/8ohms. Totally different response at 4ohms/5w- down about a dB at 20khzā€¦ What was I thinkingā€¦? The channel balance is about .2dB- there is a mod you can do on it but way too much work. I donā€™t measure a lot of speaker impedances, but when I do I am comparing them to their data from 20-40yrs ago, and it compares reasonably. Next time I measure a speaker- which will be a JBL Paragon at my friendā€™s house :laughing:, I will bring by bryston class ab ampā€¦

Hello everyone,

I am returning to this after a bit of a break and I now have a 300W Class-D!

Can you give me advice on my measurement plan and tell me if it makes sense to you?

I have a custom made inductor, 25mH which I want to evaluate at 100Hz only (this presents a 16 Ohm impedance to the amplifier). I want to evaluate core saturation as the current rises to 4A rms, so that is at about 250W. I think the THD vs power measurement will work for this.

This high power level poses a problem because voltage I need ~63V rms (36dB) goes above the input rating of the QA403!

Iā€™m proposing that I make an attenuator that goes before the BNC inputs of the QA403 to reduce the voltage they are sensing. At least this will allow the measurement to be completed. The only down side is I donā€™t think I can tell the software about the external gain so all the numbers will be skewed. I was therefore thinking of using the REST API and do the measurement manually,.

For the attenuator I was thinking of doing a T-pad so that the input impedance of the QA403 remains the same.

DUT --->[ 52k ] ------ [ 52k ]---> QA403 Input
                  |
                  |
               [ 70k ]
                  |
                  |
                 COM

This will provide about -10dB gain, bringing values well below the 32dB (40V rms) limit.

Hi @Dan, there is a crude sledgehammer test for inductor saturation commonly called a splat test. There are nice testers out there for measuring inductor saturation over frequency. But for larger inductors (like class D LC filters) it gets hard to find something economical that can report the saturation at various currents. And for motors, it gets even harder still because even a scooter motor might have a saturation current that is 100A. And since the motors are custom wound (as you are doing), thereā€™s no data sheet.

The splat approach has you charge a bank of caps to a voltage (doesnā€™t have to be huge, often 5V or so), and then using a mosfet (as a switch) you dump the energy stored in the caps into the inductor. If the caps are large enough, it will appear as a constant voltage source. And then you sense the current flowing. Knowing:

v = L \frac{di}{dt}

Youā€™ll see current rise linearly. As the current approaches saturation current, the inductance will drop and youā€™ll see the current slope increase. As you push into saturation, the inductor will look more like a wire, and the current will tend towards infinity. If you look at it on a scope, the knee is pretty easy to see.

Maybe that is a good first start to see how the inductor performs at DC, and if the saturation current is close? And then, the setup you show above to look at AC. Usually, the LC filter will have some peaking just before the frequency corner. In the case of the TPA3255, for example, the LC corner is often around 50 kHz. As the inductor goes into saturation, youā€™d expect the LC corner to push out to a higher frequency as the L decreases. Maybe you could monitor the overall frequency response and see if the frequency response changes at higher power levels, suggesting the inductor is saturating???

I sure hope you can share some plots as you study! Too much of this is glossed over in class D IC specs.

Hereā€™s a plot of a coilcraft inductor for class D. Looks like they are just telling you the DC (splat) numbers and you can see where the saturation starts to kick in. Reading more, inductors donā€™t really show any frequency sensitivity wrt saturation for most core materials. Huh.

@matt

Thanks for the advice, sure Iā€™ll post my updates when I have something useful!

The splat test idea is pretty elegant, it would be a fun microcontroller project. Here is a simple implementation: Power Inductor Checker from searching online.

I donā€™t understand this either! I always thought that the lower the frequency the lower the saturation current, so DC would be a kind of worst case measurement?

I went ahead with the test fixture for the AC measurements as that seems the fastest way to measure things. It is based on the impedance fixture I did last year. The three SMD resistors are the T-pad attenuators to protect the inputs. They and the current sense are optional by using solder jumpers.

This is audio, not RF, you donā€™t try to match impedances - here the extra series resistor acts to add extra noise. A simple 3k3:3k3 attenuator will drop 6dB and handle upto 80V if 1/2 watt resistors are used. It will introduce minimal Johnson noise compared to your circuit which has about 82k equivalent Johnson noise (37nV/āˆšHz). The 3k3:3k3 is equivalent to 1.65k of noise generation, 5nV/āˆšHz.

For impedance measurement this is unimportant, but if you wanted to measure an ampā€™s noise level, it would be crucial.

Yeah that is a better approach in general; the divider does not significantly alter the impedance bridging with the analyser.

For this inductor measurement I really just want to see the increase in the THD curve as a proxy for core saturation. Here is what I have so far keeping the voltages on the inputs ā€œsafeā€,

the lines are two different inductors core sizes. It is not shown, but I also did a control measurement a 16 Ohm resistive load to make sure the distortion is not coming from the amplifier;

see the increase in the THD curve as a proxy for core saturation.

I think you are on the right track here. I wasnā€™t sure at first, but just came across this doc from TI and I wonder if you have seen it? The plots below are 4 inductors. The worst performing exhibits 1.55% inductance change @ 20A versus 1A. The best performing is 0.94%. Quite a difference.

This is from the TI doc located here (see section 4.1): https://www.ti.com/lit/an/slaa701a/slaa701a.pdf

Lots of fun ways to do this. I used to use an audio oscillator and a DC300 Power amp (flat response down to DC) and an oscilloscope. Be sure to put a resistor between the amplifier and the inductor, when it starts to saturate the current drawn will be very high and can damage things if not accounted for. I used the scope in X/Y or dual trace mode to look at the voltage across the resistor (current) and the inductor. Turn the voltage up and/or the frequency down until the current goes berserk, distorting the waveform.

Dale Shirk

Thanks Dale, Iā€™m sure this must be all written down in some old text book, but what to the waveforms look like as the inductor starts to distort? I am assuming that the voltage waveform will look different to the current waveform because

V = \frac{d}{dt} \left( I \cdot L(I, \Phi_B) \right)

Itā€™s all wrapped up in the details non-linear inductance and the core B-H curve. Probably this is not a tractable problem.

Here is a analysis of harmonic distortion as I-V curve become non-linear in audio amplifiers,

, this is from BBC Engineering Training Supplement No. 3 Issue 2 - Harmonic Distortion and Negative Feedback in Audio Frequency Amplifiers pg. 14. An approach like this might work for inductors. This must have been done already, I just canā€™t find it.

No I hadnā€™t! Though this does seem to be at 600kHz. I would expect large difference at lower frequency.

Well Iā€™d better get on with some measurements :slight_smile:

The test fixture boards arrived yesterday. The SMD resistors provide 6dB of attenuation using a voltage divider (thanks @MarkT), there is a zero Ohm resistor in the third position so that can be used as a T-pad also.

Set up

I have the balanced outputs of the QA403 driving the balanced input of the amplifier, the BTL output of the amplifier connects to the test fixture through the ā€œAMPā€ jack socket and we tap off voltage across the DUT and voltage across a 0.1 Ohm current sense resistor which are sent to the QA403 inputs via the -6dB attenuator and BNC connectors. The DUT (resistive load or inductor) is connected across the output of the ā€œLOADā€ socket.

(NB I am using jack sockets because Iā€™m mainly interested in guitar amplifiers and that is the standard).

I used the REST API to drive the measurement because I wanted to apply the external gain of -6dB globally to all inputs and was not sure how to do that with the application software. This script sets the generator to 100Hz and loops over different output amplitudes. At each measurement point it requests the THD percentage, I also grab the spectrum of the left output (voltage across the DUT) and process it a little to get the peak value.

import requests
import numpy as np
import base64
import matplotlib.pyplot as plt
import pandas as pd

results = []
external_gain_dBV = -6.08
amplitudes = np.linspace(-60, 0, 61)

for amplitude in amplitudes:

    # Set analyser output voltage that is driving the amplifier
    requests.put(
        url + f"/Settings/AudioGen/Gen1/On/100/{amplitude}"
    ).json()

    requests.post(
        url + "/Acquisition"
    ).json()
    
    # Use the application to calculate THD
    thd_data = requests.get(
        url + "/ThdPct/100/1000"
    ).json()

    # Grab the left input to find the level
    data = requests.get(
        url + "/Data/Frequency/Input"
    ).json()
    
    left = np.frombuffer(base64.b64decode(data["Left"]), np.float64)
    #right = np.frombuffer(base64.b64decode(data["Right"]), np.float64)
    freq = np.arange(left.size) * float(data["Dx"])
    idx_20Hz = np.where(freq > 20)[0].min()
    leftdBV = 20 * np.log10(left[idx_20Hz:])
    leftdBV
    results.append({
        "output": amplitude,
        "input": np.max(leftdBV - external_gain_dBV),
        "thd": float(thd_data["Left"]),
        "external_gain": external_gain_dBV
    }
    )
df = pd.DataFrame(results)
df

THD vs Power

Here is the THD (%) data verse power for the amplifier driving a 15 Ohm resistive load and driving the 25mH inductor at 100Hz, so Z(100Hz) = 16 Ohms.

There is the data as log-log and linear plots,

Plot3

Plot2

Looking at the log-log plots: there seems to be an outlier in the measurements around 40mW, ignore that. But otherwise you can see that the inductor distortion is 0.1% at 250W. Looking at the linear plots: at higher power the reference and the inductor curves have similar shape so I cannot say that this is saturation in the core or just distortion in the amplifier. I might lean to say that it is core saturation because the gradient is rising faster for the inductor than the amplifier at the same power.

I took a quick look at the waveforms, but visually I found it quite hard to see 0.1% THD and didnā€™t save the data to look more closely.

Worst Case Thermals

I put the QA403 into IDLE so it was continuously generating a 100Hz tone and left the inductor for 20 mins. it very slowly reached 100C (thatā€™s 212F for my freedom loving cousins) with 300W input at 100Hz. This is an absolute worst case, in practice energy in the signal will be spread over the audio band and will have a much higher crest factor. So I think that is acceptable.

Next

I want to see if I can use the impedance measurement feature of the QA403 to measure the impedance as a function of input power to see if we can see the inductance fall off. This will unambiguously show how much the core is saturating.

1 Like

so I cannot say that this is saturation in the core or just distortion in the amplifier

Hi @Dan very interesting, can you look at the inductor current on a scope? Do you think it would be a nice sawtooth? I wonder what other mechanism might be contributing here? Is your class D amp chipset-based or something discrete like Purifi?

Yes, have been using the QA403 to view the current waveform. It does indeed show a bit of distortion of the input sine. I have not yet tried with a sawtooth. Yes, I think there are a few more useful waveform shapes, a square wave should cause a triangular wave current waveform (remembering my SMPS stuff).

I have a very affordable discrete class-D from a member at diyaudio.

Here is a write-up of the method Iā€™ve been using and it does seem to work well, nothing new here, but a bit easier than reading code I posed in the other thread.

First measure the time-domain voltage v(t) and current i(t) using the QA403. The current is measured by the voltage drop across a current sense resistor in series with the DUT. Shift into the frequency domain with an FFT,

V(f) = \text{FFT}(v(t)) \\ I(f) = \text{FFT}(i(t)) \\

The complex impedance is the ratio of the voltage V and current I (dropping the function-of notation, everything is now in the frequency domain),

Z = \frac{V}{I} = |Z|e^{\textbf{i}\phi}

Using,

\left| Z \right| = \sqrt{ R^2 + X_L^2 }
\phi = \tan^{-1} \left( \frac{X_L}{R} \right)

where R is the resistive component and X_L is the inductive reactance. We have two equations and two unknowns, giving,

X_L = \frac{\left| Z \right| \tan\left(\phi\right)}{\sqrt{\tan^2\left(\phi\right) + 1}}
R = \frac{\left| Z \right| }{\sqrt{\tan^2\left(\phi\right) + 1}}

therefore the inductance is,

L = \frac{X_L}{2 \pi f}