home *** CD-ROM | disk | FTP | other *** search
/ Antennas / Antennas_CD-ROM_Walnut_Creek_September_1996.iso / public / penstate / yagi.bas < prev    next >
BASIC Source File  |  1996-06-30  |  12KB  |  367 lines

  1. 5 '//////////// YAGI ////////////////
  2. 10 CLS:KEY OFF:ON ERROR GOTO 4100
  3. 20 KEY 1,"":KEY 10,""
  4. 30 LOCATE 25,1:PRINT"F1 = Change director spacing and reactance     F10 = QUIT"
  5. 40 T$="3-ELEMENT YAGI ARRAY DESIGN":L=1:GOSUB 1790
  6. 50 PRINT:PRINT:PRINT
  7. 60 '                MAY 22, 86
  8. 70 '      AHMAD FAIZAL MOHD ZAIN
  9. 80 :
  10. 90 DEF FN LOGTEN(X)=LOG(X)/LOG(10)
  11. 100 DIM RZ(20,20),XZ(20,20)
  12. 110 DIM XX(30),YY(30)
  13. 120 DIM D(140),ZR(140),ZX(140)
  14. 130 :
  15. 140 GOTO 650          'MAIN PROG
  16. 150 :
  17. 160 '    OPERN IS TYPE OF OPERATION
  18. 170 '    OPERN=1 IS ADDN
  19. 180 '    OPERN=2 IS SUBTRACTION
  20. 190 '   OPERN=3 IS MULTIPLICATION
  21. 200 :
  22. 210 '    SUBROUTINE TO CONVERT RECTANGULAR TO POLAR COORD
  23. 220 '    PARAMETERS INPUTS X,Y
  24. 230 '    PARAMETERS OUTPUT Z,TH    (TH IN RADIANS)
  25. 240 '   TH IN RADIANS
  26. 250 '
  27. 260 Z=SQR(X*X+Y*Y)              'MAGNITUDE
  28. 270 IF X>0 THEN TH=ATN(Y/X)
  29. 280 IF X<0 THEN TH=PI*SGN(Y)+ATN(Y/X)
  30. 290 IF X=0 THEN TH=(PI/2)*SGN(Y)
  31. 300 IF Y=0 AND X<0 THEN TH=PI
  32. 310 RETURN
  33. 320 '
  34. 330 '   SUBROUTINE TO CONVERT POLAR TO RECTANGULAR
  35. 340 '   PARAMETER INPUTS  Z,TH
  36. 350 '   PARAMETER OUTPUT  X,Y
  37. 360 '
  38. 370 X=Z*COS(TH)
  39. 380 Y=Z*SIN(TH)
  40. 390 RETURN
  41. 400 '
  42. 410 '   SUBROUTINE TO ADD TWO VECTORS IN POLAR FORM
  43. 420 '   INPUTS Z1,Z2,TH1,TH2
  44. 430 '   OUTPUT X,Y
  45. 440 '
  46. 450 Z=Z1:TH=TH1:GOSUB 330:X1=X:Y1=Y      'TAKES CARE OF FIRST VECTOR
  47. 460 Z=Z2:TH=TH2:GOSUB 330:X2=X:Y2=Y      '-------------SECOND -------
  48. 470 IF OPERN=2 THEN 490                  'SUBTRACT
  49. 480 X=X1+X2:Y=Y1+Y2: GOTO 500            'ADD
  50. 490 X=X1-X2:Y=Y1-Y2
  51. 500 RETURN                               'RETURNS X,Y
  52. 510 '
  53. 520 '   SUBROUTINE TO MULT/DIVIDE TWO VECTORS
  54. 530 '   INPUT X1,X2,Y1,Y2
  55. 540 '   OUTPUT Z,TH
  56. 550 '
  57. 560 X=X1:Y=Y1:GOSUB 210        'RECT TO POLAR
  58. 570 Z1=Z:TH1=TH
  59. 580 X=X2:Y=Y2:GOSUB 210
  60. 590 Z2=Z:TH2=TH
  61. 600 IF OPERN=4 THEN 620       'DIVIDE
  62. 610 Z=Z1*Z2:TH=TH1+TH2: GOTO 630
  63. 620 Z=Z1/Z2:TH=TH1-TH2
  64. 630 RETURN
  65. 640 '
  66. 650 'MAIN PROG STARTS HERE
  67. 660 GOSUB 1810
  68. 670 PRINT:PRINT
  69. 680 CLS
  70. 690 LOCATE 25,1:PRINT"F1 = Change director spacing and reactance     F10 = QUIT"
  71. 700 T$="3-ELEMENT YAGI ARRAY DESIGN":L=1:GOSUB 1790
  72. 710 PRINT:PRINT:PRINT
  73. 720 RZ(1,1)=ZR(0):XZ(1,1)=ZX(0)
  74. 730 RZ(2,2)=ZR(0):XZ(2,2)=ZX(0)
  75. 740 RZ(3,3)=ZR(0):XZ(3,3)=ZX(0)
  76. 750 INPUT"SEPERATION BETWEEN REFLECTOR AND DRIVER (IN LAMBDA) ";SR
  77. 760 INPUT"SEPERATION BETWEEN DIRECTOR AND DRIVER (IN LAMBDA) ";SD
  78. 770 GOTO 820
  79. 780 LOCATE 8,1:PRINT "DIRECTOR SPACING =          ";
  80. 790 LOCATE 8,20:INPUT SD
  81. 800 LOCATE 8,40:PRINT "DIRECTOR REACTANCE =          ";
  82. 810 LOCATE 8,61:INPUT XZ(3,3)
  83. 820 MR=100*SR:MD=100*SD      'TO GET OFFSET
  84. 830 MRD=MR+MD
  85. 840 :
  86. 850 PRINT
  87. 860 LOCATE 8,1:PRINT USING"DIRECTOR SPACING = ##.##  ";SD
  88. 870 LOCATE 8,40:PRINT USING "DIRECTOR REACTANCE = ###.##   ";XZ(3,3)
  89. 880 PRINT:PRINT
  90. 890 IF XZ(3,3)<0 THEN SIGN$=" -j" ELSE SIGN$=" +j"
  91. 900 PRINT USING"SELF-IMPEDANCE OF DIRECTOR :###.##";ZR(0);:PRINT SIGN$;:PRINT USING "###.##";ABS(XZ(3,3))
  92. 910 RZ(1,2)=ZR(MR):XZ(1,2)=ZX(MR)
  93. 920 RZ(1,3)=ZR(MRD):XZ(1,3)=ZX(MRD)
  94. 930 RZ(2,3)=ZR(MD):XZ(2,3)=ZX(MD)
  95. 940 :
  96. 950 '  FIND DRIVING POINT IMPEDANCE
  97. 960 X1=RZ(1,3):Y1=XZ(1,3)
  98. 970 X2=RZ(1,2):Y2=XZ(1,2)
  99. 980 OPERN=3:GOSUB 520         'Z(1,3)*Z(1,2)
  100. 990 ZTEM1=Z:THTEM1=TH               'TEMPORARY STORE
  101. 1000 X1=RZ(1,1):Y1=XZ(1,1)
  102. 1010 X2=RZ(2,3):Y2=XZ(2,3)
  103. 1020 OPERN=3:GOSUB 520         'Z11*Z23
  104. 1030 Z1=ZTEM1:TH1=THTEM1:Z2=Z:TH2=TH
  105. 1040 OPERN=2:GOSUB 410         'Z13*Z12 - Z11*Z23
  106. 1050 XTEM=X:YTEM=Y
  107. 1060 X1=RZ(1,3):Y1=XZ(1,3)
  108. 1070 X2=RZ(1,3):Y2=XZ(1,3)
  109. 1080 OPERN=3:GOSUB 520         'Z13*Z13
  110. 1090 ZTEM1=Z:THTEM1=TH
  111. 1100 X1=RZ(1,1):Y1=XZ(1,1)
  112. 1110 X2=RZ(3,3):Y2=XZ(3,3)
  113. 1120 OPERN=3:GOSUB 520         'Z11*Z33
  114. 1130 Z1=ZTEM1:TH1=THTEM1:Z2=Z:TH2=TH
  115. 1140 OPERN=2:GOSUB 410         'Z13*Z13 - Z11*Z33
  116. 1150 X1=XTEM:Y1=YTEM:X2=X:Y2=Y
  117. 1160 OPERN=4:GOSUB 520         ' (Z31*Z12-Z11*Z32)/(Z13*Z13-Z11*Z33)
  118. 1170 AZ=Z:ATH=TH
  119. 1180 MAGI3BY2=AZ:ANGI3BY2=PI+ATH
  120. 1190 X=RZ(1,3):Y=XZ(1,3):GOSUB 210:Z1=Z:TH1=TH
  121. 1200 Z2=AZ:TH2=ATH:OPERN=3:GOSUB 600     ' Z13*AZ
  122. 1210 GOSUB 330:X1=X:Y1=Y
  123. 1220 X2=RZ(1,2):Y2=XZ(1,2)
  124. 1230 OPERN=2:GOSUB 470:X1=X:Y1=Y      'Z13*AZ-Z12
  125. 1240 X2=RZ(1,1):Y2=XZ(1,1):OPERN=4:GOSUB 520
  126. 1250 MAGI1BY2=Z:ANGI1BY2=TH
  127. 1260 GOSUB 330:X1=X:Y1=Y
  128. 1270 X2=RZ(1,2):Y2=XZ(1,2)
  129. 1280 OPERN=3:GOSUB 520:GOSUB 330
  130. 1290 BX=X:BY=Y
  131. 1300 Z=AZ:TH=ATH:GOSUB 330:X1=X:Y1=Y
  132. 1310 X2=RZ(2,3):Y2=XZ(2,3)
  133. 1320 OPERN=3:GOSUB 520:GOSUB 330:CX=X:CY=Y
  134. 1330 DX=RZ(2,2):DY=XZ(2,2)
  135. 1340 ZDR=BX+DX-CX:ZDX=BY+DY-CY
  136. 1350 IF ZDX<0 THEN SIGN$=" -j" ELSE SIGN$=" +j"
  137. 1360 PRINT USING"DRIVING POINT IMPEDANCE :   ###.##";ZDR;:PRINT SIGN$;:PRINT USING "###.##";ABS(ZDX)
  138. 1370 PRINT:PRINT
  139. 1380 :
  140. 1390 TH1=ANGI3BY2+2*PI*SD: Z1=MAGI3BY2
  141. 1400 TH2=ANGI1BY2+2*PI*SR: Z2=MAGI1BY2
  142. 1410 OPERN=1:GOSUB 410
  143. 1420 EFRONTX=X+1:EFRONTY=Y
  144. 1430 TH1=ANGI3BY2-2*PI*SD: Z1=MAGI3BY2
  145. 1440 TH2=ANGI1BY2-2*PI*SR: Z2=MAGI1BY2
  146. 1450 OPERN=1:GOSUB 410
  147. 1460 EBACKX=X+1:EBACKY=Y
  148. 1470 X1=EFRONTX:Y1=EFRONTY
  149. 1480 X2=EBACKX:Y2=EBACKY
  150. 1490 OPERN=4:GOSUB 520
  151. 1500 MAGEFTOB=Z
  152. 1510 PRINT USING"FRONT TO BACK RATIO = ##.###";MAGEFTOB
  153. 1520 PRINT USING"BACK TO FRONT RATIO = ##.###";1/MAGEFTOB
  154. 1530 J=J+1
  155. 1540 XX(J)=1/MAGEFTOB:YY(J)=XZ(3,3)
  156. 1550 ' CALCULATE GAIN ETC
  157. 1560 MAGEFRONT=SQR(3600*EFRONTX*EFRONTX+3600*EFRONTY*EFRONTY)
  158. 1570 MAGEBACK=SQR(3600*EBACKX*EBACKX+3600*EBACKY*EBACKY)
  159. 1580 POWER=MAGEFRONT*MAGEFRONT/240
  160. 1590 POWERBCK=MAGEBACK*MAGEBACK/240
  161. 1600 WATTRAD=ZDR/2
  162. 1610 D=4*POWER/WATTRAD
  163. 1620 DBACK=4*POWERBCK/WATTRAD
  164. 1630 PRINT:PRINT
  165. 1640 PRINT USING"DIRECTIVITY (FRONT)= ###.##";D;:PRINT USING" OR ###.##";10*FN LOGTEN(D);:PRINT" dB"
  166. 1650 PRINT USING"DIRECTIVITY (BACK) = ###.##";DBACK;:PRINT USING" OR ###.##";10*FN LOGTEN(DBACK);:PRINT" dB"
  167. 1660 A$=INKEY$
  168. 1670 IF LEN(A$)<>2 THEN 1660
  169. 1680 ANS=ASC(MID$(A$,2,1))
  170. 1690 IF ANS=59 THEN 780
  171. 1700 IF ANS=68 THEN 1730
  172. 1710 GOTO 1660
  173. 1720 PRINT:PRINT
  174. 1730 T$="DO YOU WANT TO RUN THIS PROGRAM AGAIN (Y/N)? ":L=23:GOSUB 1790
  175. 1740 AN$=INKEY$
  176. 1750 IF AN$="Y" OR AN$="y" THEN GOTO 680
  177. 1760 IF AN$="N" OR AN$="n" THEN END
  178. 1770 GOTO 1730
  179. 1780 :
  180. 1790 LOCATE L,(80-LEN(T$))/2+1:PRINT T$:RETURN    'SUBROUTINE TO CENTRE TEXT
  181. 1800 END
  182. 1810 REM  05/22/86   AHMAD FAIZAL MOHD ZAIN
  183. 1820 PI=3.141592
  184. 1830 PRINT:PRINT:PRINT
  185. 1840 FOR I=0 TO 139
  186. 1850   READ D(I),ZR(I),ZX(I)
  187. 1860 NEXT I
  188. 1870 RETURN
  189. 1880 :
  190. 1890 REM  ZEROTH-ORDER MUTUAL IMPEDANCE BETWEEN PARALLEL,
  191. 1900 REM   SIDE-BY-SIDE, HALF-WAVE DIPOLE
  192. 1910 :
  193. 1920 DATA 0.0, 73.1296, 42.5445
  194. 1930 DATA .01, 73.0903, 38.8086
  195. 1940 DATA .02, 72.9246, 35.1090
  196. 1950 DATA .03, 72.6347, 31.4521
  197. 1960 DATA .04, 72.2232, 27.8467
  198. 1970 :
  199. 1980 DATA .05, 71.6917, 24.2932
  200. 1990 DATA .06, 71.0431, 20.7999
  201. 2000 DATA .07, 70.2800, 17.3723
  202. 2010 DATA .08, 69.4058, 14.0181
  203. 2020 DATA .09, 68.4223, 10.7371
  204. 2030 DATA .10, 67.3336, 7.5383
  205. 2040 DATA .11, 66.1719, 4.4274
  206. 2050 DATA .12, 64.8997, 1.4039
  207. 2060 DATA .13, 63.5223, -1.5281
  208. 2070 DATA .14, 62.0465, -4.3622
  209. 2080 :
  210. 2090 DATA .15, 60.4753, -7.0992
  211. 2100 DATA .16, 58.8152, -9.7331
  212. 2110 DATA .17, 57.0716, -12.2608
  213. 2120 DATA .18, 55.2514, -14.6774
  214. 2130 DATA .19, 53.3572, -16.9839
  215. 2140 :
  216. 2150 DATA .20, 51.3967, -19.1747
  217. 2160 DATA .21, 49.3797, -21.2491
  218. 2170 DATA .22, 47.3045, -23.2050
  219. 2180 DATA .23, 45.1764, -25.0407
  220. 2190 DATA .24, 43.0023, -26.7536
  221. 2200 :
  222. 2210 DATA .25, 40.7842, -28.3450
  223. 2220 DATA .26, 38.5292, -29.8126
  224. 2230 DATA .27, 36.2428, -31.1558
  225. 2240 DATA .28, 33.9325, -32.3732
  226. 2250 DATA .29, 31.6002, -33.4663
  227. 2260 :
  228. 2270 DATA .30, 29.2551, -34.4336
  229. 2280 DATA .31, 26.8992, -35.2747
  230. 2290 DATA .32, 24.5401, -35.9916
  231. 2300 DATA .33, 22.1832, -36.5854
  232. 2310 DATA .34, 19.8358, -37.0571
  233. 2320 :
  234. 2330 DATA .35, 17.5000, -37.4087
  235. 2340 DATA .36, 15.1829, -37.6416
  236. 2350 DATA .37, 12.8898, -37.7579
  237. 2360 DATA .38, 10.6278, -37.7597
  238. 2370 DATA .39, 8.3985, -37.6493
  239. 2380 :
  240. 2390 DATA .40, 6.2100, -37.4296
  241. 2400 DATA .41, 4.0667, -37.1015
  242. 2410 DATA .42, 1.9724, -36.6699
  243. 2420 DATA .43, -0.0687, -36.1382
  244. 2430 DATA .44, -2.0509, -35.5106
  245. 2440 :
  246. 2450 DATA .45, -3.9731, -34.7899
  247. 2460 DATA .46, -5.8299, -33.9805
  248. 2470 DATA .47, -7.6178, -33.0864
  249. 2480 DATA .48, -9.3320, -32.1128
  250. 2490 DATA .49, -10.9718, -31.0624
  251. 2500 :
  252. 2510 DATA .50, -12.5321, -29.9413
  253. 2520 DATA .51, -14.0105, -28.7513
  254. 2530 DATA .52, -15.4049, -27.4993
  255. 2540 DATA .53, -16.7132, -26.1904
  256. 2550 DATA .54, -17.9325, -24.8309
  257. 2560 :
  258. 2570 DATA .55, -19.0631, -23.4237
  259. 2580 DATA .56, -20.1024, -21.9750
  260. 2590 DATA .57, -21.0492, -20.4901
  261. 2600 DATA .58, -21.9020, -18.9754
  262. 2610 DATA .59, -22.6613, -17.4340
  263. 2620 :
  264. 2630 DATA .60, -23.3256, -15.8729
  265. 2640 DATA .61, -23.8922, -14.2970
  266. 2650 DATA .62, -24.3642, -12.7109
  267. 2660 DATA .63, -24.7424, -11.1198
  268. 2670 DATA .64, -25.0274, -9.5299
  269. 2680 :
  270. 2690 DATA .65, -25.2206, -7.9438
  271. 2700 DATA .66, -25.3233, -6.3674
  272. 2710 DATA .67, -25.3369, -4.8055
  273. 2720 DATA .68, -25.2634, -3.2640
  274. 2730 DATA .69, -25.1045, -1.7450
  275. 2740 :
  276. 2750 DATA .70, -24.8626, -0.2548
  277. 2760 DATA .71, -24.5389, 1.2023
  278. 2770 DATA .72, -24.1371, 2.6231
  279. 2780 DATA .73, -23.6602, 4.0039
  280. 2790 DATA .74, -23.1116, 5.3397
  281. 2800 :
  282. 2810 DATA .75, -22.4936, 6.6293
  283. 2820 DATA .76, -21.8100, 7.8683
  284. 2830 DATA .77, -21.0642, 9.0535
  285. 2840 DATA .78, -20.2606, 10.1813
  286. 2850 DATA .79, -19.4016, 11.2506
  287. 2860 :
  288. 2870 DATA .80, -18.4922, 12.2574
  289. 2880 DATA .81, -17.5345, 13.1984
  290. 2890 DATA .82, -16.5337, 14.0734
  291. 2900 DATA .83, -15.4941, 14.8807
  292. 2910 DATA .84, -14.4207, 15.6184
  293. 2920 :
  294. 2930 DATA .85, -13.3162, 16.2864
  295. 2940 DATA .86, -12.1855, 16.8832
  296. 2950 DATA .87, -11.0330, 17.4079
  297. 2960 DATA .88, -9.8640, 17.8597
  298. 2970 DATA .89, -8.6809, 18.2391
  299. 2980 :
  300. 2990 DATA .90, -7.4896, 18.5454
  301. 3000 DATA .91, -6.2939, 18.7768
  302. 3010 DATA .92, -5.0977, 18.9360
  303. 3020 DATA .93, -3.9052, 19.0238
  304. 3030 DATA .94, -2.7212, 19.0409
  305. 3040 :
  306. 3050 DATA .95, -1.5478, 18.9887
  307. 3060 DATA .96, -0.3900, 18.8686
  308. 3070 DATA .97, 0.7486, 18.6819
  309. 3080 DATA .98, 1.8635, 18.4307
  310. 3090 DATA .99, 2.9528, 18.1166
  311. 3100 :
  312. 3110 DATA 1.00, 4.0116, 17.7420
  313. 3120 DATA 1.01, 5.0360, 17.3073
  314. 3130 DATA 1.02, 6.0244, 16.8167
  315. 3140 DATA 1.03, 6.9738, 16.2728
  316. 3150 DATA 1.04, 7.8808, 15.6788
  317. 3160 :
  318. 3170 DATA 1.05, 8.7444, 15.0368
  319. 3180 DATA 1.06, 9.5616, 14.3502
  320. 3190 DATA 1.07, 10.3300, 13.6222
  321. 3200 DATA 1.08, 11.0473, 12.8566
  322. 3210 DATA 1.09, 11.7126, 12.0554
  323. 3220 :
  324. 3230 DATA 1.10, 12.3236, 11.2233
  325. 3240 DATA 1.11, 12.8772, 10.3624
  326. 3250 DATA 1.12, 13.3742, 9.4769
  327. 3260 DATA 1.13, 13.8139, 8.5703
  328. 3270 DATA 1.14, 14.1952, 7.6469
  329. 3280 :
  330. 3290 DATA 1.15, 14.5182, 6.7088
  331. 3300 DATA 1.16, 14.7824, 5.7604
  332. 3310 DATA 1.17, 14.9876, 4.8051
  333. 3320 DATA 1.18, 15.1339, 3.8473
  334. 3330 DATA 1.19, 15.2219, 2.8891
  335. 3340 :
  336. 3350 DATA 1.20, 15.2518, 1.9351
  337. 3360 DATA 1.21, 15.2224, 0.9886
  338. 3370 DATA 1.22, 15.1367, 0.0527
  339. 3380 DATA 1.23, 14.9957, -0.8697
  340. 3390 DATA 1.24, 14.8009, -1.7747
  341. 3400 :
  342. 3410 DATA 1.25, 14.5535, -2.6605
  343. 3420 DATA 1.26, 14.2553, -3.5237
  344. 3430 DATA 1.27, 13.9081, -4.3612
  345. 3440 DATA 1.28, 13.5141, -5.1700
  346. 3450 DATA 1.29, 13.0748, -5.9485
  347. 3460 :
  348. 3470 DATA 1.30, 12.5930, -6.6930
  349. 3480 DATA 1.31, 12.0693, -7.4008
  350. 3490 DATA 1.32, 11.5076, -8.0708
  351. 3500 DATA 1.33, 10.9104, -8.7012
  352. 3510 DATA 1.34, 10.2808, -9.2899
  353. 3520 :
  354. 3530 DATA 1.35, 9.6207, -9.8361
  355. 3540 DATA 1.36, 8.9333, -10.3379
  356. 3550 DATA 1.37, 8.2216, -10.7941
  357. 3560 DATA 1.38, 7.4890, -11.2033
  358. 3570 DATA 1.39, 6.7374, -11.5652
  359. 4000 SCREEN 0,0,0:SOUND 1510,10:COLOR 7,0:LOCATE 25,10:PRINT "Key: Esc to End or `R' to Run Again or `S' to Return Start";CHR$(29);:COLOR 15,0:LOCATE 25,15:PRINT "Esc";:LOCATE 25,30:PRINT "R";:LOCATE 25,50:PRINT "S";CHR$(29);:COLOR 7,0
  360. 4010 E$=INKEY$:IF E$="" THEN 4010 ELSE IF E$=CHR$(27) THEN CLS:END ELSE IF E$="R" OR E$="r" THEN RUN ELSE IF E$="S" OR E$="s" THEN RUN "START
  361. 4020 GOTO 4010
  362. 4030 '//////////////// Routine to Draw a Box //////////////////
  363. 4040 LOCATE Y1,X1+1:PRINT STRING$(X2-X1-1,"─");:LOCATE Y1,X1:PRINT "┌";:LOCATE Y1,X2:PRINT "╖";:FOR I= Y1+1 TO Y2-1:LOCATE I,X1:PRINT "│";:LOCATE I,X2:PRINT "║";:NEXT:LOCATE Y2,X1:PRINT "╘";:LOCATE Y2,X1+1
  364. 4050 PRINT STRING$(X2-X1-1,"═");:LOCATE Y2,X2:PRINT "╝";:RETURN
  365. 4100 SCREEN 0,0,0:COLOR 31,1:LOCATE 24,1:PRINT "Fault Detected";CHR$(29);:COLOR 7,0
  366. 4110 RESUME 4000
  367.