Meter ECH2O (5TM) topic

Classes for the Meter ECH2O (5TM) soil moisture sensor.

Introduction

Meter Environmental makes two series of soil moisture sensors, the ECH2O series and the Teros series. This page is for the ECH2O series.

Both series of sensors operate as sub-classes of the SDI12Sensors class. They require a 3.5-12V power supply, which can be turned off between measurements. While contrary to the manual, they will run with power as low as 3.3V. On the 5TM with a stereo cable, the power is connected to the tip, data to the ring, and ground to the sleeve. On the bare-wire version, the power is connected to the white cable, data to red, and ground to the unshielded cable.

Sensor Datasheet

Datasheet

Build flags

Sensor Constructor

Decagon5TM::Decagon5TM(char SDI12address, int8_t powerPin, int8_t dataPin, uint8_t measurementsToAverage = 1)

Construct a new Decagon 5TM object.

Parameters
SDI12address The SDI-12 address of the ECH2O; can be a char, char*, or int.
powerPin

The pin on the mcu controlling power to the ECH2O Use -1 if it is continuously powered.

  • The ECH2O requires a 3.5-12V power supply, which can be turned off between measurements
dataPin The pin on the mcu connected to the data line of the SDI-12 circuit.
measurementsToAverage The number of measurements to take and average before giving a "final" result from the sensor; optional with a default value of 1.

The SDI-12 address of the sensor, the Arduino pin controlling power on/off, and the Arduino pin sending and receiving data are required for the sensor constructor. Optionally, you can include a number of distinct readings to average. The data pin must be a pin that supports pin-change interrupts.



Example Code

The Meter ECH2O (5TM) is used in the menu a la carte example.

1#include <sensors/Decagon5TM.h>
2
3// NOTE: Use -1 for any pins that don't apply or aren't being used.
4const char* TMSDI12address = "2"; // The SDI-12 Address of the 5-TM
5const int8_t TMPower = sensorPowerPin; // Power pin
6const int8_t TMData = 7; // The SDI-12 data pin
7
8// Create a Decagon 5TM sensor object
9Decagon5TM fivetm(*TMSDI12address, TMPower, TMData);
10
11// Create the matric potential, volumetric water content, and temperature
12// variable pointers for the 5TM
13Variable* fivetmEa = new Decagon5TM_Ea(&fivetm,
14 "12345678-abcd-1234-ef00-1234567890ab");
15Variable* fivetmVWC =
16 new Decagon5TM_VWC(&fivetm, "12345678-abcd-1234-ef00-1234567890ab");
17Variable* fivetmTemp =
18 new Decagon5TM_Temp(&fivetm, "12345678-abcd-1234-ef00-1234567890ab");

Classes

class Decagon5TM
The Sensor sub-class for the Meter ECH2O soil moisture sensors.
class Decagon5TM_Ea
The Variable sub-class used for the apparent dielectric permittivity (εa, matric potential) output from a Meter ECH20 or Decagon 5TM soil moisture probe.
class Decagon5TM_Temp
The Variable sub-class used for the temperature output output from a Meter ECH20 or Decagon 5TM soil moisture probe.
class Decagon5TM_VWC
The Variable sub-class used for the volumetric water content output from a Meter ECH20 or Decagon 5TM soil moisture probe.

Sensor Variable Counts

The number of variables that can be returned by the Decagon 5TM

#define TM_NUM_VARIABLES = 3
Sensor::_numReturnedValues; the 5TM can report 3 values.
#define TM_INC_CALC_VARIABLES = 1
Sensor::_incCalcValues; volumetric water content is calculated from the permittivity and the temperature.

Sensor Timing

The sensor timing for a Meter ECH2O

#define TM_WARM_UP_TIME_MS = 200
Sensor::_warmUpTime_ms; maximum warm-up time in SDI-12 mode: 200ms.
#define TM_STABILIZATION_TIME_MS = 0
Sensor::_stabilizationTime_ms; the 5TM is stable as soon as it warms up (0ms stabilization).
#define TM_MEASUREMENT_TIME_MS = 200
Sensor::_measurementTime_ms; maximum measurement duration: 200ms.
#define TM_EXTRA_WAKE_TIME_MS = 0
Extra wake time required for an SDI-12 sensor between the "break" and the time the command is sent. The 5TM requires no extra time.

EA

The EA variable from a Meter ECH2O

  • Range is 0 – 1 m3/m3 (0 – 100% VWC)
  • Accuracy for generic calibration equation: ± 0.03 m3/m3 (± 3% VWC) typical
  • Accuracy for medium-specific calibration: ± 0.02 m3/m3 (± 2% VWC)

Decagon5TM_Ea::Decagon5TM_Ea(Decagon5TM* parentSense, const char* uuid = "", const char* varCode = "SoilEa") explicit

Construct a new Decagon5TM_Ea object.

Parameters
parentSense The parent Decagon5TM providing the result values.
uuid A universally unique identifier (UUID or GUID) for the variable; optional with the default value of an empty string.
varCode A short code to help identify the variable in files; optional with a default value of "SoilEa".

#define TM_EA_RESOLUTION = 5
Decimals places in string representation; EA should have 5.
#define TM_EA_VAR_NUM = 0
Sensor variable number; EA is stored in sensorValues[0].
#define TM_EA_VAR_NAME = "permittivity"
Variable name in ODM2 controlled vocabulary; "permittivity".
#define TM_EA_UNIT_NAME = "faradPerMeter"
Variable unit name in ODM2 controlled vocabulary; "faradPerMeter" (F/m)
#define TM_EA_DEFAULT_CODE = "SoilEa"
Default variable short code; "SoilEa".

Temperature

The temperature variable from a Meter ECH2O

  • Range is - 40°C to + 50°C
  • Accuracy is ± 1°C

Decagon5TM_Temp::Decagon5TM_Temp(Decagon5TM* parentSense, const char* uuid = "", const char* varCode = "SoilTemp") explicit

Construct a new Decagon5TM_Temp object.

Parameters
parentSense The parent Decagon5TM providing the result values.
uuid A universally unique identifier (UUID or GUID) for the variable; optional with the default value of an empty string.
varCode A short code to help identify the variable in files; optional with a default value of "SoilTemp".

#define TM_TEMP_RESOLUTION = 2
Decimals places in string representation; temperature should have 2.
#define TM_TEMP_VAR_NUM = 1
Sensor variable number; temperature is stored in sensorValues[1].
#define TM_TEMP_VAR_NAME = "temperature"
Variable name in ODM2 controlled vocabulary; "temperature".
#define TM_TEMP_UNIT_NAME = "degreeCelsius"
Variable unit name in ODM2 controlled vocabulary; "degreeCelsius" (°C)
#define TM_TEMP_DEFAULT_CODE = "SoilTemp"
Default variable short code; "SoilTemp".

Volumetric Water Content

The VWC variable from a Meter ECH2O

  • Range is 0 – 1 m3/m3 (0 – 100% VWC)
  • Accuracy for Generic calibration equation: ± 0.03 m3/m3 (± 3% VWC) typ
  • Accuracy for Medium Specific Calibration: ± 0.02 m3/m3 (± 2% VWC)

Decagon5TM_VWC::Decagon5TM_VWC(Decagon5TM* parentSense, const char* uuid = "", const char* varCode = "SoilVWC") explicit

Construct a new Decagon5TM_VWC object.

Parameters
parentSense The parent Decagon5TM providing the result values.
uuid A universally unique identifier (UUID or GUID) for the variable; optional with the default value of an empty string.
varCode A short code to help identify the variable in files; optional with a default value of "SoilVWC".

#define TM_VWC_RESOLUTION = 3
Decimals places in string representation; VWC should have 3.
#define TM_VWC_VAR_NUM = 2
Sensor variable number; VWC is stored in sensorValues[2].
#define TM_VWC_VAR_NAME = "volumetricWaterContent"
Variable name in ODM2 controlled vocabulary; "volumetricWaterContent".
#define TM_VWC_UNIT_NAME = "percent"
Variable unit name in ODM2 controlled vocabulary; "percent" - volumetric percent water content (%, m3/100m3)
#define TM_VWC_DEFAULT_CODE = "SoilVWC"
Default variable short code; "SoilVWC".

Define documentation

#define TM_NUM_VARIABLES = 3

Sensor::_numReturnedValues; the 5TM can report 3 values.


#define TM_INC_CALC_VARIABLES = 1

Sensor::_incCalcValues; volumetric water content is calculated from the permittivity and the temperature.


#define TM_WARM_UP_TIME_MS = 200

Sensor::_warmUpTime_ms; maximum warm-up time in SDI-12 mode: 200ms.


#define TM_STABILIZATION_TIME_MS = 0

Sensor::_stabilizationTime_ms; the 5TM is stable as soon as it warms up (0ms stabilization).


#define TM_MEASUREMENT_TIME_MS = 200

Sensor::_measurementTime_ms; maximum measurement duration: 200ms.


#define TM_EXTRA_WAKE_TIME_MS = 0

Extra wake time required for an SDI-12 sensor between the "break" and the time the command is sent. The 5TM requires no extra time.


#define TM_EA_RESOLUTION = 5

Decimals places in string representation; EA should have 5.

4 are reported, adding extra digit to resolution to allow the proper number of significant figures for averaging - resolution is 0.0008 m3/m3 (0.08% VWC) from 0 – 50% VWC.


#define TM_EA_VAR_NUM = 0

Sensor variable number; EA is stored in sensorValues[0].


#define TM_EA_VAR_NAME = "permittivity"

Variable name in ODM2 controlled vocabulary; "permittivity".


#define TM_EA_UNIT_NAME = "faradPerMeter"

Variable unit name in ODM2 controlled vocabulary; "faradPerMeter" (F/m)


#define TM_EA_DEFAULT_CODE = "SoilEa"

Default variable short code; "SoilEa".


#define TM_TEMP_RESOLUTION = 2

Decimals places in string representation; temperature should have 2.

1 is reported, adding extra digit to resolution to allow the proper number of significant figures for averaging - resolution is 0.1°C.


#define TM_TEMP_VAR_NUM = 1

Sensor variable number; temperature is stored in sensorValues[1].


#define TM_TEMP_VAR_NAME = "temperature"

Variable name in ODM2 controlled vocabulary; "temperature".


#define TM_TEMP_UNIT_NAME = "degreeCelsius"

Variable unit name in ODM2 controlled vocabulary; "degreeCelsius" (°C)


#define TM_TEMP_DEFAULT_CODE = "SoilTemp"

Default variable short code; "SoilTemp".


#define TM_VWC_RESOLUTION = 3

Decimals places in string representation; VWC should have 3.

2 are reported, adding extra digit to resolution to allow the proper number of significant figures for averaging - resolution is 0.0008 m3/m3 (0.08% VWC) from 0 – 50% VWC.


#define TM_VWC_VAR_NUM = 2

Sensor variable number; VWC is stored in sensorValues[2].


#define TM_VWC_VAR_NAME = "volumetricWaterContent"

Variable name in ODM2 controlled vocabulary; "volumetricWaterContent".


#define TM_VWC_UNIT_NAME = "percent"

Variable unit name in ODM2 controlled vocabulary; "percent" - volumetric percent water content (%, m3/100m3)


#define TM_VWC_DEFAULT_CODE = "SoilVWC"

Default variable short code; "SoilVWC".