[INIT] ' THERM.BAS 9 May 89 - 2005 Bill Yotter MAINWIN 70 25:ON ERROR GOTO [INIT]:CLS LOCATE 13,2:PRINT"To linearize Thermistor R must < as temp >" LOCATE 26,4:PRINT"+--(Rs)--(THERM)--+" LOCATE 22,5:PRINT"O---+ +---O" LOCATE 26,6:PRINT"+------(Rp)-------+" LOCATE 2,9:PRINT TAB(2);"Thermistor Resistance at: ";:INPUT"cold ? ";TC LOCATE 44,9:INPUT"amb ? ";TM LOCATE 57,9:INPUT"hot ? ";TH IF NOT(THTM) THEN [AVG] K=(TC*TM+TH*(TM-2*TC))/(TC+TH-2*TM):MP=((K*(TC-TM)/(TM*(K+TC)))-.0005)*100 IF MP<1 THEN [MP] [AGAIN] FOR C=10 TO 19:LOCATE 1,C:PRINT SPACE$(65):NEXT C LOCATE 15,11:PRINT"Max equal +/- range = ";INT(MP);"% ";:INPUT "desired % ? ";DP IF (DP > MP) OR (DP<1) THEN [AGAIN] DP=DP/100:RS=(TM*(K+DP*(K+TC))-K*TC)/(TM-(TC+DP*(K+TC))):Rin=RS:GOSUB [NEAREST]:RS=Rout RP=K-RS:Rin=RP:GOSUB [NEAREST]:RP=Rout:CR=(TC+RS)*RP/(TC+K):MR=(TM+RS)*RP/(TM+K):HR=(TH+RS)*RP/(TH+K) LOCATE 18,13:PRINT"1% Rs = ";RS LOCATE 38,13:PRINT"1% Rp = ";RP LOCATE 2,15:PRINT"Network R: Cold = ";INT(CR) LOCATE 34,15:PRINT"Amb = ";INT(MR) LOCATE 55,15:PRINT"Hot = ";INT(HR) LOCATE 2,17:PRINT"Delta R: Total = ";INT(CR-HR) LOCATE 30,17:PRINT"Amb/Hot = ";INT(HR-MR) LOCATE 50,17:PRINT"Amb/Cold = ";INT(CR-MR) LOCATE 2,19:PRINT TAB(15);"New % value (Y/N/Q) ? ";:X$=INPUT$(1) IF INSTR("Nn",X$) THEN [INIT] ELSE IF INSTR("Qq",X$) THEN END ELSE [AGAIN] [TEMP] LOCATE 2,16:INPUT"Resistance must decrease as temp increases ... ";X$:GOTO [INIT] [AVG] LOCATE 2,16:INPUT"Avg Hot/Cold resistance is greater then Amb ... ";X$:GOTO [INIT] [MP] LOCATE 2,16:INPUT"Unable to linearize this thermistor, try another ... ";X$:GOTO [INIT] [NEAREST] ' 1% R input=Rin output=Rout Nnr=INT(96*(LOG(Rin)*.434295)):FOR Jnr=1 TO 2:Rnr(Jnr)=10^((Nnr+Jnr-1)/96):Vnr=LOG(Rnr(Jnr))*.434295 Vnr=INT(Vnr)-2:Rnr(Jnr)=INT(Rnr(Jnr)/(10^Vnr)+.5):Rnr(Jnr)=Rnr(Jnr)*10^Vnr:NEXT Jnr Rout=Rnr(1):IF Rin>(Rnr(1)+Rnr(2))/2 THEN Rout=Rnr(2) RETURN