home *** CD-ROM | disk | FTP | other *** search
/ RBBS in a Box Volume 1 #2 / RBBS_vol1_no2.iso / 005z / rmbcd1.bas < prev    next >
BASIC Source File  |  1985-10-02  |  8KB  |  257 lines

  1. 100 REM                 Passive 3-way Crossover Network
  2. 110 REM                 Design and Sensitivity Matching.
  3. 115 REM
  4. 120 REM                    Speaker Builder Magazine.
  5. 121 REM                  "Passive Crossover Networks"
  6. 122 REM                  -- Part 1: Volume 6 Number 1
  7. 123 REM                  -- Part 2: Volume 6 Number 2
  8. 125 REM
  9. 126 REM                     Speaker Builder Magazine
  10. 127 REM                     Post Office Box 494
  11. 128 REM                     Peterborough, NH  03458
  12. 129 REM
  13. 130 REM                                by
  14. 135 REM
  15. 136 REM                      Robert M. Bullock III
  16. 137 REM
  17. 140 REM                         December, 1984
  18. 145 REM
  19. 150 P2 = 6.283185 :: TH = 1000 :: MI = 1000000!
  20. 155 PRINT
  21. 156 PRINT
  22. 160 INPUT "Crossover Frequencies  FL,FH";FL,FH
  23. 165 PRINT
  24. 170 FM = SQR(FH*FL) :: W1 = P2*FL
  25. 180 W2 = P2*FM :: W3 = P2*FH
  26. 190 S = FH/FL :: R = SQR(S)
  27. 200 R3 = R*S :: R4 = S*S :: T3 = 0
  28. 210 INPUT "Loads RL,RM,RH";RL,RM,RH
  29. 215 PRINT
  30. 220 INPUT "Crossover type (1=APC or 2=CPC)";T
  31. 225 PRINT
  32. 230 INPUT "Crossover order (1, 2, 3 or 4)";O
  33. 235 PRINT
  34. 240 ON (O) GOSUB 280,460,760,1290
  35. 250 GOSUB 1980
  36. 260 END
  37. 265 REM
  38. 270 REM                         First-order
  39. 275 REM
  40. 280 A = R+1/R
  41. 290 IF (T = 1) THEN H = R-1/R
  42. 300 IF (T = 2) THEN H = SQR(S-1/S)
  43. 310 L1 = RL/W1*TH
  44. 320 RA = RM*(A/H-1) :: R0 = RM+RA
  45. 330 EG = 20*LOG(R0/RM)/LOG(10)
  46. 340 IF (T3 = 1) THEN R0 = RM
  47. 350 IF (T3 = 1) THEN RA = 0
  48. 360 C1 = A/R0/W2*MI :: L2 = R0/W2/A*TH
  49. 370 C2 = 1/RH/W3*MI
  50. 375 PRINT
  51. 380 PRINT "Labels refer to Figure 7 in the article:"
  52. 385 PRINT
  53. 390 PRINT USING "L11 = ###.#### mH";L1
  54. 400 PRINT USING " RA = ###.#### Ohms";RA
  55. 410 PRINT USING "C21 = ###.#### uF";C1
  56. 420 PRINT USING "L22 = ###.#### mH";L2
  57. 430 PRINT USING "C31 = ###.#### uF";C2
  58. 435 PRINT
  59. 440 RETURN
  60. 445 REM
  61. 450 REM                        Second-order
  62. 455 REM
  63. 460 ON (T) GOSUB 680,720
  64. 470 A = AL*(R+1/R) :: B = S+AL*AL+1/S
  65. 480 C1 = 1/AL/RL/W1*MI :: L1 = AL*RL/W1*TH
  66. 490 K = B-1 :: E = A-A/K
  67. 500 RA = RM*(K/H-1) :: R0 = RA+RM
  68. 510 EG = 20*LOG(R0/RM)/LOG(10)
  69. 520 IF (T3 = 1) THEN R0 = RM
  70. 530 IF (T3 = 1) THEN RA = 0
  71. 540 C2 = 1/A/R0/W2*MI :: L2 = A*R0/W2/K*TH
  72. 550 L3 = E*R0/W2*TH :: C3 = K/E/R0/W2*MI
  73. 560 L4 = AL*RH/W3*TH :: C4 = 1/AL/RH/W3*MI
  74. 565 PRINT
  75. 570 PRINT "Labels refer to figure 8 in the article:"
  76. 575 PRINT
  77. 580 PRINT USING "C11 = ###.#### uF";C1
  78. 590 PRINT USING "L12 = ###.#### mH";L1
  79. 600 PRINT USING " RA = ###.#### Ohms";RA
  80. 610 PRINT USING "C21 = ###.#### uF";C2
  81. 620 PRINT USING "L22 = ###.#### mH";L2
  82. 630 PRINT USING "L23 = ###.#### mH";L3
  83. 640 PRINT USING "C24 = ###.#### uF";C3
  84. 650 PRINT USING "L31 = ###.#### mH";L4
  85. 660 PRINT USING "C32 = ###.#### uF";C4
  86. 665 PRINT
  87. 670 RETURN
  88. 680 IF (S < 2.1) THEN GOTO 2170
  89. 690 AL = 2*(S-1)/SQR(S*S-2*S)
  90. 700 H = S+AL*AL-4+3/S
  91. 710 RETURN
  92. 720 AL = SQR(2)
  93. 730 H = SQR(R4-1/R4)
  94. 740 RETURN
  95. 745 REM
  96. 750 REM                         Third-order
  97. 755 REM
  98. 760 ON (T) GOSUB 1090,1250
  99. 770 A = BL*R+AL/R :: B = AL*S+AL*BL+BL/S
  100. 780 C = R3+AL*AL*R+BL*BL/R+1/R3
  101. 790 EL = BL-1/AL
  102. 800 L1 = RL/W1/AL*TH :: C1 = AL/EL/RL/W1*MI
  103. 810 L2 = EL*RL/W1*TH
  104. 820 E = B-C/A :: F = A-A/E :: K = C-A*(B-1)/E
  105. 830 G = B-1-K/F-E*F/K
  106. 840 RA = RM*(K/H-1) ::R0 = RA+RM
  107. 850 EG = 20*LOG(R0/RM)/LOG(10)
  108. 860 IF (T3 = 1) THEN RA = 0
  109. 870 IF (T3 = 1) THEN R0 = RM
  110. 880 C2 = A/R0/W2*MI :: L3 = E*R0/W2/A*TH
  111. 890 C3 = K/E/R0/W2*MI
  112. 900 L4 = R0/W2/F*TH :: C4 = F/G/R0/W2*MI
  113. 910 L5 = G*R0/W2/K*TH
  114. 920 C5 = AL/RH/W3*MI :: L6 = EL*RH/W3/AL*TH
  115. 930 C6 = 1/EL/RH/W3*MI
  116. 935 PRINT
  117. 940 PRINT "Labels refer to figure 9 in the article:"
  118. 945 PRINT
  119. 950 PRINT USING "L11 = ###.#### mH";L1
  120. 960 PRINT USING "C12 = ###.#### uF";C1
  121. 970 PRINT USING "L13 = ###.#### mH";L2
  122. 980 PRINT USING " RA = ###.#### Ohms";RA
  123. 990 PRINT USING "C21 = ###.#### uf";C2
  124. 1000 PRINT USING "L22 = ###.#### mH";L3
  125. 1010 PRINT USING "C23 = ###.#### uf";C3
  126. 1020 PRINT USING "L24 = ###.#### mH";L4
  127. 1030 PRINT USING "C25 = ###.#### uf";C4
  128. 1040 PRINT USING "L26 = ###.#### mH";L5
  129. 1050 PRINT USING "C31 = ###.#### uf";C5
  130. 1060 PRINT USING "L32 = ###.#### mH";L6
  131. 1070 PRINT USING "C33 = ###.#### uf";C6
  132. 1075 PRINT
  133. 1080 RETURN
  134. 1090 INPUT "BP Polarity (1 or -1)";PO
  135. 1095 PRINT
  136. 1100 IF (PO = 1) AND (S < 2) THEN GOTO 2170
  137. 1110 IF (PO = -1) AND (S < 3) THEN GOTO 2170
  138. 1120 A8 = R4+4/S :: C8 = 4*S :: D8 = -8*(R4+1/S)
  139. 1130 IF (PO = -1) THEN GOSUB 1230
  140. 1140 BL = 2
  141. 1150 FOR I = 1 TO 5
  142. 1160 B2 = BL*BL
  143. 1170 NU = 4*B2*B2*BL+2*A8*B2*BL-8*B2-D8
  144. 1180 BL = NU/(5*B2*B2+3*A8*B2-16*BL+C8)
  145. 1190 NEXT I
  146. 1200 AL = BL*BL/2
  147. 1210 H = R3+(AL*AL-2*BL)*R+PO*2*AL/R+(1-2*PO)/R3
  148. 1220 RETURN
  149. 1230 A8 = -A8 :: C8 = C8+8/R4 :: D8 = -D8
  150. 1240 RETURN
  151. 1250 AL = 2 :: BL = 2
  152. 1260 H = SQR(R3*R3-1/R3/R3)
  153. 1270 RETURN
  154. 1275 REM
  155. 1280 REM                       Fourth-order
  156. 1285 REM
  157. 1290 ON (T) GOSUB 1690,1950
  158. 1300 A = CL*R+AL/R :: B = BL*S+AL*CL+BL/S
  159. 1310 C = AL*R3+AL*BL*R+BL*CL/R+CL/R3
  160. 1320 D = R4+AL*AL*S+BL*BL+CL*CL/S+1/R4
  161. 1330 EL = BL-CL/AL :: FL = CL-AL/EL
  162. 1340 C1 = 1/AL/RL/W1*MI :: L1 = AL*RL/W1/EL*TH
  163. 1350 C2 = EL/FL/RL/W1*MI :: L2 = FL*RL/W1*TH
  164. 1360 E = B-C/A :: F = D-C/A :: G = C-A*F/E
  165. 1370 K = F-C*E/G+A*(B-1)/G :: M = B-1-A*E/G+A/G
  166. 1380 N = C-A*(B-1)/E-G*M/K :: P = A-A/E-G/K
  167. 1390 Q = M-N/P :: T1 = N-P*K/Q
  168. 1400 RA = RM*(K/H-1) :: R0 = RM+RA
  169. 1410 EG = 20*LOG(R0/RM)/LOG(10)
  170. 1420 IF (T3 = 1) THEN R0 = RM
  171. 1430 IF (T3 = 1) THEN RA = 0
  172. 1440 C3 = 1/A/R0/W2*MI  :: L3 = A*R0/W2/E*TH
  173. 1450 C4 = E/G/R0/W2*MI :: L4 = G*R0/W2/K*TH
  174. 1460 L5 = P*R0/W2*TH :: C5 = Q/P/R0/W2*MI
  175. 1470 L6 = T1*R0/W2/Q*TH :: C6 = K/R0/W2/T1*MI
  176. 1480 L7 = AL*RH/W3*TH :: C7 = EL/AL/RH/W3*MI
  177. 1490 L8 = FL*RH/W3/EL*TH :: C8 = 1/FL/RH/W3*MI
  178. 1500 PRINT "Labels refer to figure 10 in the article:"
  179. 1510 PRINT USING "C11 = ###.#### uf";C1
  180. 1520 PRINT USING "L12 = ###.#### mH";L1
  181. 1530 PRINT USING "C13 = ###.#### uf";C2
  182. 1540 PRINT USING "L14 = ###.#### mH";L2
  183. 1550 PRINT USING " RA = ###.#### Ohms";RA
  184. 1560 PRINT USING "C21 = ###.#### uf";C3
  185. 1570 PRINT USING "L22 = ###.#### mH";L3
  186. 1580 PRINT USING "C23 = ###.#### uf";C4
  187. 1590 PRINT USING "L24 = ###.#### mH";L4
  188. 1600 PRINT USING "L25 = ###.#### mH";L5
  189. 1610 PRINT USING "C26 = ###.#### uf";C5
  190. 1620 PRINT USING "L27 = ###.#### mH";L6
  191. 1630 PRINT USING "C28 = ###.#### uf";C6
  192. 1640 PRINT USING "L31 = ###.#### mH";L7
  193. 1650 PRINT USING "C32 = ###.#### uf";C7
  194. 1660 PRINT USING "L33 = ###.#### mH";L8
  195. 1670 PRINT USING "C34 = ###.#### uf";C8
  196. 1675 PRINT
  197. 1680 RETURN
  198. 1690 IF (S < 1.5) THEN GOTO 2170
  199. 1700 Z = 1 :: H9 = .00001
  200. 1710 FOR I = 1 TO 5
  201. 1720 X = Z+H9
  202. 1730 GOSUB 1870
  203. 1740 Y3 = Y
  204. 1750 X = X-2*H9
  205. 1760 GOSUB 1870
  206. 1770 Y2 = Y
  207. 1780 X = X+H9
  208. 1790 GOSUB 1870
  209. 1800 Z = Z-Y*2*H9/(Y3-Y2)
  210. 1810 NEXT I
  211. 1820 X = Z
  212. 1830 GOSUB 1920
  213. 1840 CL = SQR(Y1) :: AL = X*CL :: BL = CL*CL/2
  214. 1850 H = (BL*BL-2*AL*CL+2)*R4/2-1/R4
  215. 1860 RETURN
  216. 1870 X2 = X*X-1
  217. 1880 GOSUB 1920
  218. 1890 Y4 = .25*Y1*Y1-2*X*Y1+2
  219. 1900 Y = X2*R4*R+(X2+.5)*Y4*R+1/R3-2*X/R4/R
  220. 1910 RETURN
  221. 1920 DU = R4*S-2*S
  222. 1930 Y1 = 4*(2*X*R4*S+2*X2*R4-4*X*S+2)/DU
  223. 1940 RETURN
  224. 1950 AL = SQR(4+2*SQR(2)) :: BL = 2+SQR(2)
  225. 1960 CL = AL :: H = SQR(R4*R4-1/R4/R4)
  226. 1970 RETURN
  227. 1980 PRINT "Do you want RA=0 circuit values?"
  228. 1990 INPUT "(1=Yes or 0=No) - ";T3
  229. 1995 PRINT
  230. 2000 IF (T3 = 0) THEN RETURN
  231. 2010 IF (O = 1) THEN GOSUB 310
  232. 2020 IF (O = 2) THEN GOSUB 500
  233. 2030 IF (O = 3) THEN GOSUB 850
  234. 2040 IF (O = 4) THEN GOSUB 1410
  235. 2050 PRINT
  236. 2060 PRINT USING"Excess gain is EG = ##.##dB.";EG
  237. 2065 PRINT
  238. 2070 PRINT
  239. 2080 INPUT "Inductor - source losses (0 if none)";RS
  240. 2090 IF (RS = 0) THEN RETURN
  241. 2100 LG = 20*LOG((RM+RS)/RM)/LOG(10)
  242. 2110 REM
  243. 2120 GG = EG-LG
  244. 2130 PRINT
  245. 2140 PRINT USING "Driver sensitivity increase is EG-LG = ##.##dB.";GG
  246. 2150 PRINT
  247. 2155 PRINT
  248. 2160 RETURN
  249. 2170 PRINT
  250. 2180 PRINT "Run again with crossover frequencies closer together."
  251. 2190 PRINT
  252. 3000 PRINT
  253. 55 PRINT
  254. 2160 RETURN
  255. 2170 PRINT
  256. 2180 PRINT "Run again with crossover frequencies closer together."
  257. 2190 PRIN