home *** CD-ROM | disk | FTP | other *** search
- 10 REM RESISTOR SELECTION PROGRAM
- 20 PRINT "This program will find the two 5% OR 1% tolerance resistor"
- 30 PRINT "values which most closely provide a required ratio."
- 40 PRINT "The minimum values given will range from 10 to 91 for"
- 50 PRINT "5% and 10 to 97.6 for 1%."
- 60 PRINT "ACTUAL RESISTANCE VALUES ARE DETERMINED BY THE USER!"
- 65 GOTO 75
- 70 CLEAR
- 75 INPUT "What resistor tolerance would you like, 1% or 5%(Enter 1 or 5)";TOL
- 80 IF TOL=5 THEN NV=25 :GOTO 110
- 90 IF TOL=1 THEN NV=97 :GOTO 110
- 100 GOTO 75
- 110 DIM D(100)
- 120 DIM F(100,8)
- 130 FOR I=1 TO 25
- 140 READ D(I)
- 150 NEXT I
- 170 DATA 10,11,12,13,15,16,18,20, 22,24,27,30
- 180 DATA 33,36,39,43,47,51,56,62,68,75,82,91,100
- 190 IF TOL=5 GOTO 320
- 195 FOR I=1 TO NV
- 196 READ D(I)
- 197 NEXT I
- 200 DATA 10,10.2,10.5,10.7,11,11.3,11.5,11.8,12.1
- 210 DATA 12.4,12.7,13,13.3,13.7,14,14.3,14.7,15
- 220 DATA 15.4,15.8,16.2,16.5,16.9,17.4,17.8,18.2
- 230 DATA 18.7,19.1,19.6,20,20.5,21,21.5,22.1,22.6
- 240 DATA 23.2,23.7,24.3,24.9,25.5,26.1,26.7,27.4
- 250 DATA 28,28.7,29.4,30.1,30.9,31.6,32.4,33.2,34
- 260 DATA 34.8,35.7,36.5,37.4,38.3,39.2,40.2,41.2
- 270 DATA 42.2,43.2,44.2,45.2,46.4,47.5,48.7,49.9
- 280 DATA 51.1,52.3,53.6,54.9,56.2,57.6,59,60.4,61.9
- 290 DATA 63.4,64.9,66.5,68.1,69.8,71.5,73.2,75,76.8
- 300 DATA 78.7,80.6,82.5,84.5,86.6,88.7,90.9,93.1
- 310 DATA 95.3,97.6,100
- 320 INPUT "Is one resistor value known (Y/N)";A$
- 330 IF A$="N" GOTO 360
- 340 IF A$<>"Y" GOTO 320
- 350 GOTO 1360
- 360 INPUT "Required ratio is:";X :K=X
- 370 IF X<=0 THEN PRINT "WHO ARE YOU TRYING TO KID???":GOTO 360
- 380 IF X<1 THEN X=1/X
- 390 S=0
- 400 IF X>=1 AND X<10 GOTO 440
- 410 X=X/10
- 420 S=S+1
- 430 GOTO 400
- 440 IF X=1 THEN PRINT "Any resistor twice or with a decade value will do!!!!!":GOTO 70
- 450 IF S=0 THEN W=1: GOTO 470
- 460 GOSUB 1310
- 470 FOR I=1 TO NV-1
- 480 Q=0
- 490 R2=D(I)
- 500 R1=X*R2
- 510 IF R1>=10 AND R1<=100 GOTO 550
- 520 R1=R1/10
- 530 Q=Q+1
- 540 GOTO 510
- 550 T=1
- 560 RL=D(T)
- 570 IF R1<=RL GOTO 610
- 580 T=T+1
- 590 IF T=NV+1 GOTO 1240
- 600 GOTO 560
- 610 RH=RL: RL=D(T-1)
- 620 IF Q=0 THEN V=1: GOTO 640
- 630 GOSUB 1260
- 640 IF K<1 THEN XL=R2/(W*V*RH):XH=R2/(W*V*RL): GOTO 660
- 650 XL=(W*V*RL)/R2: XH=(W*V*RH)/R2
- 660 EL=K-XL: EH=XH-K
- 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
- 680 F(I,1)=RL*V:F(I,2)=EL:F(I,3)=RH*V:F(I,4)=EH
- 690 NEXT I
- 700 A=0:B=0
- 710 FOR I=1 TO 3
- 720 F(I,5)=1000:F(I,6)=1000
- 730 F(I,7)=0: F(I,8)=0
- 740 NEXT I
- 750 FOR I=1 TO NV-1
- 760 A=F(I,2):B=F(I,4)
- 770 C=1
- 780 IF A<F(C,5) GOTO 870
- 790 C=C+1
- 800 IF C=4 GOTO 820
- 810 GOTO 780
- 820 C=1
- 830 IF B<F(C,6) GOTO 920
- 840 C=C+1
- 850 IF C=4 GOTO 960
- 860 GOTO 830
- 870 REM
- 880 F((C+2),5)=F((C+1),5):F((C+2),7)=F((C+1),7)
- 890 F((C+1),5)=F(C,5):F((C+1),7)=F(C,7)
- 900 F(C,5)=A:F(C,7)=I
- 910 GOTO 820
- 920 REM
- 930 F((C+2),6)=F((C+1),6):F((C+2),8)=F((C+1),8)
- 940 F((C+1),6)=F(C,6):F((C+1),8)=F(C,8)
- 950 F(C,6)=B: F(C,8)=I
- 960 NEXT I
- 970 PRINT "If the ratio is set by R1/R2"
- 980 PRINT "The three best choices for the smallest negative and"
- 990 PRINT "positive errors are:"
- 1000 PRINT "R1" TAB(10) "R2" TAB(20) "PERCENT ERROR"
- 1010 PRINT "--" TAB(10) "--" TAB(20) "-------------"
- 1020 FOR C=1 TO 3
- 1030 A=F(C,7)
- 1040 IF K<1 THEN R2=W*F(A,1):R1=D(A):GOTO 1060
- 1050 R2=D(A):R1=W*F(A,1)
- 1060 PEL=((F(A,2)*-1)/K)*100
- 1070 PRINT R1 TAB(10) R2 TAB(24);
- 1080 PRINT USING "##.###";PEL;:PRINT "%"
- 1090 NEXT C
- 1100 FOR C=1 TO 3
- 1110 A=F(C,8)
- 1120 IF K<1 THEN R2=W*F(A,3):R1=D(A):GOTO 1140
- 1130 R2=D(A):R1=W*F(A,3)
- 1140 PEH=(F(A,4)/K)*100
- 1150 PRINT R1 TAB( 10) R2 TAB( 24);
- 1160 PRINT USING "##.###";PEH;:PRINT "%"
- 1170 NEXT C
- 1180 FOR I=1 TO NV-1
- 1190 FOR R=1 TO 8
- 1200 F(I,R)=0
- 1210 NEXT R
- 1220 NEXT I
- 1230 GOTO 70
- 1240 F(I,2)=1000:F(I,4)=1000
- 1250 GOTO 690
- 1260 Z=Q:V=1
- 1270 FOR Z=Z TO 1 STEP-1
- 1280 V=V*10
- 1290 NEXT Z
- 1300 RETURN
- 1310 Z=S:W=1
- 1320 FOR Z=Z TO 1 STEP-1
- 1330 W=W*10
- 1340 NEXT Z
- 1350 RETURN
- 1360 INPUT "Is known value in numerator or denominator (N/D)";A$
- 1370 IF A$="N" THEN B=1: GOTO 1400
- 1380 IF A$<>"D" GOTO 1360
- 1390 B=2
- 1400 INPUT "Enter the known R value (DON'T ABBREVIATE must be>=10)";R1
- 1410 INPUT "What is the required ratio";K
- 1420 IF K<1 THEN C=1
- 1430 IF K>1 THEN C=2
- 1440 IF K<=0 THEN PRINT "WHO ARE YOU TRYING TO KID!?!":GOTO 1410
- 1450 V=1:W=1:M=1
- 1460 IF R1>=10 AND R1<100 GOTO 1500
- 1470 R1=R1/10
- 1480 M=M*10
- 1490 GOTO 1460
- 1500 IF B=1 AND C=1 GOTO 1540
- 1510 IF B=1 AND C=2 GOTO 1580
- 1520 IF B=2 AND C=1 GOTO 1590
- 1530 X=K: GOTO 1550
- 1540 X=1/K
- 1550 IF X>=1 AND X<10 GOTO 1630
- 1560 X=X/10: W=W*10
- 1570 GOTO 1550
- 1580 X=1/K: GOTO 1600
- 1590 X=K
- 1600 IF X>=1 AND X<10 GOTO 1630
- 1610 X=X*10: W=W/10
- 1620 GOTO 1600
- 1630 V=1
- 1640 IF X=1 THEN RH=R1:RL=R1: GOTO 1780
- 1650 RX=R1*X
- 1660 IF RX>=10 AND RX<100 GOTO 1700
- 1670 RX=RX/10
- 1680 V=V*10
- 1690 GOTO 1660
- 1700 T=1
- 1710 RL=D(T)
- 1720 IF RX<=RL GOTO 1760
- 1730 T=T+1
- 1740 IF T=NV+1 GOTO 2050
- 1750 GOTO 1710
- 1760 RH=RL
- 1770 RL=D(T-1)
- 1780 RH=RH*V*W: RL=RL*V*W
- 1790 IF B=1 AND C=1 THEN XL=R1/RH: XH=R1/RL: GOTO 1830
- 1800 IF B=1 AND C=2 THEN XL=R1/RH: XH=R1/RL: GOTO 1830
- 1810 IF B=2 AND C=1 THEN XL=RL/R1: XH=RH/R1: GOTO 1830
- 1820 XL=RL/R1: XH=RH/R1
- 1830 EH=XH-K: EL=XL-K
- 1840 PEL=(EL/K)*100: PEH=(EH/K)*100
- 1850 IF B=1 AND C=1 THEN RW=R1*M:RX=RW:RY=RH*M:RZ=RL*M:GOTO 1890
- 1860 IF B=1 AND C=2 THEN RW=R1*M:RX=RW:RY=RH*M:RZ=RL*M:GOTO 1890
- 1870 IF B=2 AND C=1 THEN RW=RL*M:RX=RH*M:RY=R1*M:RZ=RY:GOTO 1890
- 1880 RW=RL*M:RX=RH*M:RY=R1*M:RZ=RY
- 1890 PRINT "If the ratio is set by R1/R2"
- 1900 PRINT "The best choices are:"
- 1910 PRINT "R1" TAB(10) "R2" TAB(20) "PERCENT ERROR"
- 1920 PRINT "--" TAB(10) "--" TAB(20) "-------------"
- 1930 PRINT RW TAB(10) RY TAB(24);
- 1940 PRINT USING "##.###";PEL;:PRINT "%"
- 1950 PRINT RX TAB(10) RZ TAB(24);
- 1960 PRINT USING "##.###";PEH;:PRINT "%"
- 1970 GOTO 70
- 1980 FOR I= 1 TO NV-1
- 1990 FOR J=1 TO 8
- 2000 PRINT F(I,J);
- 2010 NEXT J
- 2020 PRINT
- 2030 NEXT I
- 2040 GOTO 750
- 2050 PRINT "DIDN'T FIND A VALUE!"
- 2060 GOTO 70
- O 8
- 2000 PRINT F(I,J);