home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / design4 / mstrip.bas < prev    next >
BASIC Source File  |  1987-08-24  |  9KB  |  256 lines

  1. 1    REM changed dim statement in 20, Z0(50) added C(50)
  2. 10 REM  ***LADDER ANALYSIS PROGRAM  D. R. HERTLING  R. K. FEENEY  9/5/86***
  3. 20 DIM B(50),L(50),F(50),Z0(50),LM(50),WM(50),W(50),C(50)
  4. 30 PI=4*ATN(1)
  5. 40 PI2=2*PI
  6. 50 MZ=1000000!
  7. 60 F2=0   'REM F2=0  DIMENSIONS IN INCHES ; F2=1 DIMENSIONS IN CM'S
  8. 70 F3=0   'REM F3=0 LENGTHS IN WAVELENGTHS ; F3=1 LENGTHS IN DEGREES
  9. 80 PRINT
  10. 90 F0=0
  11. 100 PRINT "******************************************************"
  12. 110 PRINT
  13. 120 PRINT "CONFIGURATION"
  14. 130 PRINT "1 - SERIES MSTRIP TRANSMISSION LINE"
  15. 140 PRINT "2 - SHUNT-CONNECTED OPEN-CIRCUITED TRANSMISSION LINE"
  16. 150 PRINT "3 - SHUNT-CONNECTED SHORT-CIRCUITED TRANSMISSION LINE"
  17. 160 PRINT "4 - SERIES-CONNECTED CAPACITOR"
  18. 170 PRINT "5 - SHUNT-CONNECTED CAPACITOR"
  19. 180 PRINT "6 - SERIES-CONNECTED INDUCTOR"
  20. 190 PRINT "7 - SHUNT-CONNECTED INDUCTOR"
  21. 200 PRINT "8 - SERIES-CONNECTED PARALLEL LC"
  22. 210 PRINT "9 - SHUNT-CONNECTED SERIES LC"
  23. 220 PRINT
  24. 230 PRINT "******************************************************"
  25. 240 PRINT
  26. 250 INPUT "ENTER CONFIGURATION # ",CF$
  27. 260 PRINT
  28. 270 PRINT "******************************************************"
  29. 280 PRINT
  30. 290 NB=LEN(CF$)
  31. 300 FOR I=1 TO NB
  32. 310 B(I)=VAL(MID$(CF$,I,1))
  33. 320 IF B(I)<4 THEN F0=1
  34. 330 NEXT I
  35. 340 IF F0<>1 THEN GOTO 510
  36. 350 PRINT "MSTRIP DIMENSIONS"
  37. 360 PRINT
  38. 370 INPUT "0 = NORMALIZED ; 1= ACTUAL ",F1
  39. 380 PRINT
  40. 390 IF F1=0 AND F3=0 THEN UN$= "NORMALIZED MSTRIP LENGTHS IN WAVELENGTHS"
  41. 400 IF F1=0 AND F3=1 THEN UN$= "NORMALIZED MSTRIP LENGTHS IN DEGREES"
  42. 410 IF F1=1 AND F2=0 THEN UN$= "ACTUAL MSTRIP DIMENSIONS IN INCHES"
  43. 420 IF F1=1 AND F2=1 THEN UN$= "ACTUAL MSTRIP DIMENSIONS IN CM'S"
  44. 430 PRINT "ENTER "+UN$
  45. 440 PRINT
  46. 450 IF F1=0 THEN INPUT "DESIGN FREQUENCY (MHz)=? ",FM:FD=FM*MZ:GOTO 500
  47. 460 PRINT "MATERIAL"
  48. 470 INPUT "DIELECTRIC THICKNESS=? ",DT
  49. 480 INPUT "METAL THICKNESS=? ",MT
  50. 490 INPUT "RELATIVE DIELECTRIC CONSTANT=? ",ER
  51. 500 PRINT "******************************************************"
  52. 510 PRINT
  53. 520 PRINT "TERMINATIONS (OHMS) "
  54. 530 INPUT "RL=? ",RL
  55. 540 INPUT "XL=? ",XL
  56. 550 PRINT
  57. 560 PRINT "******************************************************"
  58. 570 PRINT
  59. 580 REM ENTER NETWORK DATA
  60. 590 PRINT "NETWORK"
  61. 600 FOR J=1 TO NB
  62. 610 PRINT
  63. 620 PRINT "BRANCH # ";J
  64. 630 ON B(J) GOSUB 2090,2090,2090,2130,2130,2150,2150,2170,2170
  65. 640 NEXT J
  66. 650 PRINT "******************************************************"
  67. 660 PRINT
  68. 670 GOSUB 2200
  69. 680 PRINT
  70. 690 PRINT "******************************************************"
  71. 700 PRINT
  72. 710 REM ENTER FREQUENCY DATA
  73. 720 INPUT "NUMBER OF POINTS? ",NP
  74. 730 IF NP=1 THEN INPUT "FREQUENCY (MHz)=? ",FL:FL=FL*MZ:PRINT :GOTO 820
  75. 740 INPUT "LOWER FREQUENCY (MHz)=? ",FL:FL=FL*MZ
  76. 750 INPUT "UPPER FREQUENCY (MHz)=? ",FU:FU=FU*MZ
  77. 760 REM IMPEDANCE VERSUS FREQUENCY CALCULATIONS
  78. 770 DF=(FU-FL)/(NP-1)
  79. 780 REM CALCULATIONS
  80. 790 PRINT
  81. 800 PRINT "******************************************************"
  82. 810 PRINT
  83. 820 INPUT "OUTPUT PRINTED ? (Y/N) ";P$
  84. 830 PRINT
  85. 840 PRINT "******************************************************"
  86. 850 IF P$="Y" OR P$="y" THEN F4=1 ELSE F4=0
  87. 860 IF F4=1 THEN GOSUB 2210
  88. 870 PRINT:PRINT:PRINT
  89. 880 PRINT "                                            GAMMA (REF-";
  90. 890 PRINT USING "####.## OHMS)";RR
  91. 900 PRINT "   F(MHz)      R(OHMS)         X(OHMS)         MAG";
  92. 910 PRINT"         ANG         GT(dB)"
  93. 920 IF F4=0 THEN GOTO 970
  94. 930 LPRINT "                                            GAMMA (REF-";
  95. 940 LPRINT USING "####.## OHMS)";RR
  96. 950 LPRINT "   F(MHz)      R(OHMS)         X(OHMS)         MAG";
  97. 960 LPRINT"         ANG         GT(dB)"
  98. 970 FOR I=1 TO NP     'FREQUENCY LOOP
  99. 980 RT=RL:XT=XL
  100. 990 F(I)=FL+(I-1)*DF
  101. 1000 W(I)=PI2*F(I)
  102. 1010 FOR J=1 TO NB     'CIRCUIT BRANCH LOOP
  103. 1020 ON B(J) GOSUB 1480,1480,1480,1760,1760,1820,1820,1880,1930
  104. 1030 NEXT J
  105. 1040 REM RECTANGULAR TO POLAR CONVERSION
  106. 1050 A=RT-RR:B=XT:C=RT+RR:D=XT
  107. 1060 DM=C^2+D^2
  108. 1070 RG=(A*C+B*D)/DM
  109. 1080 IG=(B*C-A*D)/DM
  110. 1090 MG=SQR(RG^2+IG^2)
  111. 1100 IF RG=0 THEN GOTO 1120
  112. 1110 GOTO 1140
  113. 1120 IF IG=0 THEN AG=0:GOTO 1200
  114. 1130 TH=90:GOTO 1150
  115. 1140 TH=(180/PI)*ATN(ABS(IG/RG))
  116. 1150 IF RG>=0 THEN GOTO 1180
  117. 1160 IF IG>=0 THEN AG=180-TH:GOTO 1200
  118. 1170 AG=-180+TH:GOTO 1200
  119. 1180 IF IG>=0 THEN AG=TH:GOTO 1200
  120. 1190 AG=-TH
  121. 1200 GT=10*LOG(1-(MG)^2)/LOG(10)
  122. 1210 PRINT USING "##.###^^^^   ##.###^^^^      ##.###^^^^";F(I)/MZ;RT;XT;
  123. 1220 PRINT USING "      ##.###     ####.##       ###.##";MG;AG;GT
  124. 1230 IF F4=0 THEN GOTO 1260
  125. 1240 LPRINT USING "##.###^^^^   ##.###^^^^      ##.###^^^^";F(I)/MZ;RT;XT;
  126. 1250 LPRINT USING "      ##.###     ####.##       ###.##";MG;AG;GT
  127. 1260 NEXT I
  128. 1270 PRINT:PRINT:PRINT
  129. 1280 PRINT "*****************************************************"
  130. 1290 PRINT
  131. 1300 PRINT "1 - EDIT THE LADDER NETWORK"
  132. 1310 PRINT "2 - REPEAT CALCULATIONS OVER A NEW FREQUENCY RANGE"
  133. 1320 PRINT "3 - ENTER A NEW CONFIGURATION"
  134. 1330 PRINT "4 - QUIT"
  135. 1340 PRINT
  136. 1350 INPUT "ENTER 1 - 4 ";M2
  137. 1360 PRINT
  138. 1370 PRINT "******************************************************"
  139. 1380 IF M2=4 THEN STOP
  140. 1390 IF M2=3 THEN GOTO 80
  141. 1400 IF M2=2 THEN PRINT:GOTO 710
  142. 1410 PRINT
  143. 1420 INPUT "ENTER THE BRANCH # TO BE EDITED OR Q TO QUIT EDITING ";M3$
  144. 1430 IF M3$="Q" OR M3$="q" THEN GOTO 790 ELSE M3=VAL(M3$)
  145. 1440 J=M3
  146. 1450 PRINT
  147. 1460 ON B(M3) GOSUB 2090,2090,2090,2130,2130,2150,2150,2170,2170
  148. 1470 GOTO 1410
  149. 1480 REM R AND X MICROSTRIP SUBROUTINE
  150. 1490 IF F1=0 AND F3=0 THEN BL=TAN(PI2*LM(J)*F(I)/FD):R0=Z0(J):GOTO 1650
  151. 1500 IF F1=0 AND F3=1 THEN BL=TAN(LM(J)*PI/180*F(I)/FD):R0=Z0(J):GOTO 1650
  152. 1510 WE=WM(J)+(MT/PI)*(LOG(2*DT/MT)+1)
  153. 1520 S=WE/DT
  154. 1530 P=377/S/SQR(ER)
  155. 1540 Q=(1+1.735*ER^(-7.240001E-02)*S^(-.836))
  156. 1550 R0=P/Q
  157. 1560 S=WE/DT
  158. 1570 IF S>=.6 THEN GOTO 1590
  159. 1580 Y=(1+.6*(ER-1)*S^(.0297)) :GOTO 1600
  160. 1590 Y=(1+.63*(ER-1)*S^(.1255))
  161. 1600 VF=SQR(1/Y)
  162. 1610 IF F2=0 THEN IC=2.54 ELSE IC=1
  163. 1620 C0=3E+10/IC
  164. 1630 LD=VF*C0/F(I)  'LD=WAVELENGTH
  165. 1640 BL=TAN(PI2*LM(J)/LD) 'TAN BL
  166. 1650 IF B(J)<> 1 THEN GOTO 1710
  167. 1660 A=RT:B=XT+R0*BL:C=R0-XT*BL:D=RT*BL
  168. 1670 DN=C^2+D^2
  169. 1680 RT=R0*(A*C+B*D)/DN
  170. 1690 XT=R0*(B*C-A*D)/DN
  171. 1700 RETURN
  172. 1710 R=0
  173. 1720 IF B(J)=2 THEN X=-R0/BL :GOTO 1740
  174. 1730 X=R0*BL ' S.C. LINE
  175. 1740 GOSUB 2020
  176. 1750 RETURN
  177. 1760 REM R AND X FOR A CAPACITOR
  178. 1770 R=0
  179. 1780 X=-1/W(I)/C(J)
  180. 1790 IF B(J)=4 THEN GOSUB 1980:RETURN
  181. 1800 GOSUB 2020
  182. 1810 RETURN
  183. 1820 REM R AND X FOR INDUCTORS
  184. 1830 R=0
  185. 1840 X=W(I)*L(J)
  186. 1850 IF B(J)=6 THEN GOSUB 1980:RETURN
  187. 1860 GOSUB 2020
  188. 1870 RETURN
  189. 1880 REM R AND X FOR SERIES-PARALLEL LC
  190. 1890 R=0
  191. 1900 X=-(L(J)/C(J))/(W(I)*L(J)-1/W(I)/C(J))
  192. 1910 GOSUB 1980
  193. 1920 RETURN
  194. 1930 REM R AND X FOR PARALLEL-SERIES LC
  195. 1940 R=0
  196. 1950 X=(W(I)*L(J)-1/W(I)/C(J))
  197. 1960 GOSUB 2020
  198. 1970 RETURN
  199. 1980 REM SERIES COMBINATION OF IMPEDANCE
  200. 1990 RT=R+RT
  201. 2000 XT=X+XT
  202. 2010 RETURN
  203. 2020 REM PARALLEL COMBINATION OF IMPEDANCES
  204. 2030 DP=(R+RT)^2+(X+XT)^2
  205. 2040 RZ=((R*RT-X*XT)*(R+RT)+(X*RT+R*XT)*(X+XT))/DP
  206. 2050 XT=((R*RT-X*XT)*(-(X+XT))+(X*RT+R*XT)*(R+RT))/DP
  207. 2060 RT=RZ
  208. 2070 RETURN
  209. 2080 END
  210. 2090 REM MSTRIP NORMALIZED
  211. 2100 IF F1=0 THEN INPUT "Z0=? ",Z0(J):INPUT "LENGTH=? ",LM(J):RETURN
  212. 2110 REM MSTRIP ACTUAL
  213. 2120 INPUT "WIDTH=? ",WM(J):INPUT "LENGTH=? ",LM(J):RETURN
  214. 2130 REM CAPACITOR
  215. 2140 INPUT "C(pF)=? ",C(J):C(J)=C(J)*1E-12:RETURN
  216. 2150 REM INDUCTOR
  217. 2160 INPUT "L(nH)=? ",L(J):L(J)=L(J)*1E-09:RETURN
  218. 2170 REM RESONANT CIRCUIT
  219. 2180 INPUT "C(pF)=? ",C(J):C(J)=C(J)*1E-12
  220. 2190 INPUT "L(nH)=? ",L(J):L(J)=L(J)*1E-09:RETURN
  221. 2200 INPUT "ENTER REFERENCE FOR GAMMA (OHMS) ",RR:RETURN
  222. 2210 REM PRINT SUBROUTINE
  223. 2220 LPRINT:LPRINT:LPRINT
  224. 2230 LPRINT "CONFIGURATION #: ";CF$
  225. 2240 LPRINT
  226. 2250 IF F4=1 THEN LPRINT UN$:LPRINT
  227. 2260 IF F0=1 AND F1=1 THEN GOSUB 2500
  228. 2270 IF F0=1 AND F1=0 THEN GOSUB 2530
  229. 2280 FOR J=1 TO NB
  230. 2290 LPRINT "BRANCH # ";J
  231. 2300 ON B(J) GOSUB 2360,2360,2360,2430,2430,2450,2450,2470,2470
  232. 2310 LPRINT
  233. 2320 NEXT J
  234. 2330 LPRINT USING "TERMINATIONS (OHMS):  RL=##.###^^^^  XL=##.###^^^^ ";RL;XL
  235. 2340 LPRINT
  236. 2350 RETURN
  237. 2360 REM MSTRIP NORMALIZED
  238. 2370 IF F1=1 THEN GOTO 2400
  239. 2380 LPRINT USING "Z0=#####.## OHMS";Z0(J)
  240. 2390 LPRINT USING "LENGTH=##.###^^^^";LM(J):RETURN
  241. 2400 REM MSTRIP ACTUAL
  242. 2410 LPRINT USING "WIDTH=##.###^^^^";WM(J)
  243. 2420 LPRINT USING "LENGTH=##.###^^^^";LM(J):RETURN
  244. 2430 REM CAPACITOR
  245. 2440 CP=C(J)*1E+12:LPRINT USING "C(pF)=#####.##";CP:RETURN
  246. 2450 REM INDUCTOR
  247. 2460 LN=L(J)*1E+09:LPRINT USING "L(nH)=#####.##";LN:RETURN
  248. 2470 REM RESONANT CIRCUIT
  249. 2480 CP=C(J)*1E+12:LPRINT USING "C(pF)=#####.##";CP
  250. 2490 LN=L(J)*1E+09:LPRINT USING "L(nH)=#####.##";LN:RETURN
  251. 2500 LPRINT USING "DIELECTRIC THICKNESS= ##.###^^^^";DT
  252. 2510 LPRINT USING "METAL THICKNESS= ##.###^^^^";MT
  253. 2520 LPRINT USING "RELATIVE DIELECTRIC CONSTANT= ###.###";ER:LPRINT:RETURN
  254. 2530 LPRINT USING "DESIGN FREQ: #####.### MHZ";FM:LPRINT:RETURN
  255. 2540 END
  256.