Skip to the content
2 layers94.4 × 90 mmImpedance Analyzer V3, the printed circuit board in 3D

A PCB impedance analyzer to measure loads to 100kHz and beyond

Size
94.4 × 90 mm
Copper layers
2
Thickness
1.6 mm
Parts
92
Nets
61
Pads
279
Tracks, vias
457, 263
Pours
2
Routed
Yes
KiCad
KiCad 6 (file 20211014)
Created
25 Dec 2021
Updated
4 Jul 2024

Overview

Impedance Analyzer V3 is an open-source printed circuit board by EliMattingly22, from the EliMattingly22/Simple_Impedance_Analyzer repository on GitHub, published under the MIT licence. It is a 2-layer board of 94.4 × 90 mm with 92 parts on 61 nets, routed with 457 tracks and 263 vias.

It is built around the INA129P, LM358 and BUF634T, with the L7805 and MUX509ID among its other parts. Its parts include 27 capacitors, 26 resistors, 17 connectors, 6 ICs and 6 diodes. It belongs with the sensors and measurement boards of this library.

Main components

5

README

README.md

Simple Impedance Analyzer

Purpose

The impedance analyzer was designed as a low-cost, flexible, and accurate platform to perform impedance measurement at arbitrary frequencies up to ~250kHz. The current infrastructure assumes the user has access to a National Instruments DAQ (e.g. NI-USB-6363), though similar digitizers would be similarly effective.

In this current configuration:

  • About 0.1% Accuracy for large impedance and frequency ranges.
  • The LabView has an easy to use GUI
  • TDMS file saving
  • It can measure impedances from 10mOhms to 10MOhms, and by changing the shunt resistor values that range could be extended
  • Test at frequencies from DC-250kHz (>100kHz still needs validation)
  • Perform frequency sweeps on log or linear spacing
  • If a battery-powered computer and DAQ is used, the entire measurement apparatus can be both portable and floating.

Accuracy and noise (1 kHz resistive)

Accuracy and noise (10 kHz resistive)

Accuracy and noise (100 kHz resistive)

Accuracy and noise (10 kHz Capacitors)

  • It seems one can expect about 1% accuracy between 10 p to 0.1 mF.
  • The point indicating 0.01% accuracy is probably spurious. Some random errors happened to offset each others.

PCB

Use V2 rev B. V3 has not been tested/built. it is still in design phase. Perhaps it should just be in a separate brach of Github. Designed in KiCAD v6.

Operating Principle

This circuit uses the "auto-balancing bridge" technique. If you are curious/want to play around with the circuit you can see the LTSPICE schematic.

It is worth reading the Keysight impedance measurement handbook or TI's reference design for an LCR meter front-end for an overview of measurement techniques.

The current through the DUT is (ideally) the same as the current in the shunt resistor, so the impedance is V(DUT) / (V(Shunt)/R(Shunt)).

Source of Errors

The precision of the circuit is dominated by the shunt resistors and gain accuracy of the INAs. Error in any of these will linearly cause an error in the calculated impedance. If they are stable over time, they can conceivably be calibrated with a high tolerance (e.g. 0.01%) reference resistor.

If the shunt resistor is off by some value, X (where 1.01 would be 1% higher than nominal), the current would be reported as I0*X where I0 is the actual current.

The noise performance of the INAs isn't great, but the FET inputs have extremely low bias currents, and low current noise, which are necessary if high impedance loads are attached. The noise should add an incoherent error, so by averaging for longer, this can be mitigated.

The parasitic elements can be accounted for by taking an open/short/load measurement. See sect. 4.3.2 in the impedance measurement handbook

Operation instructions

Setup

The device should be plugged in with a four-wire (Kelvin) probe attached. On the probe there will be two pairs of leads, each connected to a clamp (typically one pair is red, one is black). The two BNC connections on the red lead should be plugged into the "HPot" and "HCur" connectors, and the BNCs on the black probe should be connected to "LPot" and "HPot" connectors.

Plug in the power and make sure the LEDs next to the "+5V" and "-5V" are illuminated.

The DAQ should be plugged in via the BNC connectors and however they are connected, those outputs/inputs are selected on the front page of the Labview GUI.

Also on the front page, set the sampling rate to the maximum allowable (see documentation for your DAQ). Set the sampling time to be >10 periods of whatever frequency you are testing at. Longer gives better noise performance.

For the shunt resistor, use the value most similar to the load you are measuring. Use J13/14 to select the shunt resistor.

Set the series resistor before the load (R9/24) to the same value as the shunt resistor using J17.

  • For the saving cluster the Fine Name String will be the identifier in the file name.
  • Save path is the directory it will be saved within
  • Experiment title is a string added to the metadata
  • Meta-data array is an array that the user can fill in as desired. It just goes into meta-data as-is. For example, if you are measuring the turns on an inductor vs inductance, you could enter the turn count in this spot and then afterwards when processing the data it would already be saved.

  • Test Freq: This is the measurement frequency for single measurements and stats. It is overwritten for frequency sweeps.
  • Output Signal Amp: This is the waveform amplitude the DAQ outputs. If this is too low, SNR is sacrificed, if it is too high, the waveform can clip. Check the debugging cluster to ensure the amplitude of the voltage monitor and current monitor arent clipping (i.e. they are less than 7 V or so)
  • Sampling time: Time of acquisition in seconds. Should be long enough for 10 or so periods of the output waveform. More improves SNR.
  • Sampling Rate: Sampling rate in Hz. should be maximum allowable.
  • Output Channel: The channel that goes into the Voltage Input BNC (top left in photo above)
  • Current Channel: The channel that comes from the current sense BNC (Bottom left in photo above)
  • Voltage channel: The channel that comes from the voltage sense BNC (middle left in photo above)
  • Trigger channel: This should be set to the output start trigger, for example "/Dev2/ao/StartTrigger"
  • Number of runs: this is the number of times the acquisition will be repeated and averaged.

  • R_Shunt: The shunt resistor value (R14/18)

  • Rg_Vmon: The gain-setting resistor for the voltage monitor (R12 or R8)

  • Rg_Imon: The gain-setting resistor for the current monitor (R11 or R7)

  • ESL_Cal: This value is set by the short circuit compensation and is enabled by the UseCorrection boolean

  • ESR_Cal: This value is set by the short circuit compensation and is enabled by the UseCorrection boolean

  • Cp_Cal: This value is set by the open circuit compensation and is enabled by the UseCorrection boolean

  • Rp_Cal: This value is set by the open circuit compensation and is enabled by the UseCorrection boolean

  • UseCorrection: enables the short/open compensation values. Typically set to TRUE (green illuminated)

  • RLoad: This is the actual value of the load compensation resistor that one may use to calibrate gain errors of the system.

  • RLoad_Meas: This is the measured value of that load. To acquire this value, set RLoad and RLoad_Meas to 0 and then measure the known load and set this and the RLoad by typing in the appropriate values.

Calibration

Set the equipment up to measure your load, and short the clips together. Next, go to the Short/Open compensation tab and press the "Acquire short" button. Open the clips and then do the open compensation.

Measure load

Use the last page to do a single impedance measurement and ensure the load is similar to expected. Then use the stats page or freq sweep depending on what you want.

List of jumpers & their purpose

  • J15/16 low-pass filters for the input. These clean the analog signal from the DAQ. They can generally be set to the highest frequency that the user plans to measure. Removing the jumper disconnects the filtering entirely.

  • J10: The current monitor gain selection

  • J12: Voltage monitor gain selection

  • J13/14: Shunt resistor selection

  • J17: Series resistor selection. This resistor in series with the load helps stability and makes the system more balanced. The resistor value should match the shunt resistor value.

If you are having errors:

  1. Make sure the channels are selected properly
  2. Make sure BOTH sides of the clips are on the load
  3. Make sure the BNCs are properly attached
  4. The LEDs should be illuminated
  5. The amplitude should be sufficiently low that it doesn't saturate the inputs/clip

Example applications:

Litz wire, air-core inductor

  • The impedance is exactly as expected here for an inductor. Because Litz wire was used, the resistance is not a strong function of frequency.
  • The slope of the reactance is constant and proportional to frequency.

Skin and proximity effect on inductor

This is a frequency sweep of a solenoid (~1 mm diameter) wound on a copper tube with a wall-thickness of ~1 mm. Quite a lot is happening with this load:

  • Below 50 Hz or so, it is essentially a resistor, the inductive impedance is very small.
  • At 50-1k Hz, the solenoid's impedance has an increasing real component and decreasing inductance (decreasing slope of imag.). This occurs as the inductor couples more strongly into the copper tube. The inductance decreases because the magnetic field in the center of the tube is decreasing as the wall effectively shields it.
  • Between 1k and 10k Hz the resistance nearly plateaus and the inductance starts rising proportionally to frequency. Presumably at this point, the skin depth of the copper tube has been met, so the magnetic fields are not significantly penetrating to the center of the tube.
  • Above 10 kHz the skin depth of the wire is being reached and the AC-resistance is increasing as the effective copper area for current to flow in decreases.

Resonant L-C

Notch filter input

Thoughts for improvement

  • Make the shunt resistor digitally selectable
  • Build a microcontroller-based interface for increased portability
  • Improve system accuracy for high impedance loads
  • Improve system accuracy for high frequencies
  • Modify it such that it uses only one amplifier for both VMon and IMon and a relay to select which one.
  • Replace INA121 with a JFET INA (e.g. 3 opamp configuration)
  • Implement transformer test jig

Parts

92
QtyValueFootprintReferences
15100nCapacitor_SMD:C_0805_2012MetricC3, C5, C8, C10, C14, C17, C18, C19, C20, C21, C22, C23, C24, C26, C27
81kResistor_SMD:R_1206_3216MetricR1, R11, R12, R13, R19, R20, R22, R25
7Conn_CoaxialConnector_Coaxial:BNC_TEConnectivity_1478204_VerticalJ1, J2, J3, J4, J5, J6, J7
610kResistor_SMD:R_1206_3216MetricR2, R7, R8, R14, R16, R24
6Conn_02x02_Counter_ClockwiseConnector_PinHeader_2.54mm:PinHeader_2x02_P2.54mm_VerticalJ10, J12, J13, J14, J15, J16
4C_PolarizedCapacitor_Tantalum_SMD:CP_EIA-6032-20_AVX-F_Pad2.25x2.35mm_HandSolderC2, C11, C12, C13
3100Resistor_SMD:R_1206_3216MetricR9, R18, R26
3DNPResistor_SMD:R_1206_3216MetricR3, R4, R21
3LEDLED_SMD:LED_1206_3216MetricD3, D4, D5
3MountingHoleMountingHole:MountingHole_4mmH2, H3, H4
210nCapacitor_SMD:C_0805_2012MetricC16, C25
210uInductor_SMD:L_Taiyo-Yuden_NR-60xx_HandSolderingL1, L2
21nCapacitor_SMD:C_0805_2012MetricC1, C15
222uCapacitor_THT:CP_Radial_D5.0mm_P2.50mmC4, C6
247Resistor_SMD:R_1206_3216MetricR5, R6
250Resistor_SMD:R_1206_3216MetricR15, R17
2BUF634Package_SO:SO-8_3.9x4.9mm_P1.27mmBUF1, BUF2
2CPCapacitor_THT:CP_Radial_D8.0mm_P5.00mmC7, C9
2D_TVSDiode_SMD:D_SMAD2, D6
2INA129Package_DIP:DIP-8_W7.62mmU3, U4
2LM358Package_SO:SO-8_3.9x4.9mm_P1.27mmU1, U2
2Screw_Terminal_01x03TerminalBlock:TerminalBlock_bornier-3_P5.08mmJ11, J17
10Resistor_SMD:R_1206_3216MetricR10
1100kResistor_SMD:R_1206_3216MetricR23
1Barrel_Jack_SwitchConnector_BarrelJack:BarrelJack_HorizontalJ8
1DDiode_SMD:D_SMAD1
1DPUN02L-XXMartinos:SIP-2W-7Reg1
1Ferrite_BeadResistor_SMD:R_0805_2012MetricFB1
1L7805Package_TO_SOT_THT:TO-220-3_VerticalU5
1MUX509IDPackage_SO:SOIC-16_3.9x9.9mm_P1.27mmU6
1MountingHole_PadMountingHole:MountingHole_4.3mm_M4_PadH1
1USB_B_MicroConnector_USB:USB_Micro-B_Wuerth_629105150521J9

More from EliMattingly22/Simple_Impedance_Analyzer

3
  • 4 layers98 × 101.6 mmImpedance Analyzer V2, the printed circuit board in 3D

    Impedance Analyzer V2

    EliMattingly22/Simple_Impedance_Analyzer

    A PCB impedance analyzer to measure loads to 100kHz and beyond

    90 parts12MIT
  • 2 layers94.4 × 90 mmImpedance Analyzer, the printed circuit board in 3D

    Impedance Analyzer

    EliMattingly22/Simple_Impedance_Analyzer

    A PCB impedance analyzer to measure loads to 100kHz and beyond

    63 parts12MIT
  • 2 layersTransformer Test Fixture, the printed circuit board in 3D

    Transformer Test Fixture

    EliMattingly22/Simple_Impedance_Analyzer

    A PCB impedance analyzer to measure loads to 100kHz and beyond

    20 parts12MIT

Similar boards

  • 2 layers100 × 100 mmHubble, the printed circuit board in 3D

    Hubble

    kitspace-test-repos/kicad6-file-collection

    125 partsMIT
  • 2 layers99.9 × 49.9 mmINAAmplifierRev2, the printed circuit board in 3D

    INAAmplifierRev2

    JayBernstein/EMG-Controlled-Prosthetic

    Senior Project for Dr. Pernalete at Cal Poly Pomona, Fall 2023 - Spring 2024

    58 parts1
  • 4 layers100 × 100 mmPowerMonitor, the printed circuit board in 3D

    PowerMonitor

    steewbsd/gilgamesh

    157 parts
  • 2 layers160 × 100 mmRedPitaya Lockbox, the printed circuit board in 3D

    RedPitaya Lockbox

    TU-Darmstadt-APQ/RedPitaya-Lockbox

    Digital controller for laser frequency stabilization based on the RedPitaya STEMlab 125-14 board

    110 parts40
  • 4 layers145 × 157 mmRear, the printed circuit board in 3D

    Rear

    JQIamo/20A-bipolar-current-source

    20A bipolar current source with water cooled sensing resistor

    99 parts2
  • 2 layers86.1 × 74.9 mmRTD, the printed circuit board in 3D

    RTD

    Konat23/RTD_Thermometer

    A system that allows to measure and visualize the temperature using a thermal resistance sensor (RTD)

    27 parts
  • 2 layers30.5 × 41.5 mmINA0, the printed circuit board in 3D

    INA0

    yao-stuy/loadcell-board-pcb-kicad-files

    KiCad projects for load cell amplifier boards.

    8 parts
  • 2 layers132.1 × 45.7 mmIPoS, the printed circuit board in 3D

    IPoS

    peterheinrich/InternetOverSpaghetti

    Transmitting IP packages over a pair of spaghetti thus demonstrating how media independent IP really is.

    42 parts342

Questions

How big is the Impedance Analyzer V3 PCB?

It measures 94.4 × 90 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Impedance Analyzer V3 use?

92 parts, built around the INA129P, LM358, BUF634T and L7805. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Impedance Analyzer V3 KiCad files?

From the EliMattingly22/Simple_Impedance_Analyzer repository on GitHub, at the commit this page was made from: the board is Impedance_Analyzer_V3-NOTBUILT/Impedance_Analyzer_V3/Impedance_Analyzer_V3.kicad_pcb and its schematic Impedance_Analyzer_KiCAD/ImpedanceAnalyzerPower.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Impedance Analyzer V3 design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).