ModularSensors > Modules > Supported Sensors > Atlas Scientific EZO Circuits > Atlas EZO-ORP

Atlas EZO-ORP module

Classes for the Atlas Scientific EZO-ORP oxidation/reduction potential circuit and probes.

Sensor Datasheet

Documentation on the circuit is available here: https://www.atlas-scientific.com/circuits/ezo-orp-circuit/

Sensor Constructors

AtlasScientificORP(int8_t powerPin, uint8_t i2cAddressHex = ATLAS_ORP_I2C_ADDR, uint8_t measurementsToAverage = 1) explicit

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

Parameters
powerPin

The pin on the mcu controlling powering to the Atlas ORP 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 0x62.
measurementsToAverage The number of measurements to take and average before giving a "final" result from the sensor; optional with a default value of 1.

AtlasScientificORP(TwoWire* theI2C, int8_t powerPin, uint8_t i2cAddressHex = ATLAS_ORP_I2C_ADDR, uint8_t measurementsToAverage = 1)

Construct a new Atlas Scientific ORP 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 ORP 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 0x62.
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 ORP sensor is used in the menu a la carte example.

#include <sensors/AtlasScientificORP.h>

// NOTE: Use -1 for any pins that don't apply or aren't being used.
const int8_t AtlasORPPower    = sensorPowerPin;  // Power pin
uint8_t      AtlasORPi2c_addr = 0x62;            // Default for ORP is 0x62 (98)
// All Atlas sensors have different default I2C addresses, but any of them can
// be re-addressed to any 8 bit number.  If using the default address for any
// Atlas Scientific sensor, you may omit this argument.

// Create an Atlas Scientific ORP sensor object
// AtlasScientificORP atlasORP(AtlasORPPower, AtlasORPi2c_addr);
AtlasScientificORP atlasORP(AtlasORPPower);

// Create a potential variable pointer for the ORP
Variable* atlasORPot = new AtlasScientificORP_Potential(
    &atlasORP, "12345678-abcd-1234-ef00-1234567890ab");

Classes

class AtlasScientificORP
The Sensor sub-class for the Atlas Scientific ORP (oxidation/reduction potential) sensor.
class AtlasScientificORP_Potential
The Variable sub-class used for the oxidation/reduction potential output from an Atlas Scientific EZO-ORP circuit.

Defines

#define ATLAS_ORP_I2C_ADDR = 0x62
Default I2C address is 0x62 (98)
#define ATLAS_ORP_NUM_VARIABLES = 1
Sensor::_numReturnedValues; the Atlas EZO ORP circuit can report 1 value.
#define ATLAS_ORP_INC_CALC_VARIABLES = 0
Sensor::_incCalcValues; we don't calculate any additional values.

Sensor Timing

The sensor timing for an Atlas ORP (redox) sensor

#define ATLAS_ORP_WARM_UP_TIME_MS = 850
Sensor::_warmUpTime_ms; the Atlas EZO ORP circuit warms up in 850ms.

846 in SRGD tests

#define ATLAS_ORP_STABILIZATION_TIME_MS = 0
Sensor::_stabilizationTime_ms; the Atlas EZO ORP circuit is stable 0ms after warm-up (stable at completion of warm up).
#define ATLAS_ORP_MEASUREMENT_TIME_MS = 1580
Sensor::_measurementTime_ms; the Atlas EZO ORP circuit takes 1580ms to complete a measurement.

ORP

The ORP variable from an Atlas ORP (redox) sensor

  • Accuracy is ± 1 mV
  • Range is -1019.9mV − 1019.9mV

AtlasScientificORP_Potential(AtlasScientificORP* parentSense, const char* uuid = "", const char* varCode = ATLAS_ORP_DEFAULT_CODE) explicit

Construct a new AtlasScientificORP_Potential object.

Parameters
parentSense The parent AtlasScientificORP 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 "AtlasORP".

#define ATLAS_ORP_RESOLUTION = 1
Decimals places in string representation; ORP should have 1 - resolution is 0.1 mV.
#define ATLAS_ORP_VAR_NUM = 0
Sensor variable number; ORP is stored in sensorValues[0].
#define ATLAS_ORP_VAR_NAME = "reductionPotential"
Variable name in ODM2 controlled vocabulary; "reductionPotential".
#define ATLAS_ORP_UNIT_NAME = "millivolt"
Variable unit name in ODM2 controlled vocabulary; "millivolt" (mV)
#define ATLAS_ORP_DEFAULT_CODE = "AtlasORP"
Default variable short code; "AtlasORP".