10 REM ELLIPTIC.BAS 20 REM WRITTEN BY RUSS KINCAID, AUGUST 1997. BASED ON INFO FROM 30 REM "SIMPLIFIED MODERN FILTER DESIGN" BY PHILLIP GEFFE (RIDER 1963) 40 CLS : PRINT "ELLIPTIC FUNCTION FILTERS DESIGNED FROM TABLES" 50 PRINT "FOR LOWPASS ENTER (1) FOR BANDPASS ENTER (2)": INPUT TTYPE 60 PRINT : PRINT "CAPACITOR INPUT CONFIGURATION IS ASSUMED" 70 PRINT "THE BANDPASS CAN MATCH A WIDE RANGE OF Z, BUT THE LOPASS HAS" 80 PRINT "LIMITED CAPABILITY, SEE THE TABLES" 90 PI = 3.1415927# 100 DIM C(11), L(11), CC(11), LL(11), LP(11), CS(11), L0(11) 110 INPUT "WHAT WILL YOU CALL THIS DESIGN "; NAM$ 120 INPUT "SOURCE RESISTANCE:"; RS 130 INPUT "LOAD RESISTANCE:"; RL 140 IF TTYPE = 1 THEN 200 150 INPUT "LOWER BANDEDGE FREQUENCY (F1) (HZ) "; F1 160 INPUT "UPPER BANDEDGE FREQUENCY (F2) (HZ) "; F2 170 BW = F2 - F1: F0 = (F1 * F2) ^ .5: W = 2 * PI * F0: Q = F0 / BW 180 PRINT : PRINT "CENTER FREQUENCY IS : "; F0 190 GOTO 220 200 INPUT "UPPER BANDEDGE FREQUENCY(HZ) : "; FU 210 WU = 2 * PI * FU 220 PRINT "ENTER THE NORMALIZED PROTOTYPE VALUES FROM TABLES." 230 PRINT "TO END THE INPUT CYCLE, ENTER ZERO OR JUST PRESS ENTER" 240 FOR J = 1 TO 9 250 PRINT "INPUT C("; J; "):"; : INPUT C(J) 260 IF INT(J / 2) = J / 2 AND C(J) = 0 THEN 290 270 IF C(J) = 0 THEN 320 280 IF INT(J / 2) <> J / 2 THEN 310 290 PRINT "INPUT L("; J; "):"; : INPUT L(J) 300 IF L(J) = 0 THEN 320 310 NEXT J 320 N = J - 1: IF TTYPE = 2 THEN 540 330 REM LOPASS OUTPUT 340 LPRINT NAM$ 350 LPRINT "DESIGN DATE: "; DATE$ 360 LPRINT "ELLIPTIC FUNCTION FILTER OF "; N; " POLES" 370 LPRINT "THIS IS THE SCHEMATIC:" 380 LPRINT " |-L2-| |-L4-| ETC" 390 LPRINT "----|--------| |----|-----| |--- Ln(EVEN ONLY) " 400 LPRINT " C1 |-C2-| C3 |-C4-| ETC" 410 LPRINT " | |" 420 LPRINT "--------------------------------------ETC" 430 LPRINT "LOWPASS TO "; FU; " HZ" 440 LPRINT "SOURCE RESISTANCE = "; RS 450 LPRINT "LOAD RESISTANCE = "; RL 460 LPRINT : LPRINT "COMPONENT VALUES:" 470 FOR J = 1 TO N 480 LPRINT "C("; J; ") = "; C(J) / RS / WU 490 IF INT(J / 2) <> J / 2 THEN 510 500 LPRINT "L("; J; ") = "; L(J) * RS / WU 510 NEXT J 520 IF TTYPE = 1 THEN 1390 530 REM BANDPASS ROUTINE: RESONATE ALL ELEMENTS 540 FOR J = 1 TO N 550 IF J = N AND INT(N / 2) = N / 2 THEN 620 560 IF J / 2 = INT(J / 2) THEN 590 570 C(J) = C(J) * Q 580 L(J) = 1 / C(J): GOTO 610 590 L(J) = Q * L(J): C(J) = Q * C(J) 600 CS(J) = 1 / L(J): LP(J) = 1 / C(J) 610 NEXT J: GOTO 630 620 L(N) = Q * L(N): C(N) = 1 / L(N) 630 REM LPRINT"J","C","L","CS","LP" 640 REM FOR J=1 TO N:LPRINT J,C(J),L(J),CS(J),LP(J):NEXT J 650 REM TRANSFORM HORIZONTAL ELEMENTS 660 FOR J = 2 TO N STEP 2 670 IF J > N THEN 830 680 IF LP(J) = 0 THEN 770 690 X = L(J) / LP(J) 700 A = 1 + 1 / 2 / X 710 B = (A ^ 2 - 1) ^ .5 720 Y = A + B 730 L0(J) = 1 / (Y + 1) 740 LT1(J) = L0(J) * LP(J): LT2(J) = Y * L0(J) * LP(J) 750 REM PRINT"LT1=";LT1(J),"LT2=";LT2(J),"L1=";L(J);" MUST BE GREATER THAN L2" 760 CT2(J) = 1 / LP(J) / L0(J): CT1(J) = 1 / LP(J) / L0(J) / Y 770 NEXT J 780 REM LPRINT J,"SHUNT C","SHUNT L","LT1","CT1","LT2","CT2" 790 REM FOR J=1 TO N:LPRINT J,C(J),L(J),LT1(J),CT1(J),LT2(J),CT2(J):NEXT J 800 REM THE FIRST TRANSFORMATION (BELOW) DOES WORK NOW. 810 PRINT "PHI IS A FREE CHOICE VARIABLE, 0