Custom RF Scripts
CommentsScripts Based on Pozar's Microwave Engineering
See Resources for a link to Pozar's book.
Series Stub Impedance Matching
This (crude) script can be used to calculate single, series stubs (both open and short) as described in Chapter 5. It may be refined in time, but it works for now.
import math
print("") # Blank line
ZL = 100 - 100j
YL = 1.0/ZL
RL = ZL.real
XL = ZL.imag
GL = YL.real
BL = YL.imag
Z0 = 50.0
Y0 = 1.0/Z0
# Calculating t
root = math.sqrt((GL*(((Y0-GL)**2.0)+(BL**2.0)))/Y0)
den = GL - Y0
t1 = (BL + root)/den
t2 = (BL - root)/den
print("t1 is " + str(t1))
print("t2 is " + str(t2))
# Calculate d
if t1<0:
d1 = (1.0/(2.0*math.pi)) * (math.pi+math.atan(t1))
else:
d1 = (1.0/(2.0*math.pi)) * (math.atan(t1))
print("d1 is: "+ str(d1) + " *lambda")
if d1 < 0:
print("Since d1<0, d1 actually is: " + str(d1+.5) + " *lambda")
if t2<0:
d2 = (1.0/(2.0*math.pi)) * (math.pi+math.atan(t2))
else:
d2 = (1.0/(2.0*math.pi)) * (math.atan(t2))
print("d2 is: "+ str(d2) + " *lambda")
if d2 < 0:
print("Since d1<0, d1 actually is: " + str(d1+.5) + " *lambda")
# Calc X
x1 = (((GL**2.0)*t1)-((Y0-(t1*BL))*(BL+(t1*Y0))))/(Y0*((GL**2.0)+((BL+(Y0*t1))**2.0)))
x2 = (((GL**2.0)*t2)-((Y0-(t2*BL))*(BL+(t2*Y0))))/(Y0*((GL**2.0)+((BL+(Y0*t2))**2.0)))
print("x1 is: "+str(x1))
print("x2 is: "+str(x2))
# Calc l
lo1 = (1.0/(2.0*math.pi))*math.atan(Z0/x1)
lo2 = (1.0/(2.0*math.pi))*math.atan(Z0/x2)
print("lo1 is: "+str(lo1))
print("lo2 is: "+str(lo2+.5))
# Calc l
ls1 = (-1.0/(2.0*math.pi))*math.atan(x1/Z0)
ls2 = (-1.0/(2.0*math.pi))*math.atan(x2/Z0)
print("ls1 is: "+str(ls1+.5))
print("ls2 is: "+str(ls2))
Backlinks:
High Speed Design Wiki:Software Tools
Contact Stephen with any questions: Stephen@ShieldDigitalDesign.com
© Shield Digital Design