Skip to main content

DR-DO1, DR-DO2 -- Dissolved Oxygen Sensor

DR-DO1_DO2.png

1. Introduction

1.1 Specification

DO1 and DO2 have the same functions

  • Applicable environment

    • DO1 is for use in ordinary waters.
    • DO2 is suitable for seawater.
  • Measuring range: 0-20mg/L, 0--50°C

  • Accuracy: 3%, ±0.5°C

  • Resolution: 0.01 mg/L, 0.01°C

  • Maximum operating pressure: 6 bar

  • Output signal: A: 4-20mA (current loop); B: RS485 (standard Modbus-RTU protocol, device default address: 01)

  • Power supply voltage: 5-24V DC

  • Working environment:

    • Ambient Temperature: 0--60°C
    • Relative Humidity: <85% RH(Specifically refers to the cable male and female)
  • Power consumption: ≤0.5W

  • Wire length: 5 meters

1.2 wiring

image

1.3 Impedance requirements for current signals

Supply Voltage9V12V20V24V
Max Impedance<250Ω<400Ω<500Ω<900Ω

1.4 Mechinical Drawing

DO1:image

DO2(Seawater version):3962b482-57fd-4c94-8910-0cf2c81b2927.png

1.5 Instructions for use and maintenance

  • It can be directly put into water without adding a protective tube, ensuring the long-term stability, reliability and accuracy of the sensor.

  • If the water conditions are complex and you want accurate data, you need to wipe the sensor probe frequently.

1.6 RS485 Commands

RS485 signaldefault address 0x14 Standard Modbus-RTU protocol, baud rate: 9600; check bit: none; data bit: 8; stop bit: 1

1.6.1 Query address

send:

Original addressFunction codeRegister address highRegister address lowRegister length highRegister length lowCRC16 lowCRC16 high
0XFF0X030X000X0A0X000X020XF10XD7

If you forget the original address of the sensor, you can use the broadcast address 0XFF instead. When using 0XFE, the host can only connect to one slave, which can be used as a method of address query.

response:

Register 0 data high and register 0 data low indicate the actual address of the sensor: 1 Register 1 data high and register 1 data low indicate the sensor version

AddressFunction codeData lengthRegister 0 Data highRegister 0 Data lowRegister 1 Data highRegister 1 Data lowCRC16 lowCRC16 high
0XFF0X030X040X000X010X000X000XB40X3C

1.6.2 Change address

For example: Change the address of the sensor with address 1 to 2(address range: 1-119), master → slave

Original addressFunction codeStarting register address highStarting register address lowRegister length highRegister length lowData lengthStart address highStart address lowSensor versionSensor versionCRC16 highCRC16 low
0X010X100X000X0A0X000X020X040X000X020X000X000XD20X10

response:

AddressFunction codeStarting register address highStarting register address lowRegister length highRegister length lowCRC16 lowCRC16 high
0X010X100X000X0A0X000X020X610XCA

1.6.3 Query data

Query the data (dissolved oxygen) of the sensor (address 14), host → slave

AddressFunction codeStarting register address highStarting register address lowRegister length highRegister length lowCRC16 lowCRC16 high
0X140X030X000X140X000X010XC60XCB

If the sensor receives correctly, the following data will be returned, slave → host

AddressFunction codeData lengthRegister 0 Data highRegister 0 Data lowCRC16 lowCRC16 high
0X140X030X020X030X780XB50X55

After the query, 7 bytes will be returned. For example, the returned data is 14 03 02 03 78 B5 55. 03 78 is the value of dissolved oxygen.

Converted to decimal, it is 888. Add two decimal places to get the actual value. 03 78 means the current dissolved oxygen is 8.88mg/L

Query the data (temperature) of the sensor (address 14), host → slave

AddressFunction codeStarting register address highStarting register address lowRegister length highRegister length lowCRC16 lowCRC16 high
0X140X030X000X110X000X010XD60XCA

If the sensor receives correctly, the following data will be returned, slave → host

AddressFunction codeData lengthRegister 0 Data highRegister 0 Data lowCRC16 lowCRC16 high
0X140X030X020X090XA40XB20X6C

After the query, 7 bytes will be returned. For example, the returned data is 14 03 02 09 A4 B2 6C. 03 78 is the value of dissolved oxygen temperature.

Converted to decimal, it is 2468. Add two decimal places to get the actual value. 09 A4 means the current dissolved oxygen temperature is 24.68°C


The following is the command for CO2

Query the data of the sensor (address 21), host → slave

Command Frame:

Address CodeFunction CodeRegister AddressRegister ContentChecksum (Low Byte)Checksum (High Byte)
0x210x030x00 0x000x00 0x060xc20xA8

Response Frame:

Address CodeFunction CodeByte CountRegister ContentChecksum (Low Byte)Checksum (High Byte)
0x210x030x0c0x3f 0x6a 0xeb 0x52 0x40 0xe2 0x48 0xb0 0x41 0xe5 0x85 0xc50xc50x87

Big-endian float 3f 6a eb 52 is 0.917653, representing a dissolved oxygen saturation of 91.8%. Big-endian float 40 e2 48 b0 is 7.071373, representing a dissolved oxygen concentration of 7.07 mg/L. Big-endian float 41 e5 85 c5 is 28.690317, representing a temperature of 28.7°C.

Example 2: Write atmospheric pressure

Command Frame: Write atmospheric pressure of 101.35 kPa to the device with address 1.

Write 10135 (hexadecimal 2797) to register 0x1022.

Address CodeFunction CodeRegister AddressRegister ContentChecksum (Low Byte)Checksum (High Byte)
0x210x060x10 0x220x27 0x970x700x3e

Response Frame: (According to the ModBus standard, the response is a mirror of the command frame)

Address CodeFunction CodeRegister AddressRegister ContentChecksum (Low Byte)Checksum (High Byte)
0x210x060x10 0x220x27 0x970x700x3e

Example 3: Zero-point calibration

After the sensor reading stabilizes in oxygen-free water, write 0x0001 to register 1010H.

Address CodeFunction CodeRegister AddressRegister ContentChecksum (Low Byte)Checksum (High Byte)
0x210x060x10 0x100x00 0x010x4a0x6f

Response Frame: (According to the ModBus standard, the response is a mirror of the command frame)

Address CodeFunction CodeRegister AddressRegister ContentChecksum (Low Byte)Checksum (High Byte)
0x210x060x10 0x100x00 0x010x4a0x6f

2. Water Quality Sensor Datasheet