ModularSensors > Modules > Supported Sensors > SDI-12 Sensors > Campbell ClariVUE10

Campbell ClariVUE10 module

Classes for the Campbell ClariVUE10 turbidity sensor.

Introduction

The ClariVUE™10 is an ISO 7027 compliant, side-scatter turbidity sensor. It returns data via SDI-12 to a data logger. Turbidity is a common surrogate measurement for suspended sediment concentration in aquatic systems. The ClariVUE™10 is designed to operate in fresh and saline environments. It will require regular maintenance to keep the optical window clean in high bio-fouling environments. The face of the sensor is made from copper to slow biological growth over the optical windows.

The sensor is implemented as a sub-classes of the SDI12Sensors class. It requires a 9.6 to 18 Vdc power supply, which can be turned off between measurements. It draws < 300 µA when inactive and < 35 mA while measuring. You will need a voltage booster or a separate power supply to give the ClariVUE10 sufficient voltage to run. At the Stroud Center, we use Pololu 12V Step-Up Voltage Regulators.

Sensor Datasheet

The specifications and datasheet are available at https://www.campbellsci.com/clarivue10

Build flags

Sensor Constructor

{{ @refCampbellClariVUE10CampbellClariVUE10 }}


Example Code

The Campbell ClariVUE10 is used in the menu a la carte example.

#include <sensors/CampbellClariVUE10.h>

const char* ClariVUESDI12address = "0";  // The SDI-12 Address of the ClariVUE10
const int8_t ClariVUEPower = sensorPowerPin;  // Power pin (-1 if unconnected)
const int8_t ClariVUEData  = 7;               // The SDI12 data pin
// NOTE:  you should NOT take more than one readings.  THe sensor already takes
// and averages 8 by default.

// Create a Campbell ClariVUE10 sensor object
CampbellClariVUE10 clarivue(*ClariVUESDI12address, ClariVUEPower, ClariVUEData);

// Create turbidity, temperature, and error variable pointers for the ClariVUE10
Variable* clarivueTurbidity = new CampbellClariVUE10_Turbidity(
    &clarivue, "12345678-abcd-1234-ef00-1234567890ab");
Variable* clarivueTemp = new CampbellClariVUE10_Temp(
    &clarivue, "12345678-abcd-1234-ef00-1234567890ab");
Variable* clarivueError = new CampbellClariVUE10_ErrorCode(
    &clarivue, "12345678-abcd-1234-ef00-1234567890ab");

Classes

class CampbellClariVUE10
The Sensor sub-class for the Campbell ClariVUE10 turbidity sensor.
class CampbellClariVUE10_Turbidity
The Variable sub-class used for the turbidity output from a Campbell ClariVUE10 turbidity sensor.
class CampbellClariVUE10_Temp
The Variable sub-class used for the temperature output from a Campbell ClariVUE10 turbidity sensor.
class CampbellClariVUE10_ErrorCode
The Variable sub-class used for the error code output from a Campbell ClariVUE10 turbidity sensor.

Defines

#define CLARIVUE10_NUM_VARIABLES = 7
Sensor::_numReturnedValues; the ClariVUE10 can report 7 values (although we only keep 3).

Sensor Timing

The sensor timing for a Campbell ClariVUE10

#define CLARIVUE10_WARM_UP_TIME_MS = 275
Sensor::_warmUpTime_ms; the ClariVUE10 warms up in 5500ms.

This is longer than the expected 250ms for a SDI-12 sensor, but I couldn't get a response from the sensor faster than that.

#define CLARIVUE10_STABILIZATION_TIME_MS = 0
Sensor::_stabilizationTime_ms; the ClariVUE10 is stable as soon as it warms up (0ms stabilization).
#define CLARIVUE10_MEASUREMENT_TIME_MS = 7200
Sensor::_measurementTime_ms; the ClariVUE10 takes ~7200ms to complete a measurement.

Spec sheet says the measurement time is 8s. When taking concurrent measurements I was consistently getting a result before about 6800ms. When taking a standard measurement I was getting a result after about 7185ms. It seems safest to use round up from the time I was getting for a non-concurrent measurment. Waiting the full 8s seems excessive.

Turbidity

The turbidity variable from a Campbell ClariVUE10

  • Range is 0 to 4000 FNU.
  • Accuracy ±2% or 0.5 FNU (whichever is greater).

{{ @refCampbellClariVUE10_TurbidityCampbellClariVUE10_Turbidity }}

#define CLARIVUE10_TURBIDITY_RESOLUTION = 1
Decimals places in string representation; turbidity should have 1 (resolution is 0.2 FNU).
#define CLARIVUE10_TURBIDITY_VAR_NUM = 0
Sensor variable number; turbidity is stored in sensorValues[0].
#define CLARIVUE10_TURBIDITY_VAR_NAME = "turbidity"
Variable name in ODM2 controlled vocabulary; "turbidity".
#define CLARIVUE10_TURBIDITY_UNIT_NAME = "formazinNephelometricUnit"
Variable unit name in ODM2 controlled vocabulary; "formazinNephelometricUnit" (FNU)
#define CLARIVUE10_TURBIDITY_DEFAULT_CODE = "ClariVUETurbidity"
Default variable short code; "ClariVUETurbidity".

Temperature

The temperature variable from a Campbell ClariVUE10

  • Range is -2° to +40°C
  • Accuracy is ± 0.2°C

{{ @refCampbellClariVUE10_TempCampbellClariVUE10_Temp }}

#define CLARIVUE10_TEMP_RESOLUTION = 2
Decimals places in string representation; temperature should have 2 - resolution is 0.01°C.
#define CLARIVUE10_TEMP_VAR_NUM = 5
Sensor variable number; temperature is stored in sensorValues[5].
#define CLARIVUE10_TEMP_VAR_NAME = "temperature"
Variable name in ODM2 controlled vocabulary; "temperature".
#define CLARIVUE10_TEMP_UNIT_NAME = "degreeCelsius"
Variable unit name in ODM2 controlled vocabulary; "degreeCelsius" (°C)
#define CLARIVUE10_TEMP_DEFAULT_CODE = "ClariVUETempC"
Default variable short code; "ClariVUETempC".

Error Code

The error code variable from a Campbell ClariVUE10

  • Significance of error code values is unknown.

{{ @refCampbellClariVUE10_ErrorCodeCampbellClariVUE10_ErrorCode }}

#define CLARIVUE10_ERRORCODE_RESOLUTION = 0
Decimals places in string representation; the error code has 0.
#define CLARIVUE10_ERRORCODE_VAR_NUM = 6
Sensor variable number; error code is stored in sensorValues[2].
#define CLARIVUE10_ERRORCODE_VAR_NAME = "instrumentStatusCode"
Variable name in ODM2 controlled vocabulary; "instrumentStatusCode".
#define CLARIVUE10_ERRORCODE_UNIT_NAME = "dimensionless"
Variable unit name in ODM2 controlled vocabulary; "dimensionless".
#define CLARIVUE10_ERRORCODE_DEFAULT_CODE = "ClariVUEError"
Default variable short code; "ClariVUEError".