'CR6 Series 'Created by Short Cut (3.2) ' 04-22-2016 - Modified by Joel Bailey ' writen to measure AT and RH, 22 CS616's and 22 107 Soil Temp Sensors, will power an iridium modem from 12:00 to 12:15 daily ' 03-08-2018 - Changed Temperature measurements to every 5 mins, changed threshold voltage to 12.2V ' 03-20-2018 - changed temperature measurement to every min 'Declare Variables and Units Dim LCount Dim LCount_2 Public BattV Public PTemp_C Public AirTemp_C Public RH Public SoilT_C(22) Public SM(22) Public CS616_uS(22) Public SW12State As Boolean Units BattV=Volts Units AirTemp_C=Deg C Units RH=% Units PTemp_C=Deg C Units SoilT_C=Deg C Units CS616_uS=uSec 'Define Data Tables DataTable(HourlyDiag,True,-1) DataInterval(0,60,Min,10) Sample(1,BattV,FP2) Average(1,BattV,FP2,False) Maximum(1,BattV,FP2,False,False) Minimum(1,BattV,FP2,False,False) Sample(1,PTemp_C,FP2) Average(1,PTemp_C,FP2,False) Maximum(1,PTemp_C,FP2,False,False) Minimum(1,PTemp_C,FP2,False,False) EndTable DataTable(HourlySubs,True,-1) DataInterval(0,60,Min,10) Sample(1,AirTemp_C,FP2) Average(1,AirTemp_C,FP2,False) Maximum(1,AirTemp_C,FP2,False,False) Minimum(1,AirTemp_C,FP2,False,False) Sample(1,RH,FP2) Average(1,RH,FP2,False) Maximum(1,RH,FP2,False,False) Minimum(1,RH,FP2,False,False) Average(22,SoilT_C(1),FP2,False) Average(22,SM(1),FP2,False) Average(22,CS616_uS(1),FP2,False) EndTable 'Main Program BeginProg 'Main Scan Scan(60,Sec,1,0) 'Default CR6 Datalogger Battery Voltage measurement 'BattV' Battery(BattV) 'Default CR6 Datalogger Wiring Panel Temperature measurement 'PTemp_C' PanelTemp(PTemp_C,15000) 'HMP45C (6-wire, panel switched power) Temperature & Relative Humidity Sensor measurements AirTemp_C and RH SW12(2,1,0) Delay(0,150,mSec) VoltSe(AirTemp_C,1,mV1000,U1,False,0,15000,0.1,-40) VoltSe(RH,1,mV1000,U2,False,0,15000,0.1,0) SW12(2,0,0) If RH>100 AND RH<108 Then RH=100 'Soil Temp 107 Sensors every 5 minutes 'If IfTime(0,5,Min) Then 'Turn AM16/32 Multiplexer On PortSet(C2,1) Delay(0,150,mSec) LCount=1 SubScan(0,uSec,7) 'Switch to next AM16/32 Multiplexer channel PulsePort(C1,10000) '107 Temperature Probe (4-wire) measurements 'SoilT_C()' on the AM16/32 Multiplexer Therm107(SoilT_C(LCount),3,u4,u3,0,15000,1,0) LCount=LCount+3 NextSubScan 'Switch to next AM16/32 Multiplexer channel PulsePort(C1,10000) '107 Temperature Probe (4-wire) measurements 'SoilT_C()' on the AM16/32 Multiplexer Therm107(SoilT_C(22),1,u4,u3,0,15000,1,0) 'Turn AM16/32 Multiplexer Off PortSet(C2,0) Delay(0,150,mSec) 'EndIf ' Measure CS616 Every 60 Minutes If TimeIntoInterval(0,60,Min) Then 'Turn AM16/32 Multiplexer On PortSet(C3,1) Delay(0,250,mSec) LCount_2=1 SubScan(0,uSec,7) 'Switch to next AM416 Multiplexer channel PulsePort(C1,35000) 'CS616 Water Content Reflectometer measurements 'SM()' and 'CS616_uS()' on the AM16/32 Multiplexer CS616(CS616_uS(LCount_2),3,u9,u7,3,1,0) LCount_2=LCount_2+3 NextSubScan 'Switch to next AM416 Multiplexer channel PulsePort(C1,35000) 'CS616 Water Content Reflectometer measurements 'SM()' and 'CS616_uS()' on the AM16/32 Multiplexer CS616(CS616_uS(22),1,u9,u7,1,1,0) For LCount_2=1 To 22 SM(LCount_2)=-0.0663+(-0.0063*CS616_uS(LCount_2))+(0.0007*CS616_uS(LCount_2)^2) Next 'Turn AM16/32 Multiplexer Off PortSet(C3,0) Delay(0,250,mSec) EndIf 'SW12 Timed Control 'Turn ON SW12 between 1200 hours and 1215 hours If TimeIsBetween(720,735,1440,Min) Then SW12State=True Else SW12State=False EndIf 'Always turn OFF SW12 if battery drops below 12.2 volts If BattV<12.2 Then SW12State=False 'Set SW12-1 to the state of 'SW12State' variable SW12(1,SW12State,0) 'Call Data Tables and Store Data CallTable HourlyDiag CallTable HourlySubs NextScan EndProg