# AGRINOVO-DO-100: Fluorescence Dissolved Oxygen Sensor

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

## 1. Overview

The AGRINOVO-DO-100 is a digital fluorescence-based dissolved oxygen sensor for continuous water quality monitoring. It provides DO concentration, temperature, and saturation percentage through RS485 Modbus-RTU interface with automatic temperature compensation.

### Key Features

- Fluorescence DO measurement
- DO range: 0 to 20 mg/L
- Saturation: 0 to 200%
- Accuracy: ±2% of range
- Automatic temp compensation
- IP68 waterproof rating
- RS485 Modbus-RTU
- Low power: ≤0.5W

### Applications

- Aquaculture and fish farming
- Wastewater treatment
- Environmental monitoring
- Industrial process control

## 2. Specifications

| Parameter | Specification |
|:----------|:--------------|
| **DO Range** | 0 to 20 mg/L |
| **Saturation Range** | 0 to 200% |
| **Temperature Range** | 0 to 50°C |
| **Accuracy** | ±2% of range |
| **Repeatability** | ±1% |
| **Response Time (t90)** | ~60 seconds |
| **Protection Rating** | IP68 |

### Compensation

| Type | Method |
|:-----|:-------|
| Temperature | Automatic |
| Pressure | Manual input (default: 101.3 kPa) |
| Salinity | PSU input (optional) |

## 3. Electrical Characteristics

| Parameter | Specification |
|:----------|:--------------|
| **Supply Voltage** | 12-24 VDC |
| **Power Consumption** | ≤0.5W |
| **Operating Temp** | 0 to 50°C |
| **Operating Humidity** | ≤85% RH |

## 4. Wiring

| Wire Color | Function | Description |
|:-----------|:---------|:------------|
| **Red** | V+ | Power Supply (12-24V DC) |
| **Black** | GND | Power Ground |
| **Yellow** | RS485-A | Data+ |
| **Green** | RS485-B | Data- |

## 5. Communication Settings

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

CRC16: Standard Modbus (polynomial 0xA001, init 0xFFFF), low byte first.

## 6. Register Map

### Measurement Registers (Function 0x03)

| Address | Description | Data Type | Scaling |
|:--------|:------------|:----------|:--------|
| 0x0000 | DO + Temp (Integer) | 4 × int16 | See decoding |
| 0x0004 | DO Saturation (Integer) | 2 × int16 | See decoding |
| 0x0006 | DO + Temp (Float) | 2 × float32 | Big-endian |
| 0x000A | DO Saturation (Float) | float32 | Big-endian |

### Configuration Registers (Function 0x06)

| Address | Description | Range/Notes |
|:--------|:------------|:------------|
| 0x1000 | Zero Calibration | Write 0 to auto-calc |
| 0x1004 | Slope Calibration | Write 0 to auto-calc |
| 0x1008 | Zero Offset (Manual) | Value × 1000 (signed) |
| 0x1009 | Slope (Manual) | Value × 1000 |
| 0x1020 | Salinity Compensation | PSU × 10 (0 to 500) |
| 0x2002 | Slave Address | 1 to 127 |
| 0x2064 | Atmospheric Pressure | kPa × 100 |

## 7. Reading Data

### Integer Mode (Recommended)

Read 4 registers from 0x0000:

```
Request:  01 03 00 00 00 04 44 09
Response: 01 03 08 03 64 00 02 08 CC 00 02 CA 5A
```

| Register | Hex | Decimal | Decimals | Result |
|:---------|:----|:--------|:---------|:-------|
| DO Value | 0x0364 | 868 | 2 | **8.68 mg/L** |
| Temp Value | 0x08CC | 2252 | 2 | **22.52°C** |

Formula: `Value = Raw / (10 ^ Decimals)`

### Float Mode

Read 4 registers from 0x0006 (big-endian float32):

| Value | Bytes | Result |
|:------|:------|:-------|
| DO | 41 0A E1 48 | 8.68 mg/L |
| Temperature | 41 B4 28 F6 | 22.52°C |

## 8. Calibration

### Zero Calibration (Auto)

Place probe in zero-oxygen water, wait for stability:

```
01 06 10 00 00 00 8D 0A
```

### Slope Calibration (Auto)

Place probe in air-saturated DO environment:

```
01 06 10 04 00 00 CC CB
```

## 9. Address Configuration

### Read Current Address (Broadcast 0xFF)

Use 0xFF as address, read register 0x2002:

```
Request:  FF 03 20 02 00 01 3B D4
Response: FF 03 02 00 03 D1 91
```

Response data `00 03` = current address is **0x03**.

### Set New Address

Write to register 0x2002 (function 0x06). Example: change from 0x01 to 0x19:

```
Request:  01 06 20 02 00 19 E2 00
Response: 01 06 20 02 00 19 E2 00
```

Power cycle sensor after address change.

## 10. Maintenance

- Calibration interval depends on the water type and the amount of biofouling and algae. Under normal conditions, calibrate every 6-8 months.
- Clean the membrane cap regularly between calibrations.
- The membrane cap is replaceable, typically after 2+ years of use.

## Ordering Information

| Part number | Description |
|:------------|:------------|
| AGRINOVO-DO-100 | Fluorescence Dissolved Oxygen 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.
