home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HAM Radio 1
/
HamRadio.cdr
/
tech
/
eepub05
/
filter.asc
< prev
next >
Wrap
Text File
|
1986-04-02
|
6KB
|
167 lines
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