'CR1000 Series Datalogger Public LoggerTemp_C, BattVolts_V ' Wood Moisture Public MoistureR_OHM(27) Public MC(27) Public X(28) 'Define constants for wood species Const n=1 Const d=0 'Define constants for thermistors Const a=0.00114288192250106 Const b=0.000231314273877631 Const c=0.00000010934242301857 Const f=(-0.0000000000725110851146496) ' Thermistors Public MCTEMP(27) Public Temp_C(18) Public RHTEMP(32) Public ThermKohm(48) Public Ln_ThermKohm(48) Public Therm(48) Public ThermRH(32) Public ThermKohmRH(32) Public Ln_ThermKohmRH(32) ' RH Public RH_mV(33), RH(32) 'Pressure Public setra_volt(10), pressure_pa(10) Dim i Alias pressure_pa(1)=MTLpressure_pa Alias pressure_pa(2)=wall1_pa Alias pressure_pa(3)=wall2_pa Alias pressure_pa(4)=wall3_pa Alias pressure_pa(5)=wall4_pa Alias pressure_pa(6)=wall5_pa Alias pressure_pa(7)=wall6_pa Alias pressure_pa(8)=wall7_pa Alias pressure_pa(9)=wall8_pa Alias pressure_pa(10)=wall9_pa Alias RH(1)=Wall1_MO_RH Alias RH(2)=Wall1_UI_RH Alias RH(3)=Wall1_MI_RH Alias RH(4)=ROOM_RH1 Alias RH(5)=Wall2_MO_RH Alias RH(6)=Wall2_UI_RH Alias RH(7)=Wall2_MI_RH Alias RH(8)=Wall3_MO_RH Alias RH(9)=Wall3_UI_RH Alias RH(10)=Wall3_MI_RH Alias RH(11)=ROOM_RH2 Alias RH(12)=Wall4_MO_RH Alias RH(13)=Wall4_UI_RH Alias RH(14)=Wall4_MI_RH Alias RH(15)=Wall5_MO_RH Alias RH(16)=Wall5_UI_RH Alias RH(17)=Wall5_MT_RH Alias RH(18)=Wall5_MI_RH Alias RH(19)=Wall6_MO_RH Alias RH(20)=Wall6_UI_RH Alias RH(21)=Wall6_MT_RH Alias RH(22)=Wall6_MI_RH Alias RH(23)=Wall7_MO_RH Alias RH(24)=Wall7_UI_RH Alias RH(25)=Wall7_MT_RH Alias RH(26)=Wall7_MI_RH Alias RH(27)=Wall8_MO_RH Alias RH(28)=Wall8_UI_RH Alias RH(29)=Wall8_MI_RH Alias RH(30)=Wall9_MO_RH Alias RH(31)=Wall9_UI_RH Alias RH(32)=Wall9_MI_RH Alias RHTEMP(1)=Wall1_MO_RH_C Alias RHTEMP(2)=Wall1_UI_RH_C Alias RHTEMP(3)=Wall1_MI_RH_C Alias RHTEMP(4)=ROOM_RH1_RH_C Alias RHTEMP(5)=Wall2_MO_RH_C Alias RHTEMP(6)=Wall2_UI_RH_C Alias RHTEMP(7)=Wall2_MI_RH_C Alias RHTEMP(8)=Wall3_MO_RH_C Alias RHTEMP(9)=Wall3_UI_RH_C Alias RHTEMP(10)=Wall3_MI_RH_C Alias RHTEMP(11)=ROOM_RH2_RH_C Alias RHTEMP(12)=Wall4_MO_RH_C Alias RHTEMP(13)=Wall4_UI_RH_C Alias RHTEMP(14)=Wall4_MI_RH_C Alias RHTEMP(15)=Wall5_MO_RH_C Alias RHTEMP(16)=Wall5_UI_RH_C Alias RHTEMP(17)=Wall5_MT_RH_C Alias RHTEMP(18)=Wall5_MI_RH_C Alias RHTEMP(19)=Wall6_MO_RH_C Alias RHTEMP(20)=Wall6_UI_RH_C Alias RHTEMP(21)=Wall6_MT_RH_C Alias RHTEMP(22)=Wall6_MI_RH_C Alias RHTEMP(23)=Wall7_MO_RH_C Alias RHTEMP(24)=Wall7_UI_RH_C Alias RHTEMP(25)=Wall7_MT_RH_C Alias RHTEMP(26)=Wall7_MI_RH_C Alias RHTEMP(27)=Wall8_MO_RH_C Alias RHTEMP(28)=Wall8_UI_RH_C Alias RHTEMP(29)=Wall8_MI_RH_C Alias RHTEMP(30)=Wall9_MO_RH_C Alias RHTEMP(31)=Wall9_UI_RH_C Alias RHTEMP(32)=Wall9_MI_RH_C Alias Temp_C(1) =Wall1_MO_C Alias Temp_C(2) =Wall1_HFS_C Alias Temp_C(3) =Wall2_MO_C Alias Temp_C(4) =Wall2_HFS_C Alias Temp_C(5) =Wall3_MO_C Alias Temp_C(6) =Wall3_HFS_C Alias Temp_C(7) =Wall4_MO_C Alias Temp_C(8) =Wall4_HFS_C Alias Temp_C(9) =Wall5_MO_C Alias Temp_C(10) =Wall5_HFS_C Alias Temp_C(11) =Wall6_MO_C Alias Temp_C(12) =Wall6_HFS_C Alias Temp_C(13) =Wall7_MO_C Alias Temp_C(14) =Wall7_HFS_C Alias Temp_C(15) =Wall8_MO_C Alias Temp_C(16) =Wall8_HFS_C Alias Temp_C(17) =Wall9_MO_C Alias Temp_C(18) =Wall9_HFS_C Alias MC(1) =Wall1_U_MC Alias MC(2) =Wall1_M_MC Alias MC(3) =Wall1_B_MC Alias MC(4) =Wall2_U_MC Alias MC(5) =Wall2_M_MC Alias MC(6) =Wall2_B_MC Alias MC(7) =Wall3_U_MC Alias MC(8) =Wall3_M_MC Alias MC(9) =Wall3_B_MC Alias MC(10) =Wall4_U_MC Alias MC(11) =Wall4_M_MC Alias MC(12) =Wall4_B_MC Alias MC(13) =Wall5_U_MC Alias MC(14) =Wall5_M_MC Alias MC(15) =Wall5_B_MC Alias MC(16) =Wall6_U_MC Alias MC(17) =Wall6_M_MC Alias MC(18) =Wall6_B_MC Alias MC(19) =Wall7_U_MC Alias MC(20) =Wall7_M_MC Alias MC(21) =Wall7_B_MC Alias MC(22) =Wall8_U_MC Alias MC(23) =Wall8_M_MC Alias MC(24) =Wall8_B_MC Alias MC(25) =Wall9_U_MC Alias MC(26) =Wall9_M_MC Alias MC(27) =Wall9_B_MC Alias MCTEMP(1) =Wall1_U_MC_C Alias MCTEMP(2) =Wall1_M_MC_C Alias MCTEMP(3) =Wall1_B_MC_C Alias MCTEMP(4) =Wall2_U_MC_C Alias MCTEMP(5) =Wall2_M_MC_C Alias MCTEMP(6) =Wall2_B_MC_C Alias MCTEMP(7) =Wall3_U_MC_C Alias MCTEMP(8) =Wall3_M_MC_C Alias MCTEMP(9) =Wall3_B_MC_C Alias MCTEMP(10) =Wall4_U_MC_C Alias MCTEMP(11) =Wall4_M_MC_C Alias MCTEMP(12) =Wall4_B_MC_C Alias MCTEMP(13) =Wall5_U_MC_C Alias MCTEMP(14) =Wall5_M_MC_C Alias MCTEMP(15) =Wall5_B_MC_C Alias MCTEMP(16) =Wall6_U_MC_C Alias MCTEMP(17) =Wall6_M_MC_C Alias MCTEMP(18) =Wall6_B_MC_C Alias MCTEMP(19) =Wall7_U_MC_C Alias MCTEMP(20) =Wall7_M_MC_C Alias MCTEMP(21) =Wall7_B_MC_C Alias MCTEMP(22) =Wall8_U_MC_C Alias MCTEMP(23) =Wall8_M_MC_C Alias MCTEMP(24) =Wall8_B_MC_C Alias MCTEMP(25) =Wall9_U_MC_C Alias MCTEMP(26) =Wall9_M_MC_C Alias MCTEMP(27) =Wall9_B_MC_C 'Define Data Tables DataTable (DailyMTL,1,1000) DataInterval (0,1440,Min,0) Average (32,RH(),FP2,False) Average (32,RHTEMP(),FP2,False) Average (18,Temp_C(),FP2,False) Average (27 ,MC(),FP2,False) Average (27,MCTEMP(),FP2,False) Average (10,pressure_pa(),FP2, False) EndTable DataTable (HourlyOutput,1,1000) DataInterval (0,60,Min,10) Average (32,RH(),FP2,False) Average (32,RHTEMP(),FP2,False) Average (18,Temp_C(),FP2,False) Average (27 ,MC(),FP2,False) Average (27,MCTEMP(),FP2,False) Average (10,pressure_pa(),FP2, False) EndTable DataTable (pressurehourly,1,1000) DataInterval (0,60,Min,10) Average (10,pressure_pa(),FP2, False) EndTable DataTable (Wall1hourly,1,1000) DataInterval (0,60,Min,10) Average (1,Wall1_MO_RH,FP2, False) Average (1,Wall1_UI_RH,FP2, False) Average (1,Wall1_MI_RH,FP2, False) Average (1,Wall1_MO_RH_C,FP2, False) Average (1,Wall1_UI_RH_C,FP2, False) Average (1,Wall1_MI_RH_C,FP2, False) Average (1,Wall1_MO_C,FP2, False) Average (1,Wall1_HFS_C,FP2, False) Average (1,Wall1_U_MC,FP2, False) Average (1,Wall1_M_MC,FP2, False) Average (1,Wall1_B_MC,FP2, False) Average (1,Wall1_U_MC_C,FP2, False) Average (1,Wall1_M_MC_C,FP2, False) Average (1,Wall1_B_MC_C,FP2, False) EndTable DataTable (Wall2hourly,1,1000) DataInterval (0,60,Min,10) Average (1,Wall2_MO_RH,FP2, False) Average (1,Wall2_UI_RH,FP2, False) Average (1,Wall2_MI_RH,FP2, False) Average (1,Wall2_MO_RH_C,FP2, False) Average (1,Wall2_UI_RH_C,FP2, False) Average (1,Wall2_MI_RH_C,FP2, False) Average (1,Wall2_MO_C,FP2, False) Average (1,Wall2_HFS_C,FP2, False) Average (1,Wall2_U_MC,FP2, False) Average (1,Wall2_M_MC,FP2, False) Average (1,Wall2_B_MC,FP2, False) Average (1,Wall2_U_MC_C,FP2, False) Average (1,Wall2_M_MC_C,FP2, False) Average (1,Wall2_B_MC_C,FP2, False) EndTable DataTable (Wall3hourly,1,1000) DataInterval (0,60,Min,10) Average (1,Wall3_MO_RH,FP2, False) Average (1,Wall3_UI_RH,FP2, False) Average (1,Wall3_MI_RH,FP2, False) Average (1,Wall3_MO_RH_C,FP2, False) Average (1,Wall3_UI_RH_C,FP2, False) Average (1,Wall3_MI_RH_C,FP2, False) Average (1,Wall3_MO_C,FP2, False) Average (1,Wall3_HFS_C,FP2, False) Average (1,Wall3_U_MC,FP2, False) Average (1,Wall3_M_MC,FP2, False) Average (1,Wall3_B_MC,FP2, False) Average (1,Wall3_U_MC_C,FP2, False) Average (1,Wall3_M_MC_C,FP2, False) Average (1,Wall3_B_MC_C,FP2, False) EndTable DataTable (Wall4hourly,1,1000) DataInterval (0,60,Min,10) Average (1,Wall4_MO_RH,FP2, False) Average (1,Wall4_UI_RH,FP2, False) Average (1,Wall4_MI_RH,FP2, False) Average (1,Wall4_MO_RH_C,FP2, False) Average (1,Wall4_UI_RH_C,FP2, False) Average (1,Wall4_MI_RH_C,FP2, False) Average (1,Wall4_MO_C,FP2, False) Average (1,Wall4_HFS_C,FP2, False) Average (1,Wall4_U_MC,FP2, False) Average (1,Wall4_M_MC,FP2, False) Average (1,Wall4_B_MC,FP2, False) Average (1,Wall4_U_MC_C,FP2, False) Average (1,Wall4_M_MC_C,FP2, False) Average (1,Wall4_B_MC_C,FP2, False) EndTable DataTable (Wall5hourly,1,1000) DataInterval (0,60,Min,10) Average (1,Wall5_MO_RH,FP2, False) Average (1,Wall5_UI_RH,FP2, False) Average (1,Wall5_MI_RH,FP2, False) Average (1,Wall5_MT_RH,FP2, False) Average (1,Wall5_MO_RH_C,FP2, False) Average (1,Wall5_UI_RH_C,FP2, False) Average (1,Wall5_MI_RH_C,FP2, False) Average (1,Wall5_MT_RH_C,FP2, False) Average (1,Wall5_MO_C,FP2, False) Average (1,Wall5_HFS_C,FP2, False) Average (1,Wall5_U_MC,FP2, False) Average (1,Wall5_M_MC,FP2, False) Average (1,Wall5_B_MC,FP2, False) Average (1,Wall5_U_MC_C,FP2, False) Average (1,Wall5_M_MC_C,FP2, False) Average (1,Wall5_B_MC_C,FP2, False) EndTable DataTable (Wall6hourly,1,1000) DataInterval (0,60,Min,10) Average (1,Wall6_MO_RH,FP2, False) Average (1,Wall6_UI_RH,FP2, False) Average (1,Wall6_MI_RH,FP2, False) Average (1,Wall7_MT_RH,FP2, False) Average (1,Wall6_MO_RH_C,FP2, False) Average (1,Wall6_UI_RH_C,FP2, False) Average (1,Wall6_MI_RH_C,FP2, False) Average (1,Wall6_MT_RH_C,FP2, False) Average (1,Wall6_MO_C,FP2, False) Average (1,Wall6_HFS_C,FP2, False) Average (1,Wall6_U_MC,FP2, False) Average (1,Wall6_M_MC,FP2, False) Average (1,Wall6_B_MC,FP2, False) Average (1,Wall6_U_MC_C,FP2, False) Average (1,Wall6_M_MC_C,FP2, False) Average (1,Wall6_B_MC_C,FP2, False) EndTable DataTable (Wall7hourly,1,1000) DataInterval (0,60,Min,10) Average (1,Wall7_MO_RH,FP2, False) Average (1,Wall7_UI_RH,FP2, False) Average (1,Wall7_MI_RH,FP2, False) Average (1,Wall7_MT_RH,FP2, False) Average (1,Wall7_MO_RH_C,FP2, False) Average (1,Wall7_UI_RH_C,FP2, False) Average (1,Wall7_MI_RH_C,FP2, False) Average (1,Wall7_MT_RH_C,FP2, False) Average (1,Wall7_MO_C,FP2, False) Average (1,Wall7_HFS_C,FP2, False) Average (1,Wall7_U_MC,FP2, False) Average (1,Wall7_M_MC,FP2, False) Average (1,Wall7_B_MC,FP2, False) Average (1,Wall7_U_MC_C,FP2, False) Average (1,Wall7_M_MC_C,FP2, False) Average (1,Wall7_B_MC_C,FP2, False) EndTable DataTable (Wall8hourly,1,1000) DataInterval (0,60,Min,10) Average (1,Wall8_MO_RH,FP2, False) Average (1,Wall8_UI_RH,FP2, False) Average (1,Wall8_MI_RH,FP2, False) Average (1,Wall8_MO_RH_C,FP2, False) Average (1,Wall8_UI_RH_C,FP2, False) Average (1,Wall8_MI_RH_C,FP2, False) Average (1,Wall8_MO_C,FP2, False) Average (1,Wall8_HFS_C,FP2, False) Average (1,Wall8_U_MC,FP2, False) Average (1,Wall8_M_MC,FP2, False) Average (1,Wall8_B_MC,FP2, False) Average (1,Wall8_U_MC_C,FP2, False) Average (1,Wall8_M_MC_C,FP2, False) Average (1,Wall8_B_MC_C,FP2, False) EndTable DataTable (Wall9hourly,1,1000) DataInterval (0,60,Min,10) Average (1,Wall9_MO_RH,FP2, False) Average (1,Wall9_UI_RH,FP2, False) Average (1,Wall9_MI_RH,FP2, False) Average (1,Wall9_MO_RH_C,FP2, False) Average (1,Wall9_UI_RH_C,FP2, False) Average (1,Wall9_MI_RH_C,FP2, False) Average (1,Wall9_MO_C,FP2, False) Average (1,Wall9_HFS_C,FP2, False) Average (1,Wall9_U_MC,FP2, False) Average (1,Wall9_M_MC,FP2, False) Average (1,Wall9_B_MC,FP2, False) Average (1,Wall9_U_MC_C,FP2, False) Average (1,Wall9_M_MC_C,FP2, False) Average (1,Wall9_B_MC_C,FP2, False) EndTable DataTable (HourlyDiag,1,-1) DataInterval (0,60,Min,0) Average (1,BattVolts_V,FP2,False) Average (1,LoggerTemp_C,FP2,False) EndTable DataTable (MTLhourly,1,-1) DataInterval (0,60,Min,0) Average (1,ROOM_RH1,FP2,False) Average (1,ROOM_RH1_RH_C,FP2,False) Average (1,ROOM_RH2,FP2,False) Average (1,ROOM_RH2_RH_C,FP2,False) Average (1,pressure_pa(),FP2,False) EndTable DataTable (HourlyRaw,1,-1) DataInterval (0,60,Min,0) Average (32,RH_mV(),FP2,False) Average (48,ThermKohm(),FP2,False) Average (27,MoistureR_OHM(),FP2,False) Average (10,setra_volt(),FP2, False) EndTable 'Main Program BeginProg Scan (60,Sec,0,0) PanelTemp (LoggerTemp_C,250) Battery (BattVolts_V) ' Measure 32 RH sensors. The RH sensors are powered by the loggers 5V terminal. PortSet (1,1) ' Turn on mux A i = 1 SubScan (0,Sec,11) '11 loops of 3 reads 33 RH PulsePort(6,10000) ' Clock mux 'MEASURE RH SENSOR (mV) ' Delay (0,10,mSec) VoltSe (RH_mV(i),3,mV5000,1,1,0,_60Hz,1.0,0) i=i+3 NextSubScan PortSet (1,0) ' turn mux A off. For i=1 To 32 RH(i) = ((0.032258*(RH_mV(i)))-25.80645)/(1.0546-(0.00216*RHTEMP(i))) Next i ' Wood Moisture sensors. PortSet (2,1) ' Turn on mux B i = 1 SubScan (0,Sec,14) '14 loops of 2 reps = 28 MC readings PulsePort(6,10000) ' Clock mux 'Delay (0,10,mSec)'added delay ' measure wood moisture sensors BrHalf (X(i),2,mV5000,4,Vx2,2,2500,True,5000,_60Hz,1,0) i = i + 2 NextSubScan PortSet (2,0) ' turn mux B off. For i=1 To 27 MoistureR_OHM(i)=10^6*((1-X(i))/X(i)) Next i 'CONVERT MoistureR_OHM VALUES TO %WATER (MASS BASIS) For i=1 To 27 'moisturepercent(i)=(log10(moistureR_OHM(I))-17)/-.7 MC(i) = 2.99 - 2.113*(LOG10(LOG10(MoistureR_OHM(i)))) MC(i) = 10^(MC(i)) MC(i)=((((MC(i)+0.567-(0.026*MCTEMP(i))+(0.000051*(MCTEMP(i)^2)))/(0.881*(1.0056^MCTEMP(i))))-d)/n)-2 Next i 'MEASURE THERMISTORS PortSet (3,1) ' Turn on mux C i = 1 SubScan (0,Sec,12) ' loop of 12 to measure 48 thermistors. PulsePort(7,10000) ' Clock mux 'Delay (0,10,mSec)'added delay BrHalf(Therm(i),4,Autorange,6,Vx1,4,2500,True,0,_60Hz,1.0,0) i = i + 4 NextSubScan 'Calculate MCTEMP 1 to 27 For i = 1 To 45 'Calculate natural log of resistance ThermKohm(i)=10*(Therm(i)/(1-Therm(i))) Ln_ThermKohm(i) = LN(1000*ThermKohm(i)) 'Calculate temp from curve fit 1/T=a+b(LnR)+c(ln R)^3 Next i For i=1 To 27 MCTEMP(i) = (1/(a+(b*(Ln_ThermKohm(i)))+(c*((Ln_ThermKohm(i))^3))+(f*((Ln_ThermKohm(i))^5))))-273.15 Next i 'Calculate Temp_C 1 to 17 For i = 28 To 44 Temp_C(i-27) = (1/(a+(b*(Ln_ThermKohm(i)))+(c*((Ln_ThermKohm(i))^3))+(f*((Ln_ThermKohm(i))^5))))-273.15 Next i PortSet (3,0) ' turn mux C off. PortSet (4,1) ' Turn on mux Z i = 1 SubScan (0,Sec,8) ' loop of 8 to measure 32 thermistors PulsePort(7,10000) ' Clock mux Delay (0,10,mSec)'added delay BrHalf(ThermRH(i),4,Autorange,10,Vx1,4,2500,True,0,_60Hz,1.0,0) i = i + 4 NextSubScan 'Calculate TempRH_C 1 to 32 For i = 1 To 32 'Calculate natural log of resistance ThermKohmRH(i)=10*(ThermRH(i)/(1-ThermRH(i))) Ln_ThermKohmRH(i) = LN(1000*ThermKohmRH(i)) 'Calculate temp from curve fit 1/T=a+b(LnR)+c(ln R)^3 RHTEMP(i) = (1/(a+(b*(Ln_ThermKohmRH(i)))+(c*((Ln_ThermKohmRH(i))^3))+(f*((Ln_ThermKohmRH(i))^5))))-273.15 Next i PortSet (4,0) ' turn mux Z off. 'Pressure transducers PortSet (2,1) ' Turn on mux B i = 1 SubScan (0,Sec,10) '10 loops of 1 reads 10 pressure PulsePort(6,10000) ' Clock mux VoltSe (setra_volt(i),1,mv5000,14,True,0,_60Hz,.001,0) i=i+1 NextSubScan PortSet (2,0) ' turn mux B off. For i=1 To 10 pressure_pa(i)=(setra_volt(i)*24.909)-62.272 Next i 'Call Output Tables CallTable (HourlyDiag) CallTable (HourlyOutput) CallTable (DailyMTL) CallTable (HourlyRaw) CallTable Wall1hourly CallTable Wall2hourly CallTable Wall3hourly CallTable Wall4hourly CallTable Wall5hourly CallTable Wall6hourly CallTable Wall7hourly CallTable Wall8hourly CallTable Wall9hourly CallTable MTLhourly CallTable pressurehourly NextScan EndProg