10 REM BANDSTOP.BAS
20 REM THIS PROGRAM ADDS TO THE HIPASS CALC TO MAKE A BANDSTOP FILTER
30 REM HIPASXFM.BAS MODIFIED JAN 2000
40 PI=3.14162
50 CLS:PRINT"THIS PROGRAM PRODUCES THE VALUES FOR A BANDSTOP FILTER, GIVEN"
60 PRINT"THE LOWPASS PROTOTYPE VALUES. REMEMBER THAT LOPASS INDUCTORS"
70 PRINT"BECOME BANDSTOP CAPACITORS & LOPASS CAPACITORS BECOME INDUCTORS."
80 PRINT"THE SHUNT ELEMENTS ARE SERIES RESONANT, SERIES ELEMENTS ARE PARALLEL"
90 PRINT"RESONANT"
100 PRINT""
110 INPUT"WILL YOU GIVE 3DB FREQS (1) OR CENTER FREQ & BANDWIDTH (2) ";A
120 ON A GOTO 180, 130
130 INPUT"CENTER FREQ = ";F0
140 INPUT"BANDWIDTH = ";BW
150 F1=-BW/2+(BW^2+4*F0^2)^.5/2:NUM=F1:GOSUB 1570: F1=NUM :F1$=UNIT$
155 NUM=BW:GOSUB 1570:WB=NUM:WB$=UNIT$
160 F2=F1+WB
170 QC=F0/BW : GOTO 200
180 INPUT"WHAT ARE THE 3DB FREQUENCIES (F1, F2) ";F1,F2
190 F0=SQR(F1*F2) :BW=F2-F1: QC=F0/BW
200 FC=1/2/PI/QC : WC=1/QC : W0=2*PI*F0
210 INPUT"WHAT IS THE IMPEDANCE LEVEL ";Z
215 NUM=F0:GOSUB 1570:FC=NUM:FC$=UNIT$
220 PRINT"IF THE LOPASS IMPEDANCE IS NOT ONE OHM, WHAT IS IT?"
230 INPUT"PRESS RETURN FOR 1 OHM OR ELSE ENTER NUMBER",R
240 IF R>1 THEN R=R ELSE R=1
250 PRINT"R=";R
260 INPUT"WHAT IS THE PROTOTYPE (BUTTERWORTH, CHEBYCHEV, ELIPTIC, ETC)";TYPE$
270 PRINT:PRINT:
280 PRINT"FOR INDUCTOR INPUT LOWPASS PROTOTYPE, ENTER 1."
290 PRINT"FOR CAPACITOR INPUT LOWPASS PROTOTYPE, ENTER 2."
300 INPUT"CAP INPUT (2) OR INDUCTOR INPUT (1)";TYPE
310 ON TYPE GOTO 320,920
320 FOR J=1 TO 10 STEP 2
330 PRINT"GIVE SECTION";J;" INDUCTANCE:";:INPUT LL(J)
334 IF LL(J)=0 THEN N=J-1:PRINT"N=";N:GOTO 400
340 PRINT"GIVE SECTION";J+1;" CAPACITANCE:";:INPUT CL(J+1)
360 IF CL(J+1)=0 THEN N=J:PRINT"N=";N:GOTO 400
370 NEXT J : N=J-1 : GOTO 400
390 REM FIRST FORM HIPASS PROTOTYPE BY INVERTING ELEMENTS
400 FOR J=1 TO N STEP 2
405 IF LL(J)=0 THEN 450
410 CH(J)=1/LL(J)
412 IF CL(J+1)=0 THEN 450
415 LH(J+1)=1/CL(J+1)
420 NEXT J
430 REM NOW CHANGE THE BANDEDGE TO BW/F0 (MULT ALL ELEMENTS BY F0/BW)
450 FOR J=1 TO N STEP 2
460 CH(J)=CH(J)*F0/BW:LH(J+1)=LH(J+1)*F0/BW
470 NEXT J
480 REM NOW FORM THE BANDSTOP PROTOTYPE BY RESONATING AT W=1
490 FOR J=1 TO N STEP 2
495 IF CH(J)=0 THEN 530
500 LBS(J)=1/CH(J)
504 IF LH(J+1)=0 THEN 530
506 CBS(J+1)=1/LH(J+1)
510 NEXT J
520 REM NOW SCALE FOR FREQ & IMPEDANCE
530 FOR J=1 TO N STEP 2
540 CH(J)=CH(J)/Z/W0 :NUM=CH(J):GOSUB 1570:CH(J)=NUM:CH$(J)=UNIT$
550 LBS(J)=LBS(J)*Z/W0 :NUM=LBS(J):GOSUB 1570:LBS(J)=NUM:LBS$(J)=UNIT$
560 LH(J+1)=LH(J+1)*Z/W0:NUM=LH(J+1):GOSUB 1570:LH(J+1)=NUM:LH$(J+1)=UNIT$
570 CBS(J+1)=CBS(J+1)/Z/W0:NUM=CBS(J+1):GOSUB 1570:CBS(J+1)=NUM:CBS$(J+1)=UNIT$
580 NEXT J
590 CLS
610 PRINT"BANDSTOP VALUES:"
620 FOR J=1 TO N STEP 2
630 PRINT J,"CS = ";CH(J);CH$(J),"LS = ";LBS(J);LBS$(J)
640 PRINT J+1,"CP = ";CBS(J+1);CBS$(J+1),"LP = ";LH(J+1);LH$(J+1)
650 NEXT J
660 INPUT"PREPARE THE PRINTER AND PRESS ENTER";Y$
670 OPEN "PRN" FOR OUTPUT AS #1
680 PRINT#1,TAB(20);TYPE$;" RESPONSE"
690 PRINT#1,:PRINT#1,TAB(20);"BANDSTOP FILTER VALUES"
700 PRINT#1, TAB(20);FC;" ";FC$;"HERTZ";" CENTER FREQUENCY
710 PRINT#1,TAB(20);"CUTOFF FREQUENCIES = ";F1;" ";F2 ;" ";F1$;"HERTZ"
720 PRINT#1,TAB(20);"IMPEDANCE LEVEL = ";Z;" OHMS"
730 PRINT:PRINT#1,"IF THE LOPASS PROTOTYPE LOOKS LIKE THIS:"
740 PRINT#1,"-----L-----|-------|"
750 PRINT#1," C |"
760 PRINT#1," | R"
770 PRINT#1," | |"
780 PRINT#1," GND GND"
790 PRINT#1,:PRINT#1,"THEN THE BANDSTOP LOOKS LIKE THIS:"
800 PRINT#1,
810 PRINT#1,"---|---CS--|----|-------|"
820 PRINT#1," |---LS--| LP R"
830 PRINT#1," | |"
840 PRINT#1," CP |"
850 PRINT#1," | |"
860 PRINT#1," GND GND"
865 PRINT#1,
870 FOR J=1 TO N STEP 2
880 PRINT#1, J,"CS = ";CH(J);CH$(J);"FARAD","LS = ";LBS(J);LBS$(J);"HENRY"
884 IF CBS(J+1)=0 THEN 910
890 PRINT#1, J+1,"CP = ";CBS(J+1);CBS$(J+1);"FARAD","LP = ";LH(J+1);LH$(J+1);"HENRY"
900 NEXT J
910 CLOSE#1 :GOTO 1800
920 FOR J=1 TO 10 STEP 2
930 PRINT"GIVE SECTION";J;" CAPACITANCE:";:INPUT CL(J)
934 IF CL(J)=0 THEN N=J-1:PRINT "N=";N:GOTO 990
940 PRINT"GIVE SECTION";J+1; " INDUCTANCE :";:INPUT LL(J+1)
950 IF LL(J+1)=0 THEN N=J:PRINT"N=";N:GOTO 990
960 NEXT J : N=J-1 : GOTO 990
980 REM FIRST FORM HIPASS PROTOTYPE BY INVERTING ELEMENTS
990 FOR J=1 TO N STEP 2
995 IF CL(J)=0 THEN 1060
1000 LH(J)=1/CL(J)
1004 IF LL(J+1)=0 THEN 1060
1006 CH(J+1)=1/LL(J+1)
1020 REM
1030 NEXT J
1040 REM NOW CHANGE THE BANDEDGE TO BW/F0 (MULT ALL ELEMENTS BY F0/BW)
1060 FOR J=1 TO N STEP 2
1070 LH(J)=LH(J)*F0/BW:CH(J+1)=CH(J+1)*F0/BW
1080 PRINT"LH = ";LH(J),"CH = ";CH(J+1)
1090 REM
1100 NEXT J
1110 REM NOW FORM THE BANDSTOP PROTOTYPE BY RESONATING AT W=1
1120 FOR J=1 TO N STEP 2
1125 IF LH(J)=0 THEN 1180
1130 CBS(J)=1/LH(J)
1134 IF CH(J+1)=0 THEN 1180
1136 LBS(J+1)=1/CH(J+1)
1140 PRINT "CBS = ";CBS(J),"LBS = ";LBS(J+1)
1150 REM
1160 NEXT J
1170 REM NOW SCALE FOR FREQ & IMPEDANCE
1180 FOR J=1 TO N STEP 2
1190 LH(J)=LH(J)*Z/W0:NUM=LH(J):GOSUB 1570:LH(J)=NUM:LH$(J)=UNIT$
1200 CBS(J)=CBS(J)/Z/W0:NUM=CBS(J):GOSUB 1570:CBS(J)=NUM:CBS$(J)=UNIT$
1210 CH(J+1)=CH(J+1)/Z/W0 :NUM=CH(J+1):GOSUB 1570:CH(J+1)=NUM:CH$(J+1)=UNIT$
1220 LBS(J+1)=LBS(J+1)*Z/W0 :NUM=LBS(J+1):GOSUB 1570:LBS(J+1)=NUM:LBS$(J+1)=UNIT$
1230 NEXT J
1240 CLS
1260 PRINT"BANDSTOP VALUES:"
1270 FOR J=1 TO N STEP 2
1280 PRINT J,"CP = ";CBS(J);CBS$(J),"LP = ";LH(J);LH$(J)
1290 PRINT J+1,"CS = ";CH(J+1);CH$(J+1),"LS = ";LBS(J+1);LBS$(J+1)
1300 NEXT J
1310 INPUT"PREPARE THE PRINTER AND PRESS ENTER";Y$
1320 OPEN "PRN" FOR OUTPUT AS #1
1330 PRINT#1,TAB(20);TYPE$;" RESPONSE"
1340 PRINT#1,:PRINT#1,TAB(20);"BANDSTOP FILTER VALUES"
1350 PRINT#1, TAB(20);FC;" ";FC$;"HERTZ";" CENTER FREQUENCY
1360 PRINT#1,TAB(20);"CUTOFF FREQUENCIES = ";F1;" ";F2;" ";F1$;"HERTZ"
1370 PRINT#1,TAB(20);"IMPEDANCE LEVEL = ";Z;" OHMS"
1380 PRINT:PRINT#1,"IF THE LOPASS PROTOTYPE LOOKS LIKE THIS:"
1390 PRINT#1,"-----|------L------|"
1400 PRINT#1," C |"
1410 PRINT#1," | R"
1420 PRINT#1," | |"
1430 PRINT#1," GND GND"
1440 PRINT#1,:PRINT#1,"THEN THE BANDSTOP LOOKS LIKE THIS:"
1450 PRINT#1,
1460 PRINT#1,"-------|---|---CS--|----|"
1470 PRINT#1," LP |---LS--| R"
1480 PRINT#1," | |"
1490 PRINT#1," CP |"
1500 PRINT#1," | |"
1510 PRINT#1," GND GND"
1520 PRINT#1,
1530 FOR J=1 TO N STEP 2
1540 PRINT#1, J,"CP = ";CBS(J);CBS$(J);"FARAD","LP = ";LH(J);LH$(J);"HENRY"
1544 IF CH(J+1)=0 THEN 1565
1550 PRINT#1, J+1,"CS = ";CH(J+1);CH$(J+1);"FARAD","LS = ";LBS(J+1);LBS$(J+1);"HENRY"
1560 NEXT J
1565 CLOSE#1:GOTO 1800
1570 REM ROUNDOFF.BAS
1580 REM A ROUTINE TO ROUNDOFF TO 3 DIGITS AND PUT IN KILO, NANO, PICO UNITS
1590 REM INPUT NUMBER IS "NUM"
1600 IF NUM=<1000 AND NUM>1 THEN PRINT"50, NUM=";NUM:GOTO 1680
1610 IF NUM=<999999! AND NUM>1 THEN 1690
1620 IF NUM=<999999999# AND NUM>1 THEN 1700
1630 IF NUM>999999999# THEN 1710
1640 IF NUM=>.001 AND NUM<1 THEN 1720
1650 IF NUM=>.000001 AND NUM<1 THEN 1730
1660 IF NUM=>1E-09 AND NUM<1 THEN 1740
1670 IF NUM=>1E-12 AND NUM<1 THEN 1750
1680 UNIT$="" : GOTO 1760
1690 UNIT$="KILO": NUM=NUM/1000 : GOTO 1760
1700 UNIT$="MEGA" : NUM=NUM/1000000! : GOTO 1760
1710 UNIT$="GIGA" : NUM=NUM/1E+09 : GOTO 1760
1720 UNIT$="MILLI" : NUM=NUM*1000 :GOTO 1760
1730 UNIT$="MICRO" : NUM=NUM*1000000! : GOTO 1760
1740 UNIT$="NANO" : NUM=NUM*1E+09 : GOTO 1760
1750 UNIT$="PICO" : NUM=NUM*1E+12 : GOTO 1760
1760 IF NUM>0 AND NUM<10 THEN NUM=INT(NUM*100+.5)/100
1770 IF NUM>=10 AND NUM<100 THEN NUM=INT(NUM*10+.5)/10
1780 IF NUM>=100 AND NUM <1000 THEN NUM=INT(NUM+.5)
1790 RETURN
1800 REM BANDSTOP.BAS
1810 REM
1820 CHAIN "FILTMENU"
1830 END
               (
geocities.com/russlk)