Can't Communicate with SDI-12 protocol

Hello,

Ask for help interfacing with an SDI-12 sensor.

I am using Arduino Mega 2560 and used Arduino-SDI-12 library https://github.com/EnviroDIY/Arduino-SDI-12

and using Air Temperature and Relative Humidity Sensors / CS215-L from Campbell Scientific https://www.campbellsci.com/cs215-l.

The Sensor has been tested using Campbell Scientific datalogger it works correctly.

I've checked with an oscilloscope that the command is being sent correctly.

when i send command (data) to the sensor, the current drawn by the sensor reach more than 1 mA

The problem :( : There is no response from the sensor after sending any command to it ??!!

so, What should i do to overcome this problem??

Thanks in advance

Please show a circuit diagram (not a picture), including your current measuring device.

CS215 has 5 wires (Red, Green, Black, White, Clear)

CS215 Function Arduino

Green SDI-12 signal connected to any pin change interrupt like pin 12 Red Power (12V) 12 V (External) power supply Black Power Ground Ground of the Power supply White Power Ground Ground of the Power supply Clear Ground Shield Ground of Arduino

and connect our signal (Green) to oscilloscope, and use "Hameg HM7042-5 Triple Power Supply" Power supply.

Are you sure that the Ground Shield is the logic signal ground, not a protective ground? What if you connect both grounds?

Else the library may not match the bus protocol version. 7 bit plus parity is somewhat non-standard, can you compare the address bits sent by the data logger with those sent by the Arduino?

i connected all grounds common(power supply and arduino grounds) but there is no change.

also i made shield wire floating no response

i checked the library code it follow the same protocol of SDI-12 to send char.

i used the same library to interface with another SDI-12 sensor it work properly

So every component seems to work, except for that one sensor?

I have no own experience with SDI-12, cannot provide more help :-(

What do you think what should i do??

Does the sensor require a pullup resistor on the signal line?

Actually, the SDI-12 bus needs to be pulled DOWN with about 100K ohm resistor. Some sensors have pull-down resistors and others don't. It won't hurt to try a pull-down resistor. Don't try something too small like 10K though.

I've not used that library and don't know if it handle re-sending commands, which is required by some sensors.

It's up to you. I have designed an SDI-12 USB adapter to interface an SDI-12 sensor with a PC via com port. Just open the com port with arduino serial monitor and send in commands like ?! or 1I assuming address 1 and watch response. I also have designed a SDI-12 and RS232 data logging shield with an IC translating all the SDI-12 signaling into Serial2 on MEGA 2560. Both the shield and adapter handle re-sending commands. You can find them at inmojo.com

http://inmojo.com/store/liudr-arduino-and-physics-gadgets/item/sdi-12-usb-adapter/

Really, i have measured the resistance between SDI-12 Signal and Ground it's about 200K ohm

Have you sent ?! as a test and are there other sensors on the bus?

used only one sensor (CS215) on the bus, and sent any command the result no response.

Already, i have sent ?!

Put it back on a Campbell logger and see if it still works.

I tested it again on the logger, it work properly.

But, when i tested the sensor with arduino it can response but the same readings every time. only change its reading when reset the power of the sensor. ???!!!!

This behaviour suggests that the sensor expects a trigger signal, for taking a new reading.

That's Right DrDiettrich,

the trigger signal in this case must be for the power signal (12 V) red wire. the sensor only have 5 wires = 3 ground , 1 Vcc(12 V) and SDI12 signal green wire. ???!!

DrDiettrich:
This behaviour suggests that the sensor expects a trigger signal, for taking a new reading.

Not if you have read SDI-12 standard. The address byte serves as the “trigger” to wake the sensor and put the wrong ones back to sleep.

A_AE,

Can I ask you what SDI-12 address the sensor is on?

OK, I just went through the sensor manual. Nothing peculiar, just a typical SDI-12 sensor. But I did notice that you never posted YOUR OWN CODE.

liudr: A_AE,

Can I ask you what SDI-12 address the sensor is on?

the sensor's Address is 0 the default address.

liudr: OK, I just went through the sensor manual. Nothing peculiar, just a typical SDI-12 sensor. But I did notice that you never posted YOUR OWN CODE.

i test the sensor using examples included with the library.