change package name from charon
to charon-vna
to avoid pypi conflict
This commit is contained in:
parent
9190bed853
commit
81ae78e22b
14
Pipfile
Normal file
14
Pipfile
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
[[source]]
|
||||||
|
url = "https://pypi.org/simple"
|
||||||
|
verify_ssl = true
|
||||||
|
name = "pypi"
|
||||||
|
|
||||||
|
[packages]
|
||||||
|
charon-vna = {file = ".", editable = true}
|
||||||
|
|
||||||
|
[dev-packages]
|
||||||
|
ipykernel = "*"
|
||||||
|
ipywidgets = "*"
|
||||||
|
|
||||||
|
[requires]
|
||||||
|
python_version = "3.10"
|
1033
Pipfile.lock
generated
Normal file
1033
Pipfile.lock
generated
Normal file
File diff suppressed because it is too large
Load Diff
42
README.md
42
README.md
|
@ -2,3 +2,45 @@
|
||||||
|
|
||||||
Named after [Pluto's moon](https://en.wikipedia.org/wiki/Charon_(moon)), Charon is a simple RF switch assembly for using the [ADI Pluto SDR]() as a vector network analyzer.
|
Named after [Pluto's moon](https://en.wikipedia.org/wiki/Charon_(moon)), Charon is a simple RF switch assembly for using the [ADI Pluto SDR]() as a vector network analyzer.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
1. Install LibIIO. This is a dependency of [PyADI-IIO](https://wiki.analog.com/resources/tools-software/linux-software/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](https://www.analog.com/en/resources/evaluation-hardware-and-software/evaluation-boards-kits/adalm-pluto.html).
|
||||||
|
Any variant of the Pluto *should* work too such as the [Pluto+](https://github.com/plutoplus/plutoplus?tab=readme-ov-file)
|
||||||
|
- Directional couplers (1 per port up to 4 ports).
|
||||||
|
I have been using [AAMCS-UDC-0.5G-18G-10dB-Sf](http://www.aa-mcs.com/wp-content/uploads/documents/AAMCS-UDC-0.5G-18G-10dB-Sf.pdf)
|
||||||
|
- 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](https://wiki.analog.com/university/tools/pluto/users/customizing#updating_to_the_ad9364) 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.
|
|
@ -3,7 +3,7 @@ requires = ["setuptools", "setuptools-scm"]
|
||||||
build-backend = "setuptools.build_meta"
|
build-backend = "setuptools.build_meta"
|
||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "charon"
|
name = "charon-vna"
|
||||||
authors = [{ name = "Brendan Haines", email = "brendan.haines@gmail.com" }]
|
authors = [{ name = "Brendan Haines", email = "brendan.haines@gmail.com" }]
|
||||||
description = "RF Network Analyzer based on the Pluto SDR"
|
description = "RF Network Analyzer based on the Pluto SDR"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
@ -11,7 +11,17 @@ requires-python = ">=3"
|
||||||
# keywords = ["one", "two"]
|
# keywords = ["one", "two"]
|
||||||
license = { text = "MIT License" }
|
license = { text = "MIT License" }
|
||||||
classifiers = ["Programming Language :: Python :: 3"]
|
classifiers = ["Programming Language :: Python :: 3"]
|
||||||
dependencies = ["numpy", "scipy", "click"]
|
dependencies = [
|
||||||
|
"numpy",
|
||||||
|
"scipy",
|
||||||
|
"scikit-rf",
|
||||||
|
"xarray",
|
||||||
|
"zarr",
|
||||||
|
"pylibiio",
|
||||||
|
"pyadi-iio",
|
||||||
|
"click",
|
||||||
|
"matplotlib",
|
||||||
|
]
|
||||||
dynamic = ["version"]
|
dynamic = ["version"]
|
||||||
|
|
||||||
[project.urls]
|
[project.urls]
|
||||||
|
@ -21,7 +31,7 @@ homepage = "https://git.brendanhaines.com/brendanhaines/charon"
|
||||||
# charon = "charon.charon:main"
|
# charon = "charon.charon:main"
|
||||||
|
|
||||||
[tool.setuptools_scm]
|
[tool.setuptools_scm]
|
||||||
version_file = "charon/_version.py"
|
version_file = "charon_vna/_version.py"
|
||||||
|
|
||||||
[tool.black]
|
[tool.black]
|
||||||
line-length = 120
|
line-length = 120
|
||||||
|
|
Loading…
Reference in New Issue
Block a user