home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / rf3 / q-match.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1979-12-31  |  4.2 KB  |  112 lines

  1. 10  REM PRECISION 5
  2. 15  PI=3.1416
  3. 20  REM PARALLEL SERIES CONVERSION FUNCTION
  4. 25  PRINT: PRINT,"Q-MATCH by K2UYH modified for ibm pc wa2tif":PRINT
  5. 30  DEF FNRP(RS,XS)=RS*(1+(XS/RS)^2)
  6. 40  DEF FNXP(RS,XS)=FNRP(RS,XS)/(XS/RS)
  7. 50  PRINT: PRINT "MULTI-ELEMENT NETWORK MATCHING:"
  8. 60  PRINT: INPUT "INPUT RESISTANCE ="; RI
  9. 70  INPUT "INPUT REACTANCE ="; XI
  10. 80  INPUT "DESIRED OUTPUT LOAD RESISTANCE ="; RL
  11. 90  INPUT "FREQENCY IN MHZ ="; F: F=F*1E+06: W=2*PI*F
  12. 100  INPUT "UNLOADED ELEMENT Q ="; Q
  13. 110  INPUT "DESIRED LOADED Q ="; QL: PRINT
  14. 120  R1=FNRP(RI,XI): X1=FNXP(RI,XI)
  15. 130  PRINT "NETWORKS:"
  16. 140  PRINT "CP-LS-CP, LP-LS-CP, LS-CP-LS, CS-CP-LS, LS-CP-CS"
  17. 150  PRINT "CS-LS-CP, LP-CS-LS-CP, CP-CS-LS-CP"
  18. 160  PRINT: INPUT "DESIRED NETWORK"; Q$
  19. 170  IF Q$="CS-LS-CP" THEN 270
  20. 180  IF Q$="LS-CP-CS" THEN 370
  21. 190  IF Q$="LS-CP-LS" THEN 480
  22. 200  IF Q$="LP-CS-LS-CP" THEN 570
  23. 210  IF Q$="CP-LS-CP" THEN 670
  24. 220  IF Q$="CS-CP-LS" THEN 790
  25. 230  IF Q$="CP-CS-LS-CP" THEN 880
  26. 240  IF Q$="LP-LS-CP" THEN 990
  27. 250  IF Q$= "END"THEN END ELSE IF Q$="NEW" THEN 60 ELSE IF Q$="NF" THEN 90 ELSE PRINT "NOT POSSIBLE": GOTO 130
  28. 260  REM CS-LS-CP
  29. 270  IF RI>RL THEN 1090
  30. 280  XC=-QL*RI: X2=-RL*SQR(RI/(RL-RI)): XL=XC+RI*RL/X2-XI
  31. 290  IF XL<0 THEN 1090
  32. 300  CS=1/ABS(W*XC): LP=XL/W: C2=1/ABS(W*X2)
  33. 310  PRINT: PRINT "SERIES XC ="; XC, "CAP. ="; CS
  34. 320  PRINT "SERIES XL ="; XL, "IND. ="; LP
  35. 330  PRINT "PARALLEL XC ="; X2, "CAP. ="; C2
  36. 340  IL=20*LOG(1/(1-(QL/Q)))/LOG(10)
  37. 350  PRINT "LOADED Q ="; QL, "INSURTION LOSS IN DB ="; IL: GOTO 130
  38. 360  REM LS-CP-CS
  39. 370  IF RI>RL THEN 1090
  40. 380  B=RI*(1+QL^2): IF (B/RL-1)<0 THEN 1090 ELSE A=SQR(B/RL-1)
  41. 390  XL=QL*RI-XI: XC=-B/(QL-A): IF XC>0 THEN 1090
  42. 400  X2=-A*RL: IF XL<0 THEN GOTO 1090
  43. 410  CP=1/ABS(W*XC): LS=XL/W: CS=1/ABS(W*X2)
  44. 420  PRINT: PRINT "SERIES XL ="; XL, "IND. ="; LS
  45. 430  PRINT "PARALLEL XC ="; XC, "CAP. ="; CP
  46. 440  PRINT "SERIES X2 ="; X2, "CAP. ="; CS
  47. 450  IL=20*LOG(1/(1-(QL/Q)))/LOG(10)
  48. 460  PRINT "LOADED Q ="; QL, "INSURTION LOSS IN DB ="; IL: GOTO 160
  49. 470  REM LS-CP-LS
  50. 480  A=RI*(1+QL^2): IF (A/RL)<1 THEN 1090 ELSE B=SQR(A/RL-1)
  51. 490   XC=RI*QL-XI: XA=-RL*B: X2=A/(QL+B)
  52. 500  L1=XC/W: AP=1/ABS(W*XA): L2=X2/W: IF XC<0 THEN 1090
  53. 510  PRINT: PRINT "SERIES XL1 ="; XC, "IND. ="; L1
  54. 520  PRINT "PARALLEL XC ="; XA, "CAP. ="; AP
  55. 530  PRINT "SERIES XL2 ="; X2, "IND. ="; L2
  56. 540  IL=20*LOG(1/(1-(QL/Q)))/LOG(10)
  57. 550  PRINT "LOADED Q ="; QL, "INSURTION LOSS IN DB ="; IL: GOTO 160
  58. 560  REM LP-CS-LS-CP
  59. 570  IF R1>RL THEN 1090 ELSE IF X1>0 THEN 1090
  60. 580  XA=-X1: XB=-QL*R1: XD=RL*SQR(R1/(RL-R1)): XC=-(XB+R1*RL/XD)
  61. 590  LA=XA/W: LC=XC/W: CS=1/(W*ABS(XB)): CP=1/(W*ABS(XD))
  62. 600  PRINT: PRINT "PARALLEL XL ="; XA, "IND. ="; LA
  63. 610  PRINT "SERIES XC="; XB, "CAP. ="; CS
  64. 620  PRINT "SERIES XL ="; XC, "IND. ="; LC
  65. 630  PRINT "PARALLEL XC ="; XD, "CAP. ="; CP
  66. 640  IL=20*LOG(1/(1-(QL/Q)))/LOG(10)
  67. 650  PRINT "LOADED Q ="; QL, "INSURTION LOSS IN DB ="; IL: GOTO 160
  68. 660  REM CP-LS-CP
  69. 670  IF R1<(RL/10) THEN 1090 ELSE IF R1/RL>(QL^2+1) THEN 1090
  70. 680  T=R1/(RL*((QL^2+1)-(R1/RL))): IF T<0 THEN 1090 
  71. 690  XC=R1/QL: X2=RL*SQR(T)
  72. 700  XC=-1/(1/XC+1/X1): IF XC>0 THEN 1090
  73. 710  XL=(QL*R1+(R1*RL/X2))/(QL^2+1)
  74. 720  CP=1/ABS(W*XC): LS=XL/W: C2=1/ABS(W*X2)
  75. 730  PRINT: PRINT "PARALLEL XC ="; XC, "CAP. ="; CP
  76. 740  PRINT "SERIES XL ="; XL, "IND. ="; LS
  77. 750  PRINT "PARALLEL XC2 ="; X2, "CAP. ="; C2
  78. 760  IL=20*LOG(1/(1-(QL/Q)))/LOG(10)
  79. 770  PRINT "LOADED Q ="; QL, "INSURTION LOSS IN DB ="; IL: GOTO 160
  80. 780  REM CS-CP-LS
  81. 790  A=RI*(1+QL^2): IF (A/RL)<0 THEN 1090 ELSE B=SQR(A/RL-1)
  82. 800  XS=(RI*QL-XI): XA=-RL*B: X2=A/(QL+B): IF XS>0 THEN 1090
  83. 810  C1=1/ABS(W*XS): AP=1/ABS(W*XA): L2=X2/W
  84. 820  PRINT: PRINT "SERIES XC ="; XS, "CAP. ="; C1
  85. 830  PRINT "PARALLEL XC ="; XA, "CAP. ="; AP
  86. 840  PRINT "SERIES XL2 ="; X2, "IND. ="; L2
  87. 850  IL=20*LOG(1/(1-(QL/Q)))/LOG(10)
  88. 860  PRINT "LOADED Q ="; QL, "INSURTION LOSS IN DB ="; IL: GOTO 160
  89. 870  REM CP-CS-LS-CP
  90. 880  IF R1>RL THEN 1090 ELSE IF X1<0 THEN 1090
  91. 890  XA=-X1: XB=-QL*R1: A=R1/(RL-R1): IF A<0 THEN 1090
  92. 900  XD=-RL*SQR(A): XC=XB+R1*RL/XD
  93. 910  CA=1/(ABS(XA)): LC=XC/W: CS=1/(W*ABS(XB)): CP=1/(W*ABS(XD))
  94. 920  PRINT: PRINT "PARALLEL XC ="; XA, "CAP. ="; CA
  95. 930  PRINT "SERIES XC="; XB, "CAP. ="; CS
  96. 940  PRINT "SERIES XL ="; XC, "IND. ="; LC
  97. 950  PRINT "PARALLEL XC ="; XD, "CAP. ="; CP
  98. 960  IL=20*LOG(1/(1-(QL/Q)))/LOG(10)
  99. 970  PRINT "LOADED Q ="; QL, "INSURTION LOSS IN DB ="; IL: GOTO 160
  100. 980  REM LP-LS-CP
  101. 990  IF R1<(RL/10) THEN 1090 ELSE IF R1/RL>(QL^2+1) THEN 1090
  102. 1000  XC=R1/QL: X2=RL*SQR(R1/(RL*((QL^2+1)-(R1/RL))))
  103. 1010  XP=-1/(1/XC+1/X1): IF XP<0 THEN 1090
  104. 1020  XL=(QL*R1+(R1*RL/X2))/(QL^2+1): X2=-X2
  105. 1030  LP=XP/W: LS=XL/W: C2=1/ABS(W*X2)
  106. 1040  PRINT: PRINT "PARALLEL XL ="; XP, "IND. ="; LP
  107. 1050  PRINT "SERIES XL ="; XL, "IND. ="; LS
  108. 1060  PRINT "PARALLEL XC2 ="; X2, "CAP. ="; C2
  109. 1070  IL=20*LOG(1/(1-(QL/Q)))/LOG(10)
  110. 1080  PRINT "LOADED Q ="; QL, "INSURTION LOSS IN DB ="; IL: GOTO 160
  111. 1090  PRINT: PRINT "MATCH NOT POSSIBLE - TRY ANOTHER NETWORK": GOTO 130          LIST 1-100
  112.