Hello Rob.
02 Nov 97 16:28, Rob Dennis wrote to Ivy Iverson:
RD> under. Maybe a small note to state which version of BASIC and DOS the
RD> program can be run under will save time if someone runs it and has a
RD> problem with it crashing. GW-BASIC (early DOS 3.?? or DOS 5.0) BASIC
RD> programs will not run under MS-DOS 6.00 and up with the newer version
RD> of QBASIC and can hang and crash.
Here's a Log Periodic antenna program that Wayne could have used when he
built his. I built a small one for TV and it works great. I think this will
run under DOS 3.3's basic program. I used it with Qbasic.
=== Begin LPDA.BAS ===
10 REM Program to compute LPDA dimensions and parameters - KE3Z 3/12/87
15 DIM L(30),D(30)
20 DEF FNCOT(X)=COS(X)/SIN(X) 'Cotangent
30 DEF FNACOT(X)=ATN(1/X) 'Arc cotangent
40 DEF FNLG(X)=LOG(X)/LOG(10) 'Log base 10
50 DEF FNDEG(X)=X*(45/ATN(1)) 'Radians to degrees
60 DEF FNRAD(X)=X*(ATN(1)/45) 'Degrees to radians
70 PRINT:PRINT "Log-periodic dipole array calculations":PRINT
100 REM Set default values
110 TAU=.9
120 SIGMA=.05
130 R0=200
140 ELDIA=.125
145 FDIA=.125
150 REM Get user inputs
160 GOSUB 1500 'Frequency range
170 GOSUB 1000 'TAU
180 GOSUB 1070 'SIGMA
190 REM Calculate array size
200 GOSUB 2000
210 GOSUB 1700
220 S$="TSAFX"
230 PRINT "Change T)au, S)igma, A)lpha or F)requency"
235 PRINT "calculate X)msn line or for element data";
240 INPUT X$:IF X$="" THEN 400
250 IF ASC(X$) >= ASC("a") THEN X$=CHR$(ASC(X$)-32)
260 FOR I=1 TO LEN(S$)
270 IF LEFT$(X$,1) = MID$(S$,I,1) THEN 300
280 NEXT I
290 GOTO 230
300 ON I GOSUB 1000,1070,1200,1500,320
310 GOTO 200
320 GOSUB 2200
325 GOSUB 2900
330 RETURN
400 FOR I=2 TO N+.5
410 L(I)=TAU*L(I-1)
420 NEXT I
430 D(2)=(L(1)-L(2))/2*COTALPHA
440 FOR I=3 TO N+.5
450 D(I)=TAU*D(I-1)
460 NEXT I
470 GOSUB 1700
480 IF CHGD=1 THEN GOSUB 2900
490 PRINT "El. Length";TAB(35);"Spacing"
500 FOR I=1 TO N+.5
510 PRINT I;TAB(5);:X=L(I):GOSUB 4000
515 PRINT TAB(35)
520 IF I=1 THEN PRINT " ---"; ELSE X=D(I):GOSUB 4000
525 PRINT
530 NEXT I
540 GOTO 230
990 END
1000 REM Get TAU from user
1010 PRINT "Enter TAU, 0.8 <= TAU < 1.0 (default";TAU;"): ";
1020 INPUT "",X
1030 IF X=0 THEN RETURN
1035 CHGD=1
1040 TAU=X
1050 RETURN
1070 REM Get SIGMA from user
1080 PRINT "Enter SIGMA, 0.05 <= SIGMA <";.258*TAU-.066;"(default";SIGMA;"):
";
1090 INPUT "",X
1100 IF X=0 THEN RETURN
1105 CHGD=1
1110 SIGMA = X
1120 RETURN
1200 REM Get ALPHA from user
1210 PRINT "Enter ALPHA (default";FNDEG(ALPHA);"): ";
1220 INPUT "",X
1230 IF X=0 THEN RETURN
1235 CHGD=1
1240 ALPHA=FNRAD(X)
1250 COTALPHA=FNCOT(ALPHA)
1260 SIGMA=(.25-TAU/4)*COTALPHA
1270 RETURN
1300 REM Get R0 from user
1310 PRINT "Enter desired R0 (default";R0;"): ";
1320 INPUT "",X
1330 IF X=0 THEN RETURN
1340 R0=X
1350 RETURN
1400 REM Get ELDIA from user
1410 PRINT "Enter element dia. in inches (default";ELDIA;"): ";
1420 INPUT "",X
1430 IF X=0 THEN RETURN
1440 ELDIA=X
1450 RETURN
1500 REM Get F1 and F2 from user
1510 PRINT "Enter lowest frequency";
1520 IF F10 THEN PRINT " (default";F1;")";
1530 INPUT ": ",X
1540 IF X=0 THEN IF F1=0 THEN 1510 ELSE 1560
1550 F1=X
1560 PRINT "Enter highest frequency";
1570 IF F20 THEN PRINT " (default";F2;")";
1580 INPUT ": ",X
1590 IF X=0 THEN IF F2=0 THEN 1570 ELSE RETURN
1600 F2=X
1610 RETURN
1700 REM Print array parameters
1705 PRINT
1710 PRINT "Frequency:",,F1;"to";F2:PRINT "Operating BW:",,B
1720 PRINT "Array BW:",,BAR:PRINT "Structure BW:",,BS
1730 PRINT "TAU:",,TAU:PRINT "SIGMA:",,SIGMA:PRINT "ALPHA:",,FNDEG(ALPHA)
1740 PRINT "Boom length: ",:X=L:GOSUB 4000:PRINT
1750 PRINT "Number of elements:",N
1755 PRINT "Longest element:",:X=L(1):GOSUB 4000:PRINT
1760 PRINT "Max. stub length:",:X=ZT:GOSUB 4000:PRINT
1770 RETURN
1800 REM Get feeder wire diameter
1810 PRINT "Enter feeder wire dia. in inches (default";FDIA;
1820 INPUT "): ",X
1830 IF X=0 THEN RETURN
1840 FDIA=X
1850 RETURN
1900 REM Get actual feeder spacing
1910 PRINT "Enter actual feeder spacing in inches (default =";FSPACT;
1920 INPUT "): ",X
1930 IF X=0 THEN RETURN
1940 FSPACT=X
1950 RETURN
2000 COTALPHA=(4*SIGMA)/(1-TAU)
2010 ALPHA=FNACOT(COTALPHA)
2020 B=F2/F1
2030 BAR=1.1+7.7*(1-TAU)^2*COTALPHA
2040 BS=B*BAR
2050 LAMBDAMAX=984/F1
2060 L=(.25-1/(4*BS))*COTALPHA*LAMBDAMAX
2070 N=1+FNLG(BS)/FNLG(1/TAU)
2080 L(1)=492/F1
2090 ZT=LAMBDAMAX/8
2100 RETURN
2200 REM Calculate Z0 and elements
2205 CHGD=0
2210 GOSUB 1300
2220 GOSUB 1400
2230 SIGMAP=SIGMA/SQR(TAU)
2240 ZAV=120*(LOG((246/SQR(F2*F1))/(ELDIA/12))-2.25)
2250 ZX=R0/(8*SIGMAP*ZAV)
2260 Z0=ZX*R0+R0*SQR(ZX*ZX+1)
2265 Z0ACT=Z0
2270 GOSUB 1800
2280 FSP=FDIA/2*10^(Z0/276)
2285 FSPACT=FSP
2290 GOSUB 1900
2300 Z0ACT=276*FNLG(2*FSPACT/FDIA)
2310 R0ACT=Z0ACT/SQR(1+Z0ACT/(4*SIGMAP*ZAV))
2320 RETURN
2900 REM Print calculated feeder
2920 PRINT:PRINT "Required feeder spacing:",FSP;"in.","Actual:";FSPACT;"in."
2925 PRINT "Required feeder Z0:",Z0,"Actual:";Z0ACT
2927 PRINT "Desired R0:",,R0,"Actual:";R0ACT
2930 PRINT "SWR:",,:IF R0>R0ACT THEN PRINT R0/R0ACT ELSE PRINT R0ACT/R0
2940 RETURN
4000 REM print feet as feet and inches
4010 REM Enter with value to print in X
4015 IF INT(X)=0 THEN PRINT " ";:GOSUB 4040:RETURN
4020 PRINT MID$(STR$(INT(X)),1);" ft ";
4030 PRINT MID$(STR$(INT((X-INT(X))*1200)/100),2);" in";
4035 PRINT " (";:GOSUB 4040:PRINT")";:RETURN
4040 PRINT MID$(STR$(INT(X*1200)/100),2);" in";
4050 RETURN
=== End LPDA.BAS ===
... LOTUS - Let Only The Users Suffer
---------------
* Origin: KB6PI * HAM-ECHO Moderator * San Diego, CA * (1:202/909.10)
|