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.

SDI-12 communincation with an Apogee SN-500 on CR1000

MathiasMadsen_Uni_CPH Jul 13, 2020 05:48 AM

I'm having trouble with above sensor when trying to communicate via SDI-12 on my CR1000; I can only acquire and change the address - and nothing else. It works fine on a CR6 where I can use all common commands but I've tried on 2 different CR1000's (One with the latest OS and one with "almost latest OS") - also tried different C-ports all with the same result: I can aquire the address (?!) and change it (aAb!) - So I'm pretty sure I have it wired up correctly but I can't do any measurements.

I'm mainly using the Terminal Emulator but I've tried CRBasic programming.

Any ideas?

Eric_Sepulveda Jul 13, 2020 01:59 PM

Hi Mathias

The same thing happened to me with an SDI level sensor and that has the same programming characteristics as the APOGEE SN-500.
I send you the program with which I could see the values, Diver is the name of my level sensor, I hope it helps you


Public Diver(4)
Alias Diver(1)=Presion_Diver '0D0!
Alias Diver(2)=PresionDCX '0D3!
Alias Diver(3)=Nivel_Corregido '0D4! (0D0!-0D3!)
Alias Diver(4)=TempAgua '0D1!

Units Presion_Diver=[cmH2O]
Units PresionDCX=[cmH2O]
Units Nivel_Corregido=[cm]
Units TempAgua=[c]

DataInterval (0,10,Min,10)
Average (1,Presion_Diver,FP2,False)
Average (1,PresionDCX,FP2,False)
Average (1,TempAgua,FP2,False)
Scan (60,Sec,0,0)
SDI12Recorder (Diver(),1,0,"M!",1.0,0)
SDI12Recorder (Presion_Diver,1,0,"D0!",1.0,0)
SDI12Recorder (Diver(2),1,0,"D3!",1.0,0)
SDI12Recorder (Diver(3),1,0,"D4!",1.0,3.8)
SDI12Recorder (Diver(4),1,0,"D1!",1.0,0)
CallTable DAT10Min

JCaycho Jul 14, 2020 06:06 PM

Hello Mathias:


Here is an additional alternative:

In the Apogee Instruments model SN-500-SS sensor manufacturer's manual, there is a detail regarding the sensor wiring, but first you would have to verify the serial number of your sensor by the terminal emulator with the command "aI!”, where a = address current:

a) Wiring for SN-500 with Serial Numbers rango 0 to 1085:

    Black ---> SDI-12 (Data line)  

   Red ---> Power in (4.5 – 24 vdc)

   Clear ---> Shiel Wire (G)

b) Wiring for SN-500 with Serial Numbers 1086 and above:

    White ---> SDI-12 (Data line)

    Red ---> Power in (4.5 – 24 vdc)

    Black ---> Ground (G)

    Clear ---> Shiel Wire (G)


Then you can check the sensor with the following program for an address "0" (zero), also consider the wiring on the CR1000 datalogger based on the sensor serial number:

    Data Line ----> C1

    Power In (Red) -----> 12V

    Clear / Ground  -----> G 

I recommend you update your operating system to the current version and do the tests. 


'CR1000 datalogger

'SN-500 Net Radiometer sensor

'SWin  = Incoming_SW - downwelling shortwave radiation in Watts per square meter
'SWout = Outgoing_SW - upwelling (reflected) shortwave radiation in Watts per square meter
'LWin = Incoming_LW - downwelling longwave radiation in Watts per square meter
'LWout = Incoming_LW - upwelling (emitted) longwave radiation in Watts per square meter
'Net SW = Net Shortwave Radiation in Watts per square meter
'Net LW = Net Longwave Radiation in Watts per square meter
'SWalbedo = Albedo in Watts per square meter
'NR = Net Radiation in Watts per square meter

'Declare Variables and Units
Public BattV
Public PTemp_C
Public SN500Data1(4)
Public SN500Data2(2)
Public SWalbedo
Public NR

Alias SN500Data1(1)=SWin
Alias SN500Data1(2)=SWout
Alias SN500Data1(3)=LWin
Alias SN500Data1(4)=LWout
Alias SN500Data2(1)=SWnet
Alias SN500Data2(2)=LWnet

Units BattV=Volts
Units PTemp_C=Deg C
Units SWalbedo=W/m^2
Units NR=W/m^2
Units SWin=W/m^2
Units SWout=W/m^2
Units LWin=W/m^2
Units LWout=W/m^2
Units SWnet=W/m^2
Units LWnet=W/m^2

'Define Data Tables

'Main Program

'Main Scan
		'Default CR1000 Datalogger Battery Voltage measurement 'BattV'
		'Default CR1000 Datalogger Wiring Panel Temperature measurement 'PTemp_C'

  	'Call Data Tables and Store Data
		CallTable Test

   'The scan rate should NOT BE less than 5 seconds, faster rates cause the data table to fail to populate for this sensor model.
	Scan (5,Sec,3,0)		

  'SN-500S-S Net Radiometer measurements 'SWin', 'SWout', 'LWin', and 'LWout'
  'SN-500-SS Net Radiometer measurements 'SWnet' and 'LWnet'
  'SN-500-SS Net Radiometer measurement 'SWalbedo'
  'Calculate Net Radiation 'NR'




Good luck and tell us how it goes.


Juan Caycho B.

MathiasMadsen_Uni_CPH Jul 16, 2020 03:08 AM

Cheers; both your programs work fine on my CR6 (With changes only to the name of the C-port) but still no luck on my CR1000. I have other SDI-sensors working fine on my CR1000 so it's a bit of a mystery still (Currently I have 2 Gill-sensors with adresses 0 and 1 on C1 and using the GMX500 on C3 with the address 1).

MathiasMadsen_Uni_CPH Jul 23, 2020 02:14 AM

I have borrowed a CR1000X for the project on which it also works fine so I'll continue with that logger. Still strange why the sensor will not work on a CR1000 non-X.

pokeeffe Jul 27, 2020 02:14 PM

I've been dealing with the SN-500 lately and I feel it's worth re-iterating the sensor needs at least five seconds between queries. One minute is much better, especially if the sdi bus is shared

More specific to your problem: have you used the Terminal Emulator via the Connect screen to monitor SDI-12 comms in real-time? 

MathiasMadsen_Uni_CPH Sep 2, 2020 02:55 AM

Hi pokeeffe,

Cheers for the input. Yes; used that Terminal Emulator so I'm sure I haven't stressed the sensor. Gave up using the CR1000 since it works just fine on the CR6 and CR1000X


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