Hands-on vector network analysis with a NanoVNA

Hands-on vector network analysis with a NanoVNA#

An open, computational learning module on S-parameter measurement and calibration. You derive the error model of a vector network analyzer (VNA), simulate it, and calibrate real measurements taken with a low-cost NanoVNA.

The guiding idea is coding to learn, not learning to code: the code is the means to understand the measurement, not the goal.

Status

Version 0.9. The material is complete but has not yet been used in a classroom. Corrections and reports of use are welcome on GitHub.

Who it is for#

  • Undergraduate students in biomedical engineering (instrumentation and electronics courses).

  • Undergraduate students in electronic or telecommunication engineering (introduction to RF and measurement).

  • Self-learners: master’s and final-year project students, and practitioners starting out with a NanoVNA.

You need sinusoidal steady-state circuits (phasors, complex impedance) and basic Python with NumPy and Matplotlib. You do not need any previous RF course, and you do not need the instrument: every lesson runs on simulated data or on real measurements included with the module.

Allow 10 to 14 hours for the whole module.

The lessons#

Lesson

You will learn to…

00

What does a VNA measure?

explain incident and reflected waves, define S-parameters, and say what a VNA measures that other instruments do not

01

Reflection coefficient and the Smith chart

convert between Γ and Z, read the Smith chart, and recognise a circuit from its trace

02

Systematic errors

identify directivity, source match and reflection tracking, and predict what each distorts

03

SOL calibration

solve the short–open–load system, correct a real measurement, and know what calibration does not fix

05

Validation and measurement quality

quantify repeatability, use passivity as a physical test, and record a traceable result

Work through them in order: each one uses the previous. Lesson 04, on acquiring your own measurements with a NanoVNA, is optional and not yet available.

How to use this book#

Reading is not enough. Each lesson is a Jupyter notebook, and it asks you to predict what a piece of code will show, run it, and then read the explanation. The pages of this book show the notebooks already executed, which is convenient for reading and revising, but the learning happens when you run them yourself:

Each lesson ends with questions to check your understanding (answers one click away) and with open exercises. Worked solutions to the exercises are in this book; try each exercise before you read its solution.

If you teach#

The instructor guide has a session plan, notes on each lesson and a summative assignment, and there is a rubric to mark it.

Licence and citation#

The code is released under the BSD 3-Clause licence. The text, figures and data are released under Creative Commons Attribution 4.0 International (CC BY 4.0).

If you use the module, please cite it with the metadata in CITATION.cff. The real measurements come from the research repository nanovna-calibration (doi:10.5281/zenodo.22722703).