Atlas EZO-RTD topic

Classes for the Atlas Scientific EZO-RTD temperature circuit and probes.

Sensor Datasheet

Documentation on the probe is found here: https://www.atlas-scientific.com/probes/dissolved-oxygen-probe/

Documentation on the measurement circuit is found here: https://www.atlas-scientific.com/circuits/ezo-dissolved-oxygen-circuit/

Sensor Constructor

AtlasScientificRTD::AtlasScientificRTD(int8_t powerPin, uint8_t i2cAddressHex = 0x66, uint8_t measurementsToAverage = 1) explicit

Construct a new Atlas Scientific RTD object using the primary hardware I2C instance.

Parameters
powerPin

The pin on the mcu controlling powering to the Atlas RTD (temperature) circuit. Use -1 if it is continuously powered.

  • Requires a 3.3V and 5V power supply
i2cAddressHex The I2C address of the Atlas circuit; optional with the Atlas-supplied default address of 0x66.
measurementsToAverage The number of measurements to take and average before giving a "final" result from the sensor; optional with a default value of 1.

AtlasScientificRTD::AtlasScientificRTD(TwoWire* theI2C, int8_t powerPin, uint8_t i2cAddressHex = 0x66, uint8_t measurementsToAverage = 1)

Construct a new Atlas Scientific RTD object using a secondary hardware I2C instance.

Parameters
theI2C A TwoWire instance for I2C communication. Due to the limitations of the Arduino core, only a hardware I2C instance can be used. For an AVR board, there is only one I2C instance possible and this form of the constructor should not be used. For a SAMD board, this can be used if a secondary I2C port is created on one of the extra SERCOMs.
powerPin

The pin on the mcu controlling powering to the Atlas RTD (temperature) circuit. Use -1 if it is continuously powered.

  • Requires a 3.3V and 5V power supply
i2cAddressHex The I2C address of the Atlas circuit; optional with the Atlas-supplied default address of 0x66.
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 Atlas RTD sensor is used in the menu a la carte example.

1#include <sensors/AtlasScientificRTD.h>
2
3// NOTE: Use -1 for any pins that don't apply or aren't being used.
4const int8_t AtlasRTDPower = sensorPowerPin; // Power pin
5uint8_t AtlasRTDi2c_addr = 0x66; // Default for RTD is 0x66 (102)
6// All Atlas sensors have different default I2C addresses, but any of them can
7// be re-addressed to any 8 bit number. If using the default address for any
8// Atlas Scientific sensor, you may omit this argument.
9
10// Create an Atlas Scientific RTD sensor object
11// AtlasScientificRTD atlasRTD(AtlasRTDPower, AtlasRTDi2c_addr);
12AtlasScientificRTD atlasRTD(AtlasRTDPower);
13
14// Create a temperature variable pointer for the RTD
15Variable* atlasTemp = new AtlasScientificRTD_Temp(
16 &atlasRTD, "12345678-abcd-1234-ef00-1234567890ab");

Classes

class AtlasScientificRTD
The Sensor sub-class for the Atlas Scientific RTD temperature sensor.
class AtlasScientificRTD_Temp
The Variable sub-class used for the temperature output from an Atlas Scientific RTD temperature sensor.

Sensor Variable Counts

The number of variables that can be returned by the Atlas RTD (temperature) sensor

#define ATLAS_RTD_NUM_VARIABLES = 1
Sensor::_numReturnedValues; the Atlas EZO temperature circuit can report 1 value.
#define ATLAS_RTD_INC_CALC_VARIABLES = 0
Sensor::_incCalcValues; we don't calculate any additional values.

Configuration Defines

Defines to configure and set the address of the Atlas RTD (temperature) sensor

#define ATLAS_RTD_I2C_ADDR = 0x66
The default I2C address of the Atlas RTD sensor is 0x66 (102)

Sensor Timing

The sensor timing for an Atlas RTD (temperature) sensor

#define ATLAS_RTD_WARM_UP_TIME_MS = 740
Sensor::_warmUpTime_ms; the Atlas EZO temperature circuit warms up in 740ms.
#define ATLAS_RTD_STABILIZATION_TIME_MS = 0
Sensor::_stabilizationTime_ms; the Atlas EZO temperature circuit is stable 0ms after warm-up (stable at completion of warm up).
#define ATLAS_RTD_MEASUREMENT_TIME_MS = 650
Sensor::_measurementTime_ms; the Atlas EZO temperature circuit takes 650ms to complete a measurement.

Temperature

The temperature variable from an Atlas RTD (temperature) sensor

  • Accuracy is ± (0.10°C + 0.0017 x °C)
  • Range is -126°C − 125°C

AtlasScientificRTD_Temp::AtlasScientificRTD_Temp(AtlasScientificRTD* parentSense, const char* uuid = "", const char* varCode = "AtlasTemp") explicit

Construct a new AtlasScientificRTD_Temp object.

Parameters
parentSense The parent AtlasScientificRTD 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 "AtlasTemp".

#define ATLAS_RTD_RESOLUTION = 3
Decimals places in string representation; temperature should have 3 - resolution is 0.001°C.
#define ATLAS_RTD_VAR_NUM = 0
Sensor variable number; RTD is stored in sensorValues[0].
#define ATLAS_RTD_VAR_NAME = "temperature"
Variable name in ODM2 controlled vocabulary; "temperature".
#define ATLAS_RTD_UNIT_NAME = "degreeCelsius"
Variable unit name in ODM2 controlled vocabulary; "degreeCelsius" (°C)
#define ATLAS_RTD_DEFAULT_CODE = "AtlasTemp"
Default variable short code; "AtlasTemp".

Define documentation

#define ATLAS_RTD_NUM_VARIABLES = 1

Sensor::_numReturnedValues; the Atlas EZO temperature circuit can report 1 value.


#define ATLAS_RTD_INC_CALC_VARIABLES = 0

Sensor::_incCalcValues; we don't calculate any additional values.


#define ATLAS_RTD_I2C_ADDR = 0x66

The default I2C address of the Atlas RTD sensor is 0x66 (102)


#define ATLAS_RTD_WARM_UP_TIME_MS = 740

Sensor::_warmUpTime_ms; the Atlas EZO temperature circuit warms up in 740ms.

731-735 in tests


#define ATLAS_RTD_STABILIZATION_TIME_MS = 0

Sensor::_stabilizationTime_ms; the Atlas EZO temperature circuit is stable 0ms after warm-up (stable at completion of warm up).


#define ATLAS_RTD_MEASUREMENT_TIME_MS = 650

Sensor::_measurementTime_ms; the Atlas EZO temperature circuit takes 650ms to complete a measurement.


#define ATLAS_RTD_RESOLUTION = 3

Decimals places in string representation; temperature should have 3 - resolution is 0.001°C.


#define ATLAS_RTD_VAR_NUM = 0

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


#define ATLAS_RTD_VAR_NAME = "temperature"

Variable name in ODM2 controlled vocabulary; "temperature".


#define ATLAS_RTD_UNIT_NAME = "degreeCelsius"

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


#define ATLAS_RTD_DEFAULT_CODE = "AtlasTemp"

Default variable short code; "AtlasTemp".