Hi
I have some dataloggers with LP02 (and other sensors!!) in the field.
It was brought to my attention that the MJ per sqr meter that i have in my hourly table is affected by a factor of 10.
I revised my code (that i post here) and i cant find any kind of error.
Can you help me to understand what is the problem.
'Wind - Windsonic
Const MultVVento = 1.079 'calib Ago 2017
Const OffsetVVento = 0
'-----------------------------------------------
'Radiation - LP02
Const MultRS = 49.24941 'calib Set 2016
Const OffsetRS = 0
'-----------------------------------------------
'Precipitation - Young
Const MultPrec = 0.118 ' Calib Abr 2017
'-----------------------------------------------
'-----------------------------------------------
'Variaveis
Public Batt_Volt
Public T_Solo
Public RS
Public RS_kJ
Public RS_MJ
Public LW_kOhm
Public Temp
Public HRel
Public Prec
Public POrv
'Sensor de vento
Public StringVento As String * 200
Public ArrayVento(8) As Float
Public DVento
Public VVento
'-----------------------------------------------
Units Batt_Volt=Volts
Units T_Solo=Deg C
Units RS=W/m²
Units RS_kJ=kJ/m²
Units LW_kOhm=kOhms
Units Temp=oC
Units HRel=%
Units VVento=ms
Units DVento=oN
Units POrv=oC
'-----------------------------------------------
'Tabelas
DataTable(Dados10m,True,-1)
DataInterval(0,10,Min,10)
Average(1,Temp,FP2,False)
Average(1,HRel,FP2,False)
Average(1,POrv,FP2,False)
Average(1,T_Solo,FP2,False)
WindVector (1,VVento,DVento,FP2,VVento="",0,0,1)
FieldNames("VVentoMed,DVentoMed")
Totalize(1,Prec,FP2,False)
Average(1,RS,IEEE4,False)
EndTable
'-----------------------------------------------
DataTable(Dados60m,True,-1)
DataInterval(0,60,Min,10)
Average(1,Temp,FP2,False)
Average(1,HRel,FP2,False)
Average(1,POrv,FP2,False)
Average(1,T_Solo,FP2,False)
WindVector (1,VVento,DVento,FP2,VVento="",0,0,1)
FieldNames("VVentoMed,DVentoMed")
Totalize(1,Prec,FP2,False)
Average(1,RS,IEEE4,False)
Totalize(1,RS_MJ,IEEE4,False)
ETsz (Temp,HRel,VVento,RS_MJ,-7.0337,41.2334,500,10,0,IEEE4,False)
Histogram (LW_kOhm,FP2,False,2,000,1,0,440)
EndTable
'-----------------------------------------------
DataTable(Dados24h,True,-1)
DataInterval(0,1440,Min,10)
Minimum(1,Batt_Volt,FP2,False,False)
Maximum(1,Temp,FP2,False,False)
Minimum(1,Temp,FP2,False,False)
Maximum(1,HRel,FP2,False,False)
Minimum(1,HRel,FP2,False,False)
Maximum(1,POrv,FP2,False,False)
Minimum(1,POrv,FP2,False,False)
Maximum(1,T_Solo,FP2,False,False)
Minimum(1,T_Solo,FP2,False,False)
Maximum(1,VVento,FP2,False,False)
Totalize(1,Prec,FP2,False)
Maximum(1,RS,IEEE4,False,False)
Totalize(1,RS_MJ,IEEE4,False)
Histogram (LW_kOhm,FP2,False,2,000,1,0,440)
EndTable
'-----------------------------------------------
'-----------------------------------------------
BeginProg
Scan(10,Sec,1,0)
SW12 (1 )
Battery(Batt_Volt)
SequentialMode()
'-----------------------------------------------
'Precipitation RM Young
PulseCount (Prec,1,1 ,2,0,MultPrec,0)
'Soil temperature - PT100
BrHalf3W(T_Solo,1,mV25,1,1,1,2100,True,0,250,100,0)
PRT(T_Solo,1,T_Solo,1.0,0.0)
'------------------------------------------------
'Solar Radiation LP02
VoltSe(RS,1,mV250,3,True,0,250,1,0)
RS = MultRS*RS + OffsetRS
If RS<=OffsetRS Then RS=0 ' alteracao feita a 16 de Janeiro de 2013
RS_kJ= RS * 10/1000 'multiplyed by 10s (scan rate) - value in Joule - and divided by 1000 for KJ
RS_MJ=RS_kJ/1000 ' kJ value divided by 1000 for MJ
'-----------------------------------------------
'Humectacao - 237
BrHalf(LW_kOhm,1,mV250,4,Vx1,1,250,True,0,250,1,0)
LW_kOhm=1/LW_kOhm-101
'-----------------------------------------------
'AmbientTemperature and Humidity - HMP45
VoltSe(Temp,1,mV2500,5,True,0,250,0.1,-40)
VoltSe(HRel,1,mV2500,6,True,0,250,0.1,0)
If HRel>100 Then HRel = 100
'-----------------------------------------------
'Calculo ponto de orvalho
DewPoint (POrv,Temp,HRel)
'-----------------------------------------------
'Vento Gill WindSonic 2-D:
'Leitura do sensor de vento serie
SerialOpen (Com1,9600,0,0,10000)
SerialOut (Com1,"?Q","",1,100)
SerialIn (StringVento,Com1,200,3,60)
SerialFlush (Com1)
SerialClose(Com1)
SplitStr (ArrayVento(),StringVento,",",8,5)
'Filtro para o Vento
If ArrayVento(5)<> 0
VVento=""
DVento=""
Else
If (ArrayVento(3)>=0 AND ArrayVento(3)<=60) Then
VVento=ArrayVento(3)
VVento=VVento*MultVVento + OffSetVVento
EndIf
If ArrayVento(2)>=0 AND ArrayVento(2)<360 Then
DVento=ArrayVento(2)
EndIf
EndIf
'-----------------------------------------------
'Call Data Tables and Store Data
CallTable(Dados10m)
CallTable(Dados60m)
CallTable(Dados24h)
NextScan
EndProg
Best Regards
Quickly checked your program and there does not seem to be anything wrong.
Just to check, is the cal factor for the LP02 : 49.24941 microV / Wm-2?
If this is the cal factor, this needs to be converted as follows for the multiplier : 1000/49.24941
As you are calculating kJ as well, why not totalise that as well in the output table, to see if this gives a sensible value?