home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / rf3 / l-match.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1986-08-18  |  7.7 KB  |  188 lines

  1. 10  CLS: PRINT "L-MATCH PROGRAM V1.5M 4/29/1986
  2. 20  PRINT "      *********************************************
  3. 30  PRINT "      *                                           *
  4. 40  PRINT "      *  BY DR. ALLEN KATZ, CHAIRMAN              *
  5. 50  PRINT "      *  DEPT ELECTRONICS ENGINEERING TECHNOLOGY  *
  6. 60  PRINT "      *  TRENTON STATE COLLEGE, CN550             *
  7. 70  PRINT "      *  TRENTON, NEW JERSEY 8625                 *
  8. 80  PRINT "      *                                           *
  9. 90  PRINT "      *  THE AUTHOR RESERVES THE RIGHTS TO THIS   *
  10. 100  PRINT "      *  PROGRAM; HOWEVER, COPYING AND USE FOR    *
  11. 110  PRINT "      *  EDUCATIONAL PURPOSES IS ENCOURAGED.      *
  12. 120  PRINT "      *                                           *
  13. 130  PRINT "      *  PLEASE REPORT ANY ERRORS OR PROBLEMS     *
  14. 140  PRINT "      *  WITH THIS PROGRAM TO THE AUTHOR.         *
  15. 150  PRINT "      *  TEL (609) 771 2487                       *
  16. 160  PRINT "      *                                           *
  17. 170  PRINT "      *********************************************
  18. 175  PRINT: INPUT "WANT AN EXPLANATION (Y/N)"; Q$
  19. 176  IF Q$="Y" THEN 180 ELSE 250
  20. 180  PRINT: PRINT "This program calculates the L section element values requied to
  21. 190  PRINT "transform any complex source impedance to any desired complex output
  22. 195  PRINT "impedance. A matching network's output impedance should equal the conjugate
  23. 200  PRINT "of its load impedance for maximum power transfer. When a value of unloaded Q
  24. 210  PRINT "is entered, the loaded Q and insertion loss is also calculated.
  25. 220  PRINT "Possible networks are described as CS-LP for series capacitor -
  26. 230  PRINT "parallel inductor (starting from source to load), LP-LS for
  27. 240  PRINT "parallel inductor - series inductor, etc. Type END to exit.
  28. 250  PI=4*ATN(1): DG=180/PI: Z0=50
  29. 260  REM COMPLEX ARITHMATIC SUBROUTEENS
  30. 270  DEF FNMR(AR,AX,BR,BX)=AR*BR-AX*BX
  31. 280  DEF FNMX(AR,AX,BR,BX)=AR*BX+AX*BR
  32. 290  DEF FNDR(AR,AX,BR,BX)=(AR*BR+AX*BX)/(BR^2+BX^2)
  33. 300  DEF FNDX(AR,AX,BR,BX)=(AX*BR-AR*BX)/(BR^2+BX^2)
  34. 310  DEF FNMG(AR,AX)=SQR(AR^2+AX^2)
  35. 320  DEF FNAG(AR,AX)=DG*(ATN(AX/AR)-(SGN(AR)-1)*PI/2)
  36. 330  DEF FNR(MG,AG)=MG*COS(AG/DG)
  37. 340  DEF FNX(MG,AG)=MG*SIN(AG/DG)
  38. 350  REM PARALLEL SERIES CONVERSION FUNCTIONS
  39. 360  DEF FNRS(RP,XP)=RP/(1+(RP/XP)^2)
  40. 370  DEF FNXS(RP,XP)=FNRS(RP,XP)*(RP/XP)
  41. 380  DEF FNRP(RS,XS)=RS*(1+(XS/RS)^2)
  42. 390  DEF FNXP(RS,XS)=FNRP(RS,XS)/(XS/RS)
  43. 400  PRINT: PRINT "L NETWORK MATCHING:"
  44. 410  PRINT: INPUT "INPUT RESISTANCE ="; RI
  45. 420  IF RI=0 THEN RI=0
  46. 430  INPUT "INPUT REACTANCE ="; XI
  47. 440  IF XI=0 THEN XI=0
  48. 450  INPUT "DESIRED OUTPUT RESISTANCE ="; RO
  49. 460  IF RO=0 THEN RO=0
  50. 470  INPUT "DESIRED OUTPUT REACTANCE ="; XO
  51. 480  IF XO=0 THEN XO=0
  52. 490  INPUT "FREQENCY (MHZ) ="; F: F=F*1E+06: W=2*PI*F
  53. 500  INPUT "UNLOADED ELEMENT Q ="; Q: PRINT
  54. 510  R1=FNRP(RI,XI): X1=FNXP(RI,XI): R2=FNRP(RO,XO): X2=FNXP(RO,XO)
  55. 520  PRINT: PRINT "L NETWORKS: CS-LP,LS-CP,CS-CP,LS-LP,CP-LS,CP-CS,LP-CS,LP-LS"
  56. 530  PRINT: INPUT "DESIRED NETWORK"; Q$
  57. 540  IF Q$="CS-LP" THEN 640
  58. 550  IF Q$="LS-CP" THEN 790
  59. 560  IF Q$="CS-CP" THEN 950
  60. 570  IF Q$="LS-LP" THEN 1100
  61. 580  IF Q$="CP-LS" THEN 1250
  62. 590  IF Q$="CP-CS" THEN 1400
  63. 600  IF Q$="LP-CS" THEN 1550
  64. 610  IF Q$="LP-LS" THEN 1840
  65. 620  IF Q$= "END"THEN END ELSE IF Q$="NEW" THEN 410 ELSE IF Q$="NF" THEN 490 ELSE PRINT "NOT POSSIBLE": GOTO 520
  66. 630  REM CS-LP
  67. 640  IF (R2/RI)<1 THEN 1840
  68. 650  XT=RI*SQR((R2/RI)-1): XC=XT-XI: IF XC>0 THEN XT=-XT
  69. 660  XC=XT-XI: IF XC>0 THEN 1840
  70. 670  XP=FNXP(RI,XT): XL=1/((1/X2)-(1/XP)): IF XL<0 THEN 1840
  71. 680  CS=1/ABS(W*XC): LP=XL/W
  72. 690  PRINT: PRINT "SERIES XC ="; XC, "CAP. ="; CS
  73. 700  PRINT "PARALLEL XL ="; XL, "IND. ="; LP
  74. 710  QL=ABS(XT/RI): IL=20*LOG(1/(1-(QL/Q)))/LOG(10)
  75. 720  PRINT"LOADED Q =";QL,"INSURTION LOSS IN DB =";IL
  76. 730  PRINT: INPUT "WANT HARD COPY (Y/N)"; H$
  77. 740  IF H$<>"Y" THEN 520 ELSE LPRINT:LPRINT,"L-MATCH NETWORK "Q$
  78. 750  LPRINT: LPRINT "SERIES XC ="; XC, "CAP. ="; CS
  79. 760  LPRINT "PARALLEL XL ="; XL, "IND. ="; LP
  80. 770  LPRINT"LOADED Q =";QL,"INSURTION LOSS IN DB =";IL:PRINT:GOTO450
  81. 780  REM LS-CP
  82. 790  IF (R2/RI)<1 THEN 1840
  83. 800  XT=RI*SQR((R2/RI)-1): XL=XT-XI: IF XL<0 THEN XT=-XT
  84. 810  XL=XT-XI: IF XL<0 THEN 1840
  85. 820  XP=FNXP(RI,XT): XC=1/((1/X2)-(1/XP)): IF XC>0 THEN 1840
  86. 830  CP=1/ABS(W*XC): LS=XL/W
  87. 840  PRINT: PRINT "SERIES XL ="; XL, "IND. ="; LS
  88. 850  PRINT "PARALLEL XC ="; XC, "CAP. ="; CP
  89. 860  QL=ABS(XT/RI): IL=20*LOG(1/(1-(QL/Q)))/LOG(10)
  90. 870  PRINT"LOADED Q =";QL,"INSURTION LOSS IN DB =";IL
  91. 880  PRINT: INPUT "WANT HARD COPY (Y/N)"; H$
  92. 890  IF H$<>"Y" THEN 520 ELSE LPRINT:LPRINT,"L-MATCH NETWORK "Q$
  93. 900  LPRINT: LPRINT "SERIES XL ="; XL, "IND. ="; LS
  94. 910  LPRINT "PARALLEL XC ="; XC, "CAP. ="; CP
  95. 920  LPRINT"LOADED Q =";QL,"INSURTION LOSS IN DB =";IL:PRINT:GOTO450
  96. 930  PRINT: GOTO 520
  97. 940  REM CS-CP
  98. 950  IF (R2/RI)<1 THEN 1840
  99. 960  XT=RI*SQR((R2/RI)-1): XC=XT-XI: IF XC>0 THEN XT=-XT
  100. 970  XC=XT-XI: IF XC>0 THEN 1840
  101. 980  XP=FNXP(RI,XT): XA=1/((1/X2)-(1/XP)): IF XA>0 THEN 1840
  102. 990  CS=1/ABS(W*XC): AP=1/ABS(W*XA)
  103. 1000  PRINT: PRINT "SERIES XC ="; XC, "CAP. ="; CS
  104. 1010  PRINT "PARALLEL XC ="; XA, "CAP. ="; AP
  105. 1020  QL=ABS(XT/RI): IL=20*LOG(1/(1-(QL/Q)))/LOG(10)
  106. 1030  PRINT"LOADED Q =";QL,"INSURTION LOSS IN DB =";IL
  107. 1040  PRINT: INPUT "WANT HARD COPY (Y/N)"; H$
  108. 1050  IF H$<>"Y" THEN 520 ELSE LPRINT:LPRINT,"L-MATCH NETWORK "Q$
  109. 1060  LPRINT: LPRINT "SERIES XC ="; XC, "CAP. ="; CS
  110. 1070  LPRINT "PARALLEL XC ="; XA, "CAP. ="; AP
  111. 1080  LPRINT "LOADED Q =";QL,"INSURTION LOSS IN DB =";IL:PRINT:GOTO450
  112. 1090  REM LS-LP
  113. 1100  IF (R2/RI)<1 THEN 1840
  114. 1110  XT=RI*SQR((R2/RI)-1): XL=XT-XI: IF XL<0 THEN XT=-XT
  115. 1120  XL=XT-XI: IF XL<0 THEN 1840
  116. 1130  XP=FNXP(RI,XT): XN=1/((1/X2)-(1/XP)): IF XN<0 THEN 1840
  117. 1140  LS=XL/W: LP=XN/W
  118. 1150  PRINT: PRINT "SERIES XL ="; XL, "IND. ="; LS
  119. 1160  PRINT "PARALLEL XL ="; XN, "IND. ="; LP
  120. 1170  QL=ABS(XT/RI): IL=20*LOG(1/(1-(QL/Q)))/LOG(10)
  121. 1180  PRINT "LOADED Q =";QL,"INSURTION LOSS IN DB =";IL: PRINT
  122. 1190  PRINT: INPUT "WANT HARD COPY (Y/N)"; H$
  123. 1200  IF H$<>"Y" THEN 520 ELSE LPRINT:LPRINT,"L-MATCH NETWORK "Q$
  124. 1210  LPRINT: LPRINT "SERIES XL ="; XL, "IND. ="; LS
  125. 1220  LPRINT "PARALLEL XL ="; XN, "IND. ="; LP
  126. 1230  LPRINT"LOADED Q =";QL,"INSURTION LOSS IN DB =";IL: PRINT:GOTO450
  127. 1240  REM CP-LS
  128. 1250  IF (R1/RO)<1 THEN 1840
  129. 1260  XT=R1/(SQR((R1/RO)-1)): XC=1/((1/XT)-(1/X1))
  130. 1270  IF XC>0 THEN XT=-XT: XC=1/((1/XT)-(1/X1)): IF XC>0 THEN 1840
  131. 1280  XS=FNXS(R1,XT): XL=XO-XS: IF XL<0 THEN 1840
  132. 1290  CP=1/ABS(W*XC): LS=XL/W
  133. 1300  PRINT: PRINT "PARALLEL XC ="; XC, "CAP. ="; CP
  134. 1310  PRINT "SERIES XL ="; XL, "IND. ="; LS
  135. 1320  QL=ABS(R1/XT): IL=20*LOG(1/(1-(QL/Q)))/LOG(10)
  136. 1330  PRINT"LOADED Q =";QL,"INSURTION LOSS IN DB =";IL:PRINT
  137. 1340  PRINT: INPUT "WANT HARD COPY (Y/N)"; H$
  138. 1350  IF H$<>"Y" THEN 520 ELSE LPRINT:LPRINT,"L-MATCH NETWORK "Q$
  139. 1360  LPRINT: LPRINT "PARALLEL XC ="; XC, "CAP. ="; CP
  140. 1370  LPRINT "SERIES XL ="; XL, "IND. ="; LS
  141. 1380  LPRINT"LOADED Q =";QL,"INSURTION LOSS IN DB =";IL:PRINT:GOTO450
  142. 1390  REM CP-CS
  143. 1400  IF (R1/RO)<1 THEN 1840
  144. 1410  XT=R1/(SQR((R1/RO)-1)): XC=1/((1/XT)-(1/X1))
  145. 1420  IF XC>0 THEN XT=-XT: XC=1/((1/XT)-(1/X1)): IF XC>0 THEN 1840
  146. 1430  XS=FNXS(R1,XT): XA=XO-XS: IF XA>0 THEN 1840
  147. 1440  CP=1/ABS(W*XC): CS=1/ABS(W*XA)
  148. 1450  PRINT: PRINT "PARALLEL XC ="; XC, "CAP. ="; CP
  149. 1460  PRINT "SERIES XC ="; XA, "CAP. ="; CS
  150. 1470  QL=ABS(R1/XT): IL=20*LOG(1/(1-(QL/Q)))/LOG(10)
  151. 1480  PRINT"LOADED Q =";QL,"INSURTION LOSS IN DB =";IL:PRINT
  152. 1490  PRINT: INPUT "WANT HARD COPY (Y/N)"; H$
  153. 1500  IF H$<>"Y" THEN 520 ELSE LPRINT:LPRINT,"L-MATCH NETWORK "Q$
  154. 1510  LPRINT: LPRINT "PARALLEL XC ="; XC, "CAP. ="; CP
  155. 1520  LPRINT "SERIES XC ="; XA, "CAP. ="; CS
  156. 1530  LPRINT"LOADED Q =";QL,"INSURTION LOSS IN DB =";IL:PRINT:GOTO450
  157. 1540  REM LP-CS
  158. 1550  IF (R1/RO)<1 THEN 1840
  159. 1560  XT=R1/(SQR((R1/RO)-1)): XL=1/((1/XT)-(1/X1))
  160. 1570  IF XL<0 THEN XT=-XT: XL=1/((1/XT)-(1/X1)): IF XL<0 THEN 1840
  161. 1580  XS=FNXS(R1,XT): XC=XO-XS: IF XC>0 THEN 1840
  162. 1590  CS=1/ABS(W*XC): LP=XL/W
  163. 1600  PRINT: PRINT "PARALLEL XL ="; XL, "IND. ="; LP
  164. 1610  PRINT "SERIES XC ="; XC, "CAP. ="; CS
  165. 1620  QL=ABS(R1/XT): IL=20*LOG(1/(1-(QL/Q)))/LOG(10)
  166. 1630  PRINT"LOADED Q =";QL,"INSURTION LOSS IN DB =";IL:PRINT
  167. 1640  PRINT: INPUT "WANT HARD COPY (Y/N)"; H$
  168. 1650  IF H$<>"Y" THEN 520 ELSE LPRINT:LPRINT,"L-MATCH NETWORK "Q$
  169. 1660  LPRINT: LPRINT "PARALLEL XL ="; XL, "IND. ="; LP
  170. 1670  LPRINT "SERIES XC ="; XC, "CAP. ="; CS
  171. 1680  LPRINT"LOADED Q =";QL,"INSURTION LOSS IN DB =";IL:PRINT:GOTO450
  172. 1690  REM LP-LS
  173. 1700  IF (R1/RO)<1 THEN 1840
  174. 1710  XT=R1/(SQR((R1/RO)-1)): XL=1/((1/XT)-(1/X1))
  175. 1720  IF XL<0 THEN XT=-XT: XL=1/((1/XT)-(1/X1)): IF XL<0 THEN 1840
  176. 1730  XS=FNXS(R1,XT): XN=XO-XS: IF XN<0 THEN 1840
  177. 1740  LS=XN/W: LP=XL/W
  178. 1750  PRINT: PRINT "PARALLEL XL ="; XL, "IND. ="; LP
  179. 1760  PRINT "SERIES XL ="; XN, "IND. ="; LP
  180. 1770  QL=ABS(R1/XT): IL=20*LOG(1/(1-(QL/Q)))/LOG(10)
  181. 1780  PRINT"LOADED Q =";QL,"INSURTION LOSS IN DB =";IL:PRINT
  182. 1790  PRINT: INPUT "WANT HARD COPY (Y/N)"; H$
  183. 1800  IF H$<>"Y" THEN 520 ELSE LPRINT:LPRINT,"L-MATCH NETWORK "Q$
  184. 1810  LPRINT: LPRINT "PARALLEL XL ="; XL, "IND. ="; LP
  185. 1820  LPRINT "SERIES XL ="; XN, "IND. ="; LP
  186. 1830  LPRINT"LOADED Q =";QL,"INSURTION LOSS IN DB =";IL:PRINT:GOTO450
  187. 1840  PRINT: PRINT "MATCH NOT POSSIBLE - TRY ANOTHER NETWORK": PRINT:GOTO 520
  188.