'CR1000 'Created by Short Cut (4.3) ConstTable ' Steinhart & Hart constants for YSI thermistors: Const a = 0.0014654354 Const b = 0.0002386780 Const c = 0.0000001000 ''' thermistor bridge resistor value: Const Rf_kOhms = 1.0 EndConstTable 'Declare Variables and Units Dim ModSecsWin As Long Public BattV Public PTemp_C Public SW12State As Boolean Public ATB_degC(3) ' backup AT thermistors Public BBT_degC '' various diagnostic or intermediate variables: Public ATB_X(3), ATB_kOhm(3) ' backup AT thermistors Public BBT_X, BBT_kOHM Units BattV=Volts Units PTemp_C=DegC Units ATB_degC() = degC Units BBT_degC = degC 'Define Data Tables DataTable(Hrly_Met,True,-1) DataInterval(0,60,Min,10) Average (3,ATB_degC(),FP2,False) Sample(1,BattV,FP2) Average(1,BattV,FP2,False) Sample(1,PTemp_C,FP2) Average(1,PTemp_C,FP2,False) Sample (1,BBT_kOHM,fp2) Sample (1,BBT_degC,fp2) EndTable 'Main Program BeginProg Dim i Dim lnR 'Main Scan Scan(60,Sec,1,0) 'Default CR1000 Datalogger Battery Voltage measurement 'BattV' Battery(BattV) 'Default CR1000 Datalogger Wiring Panel Temperature measurement 'PTemp_C' PanelTemp(PTemp_C,_60Hz) '' read and process 3 AT thermistors: BrHalf (ATB_X(),3,mV2500,14,Vx2,3,2500,0,0,250,1.0,0) For i=1 To 3 ATB_kOhm(i) = Rf_kOhms*ATB_X(i)/(1-ATB_X(i)) lnR = LN (1000*ATB_kOhm(i)) ATB_degC(i) = (1/(a + b*lnR + c*lnR^3)) - 273.15 Next i '' read battery box thermistor voltage ratio, '' calculate resistance, calculate temperature: BrHalf (BBT_X,1,mV2500,8,Vx1,1,2500,0,0,250,1.0,0) BBT_kOHM = Rf_kOhms*BBT_X/(1-BBT_X) lnR = LN (1000*BBT_kOHM) BBT_degC = (1/(a + b*lnR + c*lnR^3)) - 273.15 'SW12 Timed Control 'Get seconds since 1990 and do a modulo divide by 86400 seconds (24 hours) ModSecsWin=Public.TimeStamp(1,1) MOD 86400 'Turn ON SW12 between 0000 hours and 2359 hours If (ModSecsWin>=0 And ModSecsWin<86340) Then SW12State=True 'Turn OFF SW12 only if time runs out and RS232 is not active ElseIf (ComPortIsActive(ComRS232)=False) Then SW12State=False EndIf 'Always turn OFF SW12 if battery drops below 12.4 volts If BattV<12.4 Then SW12State=False 'Set SW12 to the state of 'SW12State' variable SW12(SW12State) 'Call Data Tables and Store Data CallTable Hrly_Met NextScan EndProg