Sensors:
Forerunner CO2 sensor, differential channels 1 and 2, switched 12V
CS106 pressure sensor, signal to 3H, power to 12V, control C1
LI-200SZ pyranometer, diff channel 4, with jumper to ground, and 100 ohm resistor between high and low
HMP45C temp/RH, signals to SE6, SE9, power to 12V, control C2
03001 wind speed/direction, vane to EX1, vane signal 5L, anemometer to P1
EXO II through SOA, power to 12V on terminal block, data line to C7
I added each sensor one at a time, and got them working, until I wired in the EXO II. Suddenly, CO2 and temp/RH stopped spitting out data (can't tell about LI-200, since I'm not out in the sun at the moment), and EXO in public table seems to be reading every two min including wiping, even though I set the EXO internally to only measure once per hour. I assume it's a timing thing, too many things happening at the same time. I've attached code.
I had CO2 turning on at 42 min to warm up, then at 57 min, taking 45 readings on each channel, spitting out average and StdDev at top of the hour. I had CS106 take one reading at top of the hour. Same for temp/RH. Pyranometer should read every scan, and average and sum at top of the hour. Wind speed/direction to read every scan, and average at top of the hour. The EXO I wanted one wipe and one reading at top of hour.
Any help would be greatly appreciated. Thanks, Mark
'CR1000 'Created by Short Cut (2.8) 'Program update: Feb 2016, Mark Dornblaser 'Declare Variables and Units Public BattV Public I,AvgCO2Low Public J,AvgCO2High Dim CO2Low(45) Dim CO2High(45) Public STDCO2Low Public STDCO2High Public BP_kPa Public SlrW Public SlrMJ Public AirTC Public RH Public WS_ms Public WindDir Public EXOII(9) Alias EXOII(1)=Temp Alias EXOII(2)=SpCond Alias EXOII(3)=pH Alias EXOII(4)=Battery Alias EXOII(5)=Turb Alias EXOII(6)=ODOpct Alias EXOII(7)=ODOmgL Alias EXOII(8)=fdomRFU Alias EXOII(9)=fdomQSU Units BattV=Volts Units AvgCO2Low=mV Units AvgCO2High=mV Units BP_kPa=kPa Units SlrW=W/m^2 Units SlrMJ=MJ/m^2 Units AirTC=Deg C Units RH=% Units WS_ms=meters/second Units WindDir=Degrees Units Temp=degC Units SpCond=uS/cm Units pH=pHUnits Units Battery=V Units Turb=NTU Units ODOpct=% Units ODOmgL=mg/L Units fdomRFU=RFU Units fdomQSU=QSU 'Define Data Tables DataTable(Table1,True,-1) DataInterval(0,60,Min,10) Sample(1,BattV,FP2) Sample(1,AvgCO2Low,FP2) Sample(1,AvgCO2High,FP2) Sample(1,BP_kPa,FP2) Sample(1,SlrW,FP2) Totalize(1,SlrMJ,IEEE4,False) Sample(1,AirTC,FP2) Sample(1,RH,FP2) Sample(1,WS_ms,FP2) Maximum(1,WS_ms,FP2,False,False) Minimum(1,WS_ms,FP2,False,False) Average(1,WS_ms,FP2,False) Sample(1,WindDir,FP2) Average(1,WindDir,FP2,False) Sample(1,Temp,FP2) Sample(1,SpCond,FP2) Sample(1,pH,FP2) Sample(1,Battery,FP2) Sample(1,Turb,FP2) Sample(1,ODOpct,FP2) Sample(1,ODOmgL,FP2) Sample(1,fdomRFU,FP2) Sample(1,fdomQSU,FP2) EndTable DataTable(Table2,True,-1) DataInterval(0,1440,Min,10) Minimum(1,BattV,FP2,False,False) Totalize(1,SlrMJ,IEEE4,False) EndTable 'Define Subroutines ' ******* CO2Measure Subroutine ******* ' Subroutine measures CO2 sensor, low range 0-5000 ppm on DIFF Channel 1. ' Measures CO2, high range 0-20,000 ppm on DIFF Channel 2. ' Sw'd 12 Volts powers the sensor. Routine takes 45 measurements of sensor w/1 second ' delay between each, applying a multiplier of 1, and ' an offset of 0 to the raw voltage measurements. Routine ' then turns off Sw'd 12 Volts and computes the average of the ' 45 readings on each channel. Sub CO2Meas For I=1 to 45 Step 1 VoltDiff(CO2Low(I),1,mV5000,1,True,0,250,1,0) Delay(0,1,Sec) Next I For J=1 To 45 Step 1 VoltDiff(CO2High(J),1,mV5000,2,True,0,250,1,0) Delay(0,1,sec) Next J PortSet(9,0) AvgSpa(AvgCO2Low,45,CO2Low(1)) AvgSpa(AvgCO2High,45,CO2High(1)) StdDevSpa(STDCO2Low,45,CO2Low(1)) StdDevSpa(STDCO2High,45,CO2High(1)) EndSub 'Main Program BeginProg Scan(1,Min,1,0) 'Default Datalogger Battery Voltage measurement BattV Battery(BattV) 'At 42 minutes into hour, turn on power to CO2 sensor If TimeIntoInterval(42,60,Min) Then PortSet(9,1) ' At 57 minutes into hour,take readings from CO2 sensor and turn it off If TimeIntoInterval(57,60,Min) Then Call CO2Meas 'CS106 Barometric Pressure Sensor measurement BP_kPa If IfTime(59,60,Min) Then PortSet(1,1) If IfTime(0,60,Min) Then VoltSe(BP_kPa,1,mV2500,5,1,0,_60Hz,0.240,500) BP_kPa=BP_kPa*0.1 PortSet(1,0) EndIf 'LI200S Pyranometer measurements SlrkJ and SlrW VoltDiff(SlrW,1,mV25C,4,True,0,_60Hz,1,0) If SlrW<0 Then SlrW=0 SlrMJ=SlrW*0.00781 SlrW=SlrW*130.157 'HMP45C (6-wire) Temperature & Relative Humidity Sensor measurements AirTC and RH If IfTime(59,60,Min) Then PortSet(2,1) If IfTime(0,60,Min) Then Delay(0,150,mSec) VoltSE(AirTC,1,mV2500,6,0,0,_60Hz,0.1,-40) VoltSE(RH,1,mV2500,9,0,0,_60Hz,0.1,0) If RH>100 AND RH<108 Then RH=100 PortSet(2,0) EndIf '03001 Wind Speed & Direction Sensor measurements WS_ms and WindDir PulseCount(WS_ms,1,1,1,1,0.75,0.2) If WS_ms<0.21 Then WS_ms=0 BrHalf(WindDir,1,mV2500,10,1,1,2500,True,0,_60Hz,355,0) If WindDir>=360 Then WindDir=0 'Generic SDI-12 Sensor measurements Result1, Result2, Result3, 'Result4, Result5, Result6, Result7, Result8, and Result9 SDI12Recorder(EXOII(),7,"0","M!",1,0) 'Call Data Tables and Store Data CallTable(Table1) CallTable(Table2) NextScan EndProg
Thanks Jacob, I'll check it out!