VNA Add-On for Pluto SDR
Go to file
Brendan Haines 60ef43e66e
Some checks failed
Publish Python 🐍 distribution 📦 to PyPI and TestPyPI / Publish Python 🐍 distribution 📦 to PyPI (push) Failing after 1m1s
Publish Python 🐍 distribution 📦 to PyPI and TestPyPI / Build distribution 📦 (push) Successful in 1m6s
Update .github/workflows/python_publish.yml
2024-11-14 13:43:52 -07:00
.github/workflows Update .github/workflows/python_publish.yml 2024-11-14 13:43:52 -07:00
.vscode add lots of boilerplate python packaging code 2024-11-10 11:33:37 -07:00
charon_vna add working demo VNA script. Not sure why the first run after power cycling pluto this gets garbage data for the first plots 2024-11-10 13:06:28 -07:00
.gitignore add lots of boilerplate python packaging code 2024-11-10 11:33:37 -07:00
Pipfile change package name from charon to charon-vna to avoid pypi conflict 2024-11-10 12:21:45 -07:00
Pipfile.lock change package name from charon to charon-vna to avoid pypi conflict 2024-11-10 12:21:45 -07:00
pyproject.toml consistent use of underscores for charon_vna 2024-11-14 13:21:45 -07:00
README.md Update README.md 2024-11-11 11:41:18 -07:00
setup.cfg add lots of boilerplate python packaging code 2024-11-10 11:33:37 -07:00

Charon

Named after Pluto's moon, Charon uses the ADI Pluto SDR as a vector network analyzer. The basic usage is as a 1 port VNA but this can be extended to arbitrarily many ports with the addition of a couple RF switches.

Installation

  1. Install LibIIO. This is a dependency of PyADI-IIO. On Ubuntu 22.04 just run sudo apt-get install -y libiio-dev

  2. pip install charon-vna

Usage

There will be some sort of GUI because that sounds useful. It will also be accessible over a socket to enable test automation with external (including non-python) code.

Calibration

TBD

Power Calibration

I include a default output power lookup table. This is derived from two TX channels of two Pluto SDRs and does not include any of the loss of a coupler or Charon switch board.

Absolute output power is generally not well calibrated for VNAs anyway and has negligible impact on most measurements so this is probably sufficient for most users. If you're trying to run a power sweep this may be insufficient.

If you have an RF power meter you can generate your own power calibration.

Note that unlike the main calibration, power calibration frequencies do not need to match the measurement frequencies. Values are interpolated.

Hardware

You need a few things:

  • Analog Devices Pluto SDR. Any variant of the Pluto should work too such as the Pluto+
  • Directional couplers (1 per port up to 4 ports). I have been using AAMCS-UDC-0.5G-18G-10dB-Sf
  • Charon switch board - coming soon. Without this, you'll be limited to S11 and uncalibrated S21 measurements (with required re-cabling). There's nothing special about this particular board, if you want more than 4 ports you can make your own pretty easily. You just need 3 SPxT switches. Note that these switches will see tons of cycles so avoid mechanical switches.
  • SMA cables

Pluto Modification

We need two receive channels on the SDR. If you have a Pluto+ that should already be configured and you can skip this step.

Analog devices has a guide for enabling the second channel. Ideally this should be set as ad9361 to enable a wider band of operation in addition to the second channel, however the critical setting is enabling 2r2t.