home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / eepub05 / mfilter.asc < prev    next >
Text File  |  1986-04-02  |  8KB  |  279 lines

  1. 100 GOSUB 1980
  2. 110 PI2=3.14159*2
  3. 120   P$= "######.##     ####.##       ###.##       ####.##"
  4. 130 INPUT"HOW MANY SECTIONS";N
  5. 140 GOTO 1190
  6. 150 GOSUB 160
  7. 160 PRINT:INPUT"CUT-OFF FREQUENCY(HZ), VOLTAGE GAIN";F,A0
  8. 170 A=SQR(2)
  9. 180 INPUT"DAMPING FACTOR (CR FOR MAXIMALLY FLAT)";A
  10. 190 IF A=0 THEN A=SQR(2)
  11. 200 PRINT:PRINT"CUTOFF ","GAIN","DAMPING":PRINT F,A0,A
  12. 210 W0=PI2*F:H=ABS(A0)
  13. 220 INPUT"CAPACITOR (UFD)";C
  14. 230 C=C*.000001
  15. 240 K=C*W0
  16. 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
  17. 260 PRINT"R1","C2","R3","R4","C5"
  18. 270 PRINT R1,C2*1000000!,R3,R4,C5*1000000!
  19. 280 PRINT
  20. 290 INPUT"CHANGE CAPACITOR";A$
  21. 300 IF LEFT$(A$,1)="Y" THEN 220
  22. 310 INPUT"ANOTHER RUN";A$
  23. 320 IF LEFT$(A$,1)="Y" THEN 160
  24. 330 INPUT"CHANGE VALUES";A$
  25. 340 IF LEFT$(A$,1)<>"Y" THEN 420
  26. 350 PRINT"R1=";R1;:INPUT R1
  27. 360 C2=C2*1000000!:PRINT "C2=";C2;:INPUT C2
  28. 370 C2=C2*.000001
  29. 380 PRINT"R3=";R3;:INPUT R3
  30. 390 PRINT"R4=";R4;:INPUT R4
  31. 400 C5=C5*1000000!:PRINT"C5=";C5;:INPUT C5
  32. 410 C5=C5*.000001
  33. 420 RETURN
  34. 430 W=PI2*I
  35. 440 V0=-1/(R1*R3):V1=1/(R3*R4)-C2*C5*(W^2)
  36. 450 V2=W*C5*(1/R1+1/R3+1/R4)
  37. 460 IF V1=0 THEN T1=PI2/4:GOTO 480
  38. 470 T1=ATN(V2/ABS(V1)):IF V1<0 THEN T1=PI2/2-T1
  39. 480 P1=SQR(V2^2+V1^2)
  40. 490 T0=PI2/2:P0=-V0
  41. 500 T=T0-T1:P=P0/P1
  42. 510 RETURN
  43. 520 INPUT"CENTER FREQUENCY,BANDWIDTH (IN HZ),VOLTAGE GAIN";F,B,A0
  44. 530 Q=F/B:W0=PI2*F
  45. 540 INPUT"CAPACITOR (MFD)";C
  46. 550 C=C*.000001
  47. 560 K=C*W0:A=1/Q:H=ABS(A0)/Q
  48. 570 C3=C:C4=C:R1=1/(H*K)
  49. 580 R2=1/(K*(2*Q-H)):R5=2*Q/K
  50. 590 PRINT"R1","R2","C3","C4","R5"
  51. 600 PRINT R1,R2,C3*1000000!,C4*1000000!,R5:PRINT
  52. 610 INPUT"CHANGE CAPACITOR";A$
  53. 620 IF LEFT$(A$,1)="Y" THEN 540
  54. 630 INPUT"ANOTHER RUN";A$
  55. 640 IF LEFT$(A$,1)="Y" THEN 520
  56. 650 INPUT"CHANGE VALUES";A$
  57. 660 IF LEFT$(A$,1)<>"Y" THEN 740
  58. 670 PRINT"R1=";R1;:INPUT R1
  59. 680 PRINT"R2=";R2;:INPUT R2
  60. 690 C3=C3*1000000!:PRINT"C3=";C3;:INPUT C3
  61. 700 C3=C3*.000001
  62. 710 C4=C4*1000000!:PRINT"C4=";C4;:INPUT C4
  63. 720 C4=C4*.000001
  64. 730 PRINT"R5=";R5;:INPUT R5
  65. 740 RETURN
  66. 750 W=PI2*I:V0=W*C3/R1
  67. 760 V1=(1/R1+1/R2)/R5-C3*C4*(W^2)
  68. 770 V2=W*(C3+C4)/R5
  69. 780 IF V1=0 THEN T1=PI2/4:GOTO 800
  70. 790 T1=ATN(V2/ABS(V1)):IF V1<0 THEN T1=PI2/2-T1
  71. 800 P1=SQR(V2^2+V1^2)
  72. 810 T0=3*PI2/4:P0=V0
  73. 820 P=P0/P1:T=T0-T1
  74. 830 RETURN
  75. 840 INPUT"CUT-OFF FREQUENCY(HZ),VOLTAGE GAIN";F,A0
  76. 850 W0=PI2*F:H=ABS(A0)
  77. 860 A=SQR(2)
  78. 870 INPUT"DAMPING FACTOR (<CR> FOR 'MAXIMALLY FLAT')";A
  79. 880 IF A=0 THEN A=SQR(2)
  80. 890 PRINT:PRINT"CUT-OFF","GAIN","DAMPING":PRINT F,A0,A
  81. 900 INPUT"CAPACITOR (MFD)";C
  82. 910 C=C*.000001
  83. 920 K=C*W0:C1=C:C3=C:C4=C/H
  84. 930 R2=A/(K*(2+1/H)):R5=H*(2+1/H)/(A*K)
  85. 940 PRINT:PRINT"C1","R2","C3","C4","R5"
  86. 950 PRINT C1*1000000!,R2,C3*1000000!,C4*1000000!,R5
  87. 960 INPUT"CHANGE CAPACITOR";A$
  88. 970 IF LEFT$(A$,1)="Y" THEN 900
  89. 980 INPUT"CHANGE PARAMETERS";A$
  90. 990 IF LEFT$(A$,1)="Y" THEN 840
  91. 1000 INPUT"CHANGE COMPONENT VALUES";A$
  92. 1010 IF LEFT$(A$,1)<>"Y" THEN 1100
  93. 1020 C1=C1*1000000!:PRINT"C1=";C1;:INPUT C1
  94. 1030 C1=C1*.000001
  95. 1040 PRINT"R2=";R2;:INPUT R2
  96. 1050 C3=C3*1000000!:PRINT"C3=";C3;:INPUT C3
  97. 1060 C3=C3*.000001
  98. 1070 C4=C4*1000000!:PRINT "C4=";C4;:INPUT C4
  99. 1080 C4=C4*.000001
  100. 1090 PRINT"R5=";R5;:INPUT R5
  101. 1100 RETURN
  102. 1110 W=PI2*I:V0=C1*C3*(W^2)
  103. 1120 V1=1/(R2*R5)-C3*C4*(W^2)
  104. 1130 V2=W*(C1+C3+C4)/R5
  105. 1140 IF V1=0 THEN T1=PI2/4:GOTO 1160
  106. 1150 T1=ATN(V2/ABS(V1)):IF V1<0 THEN T1=PI2/2-T1
  107. 1160 P1=SQR(V2^2+V1^2)
  108. 1170 P0=V0:T=-T1:P=P0/P1
  109. 1180 RETURN
  110. 1190 DIM X(N,5):DIM Z(N,5)
  111. 1200 FOR J=1 TO N
  112. 1210 PRINT"SECTION ";J;" TYPE(H,L,B)";:INPUT A$:A$=LEFT$(A$,1)
  113. 1220 IF A$="L" THEN X(J,0)=1
  114. 1230 IF A$="B" THEN X(J,0)=2
  115. 1240 IF A$="H" THEN X(J,0)=3
  116. 1250 ON X(J,0) GOSUB 160,520,840
  117. 1260 ON X(J,0) GOTO 1270,1290,1310
  118. 1270 X(J,1)=R1:X(J,2)=-C2:X(J,3)=R3:X(J,4)=R4
  119. 1280 X(J,5)=-C5:GOTO 1330
  120. 1290 X(J,1)=R1:X(J,2)=R2:X(J,3)=-C3
  121. 1300 X(J,4)=-C4:X(J,5)=R5:GOTO 1330
  122. 1310 X(J,1)=-C1:X(J,2)=R2:X(J,3)=-C3
  123. 1320 X(J,4)=-C4:X(J,5)=R5
  124. 1330 NEXT J
  125. 1340 GOTO 2580
  126. 1350 INPUT "START, STOP, STEP (IN HZ)";F,G,H
  127. 1360 INPUT " TELETYPE PRINTOUT ";P3$
  128. 1370 R$=LEFT$(P3$,1)
  129. 1380 IF R$="Y" THEN LPRINT " FILTER READOUT -":LPRINT:LPRINT
  130. 1390 PRINT"FREQUENCY","GAIN","GAIN(DB)","PHASE":PRINT
  131. 1400 FOR I=F TO G STEP H
  132. 1410 P3=1:T3=0
  133. 1420 FOR J=1 TO N
  134. 1430 ON X(J,0) GOTO 1440,1470,1500
  135. 1440 R1=X(J,1):C2=-X(J,2):R3=X(J,3):R4=X(J,4):C5=-X(J,5)
  136. 1450 GOSUB 430
  137. 1460 GOTO 1520
  138. 1470 R1=X(J,1):R2=X(J,2):C3=-X(J,3):C4=-X(J,4):R5=X(J,5)
  139. 1480 GOSUB 750
  140. 1490 GOTO 1520
  141. 1500 C1=-X(J,1):R2=X(J,2):C3=-X(J,3):C4=-X(J,4):R5=X(J,5)
  142. 1510 GOSUB 1110
  143. 1520 P3=P*P3:T3=T+T3
  144. 1530 NEXT J
  145. 1540 IF P3=0 THEN P2=-99 ELSE P2=(20*LOG(P3))/(LOG(10))
  146. 1550 T2=360*T3/PI2
  147. 1560 IF T2>360 THEN T2=T2-360:GOTO 1560
  148. 1570 PRINT USING P$;I,P3,P2,T2
  149. 1580 IF R$="Y" THEN LPRINT USING P$;I,P3,P2,T2
  150. 1590 NEXT I
  151. 1600 PRINT:INPUT"ANOTHER SCAN";A$:A$=LEFT$(A$,1)
  152. 1610 IF A$="Y" THEN 1350
  153. 1620 RETURN
  154. 1630 INPUT"CHANGE TO NEAREST RETMA VALUES";A$:A$=LEFT$(A$,1)
  155. 1640 IF A$<>"Y" THEN 1750
  156. 1650 FOR I=1 TO N
  157. 1660 FOR J=1 TO 5
  158. 1670 F=0
  159. 1680 IF X(I,J)<0 THEN F=1
  160. 1690 X1=ABS(X(I,J)):GOSUB 2180
  161. 1700 IF F=1 THEN X(I,J)=-Y:GOTO 1720
  162. 1710 X(I,J)=Y
  163. 1720 NEXT J
  164. 1730 NEXT I
  165. 1740 GOSUB 1760
  166. 1750 RETURN
  167. 1760 PRINT"NO. TYPE","ELEMENT VALUES":PRINT
  168. 1770 FOR I=1 TO N
  169. 1780 PRINT I;TAB(4);X(I,0);TAB(10);
  170. 1790 FOR J=1 TO 5
  171. 1800 IF X(I,J)>=0 THEN X=X(I,J):GOTO 1820
  172. 1810 X=-X(I,J)*1000000!
  173. 1820 PRINT X;
  174. 1830 NEXT J
  175. 1840 PRINT
  176. 1850 NEXT I
  177. 1860 RETURN
  178. 1870 LPRINT"NO. TYPE","ELEMENT VALUES":LPRINT
  179. 1880 FOR I=1 TO N
  180. 1890 LPRINT I;TAB(4);X(I,0);TAB(10);
  181. 1900 FOR J=1 TO 5
  182. 1910 IF X(I,J)>=0 THEN X=X(I,J):GOTO 1930
  183. 1920 X=-X(I,J)*1000000!
  184. 1930 LPRINT X;
  185. 1940 NEXT J
  186. 1950 LPRINT
  187. 1960 NEXT I
  188. 1970 LPRINT:LPRINT:RETURN
  189. 1980 PRINT"THIS PROGRAM IS TO DESIGN AND EVALUATE MULTIPLE-FEEDBACK"
  190. 1990 PRINT"ACTIVE FILTERS. SEE 'HANDBOOK OF OPERATIONAL AMPLIFIER ACTIVE"
  191. 2000 PRINT"RC NETWORKS' BURR-BROWN RESEARCH CORP. 1966."
  192. 2010 PRINT
  193. 2020 PRINT" (C)1982 - GOLDEN RULE SYSTEMS - ALL RIGHTS RESERVED"
  194. 2030 PRINT
  195. 2040 PRINT"THE NETWORK OF THE FORM:"
  196. 2050 PRINT"                 |------|---------------|"
  197. 2060 PRINT"                 |      |               |"
  198. 2070 PRINT"                (4)    (5)              |"
  199. 2080 PRINT"                 |      |   |-----\     |"
  200. 2090 PRINT" INPUT O--(1)----|-(3)--|---| -    \    |"
  201. 2100 PRINT"                 |          |       \   |"
  202. 2110 PRINT"                (2)         |        >--|----O OUTPUT"
  203. 2120 PRINT"                 |      |---| +     /"
  204. 2130 PRINT"                ===     |   |      /"
  205. 2140 PRINT"                 =      =   |----/"
  206. 2150 PRINT
  207. 2160 RETURN
  208. 2170 INPUT"VALUE";X1
  209. 2180 X=LOG(X1)/LOG(10)
  210. 2190 ON SGN(X)+2 GOTO 2200,2240,2250
  211. 2200 X=ABS(X):E=INT(X)+1
  212. 2210 X=X1*(10^E)
  213. 2220 GOSUB 2280
  214. 2230 Y=Y/(10^E):RETURN
  215. 2240 Y=X1:RETURN
  216. 2250 E=INT(X):X=X1/(10^E)
  217. 2260 GOSUB 2280
  218. 2270 Y=Y*(10^E):RETURN
  219. 2280 READ Y
  220. 2290 READ Y1
  221. 2300 IF X=Y THEN 2360
  222. 2310 IF Y1=10 THEN 2340
  223. 2320 IF X<Y1 THEN 2340
  224. 2330 Y=Y1:GOTO 2290
  225. 2340 Y2=X-Y:Y3=Y1-X:IF Y2<=Y3 THEN 2360
  226. 2350 Y=Y1
  227. 2360 RESTORE:RETURN
  228. 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
  229. 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
  230. 2390 INPUT"SECTION,ELEMENT TO BE CHANGED (ENTER 0,0 TO QUIT)";I,J
  231. 2400 IF I>N THEN 2390
  232. 2410 IF J>5 THEN 2390
  233. 2420 IF I<1 OR J<1 THEN 2470
  234. 2430 IF X(I,J)<0 THEN 2450
  235. 2440 PRINT X(I,J);:INPUT X(I,J):GOTO 2390
  236. 2450 X=-X(I,J)*1000000!:PRINT X;:INPUT X
  237. 2460 X(I,J)=-X*.000001:GOTO 2390
  238. 2470 RETURN
  239. 2480 FOR I=0 TO N
  240. 2490 FOR J=0 TO 5
  241. 2500 Z(I,J)=X(I,J)
  242. 2510 NEXT J,I
  243. 2520 RETURN
  244. 2530 FOR I=0 TO N
  245. 2540 FOR J=0 TO 5
  246. 2550 X(I,J)=Z(I,J)
  247. 2560 NEXT J,I
  248. 2570 RETURN
  249. 2580 GOSUB 2480
  250. 2590 GOSUB 1760
  251. 2600 INPUT"CHANGE VALUES";A$:A$=LEFT$(A$,1)
  252. 2610 IF A$<>"Y" THEN 2670
  253. 2620 INPUT"CHANGE ALL VALUES TO NEAREST RETMA VALUES";A$:A$=LEFT$(A$,1)
  254. 2630 IF A$<>"Y" THEN 2660
  255. 2640 GOSUB 1650
  256. 2650 GOTO 2670
  257. 2660 GOSUB 2390
  258. 2670 INPUT"PLOT RESPONSE";A$:A$=LEFT$(A$,1)
  259. 2680 IF A$="Y" THEN GOSUB 1350
  260. 2690 INPUT"CHANGE ANY MORE VALUES";A$:A$=LEFT$(A$,1)
  261. 2700 IF A$<>"Y" THEN 2780
  262. 2710 GOSUB 1760
  263. 2720 GOSUB 2390
  264. 2730 GOSUB 1760
  265. 2740 INPUT"PLOT RESPONSE";A$:A$=LEFT$(A$,1)
  266. 2750 IF A$="Y" THEN GOSUB 1350 ELSE GOTO 2780
  267. 2760 GOTO 2670
  268. 2770 PRINT
  269. 2780 PRINT:PRINT"  *** FINAL VALUES ***   ":PRINT
  270. 2790 GOSUB 1760
  271. 2800 PRINT:PRINT
  272. 2810 INPUT"VALUES TO PRINTER";Y$:Y$=LEFT$(Y$,1)
  273. 2820 IF Y$="Y" THEN GOSUB 1870
  274. 2830 END
  275. 
  276. 2790 GOSUB 1760
  277. 2800 PRINT:PRINT
  278. 2810 INPUT"VALUES TO PRINTER";Y$:Y$=LEFT$(Y$,1)
  279. 2820 IF Y