Comments (3)
Can you give more information on how you are doing the calibration? Is this synthetic or real data? Are you doing TRL as second calibration?
If you are doing TRL as a second calibration and your TRL launches are identical on both ports, then the error networks should also be identical. However, if you don't have first calibrated the VNA before TRL calibration then the error networks also include cables and VNAs own internal errors that in general are not identical on both ports.
from scikit-rf.
The data is all real, the TRL is my secondary calibration I have the VNA calibrated up to some stainless steel cables which enter a cryogenic chamber. Everything from the calibration plane into the cryostat is identical.
I am trying to calibrate a circuit which is just an impedance tuner within the cryostat which will show a known impedance at its output port.
When I de-embed the reverse excitation error network (error_ntwk[1]) from my raw tuner measurement network, I see my S22 spinning around the Smith chart as though there is a significant positive or negative delay.
If I instead de-embed the forward excitation error network (error_ntwk[0]) the S22 now appears to be very close to what is expected.
I'm not sure if I'm misinterpreting the results but I don't see why the 2 error networks should not act similarly, if not identically.
from scikit-rf.
#!/usr/bin/env python
import skrf
from skrf.media import Coaxial
freq = skrf.F(1, 1, 1, 'GHz')
coax1mm = Coaxial(freq, z0_port=50, Dint=0.434e-3, Dout=1.0e-3, sigma=1e8)
X = coax1mm.line(1, 'm', z0=58, name='X') ** coax1mm.line(100, 'um', z0=10)
Y = X.copy()
Y.flip()
gamma_f = coax1mm.match(z0=50)
gamma_r = coax1mm.match(z0=50)
dut = coax1mm.random(n_ports=2)
through = coax1mm.line(0, 'um', z0=50)
line = coax1mm.line(300, 'um', z0=50)
reflect = coax1mm.short(nports=2)
def measure(net):
return X**net**Y
ideals = [through, reflect, line]
measured = [measure(n) for n in ideals]
cal = skrf.TRL(measured = measured, ideals=ideals)
forward, reverse = cal.error_ntwk
# These should be all identical
print('Actual error network:')
print(X.s)
print('Solved forward error network:')
print(forward.s)
print('Solved reverse error network:')
print(reverse.s)
dut_cal = cal.apply_cal(measure(dut))
print()
# These should also be all identical
print('DUT:')
print(dut.s)
print('Calibrated DUT:')
print(dut_cal.s)
print('De-embedded error networks')
flipped_reverse = reverse.copy()
flipped_reverse.flip()
print((forward.inv ** measure(dut) ** flipped_reverse.inv).s)
I tested it with synthetic data and it seems to work fine. In this case there is 180 degree phase difference in solved error networks, but that does not matter for calibration. Check what you are doing against that example.
If you have any phase difference in the cables between the ports forward and reverse error networks won't be identical.
from scikit-rf.
Related Issues (20)
- Analytical Matrix Inversion in subnetwork growth (Filipsson/Compton) vs General Numerical Inversion following Hallbjörner HOT 9
- De-embedding procedure help request HOT 3
- Trying to use pre-commit, doesn't like the .pre-commit-config.yaml regex. HOT 3
- S-parameter calculation incorrect for 3-port circuit HOT 46
- `n_twoports_2_nport` does not work for more than 10 ports, similar to #947. Work around included. HOT 1
- De embedding multi frequency 2port network touchstone files HOT 4
- module 'collections' has no attribute 'Sequence' HOT 2
- Support request for network.z_time_step HOT 2
- Adding support to the Keysight N5242B VNA HOT 3
- NanoVNA connection syntax out of date in example Measuring a 4-Port With The 1.5-Port NanoVNA V2 HOT 1
- error in the def "write_spice_subcircuit_s(self, z0, file: str) -> None: " HOT 4
- Importing scikit-rf imports many modules and is slow HOT 5
- No good results with IEEEP370_MM_ZC_2xThru HOT 5
- Renumbering network should update port names HOT 1
- skrf.Network.read_zipped_touchstone misses filenames in zip archive
- Error with NanoVNA if frequency npoints = 1 HOT 2
- Replace simple DFFT by Chirp Z transform for higher resolution in Time domain processing HOT 2
- About COM_receiver_noise_filter HOT 1
- network_2_spreadsheet doesn't scale frequency with units
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from scikit-rf.