@Dan I have rev 2 and terminal blocks.
Here is the setup and the 2 signals.
I cannot see anything too wrong with that, let me replicated here and see if I discover something. Hopefully it’s not the board! Will try and use similar value resistors.
So I reconnected things to the terminal blocks then tested with a 5k resistor and it looked more normal.
Went back to the 10k resistor snd the shape looked like a resistor shape. Still showing around 8k though rather than 10k.
Could have been poor connections then?
Have you measured the resistors you are using, it’s hard to make out in the photo.
My setup is slightly different, but at least this eliminates the board. You can probably improve things by playing with the settings. I didn’t have time to try higher value resistor and driving just with the QA403.
But I definitely recommend the QA461. It’s a great reference amplifier for low power stuff.
I swear that is real data and not just a blue straight line I have drawn on the plot!
So I realized that last pic was just because I used -40dbv.
When you bump it up to 0dbv it distorts.
This is -6dbv.
I have a qa461 and low impedances have been fine. I think the 10k may be interacting with the input impedance of the qa402. @matt coukd this be the cause of the nonlinearity and the impedance of the rsistor being off by 1800 ohms?
@Dan Any way you can check 10k with your setup?
I tried 5k resistor below. Definitely better linearity. Makes me think even more that the nonlinearity at 10k is interaction with the qa402 input impedance. As matt suggested in his blog, this is going to require a buffer with a huge input impedance to be able to get good measurements of input impedances that are large.
Here is linearity with a 3k resistor load.
I’m going to play with ratios of sense resistor vs load to see the effect on nonlinearity.
Yes, remember the QA40x has 100K input impedance on each input (plus and minus). So, as your DUT input Z gets larger, and you need a larger sense resistor, things you could previously ignore start to matter.
In the schematic below, R1 is the QA461 (or similar) output Z, R5 and R6 is the QA40x input Z, R2 is the sense resistor, and R3 is the DUT load.
If R1 is <<< R5 (which it probably is if you are using a QA461 or similar to drive) then the circuit simplifies to:
Now, the voltage across the DUT that is sensed by the QA40x (on the left channel) is correct because we’re sensing that directly and so the impact of the 10K and 100K divider doesn’t matter. But the sense resistor isn’t quite what it seems anymore. The effective sense resistor would be 10K || 100K = 9.09K.
And so, as the sense resistor increases, you need to take the QA40x input Z into account. Can you re-run when time permits using a resistor for the DUT load, and specify the sense resistor as being the parallel combination of the actual sense resistor AND the input Z of the QA40x?
Maybe there should be an option in the plug-in to allow the automatic adjustment of the sense resistor based on the QA40x input Z.
@matt my load is a 10k resistor and my sense is a 100 ohm so that wouldnt match the problem you cited above.
I am using the signal directly from the qa402 so 100 ohm output impedance. So that would look like 200 ohms and 100k or 199.6 which doesnt explain why I get 8200 ohm on the graph when using a 10k load.
To verify there was nothing wrong with my test rig, here is a 1 ohm sense and a 15 ohm load, in an attempt to mirtor @Dan . It clearly works correctly. The issue is with larger load and sense resistors.
@Dan on another note, would it be possible to do a rev 3 and add a terminal block with the sense resistors so we could easily swap them out?
OK, got it. You could stick it all into spice and verify with a 1 kHz tone to see where the measurement is departing. For example, with what I understand your values to be (R1 = analyzer out, R4 and R5 = analyzer in, R2 = sense, R3 = DUT), you’d have this:
And with 0 dBV out, spice says your voltage across R3 is 972.45 mV, and the current through R2 is 106.97uA, which through 100 ohm would yield 10.697mV. How do those compare with your measurements at 1 kHz if you use a tone instead of a sweep?
If you measurements are close, maybe there’s an issue with the plug-in algorithm for higher DUT impedances?
Thx @matt. I will test that.
Using my qa461 with its low output impedance, and using a 4.7 ohm sense resistor and 10k load I was able to get it to read 10k impedance but there was a large amount of noise( qa402 output was -3dbv and attenuation was 24db).
I then returned to just using the output from the qa402 directly. The pic is a series of tests going from 4.7 ohms lowest plot) up to 500 ohms for the sense resistor using a 10k load. I did a few others with higher valued sense resistors but couldn’t get the load to measure at more than 8.4k ohms even with a 2k sense resistor.
Let me try your experiment as well.
That’s a pretty good clue between QA40x directly versus using QA461. It suggests that things aren’t making sense when the 100 ohm series output R is in place.
Just to double check, you are sensing directly across the DUT load for the left channel and not at the QA403, right?
@matt I am using @Dan pcb and yes it seems to measure direct.
Looking at your simulated measurements above, mine are 972.3mv and 12.1mv although my sense is 99.5 ohms rather than 100.
So the 12.1mv measurement after calculation would give you around 8k ohms for the load. So the software is calculating that correctly. Why though does it measure 12.1mv instead of 10.697mv?
Whew, I’m at a loss too. Seems an important clue is when the driver (QA403 or QA461) output Z is close to 0 (QA461), then the result is as expected. But when the output Z is 100, the result is NOT as expected.
@matt so your simulated current is correct as I do get exactly that implied voltage across the 10k load. That current through the sense resistor along with the voltage I measure across it implies a resistance of about 113 ohms.
When I remove the L+ input and use Idle and Gen at 1kHz, the voltage across the sense resistor lowers from 12.1 to 10.8mv, almost what it should be according to your simulation.
I did some more experimenting. Using a 1.5k sense resistor, and pc mirroring @1khz, I get exactly 10k for the 10k resistor load calculated manually, nothing connected to the qa402 inputs. I then went back and used the output from the qa402. Also came up with 10k value. This is all calculated manually as we are not connected to qa402 inputs. I then hooked up the qa402 inputs but measured the voltages manually and came up with 8300 ohms for the load value. This is the same value that the qa402 plotted on its graph.
So my conclusion is that connecting to the qa402 inputs influences the impedances enough to distort the dut measurement when measuring a 10k impedance. @matt does this seem correct to you?
Yeah sure, that would be useful.
I need to update the through-hole footprint to allow thicker leads for power resistors. I’ve bodged in some 5W resistors at the moment.
Looking at this more in spice, I think the 100k analyzer input Z makes this a more challenging problem.
If we start with this schematic, we can ask spice to calculate the DUT R, which in the schematic below is R5. R1 is the generator output Z (QA40x or QA461). R2 is the sense resistor. R3 and R4 are the current sense inputs (left channel) and R6 and R7 are the voltage sense inputs (right channel).
We can ask spice to graph the resistance: V(N003,N004)/(V(N002,N003)/100)
That gives 1k
If we change the sense to 1k, the DUT is still reported as 1K.
If we change the sense to 10k, the DUT is reported at 1.047k (4.7% error)
And then change the DUT 10 100K and the DUT is reported at 70K (~30% error)
So, looking at the simplified schematic, the first thing that pops out is that the current through R2 depends not only on the DUT, but on R6, R7 and R4. R4 and R7 can be collapsed into a single 50K. But the actual current sensed by R2 is (R6+R5) || 50K.
I think this simple spice model can be a good start for figuring out how to back out the analyzer impedances.
Thx @dan. Both those changes would be great.
@matt thx for the analysis. I was hoping there would be a good software fix!
@matt why does the current at the sense resistor not depend on the value of R2 itself as well as the others you noted?
In this case its small but might not be in some case.
On another note, we can compute what R= (R5+100K)||50K should be then just need to do a loop to iterate to determine what R5 must be. Am I thinking about that correctly? Never mind. Realized its more complicated than that.