home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / design3 / resrat.bas < prev    next >
BASIC Source File  |  1984-11-20  |  6KB  |  212 lines

  1. 10 REM RESISTOR SELECTION PROGRAM
  2. 20 PRINT "This program will find the two 5% OR 1% tolerance resistor"
  3. 30 PRINT "values which most closely provide a required ratio."
  4. 40 PRINT "The minimum values given will range from 10 to 91 for"
  5. 50 PRINT "5% and 10 to 97.6 for 1%."
  6. 60 PRINT "ACTUAL RESISTANCE VALUES ARE DETERMINED BY THE USER!"
  7. 65 GOTO 75
  8. 70 CLEAR
  9. 75 INPUT "What resistor tolerance would you like, 1% or 5%(Enter 1 or 5)";TOL
  10. 80 IF TOL=5 THEN NV=25 :GOTO 110
  11. 90 IF TOL=1 THEN NV=97 :GOTO 110
  12. 100 GOTO 75
  13. 110 DIM D(100)
  14. 120 DIM F(100,8)
  15. 130 FOR I=1 TO 25
  16. 140 READ D(I)
  17. 150 NEXT I
  18. 170 DATA 10,11,12,13,15,16,18,20, 22,24,27,30
  19. 180 DATA 33,36,39,43,47,51,56,62,68,75,82,91,100
  20. 190 IF TOL=5 GOTO 320
  21. 195 FOR I=1 TO NV
  22. 196 READ D(I)
  23. 197 NEXT I
  24. 200 DATA 10,10.2,10.5,10.7,11,11.3,11.5,11.8,12.1
  25. 210 DATA 12.4,12.7,13,13.3,13.7,14,14.3,14.7,15
  26. 220 DATA 15.4,15.8,16.2,16.5,16.9,17.4,17.8,18.2
  27. 230 DATA 18.7,19.1,19.6,20,20.5,21,21.5,22.1,22.6
  28. 240 DATA 23.2,23.7,24.3,24.9,25.5,26.1,26.7,27.4
  29. 250 DATA 28,28.7,29.4,30.1,30.9,31.6,32.4,33.2,34
  30. 260 DATA 34.8,35.7,36.5,37.4,38.3,39.2,40.2,41.2
  31. 270 DATA 42.2,43.2,44.2,45.2,46.4,47.5,48.7,49.9
  32. 280 DATA 51.1,52.3,53.6,54.9,56.2,57.6,59,60.4,61.9
  33. 290 DATA 63.4,64.9,66.5,68.1,69.8,71.5,73.2,75,76.8
  34. 300 DATA 78.7,80.6,82.5,84.5,86.6,88.7,90.9,93.1
  35. 310 DATA 95.3,97.6,100
  36. 320 INPUT "Is one resistor value known (Y/N)";A$
  37. 330 IF A$="N" GOTO 360
  38. 340 IF A$<>"Y" GOTO 320
  39. 350 GOTO 1360
  40. 360 INPUT "Required ratio is:";X :K=X
  41. 370 IF X<=0 THEN PRINT "WHO ARE YOU TRYING TO KID???":GOTO 360
  42. 380 IF X<1 THEN X=1/X
  43. 390 S=0
  44. 400 IF X>=1 AND X<10 GOTO 440
  45. 410 X=X/10
  46. 420 S=S+1
  47. 430 GOTO 400
  48. 440 IF X=1 THEN PRINT "Any resistor twice or with a decade value will do!!!!!":GOTO 70
  49. 450 IF S=0 THEN W=1: GOTO 470
  50. 460 GOSUB 1310
  51. 470 FOR I=1 TO NV-1
  52. 480 Q=0
  53. 490 R2=D(I)
  54. 500 R1=X*R2
  55. 510 IF R1>=10 AND R1<=100 GOTO 550
  56. 520 R1=R1/10
  57. 530 Q=Q+1
  58. 540 GOTO 510
  59. 550 T=1
  60. 560 RL=D(T)
  61. 570 IF R1<=RL GOTO 610
  62. 580 T=T+1
  63. 590 IF T=NV+1 GOTO 1240
  64. 600 GOTO 560
  65. 610 RH=RL: RL=D(T-1)
  66. 620 IF Q=0 THEN V=1: GOTO 640
  67. 630 GOSUB 1260
  68. 640 IF K<1 THEN XL=R2/(W*V*RH):XH=R2/(W*V*RL): GOTO 660
  69. 650 XL=(W*V*RL)/R2: XH=(W*V*RH)/R2
  70. 660 EL=K-XL: EH=XH-K
  71. 670 IF K<1 THEN F(I,1)=RH*V:F(I,2)=EL:F(I,3)=RL*V:F(I,4)=EH: GOTO 690
  72. 680 F(I,1)=RL*V:F(I,2)=EL:F(I,3)=RH*V:F(I,4)=EH
  73. 690 NEXT I
  74. 700 A=0:B=0
  75. 710 FOR I=1 TO 3
  76. 720 F(I,5)=1000:F(I,6)=1000
  77. 730 F(I,7)=0: F(I,8)=0
  78. 740 NEXT I
  79. 750 FOR I=1 TO NV-1
  80. 760 A=F(I,2):B=F(I,4)
  81. 770 C=1
  82. 780 IF A<F(C,5) GOTO 870
  83. 790 C=C+1
  84. 800 IF C=4 GOTO 820
  85. 810 GOTO 780
  86. 820 C=1
  87. 830 IF B<F(C,6) GOTO 920
  88. 840 C=C+1
  89. 850 IF C=4 GOTO 960
  90. 860 GOTO 830
  91. 870 REM
  92. 880 F((C+2),5)=F((C+1),5):F((C+2),7)=F((C+1),7)
  93. 890 F((C+1),5)=F(C,5):F((C+1),7)=F(C,7)
  94. 900 F(C,5)=A:F(C,7)=I
  95. 910 GOTO 820
  96. 920 REM
  97. 930 F((C+2),6)=F((C+1),6):F((C+2),8)=F((C+1),8)
  98. 940 F((C+1),6)=F(C,6):F((C+1),8)=F(C,8)
  99. 950 F(C,6)=B: F(C,8)=I
  100. 960 NEXT I
  101. 970 PRINT "If the ratio is set by R1/R2"
  102. 980 PRINT "The three best choices for the smallest negative and"
  103. 990 PRINT "positive errors are:"
  104. 1000 PRINT "R1" TAB(10) "R2" TAB(20) "PERCENT ERROR"
  105. 1010 PRINT "--" TAB(10) "--" TAB(20) "-------------"
  106. 1020 FOR C=1 TO 3
  107. 1030 A=F(C,7)
  108. 1040 IF K<1 THEN R2=W*F(A,1):R1=D(A):GOTO 1060
  109. 1050 R2=D(A):R1=W*F(A,1)
  110. 1060 PEL=((F(A,2)*-1)/K)*100
  111. 1070 PRINT R1 TAB(10) R2 TAB(24);
  112. 1080 PRINT USING "##.###";PEL;:PRINT "%"
  113. 1090 NEXT C
  114. 1100 FOR C=1 TO 3
  115. 1110 A=F(C,8)
  116. 1120 IF K<1 THEN R2=W*F(A,3):R1=D(A):GOTO 1140
  117. 1130 R2=D(A):R1=W*F(A,3)
  118. 1140 PEH=(F(A,4)/K)*100
  119. 1150 PRINT R1 TAB( 10) R2 TAB( 24);
  120. 1160 PRINT USING "##.###";PEH;:PRINT "%"
  121. 1170 NEXT C
  122. 1180 FOR I=1 TO NV-1
  123. 1190 FOR R=1 TO 8
  124. 1200 F(I,R)=0
  125. 1210 NEXT R
  126. 1220 NEXT I
  127. 1230 GOTO 70
  128. 1240 F(I,2)=1000:F(I,4)=1000
  129. 1250 GOTO 690
  130. 1260 Z=Q:V=1
  131. 1270 FOR Z=Z TO 1 STEP-1
  132. 1280 V=V*10
  133. 1290 NEXT Z
  134. 1300 RETURN
  135. 1310 Z=S:W=1
  136. 1320 FOR Z=Z TO 1 STEP-1
  137. 1330 W=W*10
  138. 1340 NEXT Z
  139. 1350 RETURN
  140. 1360 INPUT "Is known value in numerator or denominator (N/D)";A$
  141. 1370 IF A$="N" THEN B=1: GOTO 1400
  142. 1380 IF A$<>"D" GOTO 1360
  143. 1390 B=2
  144. 1400 INPUT "Enter the known R value (DON'T ABBREVIATE must be>=10)";R1
  145. 1410 INPUT "What is the required ratio";K
  146. 1420 IF K<1 THEN C=1
  147. 1430 IF K>1 THEN C=2
  148. 1440 IF K<=0 THEN PRINT "WHO ARE YOU TRYING TO KID!?!":GOTO 1410
  149. 1450 V=1:W=1:M=1
  150. 1460 IF R1>=10 AND R1<100 GOTO 1500
  151. 1470 R1=R1/10
  152. 1480 M=M*10
  153. 1490 GOTO 1460
  154. 1500 IF B=1 AND C=1 GOTO 1540
  155. 1510 IF B=1 AND C=2 GOTO 1580
  156. 1520 IF B=2 AND C=1 GOTO 1590
  157. 1530 X=K: GOTO 1550
  158. 1540 X=1/K
  159. 1550 IF X>=1 AND X<10 GOTO 1630
  160. 1560 X=X/10: W=W*10
  161. 1570 GOTO 1550
  162. 1580 X=1/K: GOTO 1600
  163. 1590 X=K
  164. 1600 IF X>=1 AND X<10 GOTO 1630
  165. 1610 X=X*10: W=W/10
  166. 1620 GOTO 1600
  167. 1630 V=1
  168. 1640 IF X=1 THEN RH=R1:RL=R1: GOTO 1780
  169. 1650 RX=R1*X
  170. 1660 IF RX>=10 AND RX<100 GOTO 1700
  171. 1670 RX=RX/10
  172. 1680 V=V*10
  173. 1690 GOTO 1660
  174. 1700 T=1
  175. 1710 RL=D(T)
  176. 1720 IF RX<=RL GOTO 1760
  177. 1730 T=T+1
  178. 1740 IF T=NV+1 GOTO 2050
  179. 1750 GOTO 1710
  180. 1760 RH=RL
  181. 1770 RL=D(T-1)
  182. 1780 RH=RH*V*W: RL=RL*V*W
  183. 1790 IF B=1 AND C=1 THEN XL=R1/RH: XH=R1/RL: GOTO 1830
  184. 1800 IF B=1 AND C=2 THEN XL=R1/RH: XH=R1/RL: GOTO 1830
  185. 1810 IF B=2 AND C=1 THEN XL=RL/R1: XH=RH/R1: GOTO 1830
  186. 1820 XL=RL/R1: XH=RH/R1
  187. 1830 EH=XH-K: EL=XL-K
  188. 1840 PEL=(EL/K)*100: PEH=(EH/K)*100
  189. 1850 IF B=1 AND C=1 THEN RW=R1*M:RX=RW:RY=RH*M:RZ=RL*M:GOTO 1890
  190. 1860 IF B=1 AND C=2 THEN RW=R1*M:RX=RW:RY=RH*M:RZ=RL*M:GOTO 1890
  191. 1870 IF B=2 AND C=1 THEN RW=RL*M:RX=RH*M:RY=R1*M:RZ=RY:GOTO 1890
  192. 1880 RW=RL*M:RX=RH*M:RY=R1*M:RZ=RY
  193. 1890 PRINT "If the ratio is set by R1/R2"
  194. 1900 PRINT "The best choices are:"
  195. 1910 PRINT "R1" TAB(10) "R2" TAB(20) "PERCENT ERROR"
  196. 1920 PRINT "--" TAB(10) "--" TAB(20) "-------------"
  197. 1930 PRINT RW TAB(10) RY TAB(24);
  198. 1940 PRINT USING "##.###";PEL;:PRINT "%"
  199. 1950 PRINT RX TAB(10) RZ TAB(24);
  200. 1960 PRINT USING "##.###";PEH;:PRINT "%"
  201. 1970 GOTO 70
  202. 1980 FOR I= 1 TO NV-1
  203. 1990 FOR J=1 TO 8
  204. 2000 PRINT F(I,J);
  205. 2010 NEXT J
  206. 2020 PRINT
  207. 2030 NEXT I
  208. 2040 GOTO 750
  209. 2050 PRINT "DIDN'T FIND A VALUE!"
  210. 2060 GOTO 70
  211. O 8
  212. 2000 PRINT F(I,J);