Microfire LLC Mod-EC Arduino Library
Copyright © 2023 Microfire LLC
This documentation is licensed under a Creative Commons Attribution-NoDerivatives 4.0 International (CC BY-ND).
Release | Date | Description |
2.0.0 | 3/24/2023 | Changes for hardware version 2 |
1.0.0 | 4/23/2021 | Initial |
TECHNICAL AND RELIABILITY DATA FOR MICROFIRE LLC PRODUCTS (INCLUDING DATASHEETS) AS MODIFIED FROM TIME TO TIME (“RESOURCES”) ARE PROVIDED BY MICROFIRE LLC "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW IN NO EVENT SHALL MICROFIRE LLC BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE RESOURCES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
MICROFIRE LLC reserves the right to make any enhancements, improvements, corrections or any other modifications to the RESOURCES or any products described in them at any time and without further notice.
The RESOURCES are intended for skilled users with suitable levels of design knowledge. Users are solely responsible for their selection and use of the RESOURCES and any application of the products described in them. User agrees to indemnify and hold MICROFIRE LLC harmless against all liabilities, costs, damages or other losses arising out of their use of the RESOURCES.
HIGH RISK ACTIVITIES. MICROFIRE LLC products are not designed, manufactured or intended for use in hazardous environments requiring fail safe performance, such as in the operation of nuclear facilities, aircraft navigation or communication systems, air traffic control, weapons systems or safety-critical applications (including life support systems and other medical devices), in which the failure of the products could lead directly to death, personal injury or severe physical or environmental damage, or business loss (“High Risk Activities”). MICROFIRE LLC specifically disclaims any express or implied warranty of fitness for High Risk Activities and accepts no liability for use or inclusions of MICROFIRE LLC products in High Risk Activities.
Microfire LLC Mod-EC Arduino Library
const float calibrationLowReading
const float calibrationLowReference
const float calibrationMidReading
const float calibrationMidReference
const float calibrationHighReading
const float calibrationHighReference
const float calibrationSingleOffset
Installation of this library can be done from within the Arduino IDE’s library manager. Search for `Microfire` and choose the library labeled `Microfire Mod-EC`.
The library is also installable through PlatformIO’s library manager.
Result of the last EC measurement in Siemens.
Result of the last EC measurement in millisiemens.
Result of the last EC measurement in microsiemens.
Result of the last EC measurement in Practical Salinity Units.
The density of saline water in g/cm3.
Result of the last EC measurement in TDS, calculated using a coefficient of 500.
Result of the last EC measurement in TDS, calculated using a coefficient of 640.
Result of the last EC measurement in TDS, calculated using a coefficient of 700.
Dual-point low reading of the probe. If there is no calibration data present, NaN (not a number) is returned.
Dual-point low reference of the probe. If there is no calibration data present, NaN (not a number) is returned.
Triple-point middle reading of the probe. If there is no calibration data present, NaN (not a number) is returned.
Triple-point middle reference of the probe. If there is no calibration data present, NaN (not a number) is returned.
Dual-point high reading of the probe. If there is no calibration data present, NaN (not a number) is returned.
Dual-point high reference of the probe. If there is no calibration data present, NaN (not a number) is returned.
Single offset calibration data. If there is no calibration data present, NaN (not a number) is returned.
Hardware version of the module.
Firmware version of the module.
Status code of the last measurement or calibration.
0: STATUS_NO_ERROR
1: STATUS_NO_PROBE_RANGE
2: STATUS_SYSTEM_ERROR
3: STATUS_CONFIG_ERROR
Initializes the library and determines if the module is connected. Wire.begin() must be called prior.
bool begin(TwoWire &wirePort = Wire, uint8_t address = 0x0A); |
Parameter | Description |
&wirePort | TwoWire I2C interface |
address | I2C address of the module |
Type | Description |
bool | True if the module is connected. False if the module is disconnected. |
#include <Microire_Mod-EC.h> |
#include <Microfire_Mod-EC.h> |
Determines if the module is connected.
bool connected(); |
Parameter | Description |
None |
Type | Description |
bool | True if the module is connected. False if the module is disconnected. |
#include <Microfire_Mod-EC.h> |
Performs a low-point calibration. Status, calibrationLowReference, and calibrationLowReading are updated. It takes 750 ms to complete a measurement.
float calibrateLow(float solutionEC, float tempC = 25.0, float tempCoef = 0.019, float tempConst = 25.0, float k = 1.0, bool blocking = true); |
Parameter | Description |
solutionEC | The conductivity of the calibration solution in mS/cm² |
tempC | The calibration solution’s temperature in Celsius |
tempCoef | The temperature coefficient used for temperature compensation. Typically 0.019 for freshwater and 0.021 for seawater |
tempConst | The temperature constant used for temperature compensation |
k | The cell-constant, or K value of the attached EC probe. Typically 0.1, 1.0 or 10.0 |
blocking | Return immediately or wait for the module to complete the calibration |
Type | Description |
uint8_t | An error code for the measurement. Can be one of the following: 0: no error 1: no probe detected or outside range 2: system error 3: config error |
#include <Microfire_Mod-EC.h> |
#include <Microfire_Mod-EC.h> |
Performs a mid-point calibration. Status, calibrationMidReference, and calibrationMidReading are updated. It takes 750 ms to complete a measurement.
float calibrateMid(float solutionEC, float tempC = 25.0, float tempCoef = 0.019, float tempConst = 25.0, float k = 1.0, bool blocking = true); |
Parameter | Description |
solutionEC | The conductivity of the calibration solution in mS/cm² |
tempC | The calibration solution’s temperature in Celsius |
tempCoef | The temperature coefficient used for temperature compensation. Typically 0.019 for freshwater and 0.021 for seawater |
tempConst | The temperature constant used for temperature compensation |
k | The cell-constant, or K value of the attached EC probe. Typically 0.1, 1.0 or 10.0 |
blocking | Return immediately or wait for the module to complete the calibration |
Type | Description |
uint8_t | An error code for the measurement. Can be one of the following: 0: no error 1: no probe detected or outside range 2: system error 3: config error |
#include <Microfire_Mod-EC.h> |
Performs a high-point calibration. Status, calibrationHighReference, and calibrationHighReading are updated. It takes 750 ms to complete a measurement.
float calibrateHigh(float solutionEC, float tempC = 25.0, float tempCoef = 0.019, float tempConst = 25.0, float k = 1.0, bool blocking = true); |
Parameter | Description |
solutionEC | The conductivity of the calibration solution in mS/cm² |
tempC | The calibration solution’s temperature in Celsius |
tempCoef | The temperature coefficient used for temperature compensation. Typically 0.019 for freshwater and 0.021 for seawater |
tempConst | The temperature constant used for temperature compensation |
k | The cell-constant, or K value of the attached EC probe. Typically 0.1, 1.0 or 10.0 |
blocking | Return immediately or wait for the module to complete the calibration |
Type | Description |
uint8_t | An error code for the measurement. Can be one of the following: 0: no error 1: no probe detected or outside range 2: system error 3: config error |
#include <Microfire_Mod-EC.h> |
Performs a single-point calibration. status and calibrationSingleOffset are updated. It takes 750 ms to complete a measurement.
float calibrateSingle(float solutionEC, float tempC = 25.0, float tempCoef = 0.019, float tempConst = 25.0, float k = 1.0, bool blocking = true); |
Parameter | Description |
solutionEC | The conductivity of the calibration solution in mS/cm² |
tempC | The calibration solution’s temperature in Celsius |
tempCoef | The temperature coefficient used for temperature compensation. Typically 0.019 for freshwater and 0.021 for seawater |
tempConst | The temperature constant used for temperature compensation |
k | The cell-constant, or K value of the attached EC probe. Typically 0.1, 1.0 or 10.0 |
blocking | Return immediately or wait for the module to complete the calibration |
Type | Description |
uint8_t | An error code for the measurement. Can be one of the following: 0: no error 1: no probe detected or outside range 2: system error 3: config error |
#include <Microfire_Mod-EC.h> |
Updates all measurement, calibration, and system registers with the most recent information.
void getDeviceInfo(); |
Parameter | Description |
None |
Type | Description |
None |
#include <Microfire_Mod-EC.h> |
Starts an EC measurement. This function provides default values for measuring freshwater (temperature coefficient of 0.019, probe cell-constant of 1.0).
Member variables S, mS, uS, PSU, density, PPM_500, PPM_640, PPM_700, and status are updated. tempC is modified to either what was passed or to the default of 25.0.
float measureEC(float tempC = 25.0, float tempCoef = 0.019, float tempConst = 25.0, float k = 1.0, float kPa = 0, bool blocking = true); |
Parameter | Description |
tempC | The solution-under-test’s temperature in Celsius. |
tempCoef | The temperature coefficient used for temperature compensation. Typically 0.019 for freshwater and 0.021 for seawater. |
tempConst | The temperature constant used for temperature compensation |
k | The cell-constant, or K value of the attached EC probe. Typically 0.1, 1.0 or 10.0 |
kPa | The pressure in kilopascals at which the measurement is being made. Used in salinity and density calculations. If salinity or density measurements aren’t needed, 0 should be used. |
blocking | Return immediately or wait for the module to complete the measurement |
Type | Description |
float | The solution-under-test’s conductivity in mS/cm. |
#include <Microfire_Mod-EC.h> |
Resets all calibration data to the empty value of NaN (not a number).
void reset(); |
Parameter | Description |
None |
Type | Description |
None |
#include <Microfire_Mod-EC.h> |
Sets all the device calibration registers with a specified value.
void setDeviceInfo(float calibrationLowReading, float calibrationLowReference, float calibrationMidReading, float calibrationMidReference, float calibrationHighReading, float calibrationHighReference, float calibrationSingleOffset); |
Parameter | Description |
calibrationLowReading | Read-low calibration data |
calibrationLowReference | Reference-low calibration data |
calibrationMidReading | Read-mid calibration data |
calibrationMidReference | Reference-high calibration data |
calibrationHighReading | Read-high calibration data |
calibrationHighReference | Reference-high calibration data |
calibrationSingleOffset | Single-offset calibration data |
Type | Description |
None |
#include <Microfire_Mod-EC.h> |
Changes the I2C address of the module. The change is stored and used again after a power-cycle.
Note: The library will use the new I2C address after calling this method, but the address must be stored and begin must be called with the new address on subsequent initialization.
void setI2CAddress(uint8_t i2cAddress); |
Parameter | Description |
uint8_t | New I2C address |
Type | Description |
None |
#include <Microfire_Mod-EC.h> |
If blocking is set to false when measureEC is called, this method will update S, mS, uS, PSU, density, PPM_500, PPM_640, and PPM_700. This allows the controlling device to do other work rather than wait for the module to complete the measurement.
void update(); |
Parameter | Description |
None |
Type | Description |
None |
#include <Microfire_Mod-EC.h> |