home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Antennas
/
Antennas_CD-ROM_Walnut_Creek_September_1996.iso
/
public
/
hopkins
/
filter.bas
< prev
next >
Wrap
BASIC Source File
|
1996-06-30
|
11KB
|
292 lines
10 CLS
20 REM*******************************
30 PRINT
40 REM DESIGNS INTERDIGITAL FILTERS
50 REM HAM RADIO JANUARY 1985
60 REM*******************************
70 PRINT
80 DEF FNRJ (TA, B, C, D) = (B * C - TA * D) / (C * C + D * D)
90 REM G VALUES BASED ON RIPPLE BW . Q/COUP ON 3-BD
100 REM USING EQUAL DIAMETER RODS
110 DIM G(200), C(200), RK(200), AK(200), FR(40), ALOSS(40)
120 DIM A(200), B(200)
130 PI = 3.14159265#
140 PRINT
150 PRINT
160 PRINT "DIMENSIONS IN INCHES"
170 PRINT
180 INPUT "# OF ELEMENTS & P-P RIPPLE IN PASSBAND (DB)"; N, RIP
190 REM
200 INPUT "INPUT FILTER CENTER FREQ. (GHZ) ,BW (MHZ) & LOAD IMPEDANCE Zo. "; FZGC, BWMC, R
210 REM
220 PRINT "INPUT GROUND PLANE SPACING , ROD DIAMETER"
230 INPUT "&DISTANCE TO CENTER OF FIRST AND LAST ROD "; H, D, E
240 REM
250 INPUT "No. OF FREQ. REJECTION PTS AND STEP SIZE (MHZ)"; NFR, STP
260 PRINT
270 PRINT " CALCULATION PROCEEDING PLEASE WAIT"
280 PRINT
290 FOR IP = -NFR / 2 TO NFR / 2
300 COUNTER = COUNTER + 1
310 FR(COUNTER) = FZGC + (STP * .001 * IP)
320 NEXT IP
330 IDAT = 1
340 GOTO 350
350 F1 = FZGC - .0005 * BWMC
360 F2 = FZGC + .0005 * BWMC
370 IF RIP > 0 THEN GOTO 430
380 BW3GC = F2 - F1
390 BWRGC = 0
400 BW3 = 1
410 GOSUB 2070
420 GOTO 490
430 B = 1 / SQR(10 ^ (.1 * RIP) - 1)
440 CA = LOG(B + SQR(B * B - 1)) / (N)
450 BW3 = (EXP(CA) + EXP(-CA)) / 2
460 GOSUB 1860
470 BWRGC = F2 - F1
480 BW3GC = BWRGC * BW3
490 REM
500 W = 2 * (F2 - F1) / (F2 + F1)
510 QF = FZGC / BW3GC
520 NFM = N - 1
530 QWVL = 11.8028 / (4 * FZGC)
540 FOR K = 1 TO NFM
550 AK(K) = 1 / (BW3 * SQR(G(K) * G(K + 1)))
560 RK(K) = AK(K) / QF
570 NEXT K
580 AKO = G(1) * BW3
590 AK(N) = AKO
600 AK(N + 1) = 0
610 QS = G(1) * BW3 * QF
620 CANH = (EXP(2 * PI * E / H) - 1) / (EXP(2 * PI * E / H) + 1)
630 ZM = 59.9585 * LOG(4 * H / (PI * D))
640 ZE = 59.9585 * LOG(CANH * H * 4 / (PI * D))
650 RKM = RK(1) * SQR(ZM / ZE)
660 Z = PI * D / (2 * H)
670 COTH = (EXP(Z) + 1) / (EXP(Z) - 1)
680 Y = PI * RKM / 4
690 T = COTH ^ Y
700 C(1) = (H / PI) * LOG((T + 1) / (T - 1))
710 MFL = N - 2
720 REM IF N-3<0 THEN AG=1 ELSE IF N-1=0 THEN AG=2 ELSE AG=3
730 ON (2 + SGN(N) * 1) GOTO 790, 790, 740
740 FOR K = 2 TO MFL
750 Y = PI * RK(K) / 4
760 T = COTH ^ Y
770 C(K) = (H / PI) * LOG((T + 1) / (T - 1))
780 NEXT K
790 C(N - 1) = C(1)
800 X = SQR(PI * R / (4 * ZE * QS))
810 AQ = 2 * QWVL * ATN(X / SQR(1 - X * X)) / PI
820 QU = 2200 * H * SQR(FZGC)
830 SUMG = 0
840 FOR J1 = 1 TO N
850 SUMG = SUMG + G(J1)
860 NEXT J1
870 BLOSS = 4.34 * FZGC * SUMG / (QU * (F2 - F1))
880 DELAY = SUMG / (2 * PI * (F2 - F1))
890 IF RIP > 0 THEN GOTO 920
900 PRINT "DESIGN DATA FOR "; N; " POLE INTERDIGITAL FILTER. BUTTERWORTH RESPONSE"
910 GOTO 930
920 PRINT "DESIGN DATA FOR "; N; " POLE INTERDIGITAL FILTER . BAND PASS RIPPLE "; RIP; " DB"
930 PRINT "CENTER FREQ. "; FZGC; " GHZ"
940 PRINT "CUTOFF FREQ. "; F1; " GHZ AND "; F2; " GHZ"
950 PRINT " RIPPLE BW. "; BWRGC; " GHZ"
960 PRINT " 3 DB BW. "; BW3GC; " GHZ"
970 PRINT "FRACTIONAL BW "; W
980 PRINT " FILTER Q "; QF
990 PRINT " EST QU "; QU
1000 PRINT "LOSS BASED ON QU "; BLOSS; " DB"
1010 PRINT "DELAY AT BAND CENTER "; DELAY; " NANOSECONDS"
1020 FOR JK = 1 TO NFR
1030 IF JK = 1 THEN PRINT "FREQUENCY REJECTION INFORMATION "
1040 NFN = ABS(2 * (FR(JK) - FZGC) / (W * FZGC))
1050 IF RIP > 0 THEN GOTO 1080
1060 ALOSS(JK) = 10 * LOG(1 + NFN ^ (2 * N)) / LOG(10)
1070 GOTO 1120
1080 IF NFN < 1 THEN NFN = 1
1090 ANG = N * LOG(NFN + SQR(NFN * NFN - 1))
1100 YAK = .5 * (EXP(ANG) + EXP(-ANG))
1110 ALOSS(JK) = 10 * LOG(1 + (10 ^ (.1 * RIP) - 1) * YAK * YAK) / LOG(10)
1120 IF ALOSS(JK) > 65 THEN ALOSS = 65 ELSE ALOSS = ALOSS(JK)
1130 FR = INT(FR(JK) * 10000) / 10000: ALOS = INT(ALOSS(JK))
1140 PRINT TAB(INT(ALOSS)); "*"; TAB(66); FR; TAB(73); ALOS
1150 NEXT JK
1160 WO = 2 * PI * FZGC * 1E+09
1170 F = D / H
1180 CF = (-.0000422 + .0857397 * F + .0067853 * F * F - .0909217 * F ^ 3 + .169088 * F ^ 4) * PI * H * 2.54
1190 REM
1200 WW = WO * 1E-12
1210 B2 = PI * AQ / (2 * QWVL)
1220 GG = 1 / R
1230 BB = -COS(B2) / (ZE * SIN(B2))
1240 EL1 = .8 * QWVL
1250 ANG = EL1 * PI / (2 * QWVL)
1260 B1 = ANG - B2
1270 YL = -COS(ANG) / (ZM * SIN(ANG))
1280 CP = WW * (CF + .17655 * D * D / (QWVL - EL1))
1290 Y1 = CP + YL
1300 EL2 = .87 * QWVL
1310 ANG = EL2 * PI / (2 * QWVL)
1320 B4 = ANG - B2
1330 YL = -COS(ANG) / (ZM * SIN(ANG))
1340 CD = WW * (CF + .17655 * D * D / (QWVL - EL2))
1350 Y2 = CD + YL
1360 EL3 = .95 * QWVL
1370 ANG = EL3 * PI / (2 * QWVL)
1380 B5 = ANG - B2
1390 YL = -COS(ANG) / (ZM * SIN(ANG))
1400 CQ = WW * (CF + .17655 * D * D / (QWVL - EL3))
1410 Y3 = CQ + YL
1420 ELEM = Y3 * Y2 * EL1 / ((Y1 - Y2) * (Y1 - Y3)) + Y1 * Y3 * EL2 / ((Y2 - Y1) * (Y2 - Y3)) + Y1 * Y2 * EL3 / ((Y3 - Y1) * (Y3 - Y2))
1430 TANN = SIN(B1) / COS(B1)
1440 YL = FNRJ(GG, BB + TANN / ZE, 1 - ZE * BB * TANN, ZE * GG * TANN)
1450 Y1 = CP + YL
1460 TANN = SIN(B4) / COS(B4)
1470 YL = FNRJ(GG, BB + TANN / ZE, 1 - ZE * BB * TANN, ZE * GG * TANN)
1480 Y2 = CD + YL
1490 TANN = SIN(B5) / COS(B5)
1500 IF ALOSS(JK) > 65 THEN ALOSS = 65 ELSE ALOSS = ALOSS(JK)
1510 FR = INT(FR(JK) * 10000) / 10000: ALOS = INT(ALOSS(JK))
1520 YL = FNRJ(GG, BB + TANN / ZE, 1 - ZE * BB * TANN, ZE * GG * TANN)
1530 Y3 = CQ + YL
1540 ELEQ = Y3 * Y2 * EL1 / ((Y1 - Y2) * (Y1 - Y3)) + Y1 * Y3 * EL2 / ((Y2 - Y1) * (Y2 - Y3)) + Y1 * Y2 * EL3 / ((Y3 - Y1) * (Y3 - Y2))
1550 REM
1560 PRINT "QUATER WAVELENGTH ="; QWVL; " INCHES"
1570 PRINT "THE LENGTH OF THE INTERIOR ELEMENTS ="; ELEM; " INCHES"
1580 PRINT " LENGTH OF END ELEMENTS ="; ELEQ; " INCHES"
1590 PRINT " GROUND PLANE SPACE ="; H; " INCHES"
1600 PRINT " ROD DIAMETER ="; D; " INCHES"
1610 PRINT " END PLATES "; E; " INCHES FROM C/L OF END ROD"
1620 PRINT "TAP EXTERNAL LINES UP "; AQ; " INCHES FROM SHORTED END "
1630 PRINT "LINE IMPEDANCES: END ROD "; ZE; " ,OTHER "; ZM; " , EXT. LINES "; R; " OHM"
1640 PRINT "DIMENSIONS"
1650 PRINT "EL.No. END TO C C TO C G(K) Q/COUP"
1660 DOM = E
1670 GOO = 1
1680 PRINT "0"; TAB(41); GOO; TAB(55); AKO
1690 PRINT "1"; TAB(16); E; TAB(41); G(1); TAB(55); AK(1)
1700 FOR K = 1 TO NFM
1710 L = K + 1
1720 PRINT TAB(28); C(K)
1730 DOM = DOM + C(K)
1740 PRINT L; TAB(16); DOM; TAB(41); G(L); TAB(55); AK(L)
1750 NEXT K
1760 LQ = N + 1
1770 PRINT LQ; TAB(41); G(LQ)
1780 DOM = DOM + E
1790 PRINT TAB(16); DOM
1800 IF IDAT = 1 THEN GOTO 2180
1810 REM
1820 REM
1830 REM DEFINE FUNCTION
1840 REM DEF FNRJ (TA, B, C, D) = (B * C - TA * D) / (C * C + D * D)
1850 END
1860 REM SUB CHEB
1870 REM
1880 C = 2 * RIP / 17.37
1890 BETA = LOG((EXP(C) + 1) / (EXP(C) - 1))
1900 GAMMA = .5 * (EXP(BETA / (2 * N)) - EXP(-BETA / (2 * N)))
1910 FOR K = 1 TO N
1920 A(K) = SIN(.5 * (2 * K - 1) * PI / N)
1930 B(K) = GAMMA ^ 2 + SIN(K * PI / N) ^ 2
1940 NEXT K
1950 G(1) = 2 * A(1) / GAMMA
1960 FOR K = 2 TO N
1970 G(K) = 4 * A(K - 1) * A(K) / (B(K - 1) * G(K - 1))
1980 NEXT K
1990 NN = N / 2
2000 NNN = (N + 1) / 2
2010 REM IF NNN-NN<0 THEN AG=1 ELSE IF NNN-NN=0 THEN AG1=2 ELSE AG1=3
2020 ON (2 + SGN(NNN - NN) * 1) GOTO 2030, 2030, 2050
2030 G(N + 1) = ((EXP(BETA / 2) + 1) / (EXP(BETA / 2) - 1)) ^ 2
2040 RETURN
2050 G(N + 1) = 1
2060 RETURN
2070 REM SUB FOR BUTT
2080 REM
2090 REM
2100 REM
2110 REM
2120 POV2 = 1.57079633#
2130 FOR K = 1 TO N
2140 G(K) = 2 * SIN(POV2 * (2 * K - 1) / N)
2150 NEXT K
2160 G(N + 1) = 1
2170 RETURN
2180 INPUT " IS HARD COPY REQUIRED "; HC$
2190 IF HC$ = "Y" OR HC$ = "y" THEN GOTO 2240
2200 IF HC$ = "N" OR HC$ = "n" THEN GOTO 150
2210 PRINT " PLEASE ANSWER Y OR N"
2220 GOTO 2180
2230 PRINT : PRINT : PRINT : PRINT : PRINT
2240 IF RIP > 0 THEN GOTO 2270
2250 LPRINT "DESIGN DATA FOR "; N; " POLE INTERDIGITAL FILTER. BUTTERWORTH RESPONSE"
2260 GOTO 2280
2270 LPRINT "DESIGN DATA FOR "; N; " POLE INTERDIGITAL FILTER. BAND-PASS RIPPLE "; RIP; " DB"
2280 LPRINT
2290 LPRINT " CENTER FREQ. "; FZGC; " GHZ"
2300 LPRINT " CUTOFF FREQ. "; F1; " GHZ AND "; F2; " GHZ."
2310 LPRINT " RIPPLE B.W. "; BWRGC; " GHZ"
2320 LPRINT " 3DB B.W. "; BW3GC; " GHZ"
2330 LPRINT "FRACTIONAL BW "; W
2340 LPRINT " FILTER Q "; QF
2350 LPRINT " EST QU "; QU
2360 LPRINT "LOSS BASED ON QU "; BLOSS; " DB"
2370 LPRINT "DELAY AT BAND CENTER "; DELAY; " NANOSECONDS"
2380 LPRINT
2390 FOR JK = 1 TO NFR
2400 IF JK = 1 THEN LPRINT " FREQUENCY REJECTION INFORMATION "
2410 LPRINT
2420 NFN = ABS(2 * (FR(JK) - FZGC) / (W * FZGC))
2430 IF RIP > 0 THEN GOTO 2460
2440 ALOSS(JK) = 10 * LOG(1 + NFN ^ (2 * N)) / LOG(10)
2450 GOTO 2500
2460 IF NFN < 1 THEN NFN = 1
2470 ANG = N * LOG(NFN + SQR(NFN * NFN - 1))
2480 YAK = .5 * (EXP(ANG) + EXP(-ANG))
2490 ALOSS(JK) = 10 * LOG(1 + (10 ^ (.1 * RIP) - 1) * YAK * YAK) / LOG(10)
2500 IF ALOSS(JK) > 65 THEN ALOSS = 65 ELSE ALOSS = ALOSS(JK)
2510 FR = INT(FR(JK) * 10000) / 10000: ALOS = INT(ALOSS(JK))
2520 LPRINT TAB(INT(ALOSS)); "*"; TAB(66); FR; TAB(73); ALOS
2530 NEXT JK
2540 LPRINT
2550 LPRINT
2560 LPRINT
2570 LPRINT " QUARTER WAVELENGTH ="; QWVL; " INCHES"
2580 LPRINT "LENGTH OF INTERIOR ELEMENTS ="; ELEM; " INCHES"
2590 LPRINT "LENGTH OF END ELEMENTS ="; ELEQ; " INCHES"
2600 LPRINT " GROUND PLANE SPACE ="; H; " INCHES"
2610 LPRINT " ROD DIAMETER ="; D; " INCHES"
2620 LPRINT " END PLATES ="; E; " INCHES FROM C/L OF END ROD"
2630 LPRINT
2640 LPRINT " TAP EXTERNAL LINES UP "; AQ; " INCHES FROM SHORTED END."
2650 LPRINT
2660 LPRINT " LINE IMPEDANCES:--"
2670 LPRINT " END ROD "; ZE; " OHMS"
2680 LPRINT " OTHER "; ZM; " OHMS"
2690 LPRINT " EXT LINES "; R; " OHMS"
2700 LPRINT
2710 LPRINT " DIMENSIONS :--"
2720 LPRINT
2730 LPRINT " CENTER"
2740 LPRINT "ELEMENT END TO TO COUPLING COEFFICIENTS "
2750 LPRINT "NUMBER CENTER CENTER G(K) Q/COUP "
2760 DOM = E
2770 GOO = 1
2780 LPRINT " 0"; TAB(41); GOO; TAB(55); AKO
2790 LPRINT " 1"; TAB(16); E; TAB(41); G(1); TAB(55); AK(1)
2800 FOR K = 1 TO NFM
2810 L = K + 1
2820 LPRINT TAB(28); C(K)
2830 DOM = DOM + C(K)
2840 LPRINT L; TAB(16); DOM; TAB(41); G(L); TAB(55); AK(L)
2850 NEXT K
2860 LQ = N + 1
2870 LPRINT LQ; TAB(41); G(LQ)
2880 DOM = DOM + E
2890 LPRINT TAB(16); DOM
2900 RUN "MENU"