10 REM LCBP.BAS 20 CLS 30 PRINT "THIS PROGRAM DESIGNS A BANDPASS FILTER FROM BUTTERWORTH OR 40 PRINT" TCHEBYCHEV ALL POLE TABLES PER JEFFE. " 50 REM WRITTEN BY RUSS KINCAID APR 1997 REV 5/11/99 60 REM rev JAN 28, 2000 70 INPUT"WHAT WILL YOU CALL THIS FILTER ";NME$ 80 INPUT"WILL YOU TAP THE SHUNT INDUCTORS TO INCREASE THE L & REDUCE C ";Y$ 90 IF LEFT$(Y$,1)="N" OR LEFT$(Y$,1)="n" THEN Z=1:GOTO 120 94 PRINT:PRINT"THE DEFAULT IS 16. FOR NO TAP, USE 1" 100 INPUT"BY WHAT FACTOR WILL YOU INCREASE THE Z OF THE SHUNT ARMS [16] ";Z 110 IF Z=0 THEN Z=16 120 PI = 3.1415927# 130 INPUT "INPUT RESISTANCE "; RIN:PRINT 140 PRINT"RIN IS USED AS THE IMPEDANCE LEVEL, YOU CAN TRANSFORM IMPEDANCES BY" 142 PRINT"RUNNING THE PROGRAM TWICE, ONCE FOR EACH IMPEDANCE, AND PUTTING TWO" 144 PRINT"TAPS ON ONE OF THE SHUNT INDUCTORS. LOW Z ON ONE TAP, HI Z ON THE OTHER" 150 PRINT:REM NOT USED! INPUT "OUTPUT RESISTANCE "; ROUT 160 INPUT"WILL YOU SPECIFY F0 & BW (2) OR UPPER & LOWER BANDEGES (1) ";Y 170 ON Y GOTO 180,220 180 INPUT "UPPER BANDEDGE FREQUENCY"; F2 190 INPUT "LOWER BANDEDGE FREQUENCY"; F1 200 F0=SQR(F1*F2) 210 BW = F2 - F1: QC = F0 / BW :GOTO 350 220 INPUT"GIVE THE CENTER FREQ (HZ): ",F0 230 INPUT"GIVE THE BANDWIDTH (HZ) :",BW:QC=F0/BW 240 PRINT"THE PROTOTYPE CAN BE CAP INPUT OR INDUCTOR INPUT:" 250 PRINT "1";TAB(10);"----L2----L4--ETC" 260 PRINT " ";TAB(10);" | |" 270 PRINT " ";TAB(10);" C1 C3" 280 PRINT " ";TAB(10);" | |" 290 PRINT " ";TAB(10);" GND GND" :PRINT 300 PRINT "2";TAB(10);"----L1----L3--ETC" 310 PRINT " ";TAB(10);" | |" 320 PRINT " ";TAB(10);" C2 C4" 330 PRINT " ";TAB(10);" | |" 340 PRINT " ";TAB(10);" GND GND" :PRINT 350 INPUT"CAPACITOR INPUT (1) OR INDUCTOR INPUT (2)";Y 360 ON Y GOTO 370,890 370 IF Z=1 THEN 410 380 PRINT"THE ODD NUMBERED CAPS WILL BE DIVIDED BY A FACTOR (Z) THAT YOU HAVE" 390 PRINT"CHOOSEN. THE ODD NUMBERED INDUCTORS WILL BE TAPPED AT"; 1/(Z)^.5 400 PRINT"OF THE TURNS FROM THE GROUND END." 410 PRINT "INPUT TABLE VALUES:" 420 FOR J = 1 TO 9 STEP 2 430 PRINT "C"; J; " ="; : INPUT C(J): C(J) = C(J)*QC 440 N = J - 1 450 IF C(J) = 0 THEN 470 460 GOTO 520 470 FOR Q = 2 TO 10 STEP 2: PRINT "L"; Q; " ="; : INPUT L(Q) 480 L(Q) = L(Q)*QC 490 M = Q - 1 500 IF L(Q) = 0 THEN 530 510 NEXT Q 520 NEXT J 530 W0= 2 * PI* F0 550 REM NOW RESONATE ALL ELEMENTS: SERIES CAP WITH INDUCTORS, 560 REM PARALELL INDUCTOR WITH CAPS 570 FOR J = 1 TO N-1 STEP 2: LB(J) = 1 / C(J): NEXT J 580 FOR Q = 2 TO M-1 STEP 2: CB(Q) = 1 / L(Q):NEXT Q 590 CLS:LPRINT NME$:LPRINT DATE$ 594 LPRINT "THIS IS THE SCHEMATIC:" :LPRINT 600 IF Z=1 THEN GOSUB 1430 610 LPRINT" __________________ ____________" 620 LPRINT" | | | |" 630 LPRINT" | C1 | C3" 640 LPRINT"UPPER L1 | UPPER L3 |" 650 LPRINT" | G | G" 660 LPRINT" | |" 670 LPRINT"-----------L2----CB2--------------------L4-----CB4-" 680 LPRINT" | |" 690 LPRINT"LOWER L1 LOWER L3" 700 LPRINT" | |" 710 LPRINT" G G" 720 LPRINT:LPRINT "SOURCE & LOAD RESISTANCE = ";RIN 730 LPRINT "BANDWIDTH IS: ";BW 740 LPRINT "CENTER FREQUENCY IS: ";F0 750 LPRINT 760 LPRINT : LPRINT "BANDPASS VALUES:" 770 LPRINT "SECTION", "CAPS ", "B CAPS ", "INDUCT ", "B INDUCT " 780 FOR W = 1 TO M :NUM=C(W)/W0/RIN/Z :GOSUB 1484 790 LPRINT W,NUM;UNIT$;"F", 792 NUM=CB(W)/W0/RIN:GOSUB 1484 794 LPRINT NUM;UNIT$;"F", 796 NUM= L(W)*RIN/W0:GOSUB 1484 :LS(W)=NUM:LS$(W)=UNIT$ 800 LPRINT NUM;UNIT$;"H", 802 NUM= Z*LB(W)*RIN/W0:GOSUB 1484:LBS(W)=NUM 804 LPRINT NUM;UNIT$;"H" 810 NEXT W 811 LPRINT:LPRINT"THE ODD NUMBERED INDUCTORS ARE TAPPED AT";1/(Z)^.5;" FROM THE GROUND END" 812 LPRINT:LPRINT "LOWPASS PROTOTYPE VALUES:" 813 LPRINT "SECTION","VALUE" 814 FOR J=1 TO N STEP 2:LPRINT J,C(J)/QC:NEXT J 816 FOR J=2 TO M STEP 2:LPRINT J,L(J)/QC:NEXT J 818 IF Z=1 GOTO 1610 830 LPRINT:LPRINT"FOR SPICE SIMULATION,USE THE VALUES AS SHOWN IN THE SCHEMATIC:" 834 LPRINT "USE UNITY COUPLING, K=1" 840 LPRINT"SERIES L","UPPER L","L TO GND" 850 LPRINT:FOR W=1 TO M 870 LPRINT LS(W);LS$(W),:NUM= LBS(W)*(Z-Z^.5)^2/Z^2:GOSUB 1484 872 LPRINT NUM;UNIT$, 874 NUM=LBS(W)/Z:GOSUB 1484:LPRINT NUM;UNIT$ 876 NEXT W 880 GOTO 1610 890 IF Z=1 THEN 930 900 PRINT"THE EVEN NUMBERED CAPS WILL BE DIVIDED BY A FACTOR (Z) THAT YOU MAY" 910 PRINT"CHOOSE. THE EVEN NUMBERED INDUCTORS WILL BE TAPPED AT 1/(SQR ROOT Z)" 920 PRINT"OF THE TURNS FROM THE GROUND END." 930 PRINT "INPUT TABLE VALUES:" 940 FOR J = 1 TO 9 STEP 2 950 PRINT "L"; J; " ="; : INPUT L(J): L(J) = L(J)*QC 960 N = J - 1 970 IF L(J) = 0 THEN 990 980 GOTO 1040 990 FOR Q = 2 TO 10 STEP 2: PRINT "C"; Q; " ="; : INPUT C(Q) 1000 C(Q) = C(Q)*QC 1010 M = Q - 1 1020 IF C(Q) = 0 THEN 1050 1030 NEXT Q 1040 NEXT J 1050 W0 = 2 * PI* F0 1060 REM NOW RESONATE ALL ELEMENTS: SERIES CAP WITH INDUCTORS, 1070 REM PARALELL INDUCTOR WITH CAPS 1080 FOR J = 1 TO N-1 STEP 2: CB(J) = 1 / L(J): NEXT J 1090 FOR Q = 2 TO M-1 STEP 2: LB(Q) = 1 / C(Q):NEXT Q 1100 CLS : LPRINT NME$:LPRINT DATE$ 1104 LPRINT "THIS IS THE SCHEMATIC:" :LPRINT 1110 IF Z=1 THEN GOSUB 1370 1112 LPRINT" __________" 1120 LPRINT" | |" 1130 LPRINT" UPPER L C2" 1140 LPRINT" | |" 1150 LPRINT" | G" 1160 LPRINT"--L1----CB1--------------------L3-----CB3- ETC." 1170 LPRINT" | " 1180 LPRINT" LOWER L " 1190 LPRINT" | " 1200 LPRINT" G " 1220 LPRINT:LPRINT "SOURCE & LOAD RESISTANCE = ";RIN 1230 LPRINT "BANDWIDTH IS: ";BW 1240 LPRINT "CENTER FREQUENCY IS: ";F0 1250 LPRINT 1260 LPRINT : LPRINT "BANDPASS VALUES:" 1270 LPRINT "SECTION", "CAPS PF", "B CAPS PF", "INDUCT NH", "B INDUCT NH" 1280 FOR W = 1 TO M:LPRINT W, 1282 NUM=C(W)/Z/RIN/W0:GOSUB 1484:LPRINT NUM;UNIT$;"F", 1284 NUM=CB(W)/RIN/W0:GOSUB 1484:LPRINT NUM;UNIT$;"F", 1290 NUM=L(W)*RIN/W0:GOSUB 1484:LPRINT NUM;UNIT$;"H", 1292 NUM= Z*LB(W)*RIN/W0:GOSUB 1484:LPRINT NUM;UNIT$;"H" 1300 NEXT W 1301 LPRINT:LPRINT"THE EVEN NUMBERED INDUCTORS ARE TAPPED AT";1/(Z)^.5;" FROM THE GROUND END" 1302 LPRINT:LPRINT "LOWPASS PROTOTYPE VALUES:" 1303 LPRINT "SECTION","VALUE" 1304 FOR J=1 TO N STEP 2:LPRINT J,L(J)/QC:NEXT J 1306 FOR J=2 TO M STEP 2:LPRINT J,C(J)/QC:NEXT J 1308 IF Z=1 THEN 1610 1320 LPRINT:LPRINT"FOR SPICE SIMULATION,USE THE VALUES SHOWN IN THE SCHEMATIC:" 1322 LPRINT"USE UNITY COUPLING, K=1" 1330 LPRINT"UPPER L","L TO GND" 1340 LPRINT:FOR W=2 TO M STEP 2 1350 REM NUM=L(W)*RIN/W0:GOSUB 1484:LPRINT NUM;UNIT$;"H", 1352 REM NUM=Z*LB(W)*RIN/W0:GOSUB 1484:LPRINT NUM;UNIT$;"H", 1354 LBS(W)=Z*LB(W)*RIN/W0:NUM=LBS(W)*(Z-Z^.5)^2/Z^2:GOSUB 1484 1355 LPRINT NUM;UNIT$;"H", 1356 NUM=LB(W)/Z:GOSUB 1484:LPRINT NUM;UNIT$;"H" 1360 NEXT W : GOTO 1610 1370 LPRINT"--L1----CB1--------------------L3-----CB3-" 1380 LPRINT" | | " 1390 LPRINT" LB2 C2 " 1400 LPRINT" | | " 1410 LPRINT" G G " 1420 RETURN 1220 1430 LPRINT"-----------L2----CB2---------------L4-----CB4-" 1440 LPRINT" | | | |" 1450 LPRINT"LB1 C1 LB3 C3" 1460 LPRINT" | | | |" 1470 LPRINT" G G G G" 1480 RETURN 720 1481 REM ROUNDOFF.BAS 1482 REM A ROUTINE TO ROUNDOFF TO 3 DIGITS AND PUT IN KILO, NANO, PICO UNITS 1483 REM INPUT NUMBER IS "NUM" 1484 IF NUM=<1000 AND NUM>1 THEN 1492 1485 IF NUM=<1000000! AND NUM>1 THEN 1493 1486 IF NUM=<1E+09 AND NUM>1 THEN 1494 1487 IF NUM>1E+12 THEN 1495 1488 IF NUM=>.001 AND NUM<1 THEN 1496 1489 IF NUM=>.000001 AND NUM<1 THEN 1497 1490 IF NUM=>1E-09 AND NUM<1 THEN 1498 1491 IF NUM=>1E-12 AND NUM<1 THEN 1499 1492 UNIT$="" : GOTO 1500 1493 UNIT$="KILO": NUM=NUM/1000 : GOTO 1500 1494 UNIT$="MEG" : NUM=NUM/1000000! : GOTO 1500 1495 UNIT$="GIG" : NUM=NUM/1E+12 : GOTO 1500 1496 UNIT$="MILLI" : NUM=NUM*1000 :GOTO 1500 1497 UNIT$="MICRO" : NUM=NUM*1000000! : GOTO 1500 1498 UNIT$="NANO" : NUM=NUM*1E+09 : GOTO 1500 1499 UNIT$="PICO" : NUM=NUM*1E+12 : GOTO 1500 1500 IF NUM>0 AND NUM<10 THEN NUM=INT(NUM*100+.5)/100 1501 IF NUM>=10 AND NUM<100 THEN NUM=INT(NUM*10+.5)/10 1502 IF NUM>=100 AND NUM <1000 THEN NUM=INT(NUM+.5) 1503 RETURN 1600 REM LCBP.BAS 1610 LPRINT CHR$(12) 1620 CHAIN "FILTMENU" 1630 END