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

  1. 1 GOSUB 5000
  2. 2 PI2=3.14159*2
  3. 3   P$= "######.##     ####.##       ###.##       ####.##"
  4. 4 INPUT"HIGH-PASS, LOW-PASS, OR BAND-PASS";A$
  5. 5 A$=LEFT$(A$,1)
  6. 6 IF A$="B" THEN 1000
  7. 7 IF A$="L" THEN 40
  8. 8 IF A$="H" THEN 2000
  9. 9 GOTO 4
  10. 40 PRINT:INPUT"CUT-OFF FREQUENCY(HZ), VOLTAGE GAIN";F,A0
  11. 60 INPUT"DAMPING FACTOR (CR FOR MAXIMALLY FLAT)";A
  12. 65 IF A = 0 THEN A = SQR(2)
  13. 70 PRINT:PRINT"CUTOFF ","GAIN","DAMPING":PRINT F,A0,A
  14. 80 W0=PI2*F:H=ABS(A0)
  15. 90 INPUT"CAPACITOR (UFD)";C
  16. 100 C=C*.000001
  17. 110 K=C*W0
  18. 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
  19. 130 PRINT"R1","C2","R3","R4","C5"
  20. 140 PRINT R1,C2*1000000!,R3,R4,C5*1000000!
  21. 150 PRINT
  22. 160 INPUT"CHANGE CAPACITOR";A$
  23. 170 IF LEFT$(A$,1)="Y" THEN 90
  24. 180 INPUT"ANOTHER RUN";A$
  25. 190 IF LEFT$(A$,1)="Y" THEN 40
  26. 200 INPUT"CHANGE VALUES";A$
  27. 210 IF LEFT$(A$,1)<>"Y" THEN 290
  28. 220 PRINT"R1=";R1;:INPUT R1
  29. 230 C2=C2*1000000!:PRINT "C2=";C2;:INPUT C2
  30. 240 C2=C2*.000001
  31. 250 PRINT"R3=";R3;:INPUT R3
  32. 260 PRINT"R4=";R4;:INPUT R4
  33. 270 C5=C5*1000000!:PRINT"C5=";C5;:INPUT C5
  34. 280 C5=C5*.000001
  35. 290 PRINT:INPUT"START,STOP,STEP (IN HZ)";F,G,H
  36. 300 PRINT "FREQUENCY","GAIN","GAIN(DB)","PHASE":PRINT
  37. 310 FOR I=F TO G STEP H
  38. 320 W=PI2*I
  39. 330 V0=-1/(R1*R3):V1=1/(R3*R4)-C2*C5*(W^2)
  40. 340 V2=W*C5*(1/R1+1/R3+1/R4)
  41. 345 IF V1=0 THEN T1=PI2/4:GOTO 355
  42. 350 T1=ATN(V2/ABS(V1)):IF V1<0 THEN T1=PI2/2-T1
  43. 355 P1=SQR(V2^2+V1^2)
  44. 360 T0=PI2/2:P0=-V0
  45. 370 T=T0-T1:P=P0/P1
  46. 380 PRINT USING P$;I,P,(20*LOG(P/A0))/(LOG(10)),360*T/PI2
  47. 390 NEXT I
  48. 400 PRINT
  49. 402 INPUT"ANOTHER SCAN";A$
  50. 404 IF LEFT$(A$,1)="Y" THEN 290
  51. 410 INPUT"CHANGE VALUES";A$
  52. 420 IF LEFT$(A$,1)="Y" THEN 220
  53. 430 INPUT"ANOTHER RUN";A$
  54. 440 IF LEFT$(A$,1)="Y" THEN 40
  55. 450 END
  56. 1000 PRINT"MULTIPLE-FEEDBACK BANDPASS FILTER DESIGN":PRINT
  57. 1010 INPUT"CENTER FREQUENCY,BANDWIDTH (IN HZ),VOLTAGE GAIN";F,B,A0
  58. 1020 Q=F/B:W0=PI2*F
  59. 1030 INPUT"CAPACITOR (MFD)";C
  60. 1040 C=C*.000001
  61. 1050 K=C*W0:A=1/Q:H=ABS(A0)/Q
  62. 1060 C3=C:C4=C:R1=1/(H*K)
  63. 1070 R2=1/(K*(2*Q-H)):R5=2*Q/K
  64. 1080 PRINT"R1","R2","C3","C4","R5"
  65. 1090 PRINT R1,R2,C3*1000000!,C4*1000000!,R5:PRINT
  66. 1100 INPUT"CHANGE CAPACITOR";A$
  67. 1110 IF LEFT$(A$,1)="Y" THEN 1030
  68. 1120 INPUT"ANOTHER RUN";A$
  69. 1130 IF LEFT$(A$,1)="Y" THEN 1010
  70. 1140 INPUT"CHANGE VALUES";A$
  71. 1150 IF LEFT$(A$,1)<>"Y" THEN 1230
  72. 1160 PRINT"R1=";R1;:INPUT R1
  73. 1170 PRINT"R2=";R2;:INPUT R2
  74. 1180 C3=C3*1000000!:PRINT"C3=";C3;:INPUT C3
  75. 1190 C3=C3*.000001
  76. 1200 C4=C4*1000000!:PRINT"C4=";C4;:INPUT C4
  77. 1210 C4=C4*.000001
  78. 1220 PRINT"R5=";R5;:INPUT R5
  79. 1230 INPUT "START,STOP,STEP(IN HZ)";F,G,H
  80. 1240 PRINT:PRINT"R1","R2","C3","C4","R5"
  81. 1250 PRINT R1,R2,C3*1000000!,C4*1000000!,R5:PRINT
  82. 1260 PRINT"FREQUENCY","GAIN","GAIN(DB)","PHASE"
  83. 1270 FOR I=F TO G STEP H
  84. 1280 W=PI2*I:V0=W*C3/R1
  85. 1290 V1=(1/R1+1/R2)/R5-C3*C4*(W^2)
  86. 1300 V2=W*(C3+C4)/R5
  87. 1305 IF V1=0 THEN T1=PI2/4:GOTO 1315
  88. 1310 T1=ATN(V2/ABS(V1)):IF V1<0 THEN T1=PI2/2-T1
  89. 1315 P1=SQR(V2^2+V1^2)
  90. 1320 T0=3*PI2/4:P0=V0
  91. 1330 P=P0/P1:T=T0-T1
  92. 1332 IF P=0 THEN P2=-99 ELSE P2=(20*LOG(P/A0))/(LOG(10))
  93. 1340 PRINT USING P$;I,P,P2,360*T/PI2
  94. 1350 NEXT I
  95. 1360 PRINT
  96. 1370 INPUT"CHANGE VALUES";A$
  97. 1380 IF LEFT$(A$,1)="Y" THEN 1160
  98. 1390 INPUT"ANOTHER RUN";A$
  99. 1400 IF LEFT$(A$,1)="Y" THEN 1010
  100. 1410 END
  101. 2000 PRINT"HIGH-PASS MULTIPLE-FEEDBACK FILTER DESIGN":PRINT
  102. 2010 INPUT"CUT-OFF FREQUENCY(HZ),VOLTAGE GAIN";F,A0
  103. 2020 W0=PI2*F:H=ABS(A0)
  104. 2030 A=SQR(2)
  105. 2040 INPUT"DAMPING FACTOR (<CR> FOR 'MAXIMALLY FLAT')";A
  106. 2045 IF A = 0 THEN A = SQR(2)
  107. 2050 PRINT:PRINT"CUT-OFF","GAIN","DAMPING":PRINT F,A0,A
  108. 2060 INPUT"CAPACITOR (MFD)";C
  109. 2070 C=C*.000001
  110. 2080 K=C*W0:C1=C:C3=C:C4=C/H
  111. 2090 R2=A/(K*(2+1/H)):R5=H*(2+1/H)/(A*K)
  112. 2100 PRINT:PRINT"C1","R2","C3","C4","R5"
  113. 2110 PRINT C1*1000000!,R2,C3*1000000!,C4*1000000!,R5
  114. 2120 INPUT"CHANGE CAPACITOR";A$
  115. 2130 IF LEFT$(A$,1)="Y" THEN 2060
  116. 2140 INPUT"CHANGE PARAMETERS";A$
  117. 2150 IF LEFT$(A$,1)="Y" THEN 2010
  118. 2160 INPUT"CHANGE COMPONENT VALUES";A$
  119. 2170 IF LEFT$(A$,1)<>"Y" THEN 2260
  120. 2180 C1=C1*1000000!:PRINT"C1=";C1;:INPUT C1
  121. 2190 C1=C1*.000001
  122. 2200 PRINT"R2=";R2;:INPUT R2
  123. 2210 C3=C3*1000000!:PRINT"C3=";C3;:INPUT C3
  124. 2220 C3=C3*.000001
  125. 2230 C4=C4*1000000!:PRINT "C4=";C4;:INPUT C4
  126. 2240 C4=C4*.000001
  127. 2250 PRINT"R5=";R5;:INPUT R5
  128. 2260 PRINT:INPUT"START,STOP,STEP(IN HZ)";F,G,H
  129. 2270 PRINT"FREQUENCY","GAIN","GAIN(DB)","PHASE":PRINT
  130. 2280 FOR I=F TO G STEP H
  131. 2290 W=PI2*I:V0=C1*C3*(W^2)
  132. 2300 V1=1/(R2*R5)-C3*C4*(W^2)
  133. 2310 V2=W*(C1+C3+C4)/R5
  134. 2320 IF V1=0 THEN T1=PI2/4:GOTO 2340
  135. 2330 T1=ATN(V2/ABS(V1)):IF V1<0 THEN T1=PI2/2-T1
  136. 2340 P1=SQR(V2^2+V1^2)
  137. 2350 P0=V0:T=-T1:P=P0/P1
  138. 2360 IF P=0 THEN P2=-99 ELSE P2=(20*LOG(P/A0))/(LOG(10))
  139. 2370 PRINT USING P$;I,P,P2,360*T/PI2
  140. 2380 NEXT I
  141. 2390 PRINT:INPUT"ANOTHER SCAN";A$
  142. 2400 IF LEFT$(A$,1)="Y" THEN 2260
  143. 2410 INPUT"CHANGE COMPONENT VALUES";A$
  144. 2420 IF LEFT$(A$,1)="Y" THEN 2180
  145. 2430 INPUT"ANOTHER RUN";A$
  146. 2440 IF LEFT$(A$,1)="Y" THEN 2010
  147. 2450 END
  148. 5000 PRINT"THIS PROGRAM IS TO DESIGN AND EVALUATE MULTIPLE-FEEDBACK"
  149. 5010 PRINT"ACTIVE FILTERS. SEE 'HANDBOOK OF OPERATIONAL AMPLIFIER ACTIVE"
  150. 5020 PRINT"RC NETWORKS' BURR-BROWN RESEARCH CORP. 1966."
  151. 5030 PRINT
  152. 5040 PRINT"THE NETWORK OF THE FORM:"
  153. 5050 PRINT"                 !------!----------!"
  154. 5060 PRINT"                 !      !          !"
  155. 5070 PRINT"                (4)    (5)         !"
  156. 5080 PRINT"                 !      ! !--\     !"
  157. 5090 PRINT" INPUT O--(1)----!-(3)--!-!-  \    !"
  158. 5100 PRINT"                 !        !    \   !"
  159. 5110 PRINT"                (2)       !     >--!----O OUTPUT"
  160. 5120 PRINT"                 !      !-!+   /"
  161. 5130 PRINT"                ===     ! !   /"
  162. 5140 PRINT"                 =      = !  /"
  163. 5150 PRINT"                 .      . --/"
  164. 5160 RETURN
  165.          ===     ! !   /"
  166. 5140 PRINT"                 =      = !  /"
  167. 5150 PR