Campbell ClariVUE10 topic

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.

Sensor Datasheet

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

Build flags

Sensor Constructor

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

Construct a new Campbell ClariVUE10 object.

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

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

  • The ClariVUE10 requires a 9.6 to 18 Vdc 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 Campbell ClariVUE10 is used in the menu a la carte example.

1#include <sensors/CampbellClariVUE10.h>
2
3// NOTE: Use -1 for any pins that don't apply or aren't being used.
4const char* ClariVUESDI12address = "0"; // The SDI-12 Address of the ClariVUE10
5const int8_t ClariVUEPower = sensorPowerPin; // Power pin
6const int8_t ClariVUEData = 7; // The SDI-12 data pin
7// NOTE: you should NOT take more than one readings. THe sensor already takes
8// and averages 8 by default.
9
10// Create a Campbell ClariVUE10 sensor object
11CampbellClariVUE10 clarivue(*ClariVUESDI12address, ClariVUEPower, ClariVUEData);
12
13// Create turbidity, temperature, and error variable pointers for the ClariVUE10
14Variable* clarivueTurbidity = new CampbellClariVUE10_Turbidity(
15 &clarivue, "12345678-abcd-1234-ef00-1234567890ab");
16Variable* clarivueTemp = new CampbellClariVUE10_Temp(
17 &clarivue, "12345678-abcd-1234-ef00-1234567890ab");
18Variable* clarivueError = new CampbellClariVUE10_ErrorCode(
19 &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.

Sensor Variable Counts

The number of variables that can be returned by the ClariVUE10

#define CLARIVUE10_NUM_VARIABLES = 7
Sensor::_numReturnedValues; the ClariVUE10 can report 7 values (although we only keep 3).
#define CLARIVUE10_INC_CALC_VARIABLES = 0
Sensor::_incCalcValues; The ClariVUE calculates averages and other stats on board, but we don't calculate any additional values.

Sensor Timing

The sensor timing for a Campbell ClariVUE10

#define CLARIVUE10_WARM_UP_TIME_MS = 8000
Sensor::_warmUpTime_ms; the ClariVUE10 warms up in 5500ms.
#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 = 11000
Sensor::_measurementTime_ms; the ClariVUE10 takes ~9500ms to complete a measurement.
#define CLARIVUE10_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 ClariVUE requires no extra time.

Turbidity

The turbidity variable from a Campbell ClariVUE10

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

CampbellClariVUE10_Turbidity::CampbellClariVUE10_Turbidity(CampbellClariVUE10* parentSense, const char* uuid = "", const char* varCode = "ClariVUETurbidity") explicit

Construct a new CampbellClariVUE10_Turbidity object.

Parameters
parentSense The parent CampbellClariVUE10 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 "ClariVUETurbidity".

#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

CampbellClariVUE10_Temp::CampbellClariVUE10_Temp(CampbellClariVUE10* parentSense, const char* uuid = "", const char* varCode = "ClariVUETempC") explicit

Construct a new CampbellClariVUE10_Temp object.

Parameters
parentSense The parent CampbellClariVUE10 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 "ClariVUETempC".

#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.

CampbellClariVUE10_ErrorCode::CampbellClariVUE10_ErrorCode(CampbellClariVUE10* parentSense, const char* uuid = "", const char* varCode = "ClariVUEError") explicit

Construct a new CampbellClariVUE10_ErrorCode object.

Parameters
parentSense The parent CampbellClariVUE10 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 "ClariVUEError".

#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".

Define documentation

#define CLARIVUE10_NUM_VARIABLES = 7

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


#define CLARIVUE10_INC_CALC_VARIABLES = 0

Sensor::_incCalcValues; The ClariVUE calculates averages and other stats on board, but we don't calculate any additional values.


#define CLARIVUE10_WARM_UP_TIME_MS = 8000

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 = 11000

Sensor::_measurementTime_ms; the ClariVUE10 takes ~9500ms to complete a measurement.

Spec sheet says the measurement time is 9s. When taking a standard measurement I was not getting a result until after about 9335ms.


#define CLARIVUE10_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 ClariVUE requires no extra time.


#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_UNIT_NAME = "formazinNephelometricUnit"

Variable unit name in ODM2 controlled vocabulary; "formazinNephelometricUnit" (FNU)


#define CLARIVUE10_TURBIDITY_DEFAULT_CODE = "ClariVUETurbidity"

Default variable short code; "ClariVUETurbidity".


#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".


#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".