home *** CD-ROM | disk | FTP | other *** search
- 1 GOSUB 5000
- 2 PI2=3.14159*2
- 3 P$= "######.## ####.## ###.## ####.##"
- 4 INPUT"HIGH-PASS, LOW-PASS, OR BAND-PASS";A$
- 5 A$=LEFT$(A$,1)
- 6 IF A$="B" THEN 1000
- 7 IF A$="L" THEN 40
- 8 IF A$="H" THEN 2000
- 9 GOTO 4
- 40 PRINT:INPUT"CUT-OFF FREQUENCY(HZ), VOLTAGE GAIN";F,A0
- 60 INPUT"DAMPING FACTOR (CR FOR MAXIMALLY FLAT)";A
- 65 IF A = 0 THEN A = SQR(2)
- 70 PRINT:PRINT"CUTOFF ","GAIN","DAMPING":PRINT F,A0,A
- 80 W0=PI2*F:H=ABS(A0)
- 90 INPUT"CAPACITOR (UFD)";C
- 100 C=C*.000001
- 110 K=C*W0
- 120 C5=C:R1=A/(2*H*K):C2=(4*K*(H+1))/(A*A*W0):R3=A/(2*K*(H+1)):R4=H*R1
- 130 PRINT"R1","C2","R3","R4","C5"
- 140 PRINT R1,C2*1000000!,R3,R4,C5*1000000!
- 150 PRINT
- 160 INPUT"CHANGE CAPACITOR";A$
- 170 IF LEFT$(A$,1)="Y" THEN 90
- 180 INPUT"ANOTHER RUN";A$
- 190 IF LEFT$(A$,1)="Y" THEN 40
- 200 INPUT"CHANGE VALUES";A$
- 210 IF LEFT$(A$,1)<>"Y" THEN 290
- 220 PRINT"R1=";R1;:INPUT R1
- 230 C2=C2*1000000!:PRINT "C2=";C2;:INPUT C2
- 240 C2=C2*.000001
- 250 PRINT"R3=";R3;:INPUT R3
- 260 PRINT"R4=";R4;:INPUT R4
- 270 C5=C5*1000000!:PRINT"C5=";C5;:INPUT C5
- 280 C5=C5*.000001
- 290 PRINT:INPUT"START,STOP,STEP (IN HZ)";F,G,H
- 300 PRINT "FREQUENCY","GAIN","GAIN(DB)","PHASE":PRINT
- 310 FOR I=F TO G STEP H
- 320 W=PI2*I
- 330 V0=-1/(R1*R3):V1=1/(R3*R4)-C2*C5*(W^2)
- 340 V2=W*C5*(1/R1+1/R3+1/R4)
- 345 IF V1=0 THEN T1=PI2/4:GOTO 355
- 350 T1=ATN(V2/ABS(V1)):IF V1<0 THEN T1=PI2/2-T1
- 355 P1=SQR(V2^2+V1^2)
- 360 T0=PI2/2:P0=-V0
- 370 T=T0-T1:P=P0/P1
- 380 PRINT USING P$;I,P,(20*LOG(P/A0))/(LOG(10)),360*T/PI2
- 390 NEXT I
- 400 PRINT
- 402 INPUT"ANOTHER SCAN";A$
- 404 IF LEFT$(A$,1)="Y" THEN 290
- 410 INPUT"CHANGE VALUES";A$
- 420 IF LEFT$(A$,1)="Y" THEN 220
- 430 INPUT"ANOTHER RUN";A$
- 440 IF LEFT$(A$,1)="Y" THEN 40
- 450 END
- 1000 PRINT"MULTIPLE-FEEDBACK BANDPASS FILTER DESIGN":PRINT
- 1010 INPUT"CENTER FREQUENCY,BANDWIDTH (IN HZ),VOLTAGE GAIN";F,B,A0
- 1020 Q=F/B:W0=PI2*F
- 1030 INPUT"CAPACITOR (MFD)";C
- 1040 C=C*.000001
- 1050 K=C*W0:A=1/Q:H=ABS(A0)/Q
- 1060 C3=C:C4=C:R1=1/(H*K)
- 1070 R2=1/(K*(2*Q-H)):R5=2*Q/K
- 1080 PRINT"R1","R2","C3","C4","R5"
- 1090 PRINT R1,R2,C3*1000000!,C4*1000000!,R5:PRINT
- 1100 INPUT"CHANGE CAPACITOR";A$
- 1110 IF LEFT$(A$,1)="Y" THEN 1030
- 1120 INPUT"ANOTHER RUN";A$
- 1130 IF LEFT$(A$,1)="Y" THEN 1010
- 1140 INPUT"CHANGE VALUES";A$
- 1150 IF LEFT$(A$,1)<>"Y" THEN 1230
- 1160 PRINT"R1=";R1;:INPUT R1
- 1170 PRINT"R2=";R2;:INPUT R2
- 1180 C3=C3*1000000!:PRINT"C3=";C3;:INPUT C3
- 1190 C3=C3*.000001
- 1200 C4=C4*1000000!:PRINT"C4=";C4;:INPUT C4
- 1210 C4=C4*.000001
- 1220 PRINT"R5=";R5;:INPUT R5
- 1230 INPUT "START,STOP,STEP(IN HZ)";F,G,H
- 1240 PRINT:PRINT"R1","R2","C3","C4","R5"
- 1250 PRINT R1,R2,C3*1000000!,C4*1000000!,R5:PRINT
- 1260 PRINT"FREQUENCY","GAIN","GAIN(DB)","PHASE"
- 1270 FOR I=F TO G STEP H
- 1280 W=PI2*I:V0=W*C3/R1
- 1290 V1=(1/R1+1/R2)/R5-C3*C4*(W^2)
- 1300 V2=W*(C3+C4)/R5
- 1305 IF V1=0 THEN T1=PI2/4:GOTO 1315
- 1310 T1=ATN(V2/ABS(V1)):IF V1<0 THEN T1=PI2/2-T1
- 1315 P1=SQR(V2^2+V1^2)
- 1320 T0=3*PI2/4:P0=V0
- 1330 P=P0/P1:T=T0-T1
- 1332 IF P=0 THEN P2=-99 ELSE P2=(20*LOG(P/A0))/(LOG(10))
- 1340 PRINT USING P$;I,P,P2,360*T/PI2
- 1350 NEXT I
- 1360 PRINT
- 1370 INPUT"CHANGE VALUES";A$
- 1380 IF LEFT$(A$,1)="Y" THEN 1160
- 1390 INPUT"ANOTHER RUN";A$
- 1400 IF LEFT$(A$,1)="Y" THEN 1010
- 1410 END
- 2000 PRINT"HIGH-PASS MULTIPLE-FEEDBACK FILTER DESIGN":PRINT
- 2010 INPUT"CUT-OFF FREQUENCY(HZ),VOLTAGE GAIN";F,A0
- 2020 W0=PI2*F:H=ABS(A0)
- 2030 A=SQR(2)
- 2040 INPUT"DAMPING FACTOR (<CR> FOR 'MAXIMALLY FLAT')";A
- 2045 IF A = 0 THEN A = SQR(2)
- 2050 PRINT:PRINT"CUT-OFF","GAIN","DAMPING":PRINT F,A0,A
- 2060 INPUT"CAPACITOR (MFD)";C
- 2070 C=C*.000001
- 2080 K=C*W0:C1=C:C3=C:C4=C/H
- 2090 R2=A/(K*(2+1/H)):R5=H*(2+1/H)/(A*K)
- 2100 PRINT:PRINT"C1","R2","C3","C4","R5"
- 2110 PRINT C1*1000000!,R2,C3*1000000!,C4*1000000!,R5
- 2120 INPUT"CHANGE CAPACITOR";A$
- 2130 IF LEFT$(A$,1)="Y" THEN 2060
- 2140 INPUT"CHANGE PARAMETERS";A$
- 2150 IF LEFT$(A$,1)="Y" THEN 2010
- 2160 INPUT"CHANGE COMPONENT VALUES";A$
- 2170 IF LEFT$(A$,1)<>"Y" THEN 2260
- 2180 C1=C1*1000000!:PRINT"C1=";C1;:INPUT C1
- 2190 C1=C1*.000001
- 2200 PRINT"R2=";R2;:INPUT R2
- 2210 C3=C3*1000000!:PRINT"C3=";C3;:INPUT C3
- 2220 C3=C3*.000001
- 2230 C4=C4*1000000!:PRINT "C4=";C4;:INPUT C4
- 2240 C4=C4*.000001
- 2250 PRINT"R5=";R5;:INPUT R5
- 2260 PRINT:INPUT"START,STOP,STEP(IN HZ)";F,G,H
- 2270 PRINT"FREQUENCY","GAIN","GAIN(DB)","PHASE":PRINT
- 2280 FOR I=F TO G STEP H
- 2290 W=PI2*I:V0=C1*C3*(W^2)
- 2300 V1=1/(R2*R5)-C3*C4*(W^2)
- 2310 V2=W*(C1+C3+C4)/R5
- 2320 IF V1=0 THEN T1=PI2/4:GOTO 2340
- 2330 T1=ATN(V2/ABS(V1)):IF V1<0 THEN T1=PI2/2-T1
- 2340 P1=SQR(V2^2+V1^2)
- 2350 P0=V0:T=-T1:P=P0/P1
- 2360 IF P=0 THEN P2=-99 ELSE P2=(20*LOG(P/A0))/(LOG(10))
- 2370 PRINT USING P$;I,P,P2,360*T/PI2
- 2380 NEXT I
- 2390 PRINT:INPUT"ANOTHER SCAN";A$
- 2400 IF LEFT$(A$,1)="Y" THEN 2260
- 2410 INPUT"CHANGE COMPONENT VALUES";A$
- 2420 IF LEFT$(A$,1)="Y" THEN 2180
- 2430 INPUT"ANOTHER RUN";A$
- 2440 IF LEFT$(A$,1)="Y" THEN 2010
- 2450 END
- 5000 PRINT"THIS PROGRAM IS TO DESIGN AND EVALUATE MULTIPLE-FEEDBACK"
- 5010 PRINT"ACTIVE FILTERS. SEE 'HANDBOOK OF OPERATIONAL AMPLIFIER ACTIVE"
- 5020 PRINT"RC NETWORKS' BURR-BROWN RESEARCH CORP. 1966."
- 5030 PRINT
- 5040 PRINT"THE NETWORK OF THE FORM:"
- 5050 PRINT" !------!----------!"
- 5060 PRINT" ! ! !"
- 5070 PRINT" (4) (5) !"
- 5080 PRINT" ! ! !--\ !"
- 5090 PRINT" INPUT O--(1)----!-(3)--!-!- \ !"
- 5100 PRINT" ! ! \ !"
- 5110 PRINT" (2) ! >--!----O OUTPUT"
- 5120 PRINT" ! !-!+ /"
- 5130 PRINT" === ! ! /"
- 5140 PRINT" = = ! /"
- 5150 PRINT" . . --/"
- 5160 RETURN
- === ! ! /"
- 5140 PRINT" = = ! /"
- 5150 PR