Probing the popular s21 series through impedance measurement using NanoVNA-D v1.2.29 cf NanoVNA-D v1.2.40

Derivation of the expression for the unknown impedance in an s21 series through measurement arrives at the following expression:

\(Zu=(Zs+Zl)(\frac{1}{s_{21}}-1)\).

The diagram above is from (Agilent 2009) and illustrates the configuration of a series-through impedance measurement.

It is commonly assumed that Zs+Zl=100Ω, as is done in (Agilent 2001). That might be a reasonable assumption if the VNA correction scheme corrects source and load mismatch, but let’s consider the NanoVNA-H running NanoVNA-D v1.2.29 (Apr 2024) firmware (the current release).

It is good practice to validate a measurement system by measuring a known component. Let’s measure a 200Ω 1% resistor that measures 200.23Ω at DC (it is actually 2 x 0806 100Ω 1% resistors in series.

Above is the test setup, the SDR-kits test board fixture was SOLIT calibrated 1-31MHz using the parts shown at centre of the pic. The fixture is shown with a 200Ω 1% DUT that measures 200.23Ω at DC.

NanoVNA-H v3.3 with NanoVNA-D v1.2.29

Above is a screenshot from the NanoVNA-H measuring the SMD resistor that measures 200.23Ω at DC. The red and green traces use the internal feature to transform an S21 measurement into series thru impedance. The measured value of 204.9-j2.042Ω is significantly different to the expected 200.23Ω.

Above is a plot of calculated DUT assuming the Zs+Zl=100Ω (as does the screenshot above).  The measured values are significantly different to the expected 200.23Ω.

NanoVNA-D v1.2.29 does not correct source and load mismatch, and that is probably the main cause of the apparent error.

Lets turn the measurement around, if we measure some known impedance Zk, we can calculate Zs+Zl:

\(Zs+Zl=\frac{Zu}{(\frac{1}{s_{21}}-1)}\).

#import the network
nws21k=rf.Network(name+'-S21k.s2p')
zu=(50+50)*(1/nws21k.s[:,1,0]-1)
zk=200.23 #precision measurement of DUT resistor at DC
#calculate zs+zl using zu=(zs+zl)(1/s21-1) and zu=zk
zs_zl=zk/(1/nws21k.s[:,1,0]-1)

Above is a snippet of code in Jupyter to import the network and calculate the value of zs_zl (Zs+Zl) inferred by the s21 measurement of the DUT.

Above is a plotting of calculated zs_zl impedance components, real and imaginary, or R,X.

NanoVNA-H4 v4.3 with NanoVNA-D v1.2.40 using ERC

NanoVNA-D v1.2.40 (released 07/09/2024) includes optional Enhanced Response Correction which corrects source mismatch. The feature is turned on for these measurements.

The instrument was calibrated with a LOAD that measured 50.17Ω at DC, this was specified in the calibration.

The NanoVNA-H4 v4.3 has better Port 2 input impedance than the NanoVNA-H used in the previous tests.

All of these measures improve the accuracy of s21 series through measurement of Z.

Above is a screenshot from the NanoVNA-H4 measuring the SMD resistor that measures 200.23Ω at DC. The red and green traces use the internal feature to transform an S21 measurement into series thru impedance. The measured value of 199+j0.594Ω is different to the expected 200.23Ω, about 0.5%.

Above is a plot of calculated DUT assuming the Zs+Zl=100Ω (as does the screenshot above).  The measured values are significantly different to the expected 200.23Ω.

NanoVNA-D v1.2.40 does not correct load mismatch, and that is probably the main cause of the apparent error.

Lets turn the measurement around, if we measure some known impedance Zk, we can calculate Zs+Zl:

\(Zs+Zl=\frac{Zu}{(\frac{1}{s_{21}}-1)}\).

#import the network
nws21k=rf.Network(name+'-S21k.s2p')
zu=(50+50)*(1/nws21k.s[:,1,0]-1)
zk=200.23 #precision measurement of DUT resistor at DC
#calculate zs+zl using zu=(zs+zl)(1/s21-1) and zu=zk
zs_zl=zk/(1/nws21k.s[:,1,0]-1)

Above is a snippet of code in Jupyter to import the network and calculate the value of zs_zl (Zs+Zl) inferred by the s21 measurement of the DUT.

Above is a plotting of calculated zs_zl impedance components, real and imaginary, or R,X. Zs+Zl is considerably closer to ideal (100+j0Ω) than the previous case.

Conclusions

  • The analysis here is specific to a NanoVNA-H v3.3 running NanoVNA-D v1.2.29 and NanoVNA-H4 v4.3 running NanoVNA-D v1.2.40 configured as described.
  • The formula often given and implemented for transformation of a series through s21 measurement to impedance depends on an assumption that source and load ports have zero mismatch error (eg that any mismatch is corrected).
  • NanoVNA-D v1.2.29 does not correct source and load mismatch, the results are mediocre.
  • NanoVNA-D v1.2.40 combined with the improved NanoVNA-H4 v4.3 hardware does not correct load mismatch, but other improvements improve the accuracy.

References

  • Agilent. Feb 2009. Impedance Measurement 5989-9887EN.
  • Agilent. Jul 2001. Advanced impedance measurement capability of the RF I-V method compared to the network analysis method 5988-0728EN.