Wiki source code of Water Quality Sensors

Version 61.3 by Karry Zhuang on 2025/07/15 15:54

Hide last authors
Edwin Chen 1.1 1 **Table of Contents:**
2
3 {{toc/}}
4
5
Xiaoling 45.2 6
7
Edwin Chen 7.1 8 = 1. DR-ECK Water EC Probe =
9
10 == 1.1 Specification: ==
11
Xiaoling 45.2 12
Edwin Chen 7.1 13 * **Power Input**: DC7~~30
Xiaoling 45.63 14
Edwin Chen 7.1 15 * **Power Consumption** : < 0.5W
Xiaoling 45.63 16
Edwin Chen 7.1 17 * **Interface**: RS485. 9600 Baud Rate
Xiaoling 45.63 18
Edwin Chen 7.1 19 * **EC Range & Resolution:**
20 ** **ECK0.01** : 0.02 ~~ 20 μS/cm
21 ** **ECK0.1**: 0.2 ~~ 200.0 μS/cm
Karry Zhuang 48.1 22 ** **ECK1.0** : 0 ~~ 2,000 μS/cm  Resolution: 1 μS/cm
23 ** **ECK10.0** : 10 ~~ 20,000 μS/cm  Resolution: 10 μS/cm
Karry Zhuang 59.2 24 ** **ECK200.0** : 1 ~~ 200,000 μS/cm  Resolution: 1 μS/cm
Xiaoling 45.63 25
Edwin Chen 7.1 26 * **EC Accuracy**: ±1% FS
27 * **Temperature Accuracy: **±0.5 °C
Karry Zhuang 59.1 28 * **Working environment:**
29 ** Ambient Temperature: 0–60°C
30 ** Relative Humidity: <85% RH(Specifically refers to the cable male and female)
Karry Zhuang 60.2 31 ** ECK200.0 Continuous monitoring of cross-section water quality, aquaculture, sewage treatment, environmental protection, pharmaceuticals, food, tap water, seawater and other high conductivity environments
Edwin Chen 7.1 32 * **IP Rated**: IP68
Xiaoling 45.63 33
Edwin Chen 7.1 34 * **Max Pressure**: 0.6MPa
35
36 == 1.2 Application for Different Range ==
37
Xiaoling 45.2 38
Edwin Chen 7.1 39 [[image:image-20240714173018-1.png]]
40
41
42 == 1.3 Wiring ==
43
Xiaoling 45.2 44
Xiaoling 55.1 45 [[image:image-20241129142314-1.png||height="352" width="1108"]]
Edwin Chen 7.1 46
Karry Zhuang 45.1 47
Edwin Chen 7.1 48 == 1.4 Mechinical Drawing ==
49
Karry Zhuang 60.6 50 ECK1 and ECK10  ECK200
Xiaoling 45.2 51
Edwin Chen 7.1 52
Karry Zhuang 60.4 53 [[image:image-20240714174241-2.png]] [[image:1752564223905-283.png||height="399" width="160"]]
Edwin Chen 7.1 54
Karry Zhuang 60.4 55
Edwin Chen 7.1 56 == 1.5 Installation ==
57
58
Xiaoling 45.2 59 **Electrode installation form:**
Karry Zhuang 15.2 60
Xiaoling 45.2 61 A: Side wall installation
Karry Zhuang 15.2 62
Xiaoling 45.2 63 B: Top flange installation
Karry Zhuang 15.2 64
Xiaoling 45.2 65 C: Pipeline bend installation
Karry Zhuang 15.2 66
Xiaoling 45.2 67 D: Pipeline bend installation
Karry Zhuang 15.2 68
Xiaoling 45.2 69 E: Flow-through installation
Karry Zhuang 15.2 70
Xiaoling 45.2 71 F: Submerged installation
Karry Zhuang 15.2 72
Karry Zhuang 23.1 73 [[image:image-20240718190121-1.png||height="350" width="520"]]
Karry Zhuang 15.2 74
Karry Zhuang 18.1 75 **Several common installation methods of electrodes**
Karry Zhuang 15.2 76
Karry Zhuang 18.1 77 When installing the sensor on site, you should strictly follow the correct installation method shown in the following picture. Incorrect installation method will cause data deviation.
Karry Zhuang 15.2 78
Karry Zhuang 18.1 79 A. Several common incorrect installation methods
Karry Zhuang 15.2 80
Karry Zhuang 23.1 81 [[image:image-20240718190204-2.png||height="262" width="487"]]
Karry Zhuang 15.2 82
Xiaoling 45.2 83 **Error cause:** The electrode joint is too long, the extension part is too short, the sensor is easy to form a dead cavity, resulting in measurement error.
Karry Zhuang 15.2 84
Karry Zhuang 23.1 85 [[image:image-20240718190221-3.png||height="292" width="500"]]
Karry Zhuang 18.1 86
Xiaoling 45.2 87 **Error cause: **Measurement error or instability may occur due to water flow not being able to fill the pipe or air accumulation at high altitudes.
Karry Zhuang 18.1 88
89 B. Correct installation method
90
Karry Zhuang 23.1 91 [[image:image-20240718190249-4.png||height="287" width="515"]]
Karry Zhuang 18.1 92
93
Karry Zhuang 38.1 94 == 1.6 Maintenance ==
Edwin Chen 7.1 95
96
Karry Zhuang 26.1 97 * The equipment itself generally does not require daily maintenance. When an obvious fault occurs, please do not open it and repair it yourself, and contact us as soon as possible.
Xiaoling 45.66 98
Karry Zhuang 26.1 99 * If the electrode is not used for a long time, it can generally be stored in a dry place, but it must be placed (stored) in distilled water for several hours before use to activate the electrode. Electrodes that are frequently used can be placed (stored) in distilled water.
Xiaoling 45.66 100
Karry Zhuang 26.1 101 * Cleaning of conductivity electrodes: Organic stains on the electrode can be cleaned with warm water containing detergent, or with alcohol. Calcium and magnesium precipitates are best cleaned with 10% citric acid. The electrode plate or pole can only be cleaned by chemical methods or by shaking in water. Wiping the electrode plate will damage the coating (platinum black) on the electrode surface.
Xiaoling 45.66 102
Karry Zhuang 26.1 103 * The equipment should be calibrated before each use. It is recommended to calibrate it every 3 months for long-term use. The calibration frequency should be adjusted appropriately according to different application conditions (degree of dirt in the application, deposition of chemical substances, etc.).
Karry Zhuang 15.2 104
Edwin Chen 8.1 105 == 1.7 RS485 Commands ==
106
Karry Zhuang 15.2 107
108 RS485 signal (K1 default address 0x12; K10 default address 0x11):
109 Standard Modbus-RTU protocol, baud rate: 9600; check bit: none; data bit: 8; stop bit: 1
110
111
Karry Zhuang 16.1 112 === 1.7.1 Query address ===
Edwin Chen 8.1 113
Karry Zhuang 11.1 114
Xiaoling 45.48 115 **send:**
Xiaoling 45.2 116
117 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.40 118 |=(% style="width: 74.75px;background-color:#4F81BD;color:white" %)Original address|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Quantity low|=(% style="width: 59.75px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 59.75px;background-color:#4F81BD;color:white" %)CRC16 high
Xiaoling 45.32 119 |(% style="width:99px" %)0XFE |(% style="width:72px" %)0X03|(% style="width:50px" %)0X00|(% style="width:42px" %)0X50|(% style="width:42px" %)0X00|(% style="width:42px" %)0X00|(% style="width:56px" %)0X51|(% style="width:56px" %)0XD4
Karry Zhuang 16.1 120
121 If you forget the original address of the sensor, you can use the broadcast address 0XFE instead. When using 0XFE, the host can only connect to one slave, which can be used as a method of address query.
122
123
Xiaoling 45.48 124 **response:**
Karry Zhuang 16.1 125
Xiaoling 45.14 126 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:512px" %)
Xiaoling 45.10 127 |=(% style="width: 100px;background-color:#4F81BD;color:white" %)New address|=(% style="width: 110px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 106px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 93px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 104px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
Karry Zhuang 27.1 128 |(% style="width:99px" %)0X01|(% style="width:112px" %)0X03|(% style="width:106px" %)0X00|(% style="width:93px" %)0X20|(% style="width:104px" %)0XF0
Karry Zhuang 16.1 129
Karry Zhuang 60.8 130
131
Karry Zhuang 16.1 132 === 1.7.2 Change address ===
133
Xiaoling 45.2 134
Karry Zhuang 16.1 135 For example: Change the address of the sensor with address 1 to 2, master → slave
136
Xiaoling 45.20 137 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.39 138 |=(% style="width: 74.75px; background-color: rgb(79, 129, 189); color: white;" %)Original address|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Address high|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Address low|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Quantity high|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
Xiaoling 45.32 139 |(% style="width:67px" %)0X01|(% style="width:76px" %)0X06|(% style="width:60px" %)0X00|(% style="width:50px" %)0X50|(% style="width:50px" %)0X00|(% style="width:50px" %)0X02|(% style="width:57px" %)0X08|(% style="width:56px" %)0X1A
Karry Zhuang 16.1 140
141 If the sensor receives correctly, the data is returned along the original path.
142
Xiaoling 45.32 143 (% style="color:red" %)**Note: If you forget the original address of the sensor, you can use the broadcast address 0XFE instead. When using 0XFE, the host can only connect to one slave, and the return address is still the original address, which can be used as a method of address query.**
Karry Zhuang 16.1 144
Xiaoling 45.32 145
Karry Zhuang 16.1 146 === 1.7.3 Modify intercept ===
147
148
Xiaoling 45.48 149 **send:**
Karry Zhuang 16.1 150
Xiaoling 45.36 151 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:512px" %)
Xiaoling 45.34 152 |=(% style="width: 64px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 64px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 64px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 64px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 64px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 64px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 64px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 64px;background-color:#4F81BD;color:white" %)CRC16 high
153 |(% style="width:64px" %)0X01|(% style="width:112px" %)0X06|(% style="width:135px" %)0X00|(% style="width:126px" %)0X23|(% style="width:85px" %)0X00|(% style="width:1px" %)0X01|(% style="width:1px" %)0XF8|(% style="width:1px" %)(((
Karry Zhuang 27.1 154 0X07
Karry Zhuang 16.1 155 )))
156
157 Change the intercept of the sensor with address 1 to 10 (default 0), which is 0X000A in the command.
158
Xiaoling 45.48 159 **response:**
Karry Zhuang 16.1 160
Xiaoling 45.36 161 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:512px" %)
Xiaoling 45.35 162 |=(% style="width: 64px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 64px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 64px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 64px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 64px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 64px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 64px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 64px;background-color:#4F81BD;color:white" %)CRC16 high
Karry Zhuang 16.1 163 |(% style="width:99px" %)0X01|(% style="width:112px" %)0X06|(% style="width:135px" %)(((
164 0X02
Karry Zhuang 27.1 165 )))|(% style="width:126px" %)0X00|(% style="width:85px" %)0X00|(% style="width:1px" %)0X0A|(% style="width:1px" %)0X38|(% style="width:1px" %)(((
166 0X8F
Karry Zhuang 16.1 167 )))
168
169 === 1.7.4 Query data ===
170
Karry Zhuang 37.1 171
172 Query the data (EC,temperature) of the sensor (address 11), host → slave
173
Xiaoling 45.20 174 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.43 175 |=(% style="width: 42px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register length high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register length low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
Karry Zhuang 37.1 176 |(% style="width:99px" %)0X11|(% style="width:72px" %)0X03|(% style="width:64px" %)0X00|(% style="width:68px" %)0X00|(% style="width:70px" %)0X00|(% style="width:72px" %)0X02|(% style="width:56px" %)0XC6|(% style="width:56px" %)0X9B
177
178 If the sensor receives correctly, the following data will be returned, slave → host
179
Xiaoling 45.20 180 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.42 181 |=(% style="width: 40px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data high|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data low|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Register 1 Data high|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Register 1 Data low|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
Karry Zhuang 37.1 182 |(% style="width:99px" %)0X11|(% style="width:72px" %)0X03|(% style="width:68px" %)0X04|(% style="width:70px" %)0X02|(% style="width:72px" %)0XAE|(% style="width:56px" %)0X01|(% style="width:56px" %)0X64|(% style="width:56px" %)0X8B|(% style="width:56px" %)0XD0
183
Karry Zhuang 16.3 184 The address of the EC K10 sensor is 11
Karry Zhuang 16.1 185
Karry Zhuang 10.1 186 The query data command is 11 03 00 00 00 02 C6 9B
187
Xiaoling 45.48 188 **For example**, the returned data is 11 03 04 (% style="color:red" %)**02 AE**(%%) 01 64 8B D0. 02 AE is converted to decimal 686,  K=10, EC: 6860uS/cm,temperature: 35.6℃ Convert the returned data to decimal and divide by 10.
Karry Zhuang 10.1 189
190
Karry Zhuang 37.1 191 Query the data (EC,temperature) of the sensor (address 11), host → slave
192
Xiaoling 45.20 193 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.44 194 |=(% style="width: 42px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register length high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register length low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
Karry Zhuang 37.1 195 |(% style="width:99px" %)0X12|(% style="width:72px" %)0X03|(% style="width:64px" %)0X00|(% style="width:68px" %)0X00|(% style="width:70px" %)0X00|(% style="width:72px" %)0X02|(% style="width:56px" %)0XC6|(% style="width:56px" %)0XA8
196
197 If the sensor receives correctly, the following data will be returned, slave → host
198
Xiaoling 45.20 199 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.44 200 |=(% style="width: 40px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data high|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data low|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Register 1 Data high|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Register 1 Data low|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
Karry Zhuang 37.1 201 |(% style="width:99px" %)0X12|(% style="width:72px" %)0X03|(% style="width:68px" %)0X04|(% style="width:70px" %)0X02|(% style="width:72px" %)0XAE|(% style="width:56px" %)0X01|(% style="width:56px" %)0X64|(% style="width:56px" %)0XB8|(% style="width:56px" %)0XD0
202
Karry Zhuang 10.1 203 The address of the EC K1 sensor is 12
204
205 The query data command is 12 03 00 00 00 02 C6 A8
206
Xiaoling 45.48 207 **For example**, the returned data is 12 03 04 (% style="color:red" %)**02 AE**(%%) 01 64 B8 D0. 02 AE is converted to decimal 686,  K=1, EC: 686uS/cm,temperature: 35.6℃ Convert the returned data to decimal and divide by 10.
Karry Zhuang 10.1 208
Karry Zhuang 11.1 209
Karry Zhuang 60.10 210 ECK200
211
Karry Zhuang 16.2 212 === 1.7.5 Calibration Method ===
Karry Zhuang 12.1 213
Karry Zhuang 61.2 214 ECK1 and ECK10.0
Karry Zhuang 12.1 215
Karry Zhuang 15.1 216 This device uses one-point calibration, and you need to prepare a known E standard solution. When mileage K=1, 1~~2000 uses 1413μS/cm standard solution, and when mileage K=10, 10~~20000 uses 12.88mS/cm standard solution.
Karry Zhuang 12.1 217
Xiaoling 45.63 218 (% style="color:blue" %)**The calibration steps are as follows:**
219
Karry Zhuang 15.1 220 (1) Place the electrode in distilled water and clean it. When mileage 1~~2000 uses 1413μS/cm standard solution, enter the following calibration command after the data is stable.
221
Xiaoling 45.20 222 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.47 223 |=(% style="width: 42px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 53px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 53px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 53px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 53px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 53px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 53px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 53px;background-color:#4F81BD;color:white" %)Data|=(% style="width: 53px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 53px;background-color:#4F81BD;color:white" %)CRC16 high
Karry Zhuang 14.1 224 |(% style="width:99px" %)0X12|(% style="width:112px" %)0X10|(% style="width:135px" %)0X00|(% style="width:126px" %)0X26|(% style="width:85px" %)0X00|(% style="width:1px" %)0X02|(% style="width:1px" %)0X04|(% style="width:1px" %)(((
225 0X00
226 0X00
227 0X37
228 0X32
229 )))|(% style="width:1px" %)0XBD|(% style="width:1px" %)0XFC
230
Karry Zhuang 15.1 231 1413*10 gives 0X00003732
Karry Zhuang 14.1 232
Xiaoling 45.48 233 **response:**
Karry Zhuang 15.1 234
Xiaoling 45.20 235 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.45 236 |=(% style="width: 42px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 68px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 68px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 68px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 68px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 68px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 68px;background-color:#4F81BD;color:white" %)CRC16 high
Karry Zhuang 14.1 237 |(% style="width:99px" %)0X12|(% style="width:112px" %)0X10|(% style="width:135px" %)0X00|(% style="width:126px" %)0X26|(% style="width:85px" %)0X00|(% style="width:1px" %)0X02|(% style="width:1px" %)0XA2|(% style="width:1px" %)0XA0
238
239 (2) Place the electrode in distilled water to clean it. Use 12.88mS/cm standard solution for the range of 10~~20000. After the data is stable, enter the following calibration command
240
Xiaoling 45.20 241 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.47 242 |=(% style="width: 42px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 53px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 53px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 53px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 53px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 53px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 53px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 53px;background-color:#4F81BD;color:white" %)Data|=(% style="width: 53px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 53px;background-color:#4F81BD;color:white" %)CRC16 high
Karry Zhuang 14.1 243 |(% style="width:99px" %)0X11|(% style="width:112px" %)0X10|(% style="width:135px" %)0X00|(% style="width:126px" %)0X26|(% style="width:85px" %)0X00|(% style="width:1px" %)0X02|(% style="width:1px" %)0X04|(% style="width:1px" %)(((
244 0X00
245 0X01
246 0XF7
247 0X20
248 )))|(% style="width:1px" %)0X33|(% style="width:1px" %)0X75
249
Karry Zhuang 15.1 250 12880*10 gives 0X01F720
251
Xiaoling 45.48 252 **response:**
Karry Zhuang 14.1 253
Xiaoling 45.20 254 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.45 255 |=(% style="width: 42px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 68px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 68px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 68px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 68px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 68px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 68px;background-color:#4F81BD;color:white" %)CRC16 high
Karry Zhuang 14.1 256 |(% style="width:99px" %)0X11|(% style="width:112px" %)0X06|(% style="width:135px" %)0X00|(% style="width:126px" %)0X26|(% style="width:85px" %)0X00|(% style="width:1px" %)0X02|(% style="width:1px" %)0XEB|(% style="width:1px" %)0X50
257
Karry Zhuang 61.2 258
259
260 ECK200.0
261
Karry Zhuang 61.3 262 For the device with address 01, use 1413uS/cm standard solution to calibrate the first point. Send frame: 1413. Convert hexadecimal to 585. Write 0001, 00 00, 0585 to 0x0120, 0x0121, 0x0122 respectively.
Karry Zhuang 61.2 263
Karry Zhuang 61.3 264 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
265 |=(% style="width: 42px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 53px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 53px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 53px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 53px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 53px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 53px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 53px;background-color:#4F81BD;color:white" %)Data|=(% style="width: 53px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 53px;background-color:#4F81BD;color:white" %)CRC16 high
266 |(% style="width:99px" %)0X01|(% style="width:112px" %)0X10|(% style="width:135px" %)0X01|(% style="width:126px" %)0X02|(% style="width:85px" %)0X00|(% style="width:1px" %)0X03|(% style="width:1px" %)0X04|(% style="width:1px" %)(((
267 0X00
268 0X00
269 0X37
270 0X32
271 )))|(% style="width:1px" %)0XBD|(% style="width:1px" %)0XFC
272
273
274
Edwin Chen 8.1 275 = 2. DR-PH01 Water PH Sensor =
276
Karry Zhuang 28.2 277 == 2.1 Specification ==
Edwin Chen 9.1 278
Xiaoling 45.20 279
Karry Zhuang 26.1 280 * **Power Input**: DC7~~30
Xiaoling 45.62 281
Karry Zhuang 26.1 282 * **Power Consumption** : < 0.5W
Xiaoling 45.62 283
Karry Zhuang 26.1 284 * **Interface**: RS485. 9600 Baud Rate
Xiaoling 45.62 285
Karry Zhuang 26.1 286 * **pH measurement range**: 0~~14.00pH; resolution: 0.01pH
Xiaoling 45.62 287
288 * **pH measurement error**: ±0.15pH
289
290 * **Repeatability error**: ±0.02pH
291
292 * **Temperature measurement range**:0~~60°C; resolution: 0.1°C (set temperature for manual temperature compensation, default 25°C)
293
294 * **Temperature measurement error**: ±0.5°C
295
Karry Zhuang 59.1 296 * **Working environment:**
297 ** Ambient Temperature: 0–60°C
298 ** Relative Humidity: <85% RH(Specifically refers to the cable male and female)
Xiaoling 45.62 299
Karry Zhuang 26.1 300 * **Temperature Accuracy: **±0.5 °C
Xiaoling 45.62 301
Karry Zhuang 26.1 302 * **IP Rated**: IP68
Xiaoling 45.62 303
Karry Zhuang 26.1 304 * **Max Pressure**: 0.6MPa
305
306 == 2.2 Wiring ==
307
Xiaoling 45.49 308
Karry Zhuang 45.1 309 [[image:image-20240720172548-2.png||height="348" width="571"]]
Karry Zhuang 26.1 310
Karry Zhuang 45.1 311
Xiaoling 45.62 312 == 2.3 Mechinical Drawing ==
Karry Zhuang 26.1 313
Xiaoling 45.49 314
Karry Zhuang 26.1 315 [[image:image-20240714174241-2.png]]
316
317
318 == 2.4 Installation Notice ==
319
Xiaoling 45.49 320
Karry Zhuang 26.1 321 Do not power on while connect the cables. Double check the wiring before power on.
322
323 Installation Photo as reference:
324
Xiaoling 45.50 325 (% style="color:blue" %)**Submerged installation:**
Karry Zhuang 26.1 326
327 The lead wire of the equipment passes through the waterproof pipe, and the 3/4 thread on the top of the equipment is connected to the 3/4 thread of the waterproof pipe with raw tape. Ensure that the top of the equipment and the equipment wire are not flooded.
328
329 [[image:image-20240718191348-6.png]]
330
Xiaoling 45.50 331 (% style="color:blue" %)**Pipeline installation:**
Karry Zhuang 26.1 332
333 Connect the equipment to the pipeline through the 3/4 thread.
334
335 [[image:image-20240718191336-5.png||height="239" width="326"]]
336
Xiaoling 45.50 337 (% style="color:blue" %)**Sampling:**
Karry Zhuang 26.1 338
339 Take representative water samples according to sampling requirements. If it is inconvenient to take samples, you can also put the electrode into the solution to be tested and read the output data. After a period of time, take out the electrode and clean it.
340
Xiaoling 45.50 341 (% style="color:blue" %)**Measure the pH of the water sample:**
Karry Zhuang 26.1 342
343 First rinse the electrode with distilled water, then rinse it with the water sample, then immerse the electrode in the sample, carefully shake the test cup or stir it to accelerate the electrode balance, let it stand, and record the pH value when the reading is stable.
344
345
Karry Zhuang 39.1 346 == 2.5 Maintenance ==
Karry Zhuang 26.1 347
348
349 * The equipment itself generally does not require daily maintenance. When an obvious fault occurs, please do not open it and repair it yourself. Contact us as soon as possible!
Xiaoling 45.62 350
Karry Zhuang 26.1 351 * There is an appropriate amount of soaking solution in the protective bottle at the front end of the electrode. The electrode head is soaked in it to keep the glass bulb and the liquid junction activated. When measuring, loosen the bottle cap, pull out the electrode, and rinse it with pure water before use.
Xiaoling 45.62 352
Karry Zhuang 26.1 353 * Preparation of electrode soaking solution: Take a packet of PH4.00 buffer, dissolve it in 250 ml of pure water, and soak it in 3M potassium chloride solution. The preparation is as follows: Take 25 grams of analytical pure potassium chloride and dissolve it in 100 ml of pure water.
Xiaoling 45.62 354
Karry Zhuang 26.1 355 * The glass bulb at the front end of the electrode cannot come into contact with hard objects. Any damage and scratches will make the electrode ineffective.
Xiaoling 45.62 356
Karry Zhuang 26.1 357 * Before measurement, the bubbles in the electrode glass bulb should be shaken off, otherwise it will affect the measurement. When measuring, the electrode should be stirred in the measured solution and then placed still to accelerate the response.
Xiaoling 45.62 358
Karry Zhuang 26.1 359 * The electrode should be cleaned with deionized water before and after measurement to ensure accuracy.
Xiaoling 45.62 360
Karry Zhuang 26.1 361 * After long-term use, the pH electrode will become passivated, which is characterized by a decrease in sensitivity gradient, slow response, and inaccurate readings. At this time, the bulb at the bottom of the electrode can be soaked in 0.1M dilute hydrochloric acid for 24 hours (0.1M dilute hydrochloric acid preparation: 9 ml of hydrochloric acid is diluted to 1000 ml with distilled water), and then soaked in 3.3M potassium chloride solution for 24 hours. If the pH electrode is seriously passivated and soaking in 0.1M hydrochloric acid has no effect, the pH electrode bulb can be soaked in 4% HF (hydrofluoric acid) for 3-5 seconds, washed with pure water, and then soaked in 3.3M potassium chloride solution for 24 hours to restore its performance.
Xiaoling 45.62 362
Karry Zhuang 26.1 363 * Glass bulb contamination or liquid junction blockage can also cause electrode passivation. At this time, it should be cleaned with an appropriate solution according to the nature of the contaminant.
364
Xiaoling 45.62 365 * The equipment should be calibrated before each use. For long-term use, it is recommended to calibrate once every 3 months. The calibration frequency should be adjusted appropriately according to different application conditions (degree of dirt in the application, deposition of chemical substances, etc.). After aging, the electrodes should be replaced in time.
366
Karry Zhuang 26.1 367 == 2.6 RS485 Commands ==
368
Xiaoling 45.51 369
Karry Zhuang 27.1 370 RS485 signaldefault address 0x10
371 Standard Modbus-RTU protocol, baud rate: 9600; check bit: none; data bit: 8; stop bit: 1
Karry Zhuang 26.1 372
Xiaoling 45.51 373
Karry Zhuang 33.2 374 === 2.6.1 Query address ===
Karry Zhuang 27.1 375
Xiaoling 45.51 376
Xiaoling 45.52 377 **send:**
Karry Zhuang 27.1 378
Xiaoling 45.52 379 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.53 380 |=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Original address|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)CRC16 high
Karry Zhuang 27.1 381 |(% style="width:99px" %)0XFE |(% style="width:112px" %)0X03|(% style="width:135px" %)0X00|(% style="width:126px" %)0X50|(% style="width:85px" %)0X00|(% style="width:1px" %)0X00|(% style="width:1px" %)0X51|(% style="width:1px" %)0XD4
382
Xiaoling 45.52 383 **response:**
Karry Zhuang 27.1 384
Xiaoling 45.52 385 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.57 386 |=(% style="width: 103.6px;background-color:#4F81BD;color:white" %)New address|=(% style="width: 103.6px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 103.6px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 103.6px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 103.6px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
Karry Zhuang 27.1 387 |(% style="width:99px" %)0X01|(% style="width:112px" %)0X03|(% style="width:106px" %)0X00|(% style="width:93px" %)0X20|(% style="width:104px" %)0XF0
388
389 === 2.6.2 Change address ===
390
Xiaoling 45.52 391
Karry Zhuang 27.1 392 For example: Change the address of the sensor with address 1 to 2, master → slave
393
Xiaoling 45.52 394 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.57 395 |=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Original address|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)CRC16 high
Karry Zhuang 27.1 396 |(% style="width:99px" %)0X01|(% style="width:112px" %)0X06|(% style="width:135px" %)0X00|(% style="width:126px" %)0X50|(% style="width:85px" %)0X00|(% style="width:1px" %)0X02|(% style="width:1px" %)0X08|(% style="width:1px" %)0X1A
397
398 If the sensor receives correctly, the data is returned along the original path.
399
Xiaoling 45.52 400 (% style="color:red" %)**Note: If you forget the original address of the sensor, you can use the broadcast address 0XFE instead. When using 0XFE, the host can only connect to one slave, and the return address is still the original address, which can be used as a method of address query.**
Karry Zhuang 27.1 401
Xiaoling 45.52 402
Karry Zhuang 27.1 403 === 2.6.3 Modify intercept ===
404
405
Xiaoling 45.52 406 **send:**
Karry Zhuang 27.1 407
Xiaoling 45.52 408 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.56 409 |=(% style="width: 44.75px; background-color: rgb(79, 129, 189); color: white;" %)Address|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 69.75px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address high|=(% style="width: 69.75px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address  low|=(% style="width: 69.75px; background-color: rgb(79, 129, 189); color: white;" %)Register Length high|=(% style="width: 69.75px; background-color: rgb(79, 129, 189); color: white;" %)Register Length low|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
Karry Zhuang 34.3 410 |(% style="width:71px" %)0X10|(% style="width:74px" %)0X06|(% style="width:67px" %)0X00|(% style="width:68px" %)0X10|(% style="width:69px" %)0X00|(% style="width:66px" %)0X64|(% style="width:57px" %)0X8A|(% style="width:57px" %)(((
Karry Zhuang 27.1 411 0XA5
412 )))
413
Karry Zhuang 34.4 414 Change the intercept of the sensor at address 10 to 1 (default is 0). You need to pass the intercept 1*100 =100 into the command 0x006.
Karry Zhuang 27.1 415
Xiaoling 45.52 416 **response:**
Karry Zhuang 27.1 417
Xiaoling 45.52 418 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.55 419 |=(% style="width: 42px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 68px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 68px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 68px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 68px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 68px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 68px;background-color:#4F81BD;color:white" %)CRC16 high
Karry Zhuang 27.1 420 |(% style="width:99px" %)0X10|(% style="width:112px" %)0X06|(% style="width:135px" %)(((
421 0X00
422 )))|(% style="width:126px" %)0X10|(% style="width:85px" %)0X00|(% style="width:1px" %)0X64|(% style="width:1px" %)0X8A|(% style="width:1px" %)(((
423 0XA5
424 )))
425
426 === 2.6.4 Query data ===
427
428
Karry Zhuang 34.3 429 Query the data (PH) of the sensor (address 10), host → slave
Edwin Chen 9.1 430
Xiaoling 45.52 431 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.59 432 |=(% style="width: 42px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register length high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register length low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
Karry Zhuang 34.3 433 |(% style="width:99px" %)0X10|(% style="width:72px" %)0X03|(% style="width:64px" %)0X00|(% style="width:68px" %)0X00|(% style="width:70px" %)0X00|(% style="width:72px" %)0X01|(% style="width:56px" %)0X87|(% style="width:56px" %)0X4B
434
435 If the sensor receives correctly, the following data will be returned, slave → host
436
Xiaoling 45.75 437 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.61 438 |=(% style="width: 44px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data high|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data low|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
Karry Zhuang 35.1 439 |(% style="width:99px" %)0X10|(% style="width:72px" %)0X03|(% style="width:68px" %)0X02|(% style="width:70px" %)0X02|(% style="width:72px" %)0XAE|(% style="width:56px" %)0XC4|(% style="width:56px" %)0X9B
Karry Zhuang 34.3 440
Karry Zhuang 11.1 441 The query data command is 10 03 00 00 00 01 87 4B. After the query, 7 bytes will be returned.
Karry Zhuang 10.1 442
Karry Zhuang 11.1 443 For example, the returned data is 10 03 02 (% style="color:red" %)**02 AE**(%%) C4 9B.
444
445 02 AE is the pH value, which is converted into decimal to get 686, and then two decimal places are added to get the actual value. 02 AE means the current pH value is 6.86.
446
447
Karry Zhuang 27.1 448 === 2.6.5 Calibration Method ===
449
450
451 This device uses three-point calibration, and three known pH standard solutions need to be prepared.
Xiaoling 45.62 452
453 (% style="color:blue" %)**The calibration steps are as follows:**
454
Karry Zhuang 27.1 455 (1) Place the electrode in distilled water to clean it, and then place it in 9.18 standard buffer solution. After the data stabilizes, enter the following calibration command, and the 9.18 calibration is completed.
456
Xiaoling 45.52 457 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.68 458 |=(% style="width: 61px; background-color: rgb(79, 129, 189); color: white;" %)Address|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 66px; background-color: rgb(79, 129, 189); color: white;" %)Address high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Address low|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Quantity high|=(% style="width: 70px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 55px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 55px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
Karry Zhuang 27.1 459 |(% style="width:64px" %)0X10|(% style="width:72px" %)0X06|(% style="width:66px" %)(((
460 0X00
461 )))|(% style="width:68px" %)0X20|(% style="width:72px" %)0XFF|(% style="width:70px" %)0XFF|(% style="width:55px" %)0X8A|(% style="width:55px" %)(((
462 0XF1
463 )))
464
465 (2) Wash the electrode in distilled water and place it in 6.86 standard buffer. After the data stabilizes, enter the following calibration command. The 6.86 calibration is completed.
466
Xiaoling 45.52 467 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.68 468 |=(% style="width: 61px; background-color: rgb(79, 129, 189); color: white;" %)Address|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 66px; background-color: rgb(79, 129, 189); color: white;" %)Address high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Address low|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Quantity high|=(% style="width: 70px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 55px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 55px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
Karry Zhuang 27.1 469 |(% style="width:64px" %)0X10|(% style="width:72px" %)0X06|(% style="width:66px" %)(((
470 0X00
471 )))|(% style="width:68px" %)0X21|(% style="width:72px" %)0XFF|(% style="width:70px" %)0XFF|(% style="width:55px" %)0XDB|(% style="width:55px" %)(((
472 0X31
473 )))
474
475 (3) Wash the electrode in distilled water and place it in 4.01 standard buffer. After the data stabilizes, enter the following calibration command, and the 4.00 calibration is completed.
476
Xiaoling 45.52 477 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.68 478 |=(% style="width: 61px; background-color: rgb(79, 129, 189); color: white;" %)Address|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 66px; background-color: rgb(79, 129, 189); color: white;" %)Address high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Address low|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Quantity high|=(% style="width: 70px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 55px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 55px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
Karry Zhuang 27.1 479 |(% style="width:64px" %)0X10|(% style="width:72px" %)0X06|(% style="width:66px" %)(((
480 0X00
481 )))|(% style="width:68px" %)0X22|(% style="width:72px" %)0XFF|(% style="width:70px" %)0XFF|(% style="width:55px" %)0X2B|(% style="width:55px" %)(((
482 0X31
483 )))
484
485 After the above three steps are completed, the calibration is successful. The advantage of three-point calibration compared to two-point calibration is that the electrode is calibrated separately in the acid and alkali parts, thereby achieving accurate calibration of the full range and making the measurement data more accurate.
486
487
Edwin Chen 8.1 488 = 3. DR-ORP1 Water ORP Sensor =
489
Karry Zhuang 28.2 490 == 3.1 Specification ==
Karry Zhuang 27.2 491
Xiaoling 45.75 492
Karry Zhuang 27.2 493 * **Power Input**: DC7~~30
Xiaoling 45.69 494
Karry Zhuang 32.1 495 * **Measuring range**:** **-1999~~1999mV
Xiaoling 45.69 496
Xiaoling 45.70 497 * **Resolution**: 1mV
Xiaoling 45.69 498
Karry Zhuang 27.2 499 * **Interface**: RS485. 9600 Baud Rate
Xiaoling 45.69 500
Karry Zhuang 27.2 501 * **Measurement error**: ±3mV
Xiaoling 45.69 502
Karry Zhuang 27.2 503 * **Stability**: ≤2mv/24 hours
Xiaoling 45.69 504
Karry Zhuang 59.1 505 * **Working environment:**
506 ** Ambient Temperature: 0–60°C
507 ** Relative Humidity: <85% RH(Specifically refers to the cable male and female)
Xiaoling 45.69 508
Karry Zhuang 27.2 509 * **IP Rated**: IP68
Xiaoling 45.69 510
Karry Zhuang 27.2 511 * **Max Pressure**: 0.6MPa
512
513 == 3.2 Wiring ==
514
Xiaoling 45.75 515
Karry Zhuang 45.1 516 [[image:image-20240720172620-3.png||height="378" width="620"]]
Karry Zhuang 27.2 517
Karry Zhuang 45.1 518
Karry Zhuang 27.2 519 == 3.3 Mechinical Drawing ==
520
Xiaoling 45.75 521
Karry Zhuang 27.2 522 [[image:image-20240714174241-2.png]]
523
Xiaoling 45.77 524
Karry Zhuang 27.2 525 == 3.4 Installation Notice ==
526
Xiaoling 45.75 527
Karry Zhuang 27.2 528 Do not power on while connect the cables. Double check the wiring before power on.
529
Xiaoling 45.75 530 **Installation Photo as reference:**
Karry Zhuang 27.2 531
Xiaoling 45.70 532 (% style="color:blue" %)** Submerged installation:**
Karry Zhuang 27.2 533
534 The lead wire of the equipment passes through the waterproof pipe, and the 3/4 thread on the top of the equipment is connected to the 3/4 thread of the waterproof pipe with raw tape. Ensure that the top of the equipment and the equipment wire are not flooded.
535
536 [[image:image-20240718191348-6.png]]
537
Xiaoling 45.70 538 (% style="color:blue" %)** Pipeline installation:**
Karry Zhuang 27.2 539
540 Connect the equipment to the pipeline through the 3/4 thread.
541
542 [[image:image-20240718191336-5.png||height="239" width="326"]]
543
544
Karry Zhuang 39.1 545 == 3.5 Maintenance ==
Edwin Chen 8.1 546
Edwin Chen 9.1 547
Karry Zhuang 29.1 548 (1) The equipment itself generally does not require daily maintenance. When an obvious fault occurs, please do not open it and repair it yourself, and contact us as soon as possible.
Karry Zhuang 32.3 549
Karry Zhuang 29.1 550 (2) In general, ORP electrodes do not need to be calibrated and can be used directly. When there is doubt about the quality and test results of the ORP electrode, the electrode potential can be checked with an ORP standard solution to determine whether the ORP electrode meets the measurement requirements, and the electrode can be recalibrated or replaced with a new ORP electrode. The frequency of calibration or inspection of the measuring electrode depends on different application conditions (the degree of dirt in the application, the deposition of chemical substances, etc.).
Karry Zhuang 32.3 551
Karry Zhuang 29.1 552 (3) There is an appropriate soaking solution in the protective bottle at the front end of the electrode, and the electrode head is soaked in it to ensure the activation of the platinum sheet and the liquid junction. When measuring, loosen the bottle cap, pull out the electrode, and rinse it with pure water before use.
Karry Zhuang 32.3 553
Karry Zhuang 29.1 554 (4) Preparation of electrode soaking solution: Take 25 grams of analytical pure potassium chloride and dissolve it in 100 ml of pure water to prepare a 3.3M potassium chloride solution.
Karry Zhuang 32.3 555
Karry Zhuang 29.1 556 (5) Before measuring, the bubbles in the electrode glass bulb should be shaken off, otherwise it will affect the measurement. When measuring, the electrode should be stirred in the measured solution and then placed still to accelerate the response.
Karry Zhuang 32.3 557
Karry Zhuang 29.1 558 (6) The electrode should be cleaned with deionized water before and after the measurement to ensure the measurement accuracy.
Karry Zhuang 32.3 559
Karry Zhuang 29.1 560 (7) After long-term use, the ORP electrode will be passivated, which is manifested as a decrease in sensitivity gradient, slow response, and inaccurate readings. At this time, the platinum sheet at the bottom of the electrode can be soaked in 0.1M dilute hydrochloric acid for 24 hours (0.1M dilute hydrochloric acid preparation: 9 ml of hydrochloric acid is diluted to 1000 ml with distilled water), and then soaked in 3.3M potassium chloride solution for 24 hours to restore its performance.
Karry Zhuang 32.3 561
Karry Zhuang 29.1 562 (8) Electrode contamination or liquid junction blockage can also cause electrode passivation. At this time, it should be cleaned with an appropriate solution according to the nature of the contaminant. If the platinum of the electrode is severely contaminated and an oxide film is formed, toothpaste can be applied to the platinum surface and then gently scrubbed to restore the platinum's luster.
Karry Zhuang 32.3 563
Karry Zhuang 29.1 564 (9) The equipment should be calibrated before each use. It is recommended to calibrate once every 3 months for long-term use. The calibration frequency should be adjusted appropriately according to different application conditions (degree of dirt in the application, deposition of chemical substances, etc.). After aging, the electrodes should be replaced in time.
565
Xiaoling 45.75 566
Karry Zhuang 29.1 567 == 3.6 RS485 Commands ==
568
569
570 RS485 signaldefault address 0x13
571 Standard Modbus-RTU protocol, baud rate: 9600; check bit: none; data bit: 8; stop bit: 1
572
Xiaoling 45.75 573
Karry Zhuang 33.2 574 === 3.6.1 Query address ===
Karry Zhuang 29.1 575
576
Xiaoling 45.75 577 **send:**
578
Xiaoling 45.69 579 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.71 580 |=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Original address|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)CRC16 high
Karry Zhuang 29.1 581 |(% style="width:99px" %)0XFE |(% style="width:112px" %)0X03|(% style="width:135px" %)0X00|(% style="width:126px" %)0X50|(% style="width:85px" %)0X00|(% style="width:1px" %)0X00|(% style="width:1px" %)0X51|(% style="width:1px" %)0XD4
582
Xiaoling 45.75 583 **response:**
Karry Zhuang 29.1 584
Xiaoling 45.69 585 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.71 586 |=(% style="width: 103.6px;background-color:#4F81BD;color:white" %)New address|=(% style="width: 103.6px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 103.6px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 103.6px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 103.6px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
Karry Zhuang 29.1 587 |(% style="width:99px" %)0X01|(% style="width:112px" %)0X03|(% style="width:106px" %)0X00|(% style="width:93px" %)0X20|(% style="width:104px" %)0XF0
588
589 === 3.6.2 Change address ===
590
Xiaoling 45.75 591
Karry Zhuang 29.1 592 For example: Change the address of the sensor with address 1 to 2, master → slave
593
Xiaoling 45.71 594 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.72 595 |=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Original address|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)CRC16 high
Karry Zhuang 29.1 596 |(% style="width:99px" %)0X01|(% style="width:112px" %)0X06|(% style="width:135px" %)0X00|(% style="width:126px" %)0X50|(% style="width:85px" %)0X00|(% style="width:1px" %)0X02|(% style="width:1px" %)0X08|(% style="width:1px" %)0X1A
597
598 If the sensor receives correctly, the data is returned along the original path.
599
Xiaoling 45.75 600 (% style="color:red" %)**Note: If you forget the original address of the sensor, you can use the broadcast address 0XFE instead. When using 0XFE, the host can only connect to one slave, and the return address is still the original address, which can be used as a method of address query.**
Karry Zhuang 29.1 601
Xiaoling 45.75 602
Karry Zhuang 29.1 603 === 3.6.3 Modify intercept ===
604
605
Xiaoling 45.75 606 **send:**
607
Xiaoling 45.69 608 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.73 609 |=(% style="width: 42px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 68px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address  low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register Length high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register Length low|=(% style="width: 68px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 68px;background-color:#4F81BD;color:white" %)CRC16 high
Karry Zhuang 29.1 610 |(% style="width:99px" %)0X13|(% style="width:112px" %)0X06|(% style="width:135px" %)0X00|(% style="width:126px" %)0X10|(% style="width:85px" %)0X00|(% style="width:1px" %)0X64|(% style="width:1px" %)0X8A|(% style="width:1px" %)(((
611 0X96
612 )))
613
614 Change the intercept of the sensor with address 1 to 10 (default 0), which is 0X000A in the command.
615
Xiaoling 45.75 616 **response:**
Karry Zhuang 29.1 617
Xiaoling 45.69 618 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.73 619 |=(% style="width: 42px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 68px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 68px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 68px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 68px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width:68px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 68px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 68px;background-color:#4F81BD;color:white" %)CRC16 high
Karry Zhuang 29.1 620 |(% style="width:99px" %)0X13|(% style="width:112px" %)0X06|(% style="width:135px" %)(((
621 0X00
622 )))|(% style="width:126px" %)0X10|(% style="width:85px" %)0X00|(% style="width:1px" %)0X64|(% style="width:1px" %)0X8A|(% style="width:1px" %)(((
623 0X96
624 )))
625
626 === 3.6.4 Query data ===
627
Edwin Chen 9.1 628
Karry Zhuang 37.1 629 Query the data (ORP) of the sensor (address 13), host → slave
Karry Zhuang 35.1 630
Xiaoling 45.69 631 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.73 632 |=(% style="width: 42px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register length high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register length low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
Karry Zhuang 35.1 633 |(% style="width:99px" %)0X13|(% style="width:72px" %)0X03|(% style="width:64px" %)0X00|(% style="width:68px" %)0X00|(% style="width:70px" %)0X00|(% style="width:72px" %)0X01|(% style="width:56px" %)0X87|(% style="width:56px" %)0X78
634
635 If the sensor receives correctly, the following data will be returned, slave → host
636
Xiaoling 45.69 637 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.73 638 |=(% style="width: 44px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data high|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data low|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
Karry Zhuang 35.1 639 |(% style="width:99px" %)0X13|(% style="width:72px" %)0X03|(% style="width:68px" %)0X02|(% style="width:70px" %)0X02|(% style="width:72px" %)0XAE|(% style="width:56px" %)0X80|(% style="width:56px" %)0X9B
640
Karry Zhuang 11.1 641 The query data command is 13 03 00 00 00 01 87 78
Karry Zhuang 10.1 642
Karry Zhuang 11.1 643 For example, the returned data is 13 03 02 (% style="color:red" %)**02 AE**(%%) 80 9B.
Karry Zhuang 10.1 644
Karry Zhuang 11.1 645 02 AE is the ORP value, converted to decimal, the actual value is 686, 02 AE means the current ORP value is 686mV
646
647
Karry Zhuang 29.1 648 === 3.6.5 Calibration Method ===
649
Xiaoling 45.75 650
Karry Zhuang 29.1 651 This device uses two-point calibration, and two known ORP standard solutions need to be prepared. The calibration steps are as follows:
652 (1) Place the electrode in distilled water to clean it, and then place it in 86mV standard buffer solution. After the data stabilizes,
653 enter the following calibration command, and the 86mV point calibration is completed;
654
Xiaoling 45.69 655 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.74 656 |=(% style="width: 42px; background-color: rgb(79, 129, 189); color: white;" %)Address|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Address high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Address low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Quantity high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
Karry Zhuang 29.1 657 |(% style="width:64px" %)0X13|(% style="width:72px" %)0X06|(% style="width:66px" %)(((
658 0X00
659 )))|(% style="width:68px" %)0X24|(% style="width:72px" %)0XFF|(% style="width:70px" %)0XFF|(% style="width:55px" %)0XCB|(% style="width:55px" %)(((
660 0X03
661 )))
662
663 Wash the electrode in distilled water and place it in 256mV standard buffer. After the data is stable, enter the following calibration command to complete the 256mV point calibration.
664
Xiaoling 45.69 665 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.74 666 |=(% style="width: 42px; background-color: rgb(79, 129, 189); color: white;" %)Address|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Address high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Address low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Quantity high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
667 |(% style="width:68px" %)0X13|(% style="width:72px" %)0X06|(% style="width:66px" %)(((
Karry Zhuang 29.1 668 0X00
669 )))|(% style="width:68px" %)0X25|(% style="width:72px" %)0XFF|(% style="width:70px" %)0XFF|(% style="width:55px" %)0X9A|(% style="width:55px" %)(((
670 0XC3
671 )))
672
Edwin Chen 8.1 673 = 4. DR-DO1 Dissolved Oxygen Sensor =
674
Karry Zhuang 32.1 675 == 4.1 Specification ==
676
Karry Zhuang 33.2 677
Karry Zhuang 58.1 678 * **Measuring range**: 0-20mg/L, 0–50℃
Xiaoling 45.77 679
Karry Zhuang 58.1 680 * **Accuracy**: 3%, ±0.5℃
Xiaoling 45.77 681
Karry Zhuang 58.1 682 * **Resolution**: 0.01 mg/L, 0.01℃
Xiaoling 45.77 683
Karry Zhuang 33.2 684 * **Maximum operating pressure**: 6 bar
Xiaoling 45.77 685
Karry Zhuang 33.2 686 * **Output signal**: A: 4-20mA (current loop)B: RS485 (standard Modbus-RTU protocol, device default address: 01)
Xiaoling 45.77 687
Karry Zhuang 33.2 688 * **Power supply voltage**: 5-24V DC
Xiaoling 45.77 689
Karry Zhuang 59.1 690 * **Working environment:**
691 ** Ambient Temperature: 0–60°C
692 ** Relative Humidity: <85% RH(Specifically refers to the cable male and female)
Xiaoling 45.77 693
Karry Zhuang 32.1 694 * **Power consumption**: ≤0.5W
695
Karry Zhuang 33.2 696 == 4.2 wiring ==
Karry Zhuang 32.1 697
Xiaoling 45.77 698
Karry Zhuang 45.1 699 [[image:image-20240720172632-4.png||height="390" width="640"]]
Karry Zhuang 33.2 700
701
Xiaoling 45.77 702 == 4.3 Impedance requirements for current signals ==
Karry Zhuang 33.2 703
Xiaoling 45.77 704
Xiaoling 46.2 705 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:400px" %)
706 |(% style="width:132px" %)**Supply Voltage**|(% style="width:67px" %)**9V**|(% style="width:67px" %)**12V**|(% style="width:67px" %)**20V**|(% style="width:67px" %)**24V**
707 |(% style="width:132px" %)**Max Impedance**|(% style="width:65px" %)**<250Ω**|(% style="width:67px" %)**<400Ω**|(% style="width:67px" %)**<500Ω**|(% style="width:65px" %)**<900Ω**
Xiaoling 45.96 708
Karry Zhuang 32.1 709 == 4.4 Mechinical Drawing ==
710
711
Karry Zhuang 33.2 712 [[image:image-20240719155308-1.png||height="226" width="527"]]
Karry Zhuang 32.1 713
Karry Zhuang 33.2 714
Karry Zhuang 39.1 715 == 4.5 Instructions for use and maintenance ==
Karry Zhuang 32.1 716
Xiaoling 45.77 717
Karry Zhuang 32.1 718 * It can be directly put into water without adding a protective tube, ensuring the long-term stability, reliability and accuracy of the sensor.
Xiaoling 45.77 719
Karry Zhuang 32.1 720 * If the water conditions are complex and you want accurate data, you need to wipe the sensor probe frequently.
721
722 == 4.6 RS485 Commands ==
723
Xiaoling 45.77 724
Karry Zhuang 34.1 725 RS485 signaldefault address 0x14
726 Standard Modbus-RTU protocol, baud rate: 9600; check bit: none; data bit: 8; stop bit: 1
727
Xiaoling 45.77 728
Karry Zhuang 32.3 729 === 4.6.1 Query address ===
Karry Zhuang 32.1 730
Karry Zhuang 32.3 731
Xiaoling 45.77 732 **send:**
733
734 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.79 735 |=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Original address|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Register address high|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Register address low|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Register length high|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Register length low|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
Karry Zhuang 34.1 736 |(% style="width:99px" %)0XFF|(% style="width:72px" %)0X03|(% style="width:64px" %)0X00|(% style="width:68px" %)0X0A|(% style="width:70px" %)0X00|(% style="width:72px" %)0X02|(% style="width:56px" %)0XF1|(% style="width:56px" %)0XD7
Karry Zhuang 32.3 737
Karry Zhuang 34.1 738 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.
Karry Zhuang 32.3 739
740
Xiaoling 45.77 741 **response:**
Karry Zhuang 32.3 742
Karry Zhuang 34.1 743 Register 0 data high and register 0 data low indicate the actual address of the sensor: 1
744 Register 1 data high and register 1 data low indicate the sensor version
Karry Zhuang 32.3 745
Xiaoling 45.77 746 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.80 747 |=(% style="width: 40px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data high|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data low|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Register 1 Data high|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)Register 1 Data low|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 59.75px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
Karry Zhuang 34.1 748 |(% style="width:99px" %)0XFF|(% style="width:72px" %)0X03|(% style="width:64px" %)0X04|(% style="width:68px" %)0X00|(% style="width:70px" %)0X01|(% style="width:72px" %)0X00|(% style="width:56px" %)0X00|(% style="width:56px" %)0XB4|(% style="width:56px" %)0X3C
749
Karry Zhuang 33.2 750 === 4.6.2 Change address ===
Karry Zhuang 32.3 751
Xiaoling 45.77 752
Karry Zhuang 34.1 753 For example: Change the address of the sensor with address 1 to 2(address range: 1-119), master → slave
Karry Zhuang 33.2 754
Xiaoling 45.77 755 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.83 756 |=(% style="width: 40px; background-color: rgb(79, 129, 189); color: white;" %)Original address|=(% style="width: 40px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 40px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address high|=(% style="width: 40px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address low|=(% style="width: 40px; background-color: rgb(79, 129, 189); color: white;" %)Register length high|=(% style="width: 40px; background-color: rgb(79, 129, 189); color: white;" %)Register length low|=(% style="width: 40px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 40px; background-color: rgb(79, 129, 189); color: white;" %)Start address high|=(% style="width: 40px; background-color: rgb(79, 129, 189); color: white;" %)Start address low|=(% style="width: 40px; background-color: rgb(79, 129, 189); color: white;" %)Sensor version|=(% style="width: 40px; background-color: rgb(79, 129, 189); color: white;" %)Sensor version|=(% style="width: 39px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high|=(% style="width: 39px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low
Karry Zhuang 33.2 757 |(% style="width:67px" %)0X01|(% style="width:71px" %)0X10|(% style="width:65px" %)0X00|(% style="width:65px" %)0X0A|(% style="width:70px" %)0X00|(% style="width:72px" %)0X02|(% style="width:53px" %)0X04|(% style="width:53px" %)0X00|(% style="width:72px" %)0X02|(% style="width:53px" %)0X00|(% style="width:53px" %)0X00|(% style="width:56px" %)0XD2|(% style="width:53px" %)0X10
758
Xiaoling 45.77 759 **response:**
Karry Zhuang 32.3 760
Xiaoling 45.77 761 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.81 762 |=(% style="width: 42px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register length high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register length low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
Karry Zhuang 34.1 763 |(% style="width:99px" %)0X01|(% style="width:72px" %)0X10|(% style="width:64px" %)0X00|(% style="width:68px" %)0X0A|(% style="width:70px" %)0X00|(% style="width:72px" %)0X02|(% style="width:56px" %)0X61|(% style="width:56px" %)0XCA
Karry Zhuang 32.3 764
Karry Zhuang 34.1 765 === 4.6.3 Query data ===
Edwin Chen 9.1 766
767
Karry Zhuang 34.2 768 Query the data (dissolved oxygen) of the sensor (address 14), host → slave
Karry Zhuang 34.1 769
Xiaoling 45.77 770 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.81 771 |=(% style="width: 42px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register length high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register length low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
Karry Zhuang 34.1 772 |(% style="width:99px" %)0X14|(% style="width:72px" %)0X03|(% style="width:64px" %)0X00|(% style="width:68px" %)0X14|(% style="width:70px" %)0X00|(% style="width:72px" %)0X01|(% style="width:56px" %)0XC6|(% style="width:56px" %)0XCB
773
Karry Zhuang 34.2 774 If the sensor receives correctly, the following data will be returned, slave → host
Karry Zhuang 34.1 775
Xiaoling 45.77 776 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.81 777 |=(% style="width: 44px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data high|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data low|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
Karry Zhuang 34.2 778 |(% style="width:99px" %)0X14|(% style="width:72px" %)0X03|(% style="width:68px" %)0X02|(% style="width:70px" %)0X03|(% style="width:72px" %)0X78|(% style="width:56px" %)0XB5|(% style="width:56px" %)0X55
Karry Zhuang 34.1 779
Karry Zhuang 11.1 780 After the query, 7 bytes will be returned. For example, the returned data is 14 03 02 (% style="color:red" %)**03 78**(%%) B5 55. 03 78 is the value of dissolved oxygen.
Karry Zhuang 10.1 781
782 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
783
Karry Zhuang 11.1 784
Karry Zhuang 34.2 785 Query the data (temperature) of the sensor (address 14), host → slave
786
Xiaoling 45.77 787 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.82 788 |=(% style="width: 42px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register length high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register length low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
Karry Zhuang 34.2 789 |(% style="width:99px" %)0X14|(% style="width:72px" %)0X03|(% style="width:64px" %)0X00|(% style="width:68px" %)0X11|(% style="width:70px" %)0X00|(% style="width:72px" %)0X01|(% style="width:56px" %)0XD6|(% style="width:56px" %)0XCA
790
791 If the sensor receives correctly, the following data will be returned, slave → host
792
Xiaoling 45.77 793 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.82 794 |=(% style="width: 44px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data high|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data low|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
Karry Zhuang 34.2 795 |(% style="width:99px" %)0X14|(% style="width:72px" %)0X03|(% style="width:68px" %)0X02|(% style="width:70px" %)0X09|(% style="width:72px" %)0XA4|(% style="width:56px" %)0XB2|(% style="width:56px" %)0X6C
796
797 After the query, 7 bytes will be returned. For example, the returned data is 14 03 02 (% style="color:red" %)**09 A4**(%%) B2 6C. 03 78 is the value of dissolved oxygen temperature.
798
Xiaoling 45.77 799 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
Karry Zhuang 34.2 800
801
Edwin Chen 8.1 802 = 5. DR-TS1 Water Turbidity Sensor =
803
Xiaoling 45.77 804 == 5.1 Specification ==
Edwin Chen 9.1 805
Karry Zhuang 10.1 806
Karry Zhuang 49.1 807 * **Measuring range**: 0.1~~1000.0NTU
Karry Zhuang 32.3 808
809 * **Accuracy**: ±5%
Xiaoling 45.77 810
Karry Zhuang 32.3 811 * **Resolution**: 0.1NTU
Xiaoling 45.77 812
Karry Zhuang 32.3 813 * **Stability**: ≤3mV/24 hours
814
Karry Zhuang 54.1 815 * **Output signal**: RS485 (standard Modbus-RTU protocol, device default address: 01)
Xiaoling 45.77 816
Xiaoling 55.1 817 * **Power supply voltage**: 5~~24V DC (when output signal is RS485), 12~~24V DC (when output signal is 4~~20mA)
Xiaoling 45.77 818
Karry Zhuang 59.1 819 * **Working environment:**
820 ** Ambient Temperature: 0–60°C
821 ** Relative Humidity: <85% RH(Specifically refers to the cable male and female)
Xiaoling 45.77 822
823 * **Power consumption**: ≤ 0.5W
824
Karry Zhuang 32.3 825 == 5.2 wiring ==
826
Xiaoling 45.77 827
Karry Zhuang 45.1 828 [[image:image-20240720172640-5.png||height="387" width="635"]]
Karry Zhuang 32.3 829
Karry Zhuang 45.1 830
Karry Zhuang 32.3 831 == 5.3 Impedance requirements for current signals ==
832
Xiaoling 45.88 833
Xiaoling 46.3 834 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:400px" %)
835 |(% style="width:132px" %)**Supply Voltage**|(% style="width:67px" %)**9V**|(% style="width:67px" %)**12V**|(% style="width:67px" %)**20V**|(% style="width:67px" %)**24V**
836 |(% style="width:132px" %)**Max Impedance**|(% style="width:65px" %)**<250Ω**|(% style="width:67px" %)**<400Ω**|(% style="width:67px" %)**<500Ω**|(% style="width:65px" %)**<900Ω**
Karry Zhuang 32.3 837
838 == 5.4 Mechinical Drawing ==
839
Xiaoling 45.77 840
Karry Zhuang 32.3 841 [[image:image-20240718195058-7.png||height="305" width="593"]]
842
843
Karry Zhuang 39.1 844 == 5.5 Instructions for use and maintenance ==
Karry Zhuang 32.3 845
Xiaoling 45.77 846
Karry Zhuang 32.3 847 * It can be directly put into water without adding a protective tube, ensuring the long-term stability, reliability and accuracy of the sensor.
Xiaoling 45.77 848
Karry Zhuang 32.3 849 * If the water conditions are complex and you want accurate data, you need to wipe the sensor probe frequently.
850
851 == 5.6 RS485 Commands ==
852
853
Karry Zhuang 36.1 854 RS485 signaldefault address 0x15
855 Standard Modbus-RTU protocol, baud rate: 9600; check bit: none; data bit: 8; stop bit: 1
856
Xiaoling 45.77 857
Karry Zhuang 36.1 858 === 5.6.1 Query address ===
859
Karry Zhuang 32.3 860
Xiaoling 45.77 861 **send:**
862
863 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.86 864 |=(% style="width: 80.75px;background-color:#4F81BD;color:white" %)Original address|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Address high|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Address low|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Quantity high|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 54.75px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 58.75px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
Xiaoling 45.84 865 |(% style="width:99px" %)0XFE |(% style="width:64.75px" %)0X03|(% style="width:64px" %)0X00|(% style="width:64.75px" %)0X50|(% style="width:70px" %)0X00|(% style="width:72px" %)0X00|(% style="width:56px" %)0X51|(% style="width:56px" %)0XD4
Karry Zhuang 32.3 866
867 If you forget the original address of the sensor, you can use the broadcast address 0XFE instead. When using 0XFE, the host can only connect to one slave, which can be used as a method of address query.
868
869
Xiaoling 45.77 870 **response:**
Karry Zhuang 32.3 871
Xiaoling 45.77 872 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.84 873 |=(% style="width: 103.6px;background-color:#4F81BD;color:white" %)New address|=(% style="width: 103.6px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 103.6px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 103.6px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 103.6px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
Karry Zhuang 32.3 874 |(% style="width:99px" %)0X01|(% style="width:112px" %)0X03|(% style="width:106px" %)0X00|(% style="width:93px" %)0X20|(% style="width:104px" %)0XF0
875
Karry Zhuang 36.1 876 === 5.6.2 Change address ===
Karry Zhuang 32.3 877
Xiaoling 45.87 878
Karry Zhuang 36.1 879 For example: Change the address of the sensor with address 1 to 2, master → slave
Karry Zhuang 10.1 880
Xiaoling 45.77 881 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.86 882 |=(% style="width: 80.75px;background-color:#4F81BD;color:white" %)Original address|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 64.75px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 64.75px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 54.75px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 58.75px;background-color:#4F81BD;color:white" %)CRC16 high
Karry Zhuang 36.1 883 |(% style="width:99px" %)0X01|(% style="width:112px" %)0X06|(% style="width:135px" %)0X00|(% style="width:126px" %)0X50|(% style="width:85px" %)0X00|(% style="width:1px" %)0X02|(% style="width:1px" %)0X08|(% style="width:1px" %)0X1A
884
885 If the sensor receives correctly, the data is returned along the original path.
886
Xiaoling 45.77 887 (% style="color:red" %)**Note: If you forget the original address of the sensor, you can use the broadcast address 0XFE instead. When using 0XFE, the host can only connect to one slave, and the return address is still the original address, which can be used as a method of address query.**
888
Xiaoling 45.84 889
Karry Zhuang 36.1 890 === 5.6.3 Query data ===
891
892
893 Query the data (turbidity) of the sensor (address 15), host → slave
894
Xiaoling 45.77 895 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.84 896 |=(% style="width: 42px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register length high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register length low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
Karry Zhuang 36.1 897 |(% style="width:99px" %)0X15|(% style="width:72px" %)0X03|(% style="width:64px" %)0X00|(% style="width:68px" %)0X00|(% style="width:70px" %)0X00|(% style="width:72px" %)0X01|(% style="width:56px" %)0X87|(% style="width:56px" %)0X1E
898
899 If the sensor receives correctly, the following data will be returned, slave → host
900
Xiaoling 45.77 901 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:518px" %)
Xiaoling 45.84 902 |=(% style="width: 44px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data high|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data low|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 79px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
Karry Zhuang 36.1 903 |(% style="width:99px" %)0X15|(% style="width:72px" %)0X03|(% style="width:68px" %)0X02|(% style="width:70px" %)0X02|(% style="width:72px" %)0X9A|(% style="width:56px" %)0X09|(% style="width:56px" %)0X4C
904
Karry Zhuang 11.1 905 The query data command is 15 03 00 00 00 01 87 1E
Karry Zhuang 10.1 906
Karry Zhuang 11.1 907 For example, the returned data is 15 03 02 (% style="color:red" %)**02 9A**(%%) 09 4C
908
909 02 9A is the turbidity value, converted to decimal, it is 666, and then divided by 10, the actual value is 66.6, 02 9A means the current turbidity value is 66.6 NTU
Xiaoling 49.2 910
911
912 = 6.  Water Quality Sensor Datasheet =
913
914
Xiaoling 51.1 915 * **[[Water Quality Sensor Transmitter Datasheet>>https://www.dropbox.com/scl/fi/9tofocmgapkbddshznumn/Datasheet_WQS-xB-WQS-xS_Water-Quality-Sensor-Transmitter.pdf?rlkey=wxua12ur9swk30rkqnh2boo9z&st=axga6epf&dl=0]]**