Giter Site home page Giter Site logo

Comments (3)

Ttl avatar Ttl commented on June 22, 2024

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.

Ismail-Majed avatar Ismail-Majed commented on June 22, 2024

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.

17076194681303504906681698145380

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.
17076194321053322700782962256725

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.

Ttl avatar Ttl commented on June 22, 2024
#!/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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.