# AGRINOVO-CLO2-100: Digital Chlorine Dioxide (ClO₂) Sensor

Agrinovo technical datasheet, revision 1.2 (October 2026).
PDF version: https://agrinovo.io/datasheets/sensors/AGRINOVO-CLO2-100_Datasheet.pdf

## 1. Overview

The AGRINOVO-CLO2-100 is a digital chlorine dioxide (ClO₂) electrode for continuous monitoring of disinfectant residual in water. It integrates the measuring electronics and microprocessor inside the electrode body, with built-in temperature measurement and automatic temperature and pH compensation. The sensor communicates over RS485 Modbus-RTU and supports two-point (zero and slope) calibration. The isolated power and signal design and PPS housing make it suitable for demanding water treatment environments.

### Key Features

- Chlorine dioxide range: 0-20 mg/L
- Resolution: 0.01 mg/L
- Accuracy: ±0.1 mg/L
- Built-in temperature measurement
- Two-point calibration (zero + slope)
- Automatic temperature and pH compensation
- RS485 Modbus-RTU interface
- 9-27 VDC, ≤0.5W

### Applications

- Drinking water disinfection monitoring
- Water treatment and distribution
- Cooling water and cooling tower treatment
- Aquaculture and RAS water management
- Food and beverage process water
- Wastewater disinfection control

## 2. Specifications

| Parameter | Specification |
|:----------|:--------------|
| **Measurement Principle** | Electrochemical electrode |
| **Chlorine Dioxide Range** | 0.00-20.00 mg/L |
| **Resolution** | 0.01 mg/L |
| **Accuracy** | ±0.1 mg/L |
| **Temperature Range** | -10.0 to 110.0 °C |
| **Temperature Resolution** | 0.1 °C |
| **Temperature Accuracy** | ±0.5 °C |
| **Temperature Element** | TH10K thermistor |
| **Temperature Compensation** | Automatic / Manual |
| **Communication** | RS485, Modbus-RTU |
| **Isolation** | 2500 Vrms |
| **Supply Voltage** | 9-27 VDC |
| **Power Consumption** | ≤0.5W |
| **Housing Material** | PPS |
| **Mounting Thread** | M20×1.5 or G3/4 |

## 3. Wiring

| Wire Color | Function | Description |
|:-----------|:---------|:------------|
| **Red** | V+ | Power Supply (9-27V DC) |
| **Black** | GND | Power Ground |
| **Green** | RS485-A | Data+ (T/R+) |
| **White** | RS485-B | Data- (T/R-) |

## 4. Communication Settings

| Parameter | Value |
|:----------|:------|
| **Protocol** | Modbus-RTU |
| **Baud Rate** | 9600 bps (configurable) |
| **Data Bits** | 8 |
| **Parity** | None |
| **Stop Bits** | 1 |
| **Default Address** | 0x01 |

Supported baud rates: 1200, 2400, 4800, 9600, 19200 bps.

## 5. Register Map

Measurement values are available in two formats. Function 0x03 returns IEEE-754 float32 (each value spans 2 registers, transmitted low word first). Function 0x04 returns scaled 16-bit integers, each followed by a register carrying the decimal places and unit code.

### Measurement Registers (Function 0x03 / 0x04 read)

| Address | Description | Range | Data Type |
|:--------|:------------|:------|:----------|
| 0x0000-0x0001 | Chlorine Dioxide (ClO₂) | 0.00-20.00 mg/L | Float32 |
| 0x0004-0x0005 | Electrode Signal | -10.00 to 40.00 mV | Float32 |
| 0x0008-0x0009 | Temperature | -10.0 to 110.0 °C | Float32 |

### Configuration Registers (Function 0x03 read / 0x06 write)

| Address | Description | Default | Range / Notes |
|:--------|:------------|:--------|:--------------|
| 0x0019 | Calibration Status | Not calibrated | Bit0 = zero point, Bit1 = slope point |
| 0x001A | Electrode Offset | 0.00 mg/L | ±0.30 mg/L (value ×100) |
| 0x001C | Electrode Slope | 100.0% | 30.0-300.0% (value ×10) |
| 0x001E | Device Address | 1 | 1-247 (255 = broadcast) |
| 0x001F | Baud Rate Code | 3 (9600) | 0=1200, 1=2400, 2=4800, 3=9600, 4=19200 |
| 0x0020 | Temp Compensation Type | 1 (auto) | 0 = manual, 1 = automatic |
| 0x0021 | Temp Setpoint / Offset | 25.0 °C / 0.0 °C | value ×10 (see note) |
| 0x0023 | pH Compensation Switch | 1 (on) | 0 = off, 1 = on |
| 0x0024 | pH Compensation Value | 4.00 pH | 0.00-14.00 pH (value ×100) |
| 0x002D | Filter Coefficient | - | 1-16 |

Register 0x0021 holds the manual temperature setpoint when 0x0020 = manual, or the temperature offset when 0x0020 = automatic. Example: a stored value of 250 means 25.0 °C; to set 10.0 °C write 100 (0x0064).

### Information Registers (Function 0x03 read, 0x06 write where applicable)

| Address | Description | Notes |
|:--------|:------------|:------|
| 0x0040 | Work Mode | 0x10 = measure, 0x50 = setting, 0x60 = calibration |
| 0x0041 | Mode Parameter | Mode-specific |
| 0x0043 | Calibration Control / Status | Write standard value to calibrate (see Section 8) |
| 0x0046 | Software Version | Read only |
| 0x0047 | Hardware Version | Read only |
| 0x0048-0x0049 | Serial Number | Read only |

## 6. Reading Data

### Read Chlorine Dioxide value (Float32 from 0x0000-0x0001)

Read 2 registers starting at 0x0000:

```
Request:  01 03 00 00 00 02 C4 0B
Response: 01 03 04 E7 2F 41 1F 8C D6
```

**Decoding (word-swap example):**

Received bytes `E7 2F 41 1F` → reorder the two 16-bit words to `41 1F E7 2F` → IEEE-754 float = **9.99 mg/L**

### Read all measurement values

Read 10 registers from 0x0000:

```
Request:  01 03 00 00 00 0A C5 CD
```

Returns Chlorine Dioxide, Electrode Signal, and Temperature as float32 values.

### Integer format (Function 0x04)

Function 0x04 returns each value as a scaled integer followed by its decimal/unit register. For example, a value of 998 with 2 decimal places represents **9.98 mg/L**; a temperature value of 250 with 1 decimal place represents **25.0 °C**.

## 7. Address and Baud Rate Configuration

### Change Address (0x01 → 0x02)

Write the new address to register 0x001E:

```
01 06 00 1E 00 02 68 0D
```

### Change Baud Rate (to 2400)

Write the baud rate code to register 0x001F:

```
01 06 00 1F 00 01 79 CC
```

### Broadcast Discovery

Use address 0xFF (255) with only one device connected.

## 8. Calibration

The sensor supports two-point calibration: a slope point and a zero point. Standard solutions are used to calibrate a newly installed sensor or to re-calibrate periodically. Calibration is performed by writing to the calibration control register 0x0043 with function 0x06.

### Procedure

1. Immerse the electrode in the standard solution.
2. Wait for the reading to stabilize.
3. Write the calibration command to register 0x0043.
4. Read register 0x0043 to check the result:
   - 0 = calibration successful (returned to measure mode)
   - 1 = calibrating (re-read status shortly)
   - 2 = no valid standard value received within 180s
   - 3 = signal could not stabilize or value out of range within 180s
   - 4 = electrode performance (slope or offset) out of allowed range
5. Repeat for the second point.

### Slope Point

Write the standard solution value as an integer scaled ×100. For a 5.00 mg/L standard, write 500 (0x01F4):

```
01 06 00 43 01 F4 78 09
```

### Zero Point

Write the zero point code 0x0001:

```
01 06 00 43 00 01 B9 DE
```

### Clear Calibration

Write 0x7FFF to register 0x0043 to clear all calibration data:

```
01 06 00 43 7F FF 18 6E
```

## 9. Factory Reset

A factory reset clears calibration data and restores temperature compensation settings to default. It requires two commands.

### Enter Setting Mode

Write 0x0050 to the work mode register 0x0040:

```
01 06 00 40 00 50 88 22
```

### Send Reset Command

Write 0x7FFF to the mode parameter register 0x0041:

```
01 06 00 41 7F FF B9 AE
```

The sensor restores defaults and restarts.

## 10. Installation Notes

**Safety**

- Do not hot-plug
- Verify wiring before applying power
- Mount using the M20×1.5 or G3/4 thread

**Sensor Care**

- Keep the measurement tip submerged
- Avoid air bubbles at the electrode tip
- Clean with distilled water; no bare hand contact
- Re-calibrate periodically with fresh standards

## Ordering Information

| Part number | Description |
|:------------|:------------|
| AGRINOVO-CLO2-100 | Digital Chlorine Dioxide (ClO₂) Sensor |

## Revision History

| Rev | Date | Changes |
|:----|:-----|:--------|
| 1.0 | June 2026 | Initial release |
| 1.1 | August 2026 | Layout revision |
| 1.2 | October 2026 | New layout |

## Contact

Agrinovo, https://agrinovo.io/products, contact@agrinovo.io, +972 54 688 8148 (direct / WhatsApp).
Specifications subject to change without notice.
