Turner Cyclops-7F topic
Classes for the Turner Cyclops-7F analog turbidity sensor.
Introduction
Cyclops-7F Sensors are high performance, compact submersible sensors designed for integration into any platform that provides power and datalogging.
The Cyclops sensors come pre-configured for one of 13 fluorophores and can also be ordered with custom wavelength configurations. The standard configurations are:
ID | Variable | Application |
---|---|---|
U | TurnerCyclops_ | CDOM/FDOM |
C | TurnerCyclops_ | Chl in vivo (Blue Excitation) |
D | TurnerCyclops_ | Chl in vivo (Red Excitation) |
F | TurnerCyclops_ | Fluorescein Dye |
O | TurnerCyclops_ | Oil - Crude |
G | TurnerCyclops_ | Oil - Fine (Refined Fuels) |
B | TurnerCyclops_ | Optical Brighteners for Wastewater Monitoring |
P | TurnerCyclops_ | Phycocyanin (Freshwater Cyanobacteria) |
E | TurnerCyclops_ | Phycoerythrin (Marine Cyanobacteria) |
A | TurnerCyclops_ | PTSA (1,3,6,8-Pyrenetetrasulfonic Acid Tetrasodium Salt) |
R | TurnerCyclops_ | Rhodamine Dye |
L | TurnerCyclops_ | Tryptophan for Wastewater Monitoring |
T | TurnerCyclops_ | Turbidity |
The detection limits, ranges, and wavelengths of each configuration are:
ID | MDL | Linear Range | LED (CWL) | Excitation | Emission | Power @ 12V |
---|---|---|---|---|---|---|
U | 0.1 ppb¹ | 0-1,500 ppb¹ | 365 nm | 325/120 nm | 470/60 nm | 240 mW |
0.5 ppb² | 0-3,000 ppb² | 365 nm | 325/120 nm | 470/60 nm | ||
C | 0.03 μg/L | 0-500 μg/L | 460 nm | 465/170 nm | 696/44 nm | 240 mW |
D | 0.3 μg/L | 0-500 μg/L | 635 nm | ≤ 635 nm | > 695 nm | 240 |
F | 0.01 ppb | 0-500 ppb | 460 nm | 400/150 nm | 545/28 nm | 145 mW |
O | 0.2 ppb² | 0-1,500 ppb² | 365 nm | 325/120 nm | 410-600 nm | 250 mW |
G | 0.4ppm³ | 0-20 ppm³ | 255 nm | ≤ 290 nm | 350/50 nm | 530 mW |
B | 0.6 ppb² | 0-2,500 ppb² | 365 nm | 325/120 nm | 445/15 nm | 200 mW |
P | 2 ppb⁴ | 0-4,500 ppb⁴ | 590 nm | 590/30 nm | ≥ 645 nm | 160 mW |
E | 0.1 ppb⁵ | 0-750 ppb⁵ | 525 nm | 515-547 nm | ≥ 590 nm | 270 mW |
A | 0.1 ppb² | 0-650 ppb² | 365 nm | 325/120 nm | 405/10 nm | 320 mW |
R | 0.01 ppb | 0-1,000 ppb | 530 nm | 535/60 nm | 590-715 nm | 175 mW |
L | 3 ppb | 0-5,000 ppb | 275 nm | - | 350/55 nm | 540 mW |
T | 0.05 NTU | 0-1,500 NTU | 850 nm | 850 nm | 850 nm | 120 mW |
¹ Quinine Sulfate
² PTSA (1,3,6,8-Pyrenetetrasulfonic Acid Tetrasodium Salt)
³ BTEX (Benzene, Toluene, Ethylbenzene, Xylenes)
⁴ Phycocyanin pigment from Prozyme diluted in Deionized water
⁵ Phycoerythrin pigment from Prozyme diluted in Deionized water
Calibration
The Cyclops does not come pre-calibrated and must be calibrated by the user after purchase. Turner recommends using a simple 1-point calibration, which is what this library supports. Full calibration instructions are in the instrument manual.
The Cyclops-7F puts out a simple analog signal between 0 and 5V. It has three possible gain settings, 1x, 10x and 100x. The gain setting is selected by grounding the appropriate gain wire. Because the output signal can range up to 5V, if using an ADS1115 or ADS1015 powered at only 3.3V, the gain must be reduced or a voltage devider used to ensure the output signal does not exceed 3.6V. This library does not support variable gain or any type of auto-gaining for the Cyclops sensors.
Before applying any calibration, the analog output from the Cyclops-7F must be converted into a high resolution digital signal. See the ADS1115 page for details on the conversion.
Sensor Datasheet
Build flags
-D MS_USE_ADS1015
- switches from the 16-bit ADS1115 to the 12 bit ADS1015
Sensor Constructor
Construct a new Turner Cyclops object - need the power pin, the ADS1X15 data channel, and the calibration info. The pin on the mcu controlling power to the Cyclops-7F Use -1 if it is continuously powered. The concentration of the standard used for a 1-point sensor calibration. The concentration units should be the same as the final measuring units.
TurnerCyclops::
Parameters
powerPin
adsChannel
The analog data channel on the TI ADS1115 that the Cyclops is connected to (0-3).
conc_std
ID Variable Units C TurnerCyclops_ micrograms per Liter (µg/L) R TurnerCyclops_ parts per billion (ppb) F TurnerCyclops_ parts per billion (ppb) P TurnerCyclops_ parts per billion (ppb) E TurnerCyclops_ parts per billion (ppb) U TurnerCyclops_ parts per billion (ppb) O TurnerCyclops_ parts per billion (ppb) B TurnerCyclops_ parts per billion (ppb) T TurnerCyclops_ nephelometric turbidity units (NTU) A TurnerCyclops_ parts per billion (ppb) G TurnerCyclops_ parts per million (ppm) L TurnerCyclops_ parts per billion (ppb) D TurnerCyclops_ micrograms per Liter (µg/L)
volt_std
The voltage (in volts) measured for the conc_std. This voltage should be the final voltage after accounting for any voltage dividers or gain settings.
volt_blank
The voltage (in volts) measured for a blank. This voltage should be the final voltage after accounting for any voltage dividers or gain settings.
i2cAddress
The I2C address of the ADS 1x15, default is 0x48 (ADDR = GND)
measurementsToAverage
The number of measurements to take and average before giving a "final" result from the sensor; optional with a default value of 1.
Example Code
The Turner Cyclops-7F is used in the menu a la carte example.
Classes
- class TurnerCyclops
- The Sensor sub-class for the Turner Cyclops-7F submersible fluorometer.
- class TurnerCyclops_Voltage
- The Variable sub-class used for the raw voltage output from a Turner Cyclops-7F.
- class TurnerCyclops_Chlorophyll
- The Variable sub-class used for the chlorophyll output from a Turner Cyclops-7F.
- class TurnerCyclops_Rhodamine
- The Variable sub-class used for the Rhodamine output from a Turner Cyclops-7F.
- class TurnerCyclops_Fluorescein
- The Variable sub-class used for the fluorescein output from a Turner Cyclops-7F.
- class TurnerCyclops_Phycocyanin
- The Variable sub-class used for the phycocyanin output from a Turner Cyclops-7F.
- class TurnerCyclops_Phycoerythrin
- The Variable sub-class used for the phycoerythrin output from a Turner Cyclops-7F.
- class TurnerCyclops_CDOM
- The Variable sub-class used for the CDOM output from a Turner Cyclops-7F.
- class TurnerCyclops_CrudeOil
- The Variable sub-class used for the crude oil output from a Turner Cyclops-7F.
- class TurnerCyclops_Brighteners
- The Variable sub-class used for the opticalBrighteners output from a Turner Cyclops-7F.
- class TurnerCyclops_Turbidity
- The Variable sub-class used for the turbidity output from a Turner Cyclops-7F.
- class TurnerCyclops_PTSA
- The Variable sub-class used for the PTSA output from a Turner Cyclops-7F.
- class TurnerCyclops_BTEX
- The Variable sub-class used for the refined fuels (BTEX) output from a Turner Cyclops-7F.
- class TurnerCyclops_Tryptophan
- The Variable sub-class used for the tryptophan output from a Turner Cyclops-7F.
- class TurnerCyclops_RedChlorophyll
- The Variable sub-class used for the chlorophyll output from a Turner Cyclops-7F.
Sensor Variable Counts
The number of variables that can be returned by Cyclops
- #define CYCLOPS_NUM_VARIABLES = 2
- Sensor::
_numReturnedValues; the Cyclops can report 2 values. - #define CYCLOPS_INC_CALC_VARIABLES = 1
- Sensor::
_incCalcValues; the raw voltage is reported, the other parameter is calculated using the input calibration equation.
Configuration Defines
Defines to help configure the address of the ADD used by the Cyclops
- #define ADS1115_ADDRESS = 0x48
- The assumed address of the ADS1115, 1001 000 (ADDR = GND)
Sensor Timing
The sensor timing for an Cyclops-7F
- #define CYCLOPS_WARM_UP_TIME_MS = 2
- Sensor::
_warmUpTime_ms; the ADS1115 warms up in 2ms. - #define CYCLOPS_STABILIZATION_TIME_MS = 1000
- Sensor::
_stabilizationTime_ms; minimum stabilization time for the Cyclops-7F is 1s (1000ms). - #define CYCLOPS_MEASUREMENT_TIME_MS = 100
- Sensor::
_measurementTime_ms; Cyclops takes 100ms to complete a measurement - Maximum data rate = 10Hz (100ms/sample).
Calibrated Parameter Output
The primary output variable from an Cyclops-7F
See the optical specification guide for the minimum detection limit, accuracy, and range of the various Cyclops parameter configurations.
- #define CYCLOPS_VAR_NUM = 0
- Variable number; the primary variable is stored in sensorValues[0].
- #define CYCLOPS_RESOLUTION = 5
- Decimals places in string representation; 5.
Voltage
The voltage variable from an Cyclops-7F
- Range is 0 to 3.6V when using an ADS1x15 powered at 3.3V
- Full sensor range is 0-5V
- Accuracy:
- 16-bit ADC (ADS1115): < 0.25% (gain error), <0.25 LSB (offset errror)
- 12-bit ADC (ADS1015, using build flag
MS_USE_ADS1015
): < 0.15% (gain error), <3 LSB (offset errror)
Construct a new TurnerCyclops_
TurnerCyclops_
Parameters
parentSense
The parent TurnerCyclops 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 "CyclopsVoltage".
- #define CYCLOPS_VOLTAGE_VAR_NUM = 1
- Variable number; voltage is stored in sensorValues[1].
- #define CYCLOPS_VOLTAGE_VAR_NAME = "voltage"
- Variable name in ODM2 controlled vocabulary; "voltage".
- #define CYCLOPS_VOLTAGE_UNIT_NAME = "volt"
- Variable unit name in ODM2 controlled vocabulary; "volt".
- #define CYCLOPS_VOLTAGE_DEFAULT_CODE = "CyclopsVoltage"
- Default variable short code; "CyclopsVoltage".
- #define CYCLOPS_VOLTAGE_RESOLUTION = 4
- Decimals places in string representation; voltage should have 4.
Define documentation
#define CYCLOPS_NUM_VARIABLES = 2
#include <src/sensors/TurnerCyclops.h>
Sensor::
#define CYCLOPS_INC_CALC_VARIABLES = 1
#include <src/sensors/TurnerCyclops.h>
Sensor::
#define ADS1115_ADDRESS = 0x48
#include <src/sensors/TurnerCyclops.h>
The assumed address of the ADS1115, 1001 000 (ADDR = GND)
#define CYCLOPS_WARM_UP_TIME_MS = 2
#include <src/sensors/TurnerCyclops.h>
Sensor::
#define CYCLOPS_STABILIZATION_TIME_MS = 1000
#include <src/sensors/TurnerCyclops.h>
Sensor::
#define CYCLOPS_MEASUREMENT_TIME_MS = 100
#include <src/sensors/TurnerCyclops.h>
Sensor::
#define CYCLOPS_VAR_NUM = 0
#include <src/sensors/TurnerCyclops.h>
Variable number; the primary variable is stored in sensorValues[0].
#define CYCLOPS_RESOLUTION = 5
#include <src/sensors/TurnerCyclops.h>
Decimals places in string representation; 5.
#define CYCLOPS_VOLTAGE_VAR_NUM = 1
#include <src/sensors/TurnerCyclops.h>
Variable number; voltage is stored in sensorValues[1].
#define CYCLOPS_VOLTAGE_VAR_NAME = "voltage"
#include <src/sensors/TurnerCyclops.h>
Variable name in ODM2 controlled vocabulary; "voltage".
#define CYCLOPS_VOLTAGE_UNIT_NAME = "volt"
#include <src/sensors/TurnerCyclops.h>
Variable unit name in ODM2 controlled vocabulary; "volt".
#define CYCLOPS_VOLTAGE_DEFAULT_CODE = "CyclopsVoltage"
#include <src/sensors/TurnerCyclops.h>
Default variable short code; "CyclopsVoltage".
#define CYCLOPS_VOLTAGE_RESOLUTION = 4
#include <src/sensors/TurnerCyclops.h>
Decimals places in string representation; voltage should have 4.
- Resolution:
- 12-bit ADC (ADS1015, using build flag
MS_USE_ADS1015
): 2 mV
- 12-bit ADC (ADS1015, using build flag