The Acclima Series SDI-12 TDT Soil Moisture Sensor uses the industry standard SDI-12 interface for communicating with a Data Recorder or other SDI-12 equipped controller device. The SDI-12 communications standard is digital serial data communications hardware and protocol standard based on 1200 baud, ASCII character communications over the three-wire BUS. The SDI-12 Series is compliant with Version 1.4 of the SDI-12 standard. Version 1.4 is the latest standard at this time.
Firmware and Manual Disclaimer
This manual was prepared for the current sensor firmware release at the time of the manual publication. The manual has been thoroughly edited and is believed to be reliable. Acclima assumes no liability for inaccuracies. Errata may be published on our website or when deemed necessary by Acclima. Acclima reserves the right to change any specification(s) without notice.
You can learn more about Acclima’s products at acclima.com or email questions to firstname.lastname@example.org.
The Series SDI-12 moisture sensor is a Digital Time Domain Transmissometer that measures the permittivity of soils by determining the propagation time of an electromagnetic wave transmitted along a waveguide through the soil. The absolute moisture content of the soil is calculated from the permittivity using the Topp equation. The soil moisture sensor can be commanded to produce both the bulk permittivity and the moisture content of the soil.
The accuracy and stability of the SDI-12 moisture sensor is obtained through a patented hardware and firmware system that digitizes the return waveform and them uses proprietary digital signal analysis algorithms to extract the real propagation time and distortion parameters of the returned wave. High accuracy is achieved over a wide range of soil temperatures and electrical conductivity. In the SDI-12 series the resolution of the digitized waveform is 5 picoseconds – permitting a small transducer to report very high-resolution data. From the extracted distortion parameters, the transducer calculates and reports the electrical conductivity of the soil. The permittivity and soil moisture measurements are compensated for temperature. The transducer also reports soil temperature.
Installation and Connection
The three wires from the sensor are the SDI-12 connections to the data recorder. The white wire is the common return or ground terminal on the data recorder SDI-12 connector block. The red wire is the power line and must attach to the power supply line on the data recorder SDI-12 connector block or to the positive side of an external power source. The blue wire is the bidirectional (half-duplex) data line that attaches to the serial data line on the data recorder SDI-12 connector block. If a power supply is used that is external to the data recorder, then the negative side of the power supply must be attached to the ground terminal on the data recorder SDI-12 connector block.
Diagram for a data logger providing power to the SDI-12 port
Diagram for the data recorder using an external battery
The SDI-12 protocol allows multiple devices to be attached to one SDI-12 port. In order for the data recorder and devices to facilitate unambiguous communications each device on the SDI-12 port is given a unique address. The default address of the transducer (as shipped from the factory) is 0 (zero). If this is the only device on the SDI-12 port on the recorder then you may leave the address as 0. If other devices are connected then you will need to ensure that they each have unique addresses.
Setting the address will be discussed later.
SDI-12 commands are a concatenation of three fields. The first is the device address. This is a single character – typically in the range of “0” to “9” but can also use the characters “a” to “z” and “A” to “Z”. The second is the command which may consist of several characters. The command characters are always upper case. The last is the command terminator which is always an exclamation point “!”.
The SDI-12 sensor implements commands that comply with versions 1.0, 1.1, 1.2, 1.3 and 1.4 of the SDI-12 specifications. All commands require for full compliance of the version 1.3 specifications are implemented in the SDI-12 sensor. However, the ‘additional measurements’ commands in the SDI-12 specification are meaningless to the Acclima SDI-12 sensors, since the permittivity, moisture, conductivity, and temperature measurements are all required and all made with every single measurement. Hence the response for all of these additional measurements commands is “a<CR><LF>” as required by the SDI-12 specification. The sensor ignores unimplemented commands outside those require by the SDI-12 specification. There is no response to them.
Additional ‘Extended Commands’ that are not innumerate here, are incorporated by Acclima for digitized waveform dumps and factory calibration settings and readings.
The table below documents all commands supported by the SDI-12 sensor in alphabetical order:
Note: Only one device can be connected to the SDI-12 port when this command is used.
Start Concurrent Measurement
Start Concurrent Measurement- Request CRC
Measurement takes one second. Four values are returned.
Start Additional Concurrent
No data to be provided.
Start Additional Concurrent Measurement –
No data to be provided.
Get First 4 Data Items in response to a Measurement command: VWC, Soil Temp., Soil Permittivity, Soil EC
response from a Verify command
Asppp.ppsTT.skk.kksee.eppp.pp is the water content (%) TT. TT is the soil temp (C) kk.kk is the soil relative permittivity ee.e is the soil EC (dS/m).
n is the verifying results
ss= SDI-12 version 1.3 (2 ch)
v= Vendor ID Acclima (8 ch)
p= Product ID (6 ch)
c= Product Version (3 ch)
xx…xx= Serial Number (13 ch)
Start Non- Concurrent Measurement Start Non- Concurrent Measurement –
Measurement takes one second and returns four values.
Sensor returns a Service Request after measurement is made. The data can be retrieved using a aD0! command.
– Request CRC
The SDI-12 sensor does not require the use of this command. If the command is received the sensor reports “no data” to be returned.
The SDI-12 sensor does not use this command and responds with no data.
One data item will be returned after three seconds The data item will be the verification code requested by this command.
The sensor returns a service request after the measurement is made.
The data can be retrieved using a aD0! Command.
Setting the Address
If more than one device is wired to the SDI-12 port you will need to assure that they all are set up with unique addresses. If you are not sure you can connect them one at a time and use the “Address Query” command “?” to read the addresses. Only one device can be connected to the SDI-12 port when using this command. The device will respond with its address.
To change the address of a device use the “Change Address” command. The syntax is “aAn!”, where “a” is the present address “A” is the Set Sensor Address command and “n” is the new address. The device will return the new address. For example, if 0A4! Is transmitted, the sensor address will be re-programmed to 4 and the sensor will return “4”.
To verify that the SDI-12 sensor is responding to its address use the “Send Identification” command “al!”. The SDI-12 sensor will respond with “a13Acclima…” In the response the “a” is the device address, “13” represents Version 1.3 the SDI-12 standard and the “Acclima” is the vendor ID.
Making Measurements with the SDI-12 Sensor
There are two commands that cause the SDI-12 soil moisture sensor to take measurements and store them for subsequent retrieval. The first is the “Non-Concurrent Measurement Command” “M”. The second is the “Concurrent Measurement Command” “C”. The sensor responds to both of the commands with “atttn” where “a” is the sensor address, “ttt” is the number of seconds before the data will be ready, and “n” is the number of data items that will have been prepared. For the Acclima SDI-12 sensor the number of data items is 9.
When using the non-concurrent command, the recorder waits for the sensor to complete its measurement and then retrieves the result. The sensor sends a “Service Report” code to the recorder after preparing the data so that the recorder will retrieve the data at the appearance of the Service Request or after the indicated time has expired, whichever occurs first. The Service Request code is simply the address of the sensor “a”, followed by carriage return and line feed characters.
When using the concurrent measurement command the sensor does not return a service request when the data is ready for retrieval. The recorder is allowed to perform other communications to other devices while the sensor is making the measurement and preparing the data. Then when the recorder is available and the indicated measurement time has elapsed the recorder retrieves the data.
To retrieve the requested measurement data the recorder sends a “D0” command to the sensor. The D0 command returns the basic 4 measurement items: Volumetric Water Content, Soil Temperature, Soil Relative Permittivity, and Soil Electrical Conductivity. The syntax for the command is: “aD0”, where “a” is the sensor address. Below is a table showing the data available from the SDI-12 sensor and the commands used to retrieve them.
|Data Item Request||Command||Response Example||Units|
|Volumetric Water Content||aD0!||+25.03||%|
|Bulk Relative Permittivity||aD0!||+32.13||—|
|Soil Electric Conductivity||aD0!||+1.6||dS/m|
The format of the returned data is:
Note: The returned data is always preceded by the device address a. Each data value is preceded by a sign. No units are returned but are assumed known by the user. The units are as shown in the table above. Each return data string is terminated by carriage return and line feed characters.
Examples of Using the Sensor
Example 1: Reading sensors using non-concurrent commands:
This first example shows how a data recorder would obtain 4 data items from a sensor that has address 5: (1) Volumetric Water Content, (2) Soil Temperature, (3) Soil Permittivity or Dielectric Constant and (4) Soil Electric Conductivity. In this example, the data recorder will operate in the non-concurrent mode – that is, it will not spend any time with other sensors until this sensor has completed its measurements and has reported them.
The first command from the data recorder is:
This command is called the “Start Measurement” command. The “5” in this command is the address of the sensor you wish to respond to the command. It will cause the SDI-12 sensor to begin the process of taking a set of measurements. The sensor will immediately respond to this command as follows:
This response starts with the address of the sensor (5), then continues with the number of seconds that are required to take the readings, 001 (1 second), then finished with the number of data items that will be returned with each measurement request (4). Every response from the sensor is terminated with a carriage return and line feed characters. After the sensor has finished its measurements it transmits a service request to the recorder.
The service request is just the address of the sensor. The recorder then sends a command to get the first set of data items: 5D0!
The items requested are: volumetric water content, soil temperature, soil permittivity, and soil electrical conductivity. Upon receiving this command, the sensor responds with:
The first 5 is the sensor address. The remaining string contains the requested data items – each preceded by a “+” or “-“ sign.
Example 2: Reading sensor using concurrent commands:
This second example shows how a data recorder would obtain the same four data items from a sensor using concurrent commands. In this example, the data recorder will operate in the concurrent mode – that is, it will be free to service other sensors while the sensor with address 5 is making its measurements. Concurrent measurement commands use C instead of M in the command. Thus, the command to start concurrent measurement is:
The sensor immediately responds with:
With concurrent commands, the sensor does not provide a service request after the measurements have been made. The recorder relies on the timing information provided by the sensor and will not request data until the time interval has expired – in this case, one second.
The recorder then requests the four data items exactly in the same manner as with non-concurrent readings.
Data Communication Error Checking
So far, all Start Measurement commands that we have discussed have requested data wherein no error checking is done to verify the correct reception of the data by the recorder. The SDI-12 specification provides for error checking by using an additional command character “C” with the Start Measurement command. Thus when the commands,
aMC! or aCC!
are transmitted to the sensor, the sensor appends a CRC code to the end of the returned data. This code is generated from the data in such a manner that if the data changes in the transmission the change can be detected in the recorder. If the recorder experiences such corruption in the data, it will repeat the data request automatically.
The SDI-12 specification requires a special command for the purpose of verifying that the sensor is working properly. Acclima’s implementation of that command is as follows:
1. The recorder sends out the verify command:
2. Upon receiving the verify command, the sensor will respond with:
Where “a” is the sensor address, “ttt” is the time required to make verification readings, and “n” is the number of data items that will be returned. For this command ttt = 003 and n=1.
3. The sensor takes three full sets of the corrected propagation times from the three readings are saved and compared. If any of these propagation times are out range or if they differ by an unacceptable amount an error is acknowledged. The sensor then sends out a service request.
4. The recorder issue a read data command D0:
|No Data Return by the SDI-12 sensor|
Check the sensor connections to the data recorder.
The white wire connects to the SDI-12 port Ground terminal. The blue wire connects to the SDI-12 port Data terminal. The red wire connects to the SDI-12 port V+ terminal or to the positive terminal of an external battery. If an external battery is used, the negative terminal of the battery connects to the ground terminal of the SDI-12 port.
Ensure that there are no address conflicts.
Disconnect all other devices connected to the recorder.
Ensure that the sensor address is used in the commands you are using.
|Sensor not communicating|
|Unreadable data/parity errors|
Ensure that there are no address conflicts. Disconnect all other devices and try to read again.
Ensure that the cable length to the sensor does not exceed 200 feet.
|Dimensions (without cable)||20 cm x 5.33 cm x 1.5 cm|
|Weight (with 3 meter cable)||220g|
|Composition||Type 304 stainless steel, crystalline-epoxy, PVC (insulation)|
|Cable||3 conductor, 22 Ga PVC sheath, 10 meters|
|Operating Temp Range||1˚ C to 50˚ C for VWC (no ice), -20˚ C to 50˚ C for the other data|
|Storage Temp Range||-20˚ C to 75˚ C|
|Lightning & Surge Protection||6kV @ 3kA, 8/50us|
|Volumetric Water Content||0 to 100%|
|Absolute VWC Accuracy||+/- 2% typical|
|VWC Soil EC Stability||+/- 1% of full scale 0 to 5 dS/m BEC|
|Temp Reporting Accuracy||+/-2˚C from +1˚C to +50˚C (ACC-SEN-SDI)|
|EC Reporting Accuracy||+/- 0.2 dS/m 0 to 5 dS/m BEC|
|Technology||Waveform Digitizing Time Domain Transmissometer|
|Effective Acquisition Bandwidth||200 Giga-sample/sec.|
|Propagation Time Resolution||5 ps|
|Waveform Propagation Resolution||1.5 mm in air, 0.16 mm in water|
|Waveguide Length||30 cm|
|Permittivity to VWC Calculation||Modified Dielectric Mixing Model|
|Propagation Waveform Bandwidth||>2 GHz|
|Communication Protocol||SDI-12 Revision 1.4|
|Maximum Cable Length||60 meters|
|Operating Voltage Range||6 – 15 VDC|
|Listening/Sleep Mode Current||60 uA at 50˚ C|
|Communications Current||6 mA typical, 8 mA max|
|Read Moisture Comm Time||425 ms total for each read cycle|
|Moisture Sense Current|
84 mA at 12 VDC input
98 mA at 8 VDC input
110 mA at 6 VDC input
|Moisture Sense Time||450 ms each sensing operation|