home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HAM Radio 1
/
HamRadio.cdr
/
tech
/
design2
/
mfilter.asc
< prev
next >
Wrap
Text File
|
1986-04-02
|
8KB
|
279 lines
100 GOSUB 1980
110 PI2=3.14159*2
120 P$= "######.## ####.## ###.## ####.##"
130 INPUT"HOW MANY SECTIONS";N
140 GOTO 1190
150 GOSUB 160
160 PRINT:INPUT"CUT-OFF FREQUENCY(HZ), VOLTAGE GAIN";F,A0
170 A=SQR(2)
180 INPUT"DAMPING FACTOR (CR FOR MAXIMALLY FLAT)";A
190 IF A=0 THEN A=SQR(2)
200 PRINT:PRINT"CUTOFF ","GAIN","DAMPING":PRINT F,A0,A
210 W0=PI2*F:H=ABS(A0)
220 INPUT"CAPACITOR (UFD)";C
230 C=C*.000001
240 K=C*W0
250 C5=C:R1=A/(2*H*K):C2=(4*K*(H+1))/(A*A*W0):R3=A/(2*K*(H+1)):R4=H*R1
260 PRINT"R1","C2","R3","R4","C5"
270 PRINT R1,C2*1000000!,R3,R4,C5*1000000!
280 PRINT
290 INPUT"CHANGE CAPACITOR";A$
300 IF LEFT$(A$,1)="Y" THEN 220
310 INPUT"ANOTHER RUN";A$
320 IF LEFT$(A$,1)="Y" THEN 160
330 INPUT"CHANGE VALUES";A$
340 IF LEFT$(A$,1)<>"Y" THEN 420
350 PRINT"R1=";R1;:INPUT R1
360 C2=C2*1000000!:PRINT "C2=";C2;:INPUT C2
370 C2=C2*.000001
380 PRINT"R3=";R3;:INPUT R3
390 PRINT"R4=";R4;:INPUT R4
400 C5=C5*1000000!:PRINT"C5=";C5;:INPUT C5
410 C5=C5*.000001
420 RETURN
430 W=PI2*I
440 V0=-1/(R1*R3):V1=1/(R3*R4)-C2*C5*(W^2)
450 V2=W*C5*(1/R1+1/R3+1/R4)
460 IF V1=0 THEN T1=PI2/4:GOTO 480
470 T1=ATN(V2/ABS(V1)):IF V1<0 THEN T1=PI2/2-T1
480 P1=SQR(V2^2+V1^2)
490 T0=PI2/2:P0=-V0
500 T=T0-T1:P=P0/P1
510 RETURN
520 INPUT"CENTER FREQUENCY,BANDWIDTH (IN HZ),VOLTAGE GAIN";F,B,A0
530 Q=F/B:W0=PI2*F
540 INPUT"CAPACITOR (MFD)";C
550 C=C*.000001
560 K=C*W0:A=1/Q:H=ABS(A0)/Q
570 C3=C:C4=C:R1=1/(H*K)
580 R2=1/(K*(2*Q-H)):R5=2*Q/K
590 PRINT"R1","R2","C3","C4","R5"
600 PRINT R1,R2,C3*1000000!,C4*1000000!,R5:PRINT
610 INPUT"CHANGE CAPACITOR";A$
620 IF LEFT$(A$,1)="Y" THEN 540
630 INPUT"ANOTHER RUN";A$
640 IF LEFT$(A$,1)="Y" THEN 520
650 INPUT"CHANGE VALUES";A$
660 IF LEFT$(A$,1)<>"Y" THEN 740
670 PRINT"R1=";R1;:INPUT R1
680 PRINT"R2=";R2;:INPUT R2
690 C3=C3*1000000!:PRINT"C3=";C3;:INPUT C3
700 C3=C3*.000001
710 C4=C4*1000000!:PRINT"C4=";C4;:INPUT C4
720 C4=C4*.000001
730 PRINT"R5=";R5;:INPUT R5
740 RETURN
750 W=PI2*I:V0=W*C3/R1
760 V1=(1/R1+1/R2)/R5-C3*C4*(W^2)
770 V2=W*(C3+C4)/R5
780 IF V1=0 THEN T1=PI2/4:GOTO 800
790 T1=ATN(V2/ABS(V1)):IF V1<0 THEN T1=PI2/2-T1
800 P1=SQR(V2^2+V1^2)
810 T0=3*PI2/4:P0=V0
820 P=P0/P1:T=T0-T1
830 RETURN
840 INPUT"CUT-OFF FREQUENCY(HZ),VOLTAGE GAIN";F,A0
850 W0=PI2*F:H=ABS(A0)
860 A=SQR(2)
870 INPUT"DAMPING FACTOR (<CR> FOR 'MAXIMALLY FLAT')";A
880 IF A=0 THEN A=SQR(2)
890 PRINT:PRINT"CUT-OFF","GAIN","DAMPING":PRINT F,A0,A
900 INPUT"CAPACITOR (MFD)";C
910 C=C*.000001
920 K=C*W0:C1=C:C3=C:C4=C/H
930 R2=A/(K*(2+1/H)):R5=H*(2+1/H)/(A*K)
940 PRINT:PRINT"C1","R2","C3","C4","R5"
950 PRINT C1*1000000!,R2,C3*1000000!,C4*1000000!,R5
960 INPUT"CHANGE CAPACITOR";A$
970 IF LEFT$(A$,1)="Y" THEN 900
980 INPUT"CHANGE PARAMETERS";A$
990 IF LEFT$(A$,1)="Y" THEN 840
1000 INPUT"CHANGE COMPONENT VALUES";A$
1010 IF LEFT$(A$,1)<>"Y" THEN 1100
1020 C1=C1*1000000!:PRINT"C1=";C1;:INPUT C1
1030 C1=C1*.000001
1040 PRINT"R2=";R2;:INPUT R2
1050 C3=C3*1000000!:PRINT"C3=";C3;:INPUT C3
1060 C3=C3*.000001
1070 C4=C4*1000000!:PRINT "C4=";C4;:INPUT C4
1080 C4=C4*.000001
1090 PRINT"R5=";R5;:INPUT R5
1100 RETURN
1110 W=PI2*I:V0=C1*C3*(W^2)
1120 V1=1/(R2*R5)-C3*C4*(W^2)
1130 V2=W*(C1+C3+C4)/R5
1140 IF V1=0 THEN T1=PI2/4:GOTO 1160
1150 T1=ATN(V2/ABS(V1)):IF V1<0 THEN T1=PI2/2-T1
1160 P1=SQR(V2^2+V1^2)
1170 P0=V0:T=-T1:P=P0/P1
1180 RETURN
1190 DIM X(N,5):DIM Z(N,5)
1200 FOR J=1 TO N
1210 PRINT"SECTION ";J;" TYPE(H,L,B)";:INPUT A$:A$=LEFT$(A$,1)
1220 IF A$="L" THEN X(J,0)=1
1230 IF A$="B" THEN X(J,0)=2
1240 IF A$="H" THEN X(J,0)=3
1250 ON X(J,0) GOSUB 160,520,840
1260 ON X(J,0) GOTO 1270,1290,1310
1270 X(J,1)=R1:X(J,2)=-C2:X(J,3)=R3:X(J,4)=R4
1280 X(J,5)=-C5:GOTO 1330
1290 X(J,1)=R1:X(J,2)=R2:X(J,3)=-C3
1300 X(J,4)=-C4:X(J,5)=R5:GOTO 1330
1310 X(J,1)=-C1:X(J,2)=R2:X(J,3)=-C3
1320 X(J,4)=-C4:X(J,5)=R5
1330 NEXT J
1340 GOTO 2580
1350 INPUT "START, STOP, STEP (IN HZ)";F,G,H
1360 INPUT " TELETYPE PRINTOUT ";P3$
1370 R$=LEFT$(P3$,1)
1380 IF R$="Y" THEN LPRINT " FILTER READOUT -":LPRINT:LPRINT
1390 PRINT"FREQUENCY","GAIN","GAIN(DB)","PHASE":PRINT
1400 FOR I=F TO G STEP H
1410 P3=1:T3=0
1420 FOR J=1 TO N
1430 ON X(J,0) GOTO 1440,1470,1500
1440 R1=X(J,1):C2=-X(J,2):R3=X(J,3):R4=X(J,4):C5=-X(J,5)
1450 GOSUB 430
1460 GOTO 1520
1470 R1=X(J,1):R2=X(J,2):C3=-X(J,3):C4=-X(J,4):R5=X(J,5)
1480 GOSUB 750
1490 GOTO 1520
1500 C1=-X(J,1):R2=X(J,2):C3=-X(J,3):C4=-X(J,4):R5=X(J,5)
1510 GOSUB 1110
1520 P3=P*P3:T3=T+T3
1530 NEXT J
1540 IF P3=0 THEN P2=-99 ELSE P2=(20*LOG(P3))/(LOG(10))
1550 T2=360*T3/PI2
1560 IF T2>360 THEN T2=T2-360:GOTO 1560
1570 PRINT USING P$;I,P3,P2,T2
1580 IF R$="Y" THEN LPRINT USING P$;I,P3,P2,T2
1590 NEXT I
1600 PRINT:INPUT"ANOTHER SCAN";A$:A$=LEFT$(A$,1)
1610 IF A$="Y" THEN 1350
1620 RETURN
1630 INPUT"CHANGE TO NEAREST RETMA VALUES";A$:A$=LEFT$(A$,1)
1640 IF A$<>"Y" THEN 1750
1650 FOR I=1 TO N
1660 FOR J=1 TO 5
1670 F=0
1680 IF X(I,J)<0 THEN F=1
1690 X1=ABS(X(I,J)):GOSUB 2180
1700 IF F=1 THEN X(I,J)=-Y:GOTO 1720
1710 X(I,J)=Y
1720 NEXT J
1730 NEXT I
1740 GOSUB 1760
1750 RETURN
1760 PRINT"NO. TYPE","ELEMENT VALUES":PRINT
1770 FOR I=1 TO N
1780 PRINT I;TAB(4);X(I,0);TAB(10);
1790 FOR J=1 TO 5
1800 IF X(I,J)>=0 THEN X=X(I,J):GOTO 1820
1810 X=-X(I,J)*1000000!
1820 PRINT X;
1830 NEXT J
1840 PRINT
1850 NEXT I
1860 RETURN
1870 LPRINT"NO. TYPE","ELEMENT VALUES":LPRINT
1880 FOR I=1 TO N
1890 LPRINT I;TAB(4);X(I,0);TAB(10);
1900 FOR J=1 TO 5
1910 IF X(I,J)>=0 THEN X=X(I,J):GOTO 1930
1920 X=-X(I,J)*1000000!
1930 LPRINT X;
1940 NEXT J
1950 LPRINT
1960 NEXT I
1970 LPRINT:LPRINT:RETURN
1980 PRINT"THIS PROGRAM IS TO DESIGN AND EVALUATE MULTIPLE-FEEDBACK"
1990 PRINT"ACTIVE FILTERS. SEE 'HANDBOOK OF OPERATIONAL AMPLIFIER ACTIVE"
2000 PRINT"RC NETWORKS' BURR-BROWN RESEARCH CORP. 1966."
2010 PRINT
2020 PRINT" (C)1982 - GOLDEN RULE SYSTEMS - ALL RIGHTS RESERVED"
2030 PRINT
2040 PRINT"THE NETWORK OF THE FORM:"
2050 PRINT" |------|---------------|"
2060 PRINT" | | |"
2070 PRINT" (4) (5) |"
2080 PRINT" | | |-----\ |"
2090 PRINT" INPUT O--(1)----|-(3)--|---| - \ |"
2100 PRINT" | | \ |"
2110 PRINT" (2) | >--|----O OUTPUT"
2120 PRINT" | |---| + /"
2130 PRINT" === | | /"
2140 PRINT" = = |----/"
2150 PRINT
2160 RETURN
2170 INPUT"VALUE";X1
2180 X=LOG(X1)/LOG(10)
2190 ON SGN(X)+2 GOTO 2200,2240,2250
2200 X=ABS(X):E=INT(X)+1
2210 X=X1*(10^E)
2220 GOSUB 2280
2230 Y=Y/(10^E):RETURN
2240 Y=X1:RETURN
2250 E=INT(X):X=X1/(10^E)
2260 GOSUB 2280
2270 Y=Y*(10^E):RETURN
2280 READ Y
2290 READ Y1
2300 IF X=Y THEN 2360
2310 IF Y1=10 THEN 2340
2320 IF X<Y1 THEN 2340
2330 Y=Y1:GOTO 2290
2340 Y2=X-Y:Y3=Y1-X:IF Y2<=Y3 THEN 2360
2350 Y=Y1
2360 RESTORE:RETURN
2370 DATA 1.0,1.1,1.2,1.3,1.5,1.6,1.8,2.0,2.2,2.4,2.7,3.0,3.3
2380 DATA 3.6,3.9,4.3,4.7,5.1,5.6,6.2,6.8,7.5,8.2,9.1,10
2390 INPUT"SECTION,ELEMENT TO BE CHANGED (ENTER 0,0 TO QUIT)";I,J
2400 IF I>N THEN 2390
2410 IF J>5 THEN 2390
2420 IF I<1 OR J<1 THEN 2470
2430 IF X(I,J)<0 THEN 2450
2440 PRINT X(I,J);:INPUT X(I,J):GOTO 2390
2450 X=-X(I,J)*1000000!:PRINT X;:INPUT X
2460 X(I,J)=-X*.000001:GOTO 2390
2470 RETURN
2480 FOR I=0 TO N
2490 FOR J=0 TO 5
2500 Z(I,J)=X(I,J)
2510 NEXT J,I
2520 RETURN
2530 FOR I=0 TO N
2540 FOR J=0 TO 5
2550 X(I,J)=Z(I,J)
2560 NEXT J,I
2570 RETURN
2580 GOSUB 2480
2590 GOSUB 1760
2600 INPUT"CHANGE VALUES";A$:A$=LEFT$(A$,1)
2610 IF A$<>"Y" THEN 2670
2620 INPUT"CHANGE ALL VALUES TO NEAREST RETMA VALUES";A$:A$=LEFT$(A$,1)
2630 IF A$<>"Y" THEN 2660
2640 GOSUB 1650
2650 GOTO 2670
2660 GOSUB 2390
2670 INPUT"PLOT RESPONSE";A$:A$=LEFT$(A$,1)
2680 IF A$="Y" THEN GOSUB 1350
2690 INPUT"CHANGE ANY MORE VALUES";A$:A$=LEFT$(A$,1)
2700 IF A$<>"Y" THEN 2780
2710 GOSUB 1760
2720 GOSUB 2390
2730 GOSUB 1760
2740 INPUT"PLOT RESPONSE";A$:A$=LEFT$(A$,1)
2750 IF A$="Y" THEN GOSUB 1350 ELSE GOTO 2780
2760 GOTO 2670
2770 PRINT
2780 PRINT:PRINT" *** FINAL VALUES *** ":PRINT
2790 GOSUB 1760
2800 PRINT:PRINT
2810 INPUT"VALUES TO PRINTER";Y$:Y$=LEFT$(Y$,1)
2820 IF Y$="Y" THEN GOSUB 1870
2830 END
2790 GOSUB 1760
2800 PRINT:PRINT
2810 INPUT"VALUES TO PRINTER";Y$:Y$=LEFT$(Y$,1)
2820 IF Y