-
Notifications
You must be signed in to change notification settings - Fork 0
/
apo2.CR300
executable file
·96 lines (88 loc) · 3.26 KB
/
apo2.CR300
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
'CR300 Series Datalogger Program for Measuring with two Apogee Model SI-111 Infrared Radiometers
'########################
'#### PUBLIC VARIABLES
'########################
Public PanelT, BattV
'Declare public variables of apogee_0
Public SBTempC_0, SBTempK_Surface, TargmV_0, m_0, b_0, TargTempK_Surface, TargTempC_0
'Declare public variables of apogee_1
Public SBTempC_1, SBTempK_Sky, TargmV_1, m_1, b_1, TargTempK_Sky, TargTempC_1
'####################
'#### COEFFICIENTS
'####################
'Coefficients of apogee_0
Const mC2_0 = 97865.6
Const mC1_0 = 10793800
Const mC0_0 = 1669750000
Const bC2_0 = -2181.18
Const bC1_0 = 65081.3
Const bC0_0 = -1272120
'Coefficients of apogee_1
Const mC2_1 = 117219
Const mC1_1 = 12542100
Const mC0_1 = 2050190000
Const bC2_1 = 3624.76
Const bC1_1 = -197505
Const bC0_1 = -12387300
'#################
'#### DATA TABLE
'#################
'Se define la tabla de salida
DataTable (IRR,1,-1)
'' Esta era para testing antes
''Intervalos de 6 seconds, que contienen 3 medidas de cada uno (6/2 = 3))
'DataInterval (0,6,Sec,3)
'Intervalos de 5 minutes, que contienen 15 medidas de cada uno (300/20 = 15))
DataInterval (0,5,Min,15)
'Minimum (1,BattV,FP2,BattV=NAN,False)
Average (1,PanelT,FP2,PanelT=NAN)
'Average (1,TargmV_0,FP2,TargmV_0=NAN)
Average (1,SBTempK_Surface,FP2,SBTempK_Surface=NAN)
Average (1,TargTempK_Surface,FP2,TargTempK_Surface=NAN)
Average (1,SBTempK_Sky,FP2,SBTempK_Sky=NAN)
Average (1,TargTempK_Sky,FP2,TargTempK_Sky=NAN)
EndTable
'#################
'#### MAIN PROGRAM
'#################
'Programa principal
BeginProg
''Medidas cada 2 segundos
'Scan (2,Sec,0,0)
'Medidas cada 20 segundos
Scan (20,Sec,0,0)
PanelTemp (PanelT,_50Hz)
Battery (BattV)
'# MEASURE SENSOR BODY TEMPERATURE
'Medir temperatura del cuerpo del sensor
'Cable verde a SE1 (1H), rojo a VX1, azul a tierra
Therm109 (SBTempC_0,1,1,Vx1,0,_50Hz,1.0,0)
'Cable verde a SE2 (1L), rojo a VX2, azul a tierra
Therm109 (SBTempC_1,1,2,Vx2,0,_50Hz,1.0,0)
'Lo de 1 y 2 es el SE al que se conecta el cable verde
'# MEASURE mV OUTPUT OF THERMOPILE DETECTOR
'Medir salida mV del detector de termopila
'Blanco a 2H, negro a 2L, claro a tierra
VoltDiff (TargmV_0,1,mV2500,2,True ,0,_50Hz,1.0,0)
'Blanco a 3H, negro a 3L, claro a tierra
VoltDiff (TargmV_1,1,mV2500,3,True ,0,_50Hz,1.0,0)
'Lo de 2 y 3 es el canal al que se conectan (Canal 2 = 2H y 2L = SE3 y SE4; Canal 3 = 3H y 3L = SE5 y SE6)
'# CALCULATION OF SLOPE AND INTERCEPT
'Calculo de coeficientes m (pendiente) y b (intercept) para calcular la temperatura en objetivo
m_0 = mC2_0 * SBTempC_0^2 + mC1_0 * SBTempC_0 + mC0_0
b_0 = bC2_0 * SBTempC_0^2 + bC1_0 * SBTempC_0 + bC0_0
m_1 = mC2_1 * SBTempC_1^2 + mC1_1 * SBTempC_1 + mC0_1
b_1 = bC2_1 * SBTempC_1^2 + bC1_1 * SBTempC_1 + bC0_1
'# CALC TARGET TEMP
'Calculo de temperatura objetivo apogee_0 (surface)
SBTempK_Surface = SBTempC_0 + 273.15
TargTempK_Surface = ((SBTempK_Surface^4) + m_0 * TargmV_0 + b_0)^0.25
TargTempC_0 = TargTempK_Surface - 273.15
'Calculo de temperatura objetivo apogee_1 (sky)
SBTempK_Sky = SBTempC_1 + 273.15
TargTempK_Sky = ((SBTempK_Sky^4) + m_1 * TargmV_1 + b_1)^0.25
TargTempC_1 = TargTempK_Sky - 273.15
'Llamada a salida de tablas
CallTable IRR
NextScan
EndProg