Our full technical support staff does not monitor this forum. If you need assistance from a member of our staff, please submit your question from the Ask a Question page.


Log in or register to post/reply in the forum.

EXO II interfering with other sensor output on CR1000


blaze Feb 25, 2016 10:33 PM

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

 


JDavis Feb 26, 2016 03:35 PM

It is likely you are skipping scans. Add a slow sequence and move the SDI12Recorder instruction to that scan.

You might find this blog article useful.

https://www.campbellsci.com/blog/prevent-skipped-scans


blaze Feb 26, 2016 04:28 PM

Thanks Jacob, I'll check it out!

Log in or register to post/reply in the forum.