home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / ee3 / q-match.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1989-01-22  |  9.0 KB  |  244 lines

  1. 10  CLS: PRINT"    Q-MATCH V3.0 (5/12/87) REVISED by Stephen Sokalski
  2. 20  PRINT "      *********************************************
  3. 30  PRINT "      *                                           *
  4. 40  PRINT "      *  BY DR. ALLEN KATZ AND STUDENTS OF        *
  5. 50  PRINT "      *  ELECTRICAL ENGINEERING DEPARTMENT        *
  6. 60  PRINT "      *  TRENTON STATE COLLEGE, CN4700            *
  7. 70  PRINT "      *  TRENTON, NEW JERSEY 08650-4700           *
  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. 180  PRINT: PRINT "MULTIELEMENT MATCHING PROGRAM": PRINT
  19. 190  INPUT"Unloaded Q ------------->",QU
  20. 200  INPUT"Desired loaded Q ------->",QL
  21. 210  INPUT"Desired frequency (MHz)->",F:W=2*3.1416*F*10^6
  22. 220  INPUT"Real of source --------->",RS:OLDRS=RS
  23. 230  INPUT"Reactance of source ---->",XS:OLDXS=-XS
  24. 240  INPUT"Real of load ----------->",RL:OLDRL=RL
  25. 250  INPUT"Reactance of load ------>",XL:OLDXL=XL
  26. 260  GOTO 1290
  27. 270  PRINT:PRINT:PRINT:PRINT"PI NETWORKS (par-ser-par)"
  28. 280  PRINT"    1-   C - L - C"
  29. 290  PRINT"    2-   L - C - L"
  30. 300  PRINT"    3-   L - (L or C) - C"
  31. 310  PRINT"    4-   C - (L or C) - L"
  32. 320  PRINT"T NETWORKS (ser-par-ser)"
  33. 330  PRINT"    5-   C - L - C"
  34. 340  PRINT"    6-   L - C - L"
  35. 350  PRINT"    7-   L - (L or C) - C"
  36. 360  PRINT"    8-   C - (L or C) - L"
  37. 370  PRINT"OTHER SELECTIONS"
  38. 380  PRINT"    9-   ENTER NEW VALUES"
  39. 390  PRINT"    10-  END"
  40. 400  RS=OLDRS:XS=OLDXS:RL=OLDRL:XL=OLDXL
  41. 410  PRINT:INPUT"Which selection do you want";NU
  42. 420  ON NU GOTO 450,450,450,450,540,540,540,540,140,2430
  43. 430  GOTO 270
  44. 440  REM ***********************************************************
  45. 450  REM
  46. 460  REM        PI NETWORKS
  47. 470  REM
  48. 480  REM ***********************************************************
  49. 490  IF RL>RS  THEN GOSUB 680:GOSUB 1420:GOTO 270
  50. 500  REM Since rl<rs the circuit must be reversed so that the same routine
  51. 510  REM can be used.  Then the results are reversed again. I.E. input and
  52. 520  REM output impedances as well as reactances
  53. 530  GOSUB 2100:GOSUB 680:GOSUB 2100:GOSUB 2220:GOSUB 1420:GOTO 270
  54. 540  REM ***********************************************************
  55. 550  REM
  56. 560  REM        T NETWORKS
  57. 570  REM
  58. 580  REM ***********************************************************
  59. 590  IF RL>RS  THEN GOSUB 940:GOSUB 1830:GOTO 270
  60. 600  REM Since rl<rs the circuit must be reversed so that the same routine
  61. 610  REM can be used.  Then the results are reversed again. I.E. input and
  62. 620  REM output impedances as well as reactances
  63. 630  GOSUB 2100:GOSUB 940:GOSUB 2100:GOSUB 2220:GOSUB 1830:GOTO 270
  64. 640  REM ***********************************************************
  65. 650   REM
  66. 660   REM              ***  SUBROUTINES ***
  67. 670   REM
  68. 680  REM ***********************************************************
  69. 690  REM
  70. 700  REM          *** PI NETWORK SUBROUTINE ***
  71. 710  REM             Rs MUST be less than Rl
  72. 720  REM
  73. 730  REM ***********************************************************
  74. 740  IF XL=0 THEN 790
  75. 750  R=RL:JX=XL:GOSUB 1160:XPAR=-1/JB:RL=1/G
  76. 760  IF NU=1 OR NU=3 THEN XP2=(-RL*XPAR)/(QL*XPAR+RL):IF XP2>0 THEN GOTO 1080
  77. 770  IF NU=2 OR NU=4 THEN XP2=(RL*XPAR)/(QL*XPAR-RL):IF XP2<0 THEN GOTO 1080
  78. 780  GOTO 800
  79. 790  XP2=-RL/QL:IF NU=2 OR NU=4 THEN XP2=-XP2
  80. 800  RVIR=RL/(QL^2+1):IF RS/RVIR<1 THEN GOTO 1080
  81. 810  XS2=QL*RVIR:IF NU=2 OR NU=4 THEN XS2=-XS2
  82. 820  Q1=SQR(RS/RVIR-1)
  83. 830  IF XS=0 THEN 890
  84. 840  R=RS:JX=XS:GOSUB 1160:XPAR=-1/JB:RS=1/G
  85. 850  Q1=SQR(RS/RVIR-1)
  86. 860  IF NU=1 OR NU=4 THEN XP1=(-RS*XPAR)/(Q1*XPAR+RS):IF XP1>0 THEN GOTO 1080
  87. 870  IF NU=2 OR NU=3 THEN XP1=(RS*XPAR)/(Q1*XPAR-RS):IF XP1<0 THEN GOTO 1080
  88. 880  GOTO 900
  89. 890  XP1=-RS/Q1:IF NU=2 OR NU=3 THEN XP1=-XP1
  90. 900  XS1=Q1*RVIR:IF NU=2 OR NU=3 THEN XS1=-XS1
  91. 910  RETURN
  92. 920  REM ***********************************************************
  93. 930  REM
  94. 940  REM          *** T NETWORK SUBROUTINE ***
  95. 950  REM             Rs MUST be less than Rl
  96. 960  REM
  97. 970  REM ***********************************************************
  98. 980  RVIR=RS*(QL^2+1)
  99. 990  IF NU=5 OR NU=8 THEN XS1=-QL*RS+XS:IF XS1>0 THEN GOTO 1080
  100. 1000  IF NU=6 OR NU=7 THEN XS1=QL*RS+XS:IF XS1<0 THEN GOTO 1080
  101. 1010  XP1=RVIR/QL:IF NU=6 OR NU=7 THEN XP1=-XP1
  102. 1020  IF RVIR/RL<1 THEN GOTO 1080
  103. 1030  Q1=SQR(RVIR/RL-1)
  104. 1040  XP2=RVIR/Q1:IF NU=6 OR NU=8 THEN XP2=-XP2
  105. 1050  IF NU=6 OR NU=8 THEN XS2=Q1*RL-XL:IF XS2<0 THEN GOTO 1080
  106. 1060  IF NU=5 OR NU=7 THEN XS2=-Q1*RL-XL:IF XS2>0 THEN GOTO 1080
  107. 1070  RETURN
  108. 1080  PRINT "***********************************************"
  109. 1090  PRINT:PRINT
  110. 1100  PRINT "               CAN NOT BE DONE"
  111. 1110  PRINT:PRINT
  112. 1120  PRINT "***********************************************"
  113. 1130  GOTO 270
  114. 1140  REM ***********************************************************
  115. 1150  REM
  116. 1160  REM  ** SERIES TO PARALLEL EQUIVILENT **
  117. 1170  REM       R+jX in: G+jB out
  118. 1180  REM
  119. 1190  REM ***********************************************************
  120. 1200   ANG=ATN(JX/R)
  121. 1210  MAG=SQR(R^2+JX^2)
  122. 1220  ANG=-ANG
  123. 1230  MAG=1/MAG
  124. 1240  JB=MAG*SIN(ANG)
  125. 1250  G=MAG*COS(ANG)
  126. 1260  RETURN
  127. 1270  REM ***********************************************************
  128. 1280  REM
  129. 1290  REM    This routine checks that the desired Q is greater than that of
  130. 1300  REM    a L-MATCH network.  If not it prints an error message.  In the
  131. 1310  REM    furture a multi-L-MATCH routine could be added in its place.
  132. 1320  REM
  133. 1330  REM ***********************************************************
  134. 1340  IF RL>RS THEN LARGE=RL:SMALL=RS:GOTO 1360
  135. 1350  SMALL=RL:LARGE=RS
  136. 1360  IF QL>SQR(LARGE/SMALL-1)THEN GOTO 270
  137. 1370  PRINT"The loaded Q must be greater than";SQR(LARGE/SMALL-1);"in order"
  138. 1380  PRINT"to use a PI or T network.  A multi-section L-MATCH network is "
  139. 1390  PRINT"nessesary to achieve the desired Q."
  140. 1400  GOTO 140
  141. 1410  REM ***********************************************************
  142. 1420  REM
  143. 1430  REM   ** print PI **
  144. 1440  REM
  145. 1450  REM ***********************************************************
  146. 1460  PRINT:PRINT
  147. 1470  PRINT"PI NETWORK MATCH"
  148. 1480  PRINT"LOADED Q=";QL
  149. 1490  PRINT"SOURCE IMPEDANCE=";OLDRS;"IMAG. =";-OLDXS
  150. 1500  PRINT"LOAD IMPEDANCE=";OLDRL;"IMAG. =";OLDXL
  151. 1510  PRINT"FREQUENCY=";F;"MHz"
  152. 1520  IF XP1>0 THEN 1540
  153. 1530  PRINT"parallel reactance=";XP1,"capacitance=";1/ABS(W*XP1):GOTO 1550
  154. 1540  PRINT"parallel reactance=";XP1,"inductance =";XP1/W
  155. 1550  XS0=XS1+XS2:IF XS0>0 THEN 1570
  156. 1560  PRINT"series reactance  =";XS0,"capacitance=";1/ABS(W*XS0):GOTO 1580
  157. 1570  PRINT"series reactance  =";XS0,"inductance =";XS0/W
  158. 1580  IF XP2>0 THEN 1600
  159. 1590  PRINT"parallel reactance=";XP2,"capacitance=";1/ABS(W*XP2):GOTO 1610
  160. 1600  PRINT"parallel reactance=";XP2,"inductance =";XP2/W
  161. 1610  IL=20*LOG(1/(1-(QL/QU)))/LOG(10):PRINT"INSURTION LOSS =";IL
  162. 1620  PRINT:PRINT:INPUT"WOULD YOU LIKE A HARD COPY";A$
  163. 1630  IF A$="y"THEN GOTO 1660
  164. 1640  IF A$="Y"THEN GOTO 1660
  165. 1650  RETURN
  166. 1660  LPRINT:LPRINT
  167. 1670  LPRINT"PI NETWORK MATCH"
  168. 1680  LPRINT"LOADED Q=";QL
  169. 1690  LPRINT"SOURCE IMPEDANCE=";OLDRS;"IMAG. =";-OLDXS
  170. 1700  LPRINT"LOAD IMPEDANCE=";OLDRL;"IMAG. =";OLDXL
  171. 1710  LPRINT"FREQUENCY=";F;"MHz"
  172. 1720  IF XP1>0 THEN 1740
  173. 1730  LPRINT"parallel reactance=";XP1,"capacitance=";1/ABS(W*XP1):GOTO 1750
  174. 1740  LPRINT"parallel reactance=";XP1,"inductance =";XP1/W
  175. 1750  XS0=XS1+XS2:IF XS0>0 THEN 1770
  176. 1760  LPRINT"series reactance  =";XS0,"capacitance=";1/ABS(W*XS0):GOTO 1780
  177. 1770  LPRINT"series reactance  =";XS0,"inductance =";XS0/W
  178. 1780  IF XP2>0 THEN 1800
  179. 1790  LPRINT"parallel reactance=";XP2,"capacitance=";1/ABS(W*XP2):GOTO 1810
  180. 1800  LPRINT"parallel reactance=";XP2,"inductance =";XP2/W
  181. 1810  IL=20*LOG(1/(1-(QL/QU)))/LOG(10):LPRINT"INSURTION LOSS =";IL
  182. 1820  RETURN
  183. 1830  REM ***********************************************************
  184. 1840  REM
  185. 1850  REM   ** print T **
  186. 1860  REM
  187. 1870  REM ***********************************************************
  188. 1880  PRINT:PRINT
  189. 1890  PRINT"T NETWORK MATCH"
  190. 1900  PRINT"LOADED Q=";QL
  191. 1910  PRINT"SOURCE IMPEDANCE=";OLDRS;"IMAG. =";-OLDXS
  192. 1920  PRINT"LOAD IMPEDANCE=";OLDRL;"IMAG. =";OLDXL
  193. 1930  PRINT"FREQUENCY=";F;"MHz"
  194. 1940  IF XS1>0 THEN 1960
  195. 1950  PRINT"series reactance  =";XS1,"capacitance=";1/ABS(W*XS1):GOTO 1970
  196. 1960  PRINT"series reactance  =";XS1,"inductance =";XS1/W
  197. 1970  XP0=1/(1/XP1+1/XP2):IF XP0>0 THEN 1990
  198. 1980  PRINT"parallel reactance=";XP0,"capacitance=";1/ABS(W*XP0):GOTO 2000
  199. 1990  PRINT"parallel reactance=";XP0,"inductance =";XP0/W
  200. 2000  IF XS2>0 THEN 2020
  201. 2010  PRINT"series reactance  =";XS2,"capacitance=";1/ABS(W*XS2):GOTO 2030
  202. 2020  PRINT"series reactance  =";XS2,"inductance =";XS2/W
  203. 2030  IL=20*LOG(1/(1-(QL/QU)))/LOG(10):PRINT"INSURTION LOSS =";IL
  204. 2040  PRINT:PRINT:INPUT"WOULD YOU LIKE A HARD COPY";A$
  205. 2050  IF A$="y"THEN GOTO 2080
  206. 2060  IF A$="Y"THEN GOTO 2080
  207. 2070  RETURN
  208. 2080  LPRINT:LPRINT
  209. 2090  LPRINT"T NETWORK MATCH"
  210. 2100  LPRINT"LOADED Q=";QL
  211. 2110  LPRINT"SOURCE IMPEDANCE=";OLDRS;"IMAG. =";-OLDXS
  212. 2120  LPRINT"LOAD IMPEDANCE=";OLDRL;"IMAG. =";OLDXL
  213. 2130  LPRINT"FREQUENCY=";F;"MHz"
  214. 2140  IF XS1>0 THEN 2160
  215. 2150  LPRINT"series reactance  =";XS1,"capacitance=";1/ABS(W*XS1):GOTO 2170
  216. 2160  LPRINT"series reactance  =";XS1,"inductance =";XS1/W
  217. 2170  XP0=1/(1/XP1+1/XP2):IF XP0>0 THEN 2190
  218. 2180  LPRINT"parallel reactance=";XP0,"capacitance=";1/ABS(W*XP0):GOTO 2200
  219. 2190  LPRINT"parallel reactance=";XP0,"inductance =";XP0/W
  220. 2200  IF XS2>0 THEN 2220
  221. 2210  LPRINT"series reactance  =";XS2,"capacitance=";1/ABS(W*XS2):GOTO 2230
  222. 2220  LPRINT"series reactance  =";XS2,"inductance =";XS2/W
  223. 2230  IL=20*LOG(1/(1-(QL/QU)))/LOG(10):LPRINT"INSURTION LOSS =";IL
  224. 2240  RETURN
  225. 2250  REM ***********************************************************
  226. 2260  REM
  227. 2270  REM     EXCHANGE VARIABLES RS-RL, XS-XL, NU=3-NU=4, NU=7-NU=8
  228. 2280  REM
  229. 2290  REM ***********************************************************
  230. 2300  TEMP=RL:RL=RS:RS=TEMP:TEMP=-XL:XL=-XS:XS=TEMP
  231. 2310  IF NU=3 THEN NU=4:GOTO 2350
  232. 2320  IF NU=4 THEN NU=3:GOTO 2350
  233. 2330  IF NU=7 THEN NU=8:GOTO 2350
  234. 2340  IF NU=8 THEN NU=7
  235. 2350  RETURN
  236. 2360  REM ***********************************************************
  237. 2370  REM
  238. 2380  REM     EXCHANGE VARIABLES XP1-XP2, XS1-XS2
  239. 2390  REM
  240. 2400  REM ***********************************************************
  241. 2410  TEMP=XP1:XP1=XP2:XP2=TEMP:TEMP=XS1:XS1=XS2:XS2=TEMP
  242. 2420  RETURN
  243. 2430  END
  244.