Wiki source code of Water Quality Sensors

Version 35.1 by Karry Zhuang on 2024/07/19 16:45

Hide last authors
Edwin Chen 1.1 1 **Table of Contents:**
2
3 {{toc/}}
4
5
Edwin Chen 7.1 6 = 1. DR-ECK Water EC Probe =
7
8 == 1.1 Specification: ==
9
10 * **Power Input**: DC7~~30
11 * **Power Consumption** : < 0.5W
12 * **Interface**: RS485. 9600 Baud Rate
13 * **EC Range & Resolution:**
14 ** **ECK0.01** : 0.02 ~~ 20 μS/cm
15 ** **ECK0.1**: 0.2 ~~ 200.0 μS/cm
16 ** **ECK1.0** : 2 ~~ 2,000 μS/cm  Resolution: 1 μS/cm
17 ** **ECK10.0** : 20 ~~ 20,000 μS/cm  Resolution: 10 μS/cm
18 * **EC Accuracy**: ±1% FS
19 * **Temperature Measure Range**: -20 ~~ 60 °C
20 * **Temperature Accuracy: **±0.5 °C
21 * **IP Rated**: IP68
22 * **Max Pressure**: 0.6MPa
23
24 == 1.2 Application for Different Range ==
25
26 [[image:image-20240714173018-1.png]]
27
28
29 == 1.3 Wiring ==
30
31
32 == 1.4 Mechinical Drawing ==
33
34 [[image:image-20240714174241-2.png]]
35
36
37 == 1.5 Installation ==
38
39
Karry Zhuang 18.1 40 **Electrode installation form**
Karry Zhuang 15.2 41
Karry Zhuang 18.1 42 A:Side wall installation
Karry Zhuang 15.2 43
Karry Zhuang 18.1 44 B:Top flange installation
Karry Zhuang 15.2 45
Karry Zhuang 18.1 46 C:Pipeline bend installation
Karry Zhuang 15.2 47
Karry Zhuang 18.1 48 D:Pipeline bend installation
Karry Zhuang 15.2 49
Karry Zhuang 18.1 50 E:Flow-through installation
Karry Zhuang 15.2 51
Karry Zhuang 18.1 52 F:Submerged installation
Karry Zhuang 15.2 53
Karry Zhuang 23.1 54 [[image:image-20240718190121-1.png||height="350" width="520"]]
Karry Zhuang 15.2 55
Karry Zhuang 18.1 56 **Several common installation methods of electrodes**
Karry Zhuang 15.2 57
Karry Zhuang 18.1 58 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 59
Karry Zhuang 18.1 60 A. Several common incorrect installation methods
Karry Zhuang 15.2 61
Karry Zhuang 23.1 62 [[image:image-20240718190204-2.png||height="262" width="487"]]
Karry Zhuang 15.2 63
Karry Zhuang 18.1 64 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 65
Karry Zhuang 23.1 66 [[image:image-20240718190221-3.png||height="292" width="500"]]
Karry Zhuang 18.1 67
68 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.
69
70 B. Correct installation method
71
Karry Zhuang 23.1 72 [[image:image-20240718190249-4.png||height="287" width="515"]]
Karry Zhuang 18.1 73
74
Edwin Chen 7.1 75 == 1.6 Maintain ==
76
77
Karry Zhuang 26.1 78 * 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.
79 * 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.
80 * 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.
81 * 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 82
Edwin Chen 8.1 83 == 1.7 RS485 Commands ==
84
Karry Zhuang 15.2 85
86 RS485 signal (K1 default address 0x12; K10 default address 0x11):
87 Standard Modbus-RTU protocol, baud rate: 9600; check bit: none; data bit: 8; stop bit: 1
88
89
Karry Zhuang 16.1 90 === 1.7.1 Query address ===
Edwin Chen 8.1 91
Karry Zhuang 16.1 92 send
Karry Zhuang 11.1 93
Karry Zhuang 32.2 94 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:599.333px" %)
95 |=(% style="width: 50px;background-color:#4F81BD;color:white" %)Original address|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 64px; 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: 70px; background-color: rgb(79, 129, 189); color: white;" %)Quantity high|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 56px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 56px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
96 |(% style="width:99px" %)0XFE |(% style="width:72px" %)0X03|(% style="width:64px" %)0X00|(% style="width:68px" %)0X50|(% style="width:70px" %)0X00|(% style="width:72px" %)0X00|(% style="width:56px" %)0X51|(% style="width:56px" %)0XD4
Karry Zhuang 16.1 97
98 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.
99
100
101 response
102
103 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:561.333px" %)
104 |=(% style="width: 50px;background-color:#4F81BD;color:white" %)New address|=(% style="width: 50px;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 105 |(% style="width:99px" %)0X01|(% style="width:112px" %)0X03|(% style="width:106px" %)0X00|(% style="width:93px" %)0X20|(% style="width:104px" %)0XF0
Karry Zhuang 16.1 106
107 === 1.7.2 Change address ===
108
109 For example: Change the address of the sensor with address 1 to 2, master → slave
110
Karry Zhuang 32.2 111 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:575.333px" %)
112 |=(% style="width: 69px; background-color: rgb(79, 129, 189); color: white;" %)Original address|=(% style="width: 76px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 67px; 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: 73px; background-color: rgb(79, 129, 189); color: white;" %)Quantity high|=(% style="width: 73px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 57px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 56px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
113 |(% style="width:69px" %)0X01|(% style="width:76px" %)0X06|(% style="width:67px" %)0X00|(% style="width:68px" %)0X50|(% style="width:73px" %)0X00|(% style="width:73px" %)0X02|(% style="width:57px" %)0X08|(% style="width:56px" %)0X1A
Karry Zhuang 16.1 114
115 If the sensor receives correctly, the data is returned along the original path.
116 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.
117
118
119 === 1.7.3 Modify intercept ===
120
121
122 send
123
124 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:676.25px" %)
125 |=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 1px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)CRC16 high
Karry Zhuang 27.1 126 |(% style="width:99px" %)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" %)(((
127 0X07
Karry Zhuang 16.1 128 )))
129
130 Change the intercept of the sensor with address 1 to 10 (default 0), which is 0X000A in the command.
131
132 response
133
134 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:676.25px" %)
135 |=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 1px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)CRC16 high
136 |(% style="width:99px" %)0X01|(% style="width:112px" %)0X06|(% style="width:135px" %)(((
137 0X02
Karry Zhuang 27.1 138 )))|(% style="width:126px" %)0X00|(% style="width:85px" %)0X00|(% style="width:1px" %)0X0A|(% style="width:1px" %)0X38|(% style="width:1px" %)(((
139 0X8F
Karry Zhuang 16.1 140 )))
141
142 === 1.7.4 Query data ===
143
Karry Zhuang 16.3 144 The address of the EC K10 sensor is 11
Karry Zhuang 16.1 145
Karry Zhuang 10.1 146 The query data command is 11 03 00 00 00 02 C6 9B
147
Karry Zhuang 11.1 148 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
Karry Zhuang 10.1 149
150
151 The address of the EC K1 sensor is 12
152
153 The query data command is 12 03 00 00 00 02 C6 A8
154
Karry Zhuang 16.1 155 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
Karry Zhuang 10.1 156
Karry Zhuang 11.1 157
Karry Zhuang 16.2 158 === 1.7.5 Calibration Method ===
Karry Zhuang 12.1 159
160
Karry Zhuang 15.1 161 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 162
Karry Zhuang 15.1 163 The calibration steps are as follows:
164 (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.
165
Karry Zhuang 14.1 166 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:676.25px" %)
167 |=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 1px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 139.083px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Data|=(% style="width: 50px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)CRC16 high
168 |(% 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" %)(((
169 0X00
Karry Zhuang 12.1 170
Karry Zhuang 14.1 171 0X00
172
173 0X37
174
175 0X32
176 )))|(% style="width:1px" %)0XBD|(% style="width:1px" %)0XFC
177
Karry Zhuang 15.1 178 1413*10 gives 0X00003732
Karry Zhuang 14.1 179
Karry Zhuang 16.1 180 response
Karry Zhuang 15.1 181
Karry Zhuang 13.1 182 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:676.25px" %)
Karry Zhuang 14.1 183 |=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 1px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)CRC16 high
184 |(% 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
185
186 (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
187
188 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:676.25px" %)
Karry Zhuang 13.1 189 |=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 1px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 139.083px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Data|=(% style="width: 50px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)CRC16 high
Karry Zhuang 14.1 190 |(% 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" %)(((
191 0X00
Karry Zhuang 12.1 192
Karry Zhuang 14.1 193 0X01
194
195 0XF7
196
197 0X20
198 )))|(% style="width:1px" %)0X33|(% style="width:1px" %)0X75
199
Karry Zhuang 15.1 200 12880*10 gives 0X01F720
201
Karry Zhuang 16.1 202 response
Karry Zhuang 14.1 203
204 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:676.25px" %)
205 |=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 1px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)CRC16 high
206 |(% 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
207
Edwin Chen 8.1 208 = 2. DR-PH01 Water PH Sensor =
209
210
Karry Zhuang 28.2 211 == 2.1 Specification ==
Edwin Chen 9.1 212
Karry Zhuang 26.1 213 * **Power Input**: DC7~~30
214 * **Power Consumption** : < 0.5W
215 * **Interface**: RS485. 9600 Baud Rate
216 * **pH measurement range**: 0~~14.00pH; resolution: 0.01pH
217 * **pH measurement error**:±0.15pH
218 * **Repeatability error**:±0.02pH
219 * **Temperature measurement range**:0~~60℃; resolution: 0.1℃ (set temperature for manual temperature compensation, default 25℃)
220 * **Temperature measurement error**: ±0.5℃
221 * **Temperature Measure Range**: -20 ~~ 60 °C
222 * **Temperature Accuracy: **±0.5 °C
223 * **IP Rated**: IP68
224 * **Max Pressure**: 0.6MPa
225
226 == 2.2 Wiring ==
227
228
229 == (% style="color:inherit; font-family:inherit" %)2.3 (% style="color:inherit; font-family:inherit; font-size:26px" %)Mechinical Drawing(%%) ==
230
231 [[image:image-20240714174241-2.png]]
232
233
234 == 2.4 Installation Notice ==
235
236 Do not power on while connect the cables. Double check the wiring before power on.
237
238 Installation Photo as reference:
239
240 **~ Submerged installation:**
241
242 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.
243
244 [[image:image-20240718191348-6.png]]
245
246 **~ Pipeline installation:**
247
248 Connect the equipment to the pipeline through the 3/4 thread.
249
250 [[image:image-20240718191336-5.png||height="239" width="326"]]
251
252 **Sampling:**
253
254 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.
255
256 **Measure the pH of the water sample:**
257
258 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.
259
260
261 === 2.5 Maintenance ===
262
263
264 * 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!
265 * 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.
266 * 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.
267 * 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.
268 * 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.
269 * The electrode should be cleaned with deionized water before and after measurement to ensure accuracy.
270 * 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.
271 * 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.
272 * (((
273 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.
274 )))
275
276 == 2.6 RS485 Commands ==
277
Karry Zhuang 27.1 278 RS485 signaldefault address 0x10
279 Standard Modbus-RTU protocol, baud rate: 9600; check bit: none; data bit: 8; stop bit: 1
Karry Zhuang 26.1 280
Karry Zhuang 33.2 281 === 2.6.1 Query address ===
Karry Zhuang 27.1 282
283 send
284
285 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:676.25px" %)
286 |=(% style="width: 50px;background-color:#4F81BD;color:white" %)Original address|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 1px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)CRC16 high
287 |(% 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
288
289 response
290
291 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:561.333px" %)
292 |=(% style="width: 50px;background-color:#4F81BD;color:white" %)New address|=(% style="width: 50px;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
293 |(% style="width:99px" %)0X01|(% style="width:112px" %)0X03|(% style="width:106px" %)0X00|(% style="width:93px" %)0X20|(% style="width:104px" %)0XF0
294
295 === 2.6.2 Change address ===
296
297 For example: Change the address of the sensor with address 1 to 2, master → slave
298
299 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:676.25px" %)
300 |=(% style="width: 50px;background-color:#4F81BD;color:white" %)Original address|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 1px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)CRC16 high
301 |(% 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
302
303 If the sensor receives correctly, the data is returned along the original path.
304 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.
305
306
307 === 2.6.3 Modify intercept ===
308
309
310 send
311
Karry Zhuang 34.3 312 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:570.333px" %)
313 |=(% style="width: 71px; background-color: rgb(79, 129, 189); color: white;" %)Address|=(% style="width: 74px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 67px; 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: 69px; background-color: rgb(79, 129, 189); color: white;" %)Register Length high|=(% style="width: 66px; background-color: rgb(79, 129, 189); color: white;" %)Register Length low|=(% style="width: 57px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 57px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
314 |(% 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 315 0XA5
316 )))
317
Karry Zhuang 34.4 318 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 319
320 response
321
322 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:676.25px" %)
323 |=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 1px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)CRC16 high
324 |(% style="width:99px" %)0X10|(% style="width:112px" %)0X06|(% style="width:135px" %)(((
325 0X00
326 )))|(% style="width:126px" %)0X10|(% style="width:85px" %)0X00|(% style="width:1px" %)0X64|(% style="width:1px" %)0X8A|(% style="width:1px" %)(((
327 0XA5
328 )))
329
330 === 2.6.4 Query data ===
331
332
Karry Zhuang 34.3 333 Query the data (PH) of the sensor (address 10), host → slave
Edwin Chen 9.1 334
Karry Zhuang 34.3 335 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:599.333px" %)
336 |=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 64px; 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: 70px; background-color: rgb(79, 129, 189); color: white;" %)Register length high|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Register length low|=(% style="width: 56px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 56px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
337 |(% 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
338
339 If the sensor receives correctly, the following data will be returned, slave → host
340
341 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:599.333px" %)
342 |=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data high|=(% style="width: 70px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data low|=(% style="width: 56px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 56px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
Karry Zhuang 35.1 343 |(% 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 344
Karry Zhuang 11.1 345 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 346
Karry Zhuang 11.1 347 For example, the returned data is 10 03 02 (% style="color:red" %)**02 AE**(%%) C4 9B.
348
349 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.
350
351
Karry Zhuang 27.1 352 === 2.6.5 Calibration Method ===
353
354
355 This device uses three-point calibration, and three known pH standard solutions need to be prepared.
356 The calibration steps are as follows:
357 (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.
358
359 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:575.333px" %)
360 |=(% style="width: 64px; 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
361 |(% style="width:64px" %)0X10|(% style="width:72px" %)0X06|(% style="width:66px" %)(((
362 0X00
363 )))|(% style="width:68px" %)0X20|(% style="width:72px" %)0XFF|(% style="width:70px" %)0XFF|(% style="width:55px" %)0X8A|(% style="width:55px" %)(((
364 0XF1
365 )))
366
367 (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.
368
369 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:575.333px" %)
370 |=(% style="width: 64px; 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
371 |(% style="width:64px" %)0X10|(% style="width:72px" %)0X06|(% style="width:66px" %)(((
372 0X00
373 )))|(% style="width:68px" %)0X21|(% style="width:72px" %)0XFF|(% style="width:70px" %)0XFF|(% style="width:55px" %)0XDB|(% style="width:55px" %)(((
374 0X31
375 )))
376
377 (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.
378
379 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:575.333px" %)
380 |=(% style="width: 64px; 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
381 |(% style="width:64px" %)0X10|(% style="width:72px" %)0X06|(% style="width:66px" %)(((
382 0X00
383 )))|(% style="width:68px" %)0X22|(% style="width:72px" %)0XFF|(% style="width:70px" %)0XFF|(% style="width:55px" %)0X2B|(% style="width:55px" %)(((
384 0X31
385 )))
386
387 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.
388
389
Edwin Chen 8.1 390 = 3. DR-ORP1 Water ORP Sensor =
391
Karry Zhuang 27.2 392
Karry Zhuang 28.2 393 == 3.1 Specification ==
Karry Zhuang 27.2 394
395 * **Power Input**: DC7~~30
Karry Zhuang 32.1 396 * **Measuring range**:** **-1999~~1999mV
397 **Resolution**: 1mV
Karry Zhuang 27.2 398 * **Interface**: RS485. 9600 Baud Rate
399 * **Measurement error**: ±3mV
400 * **Stability**: ≤2mv/24 hours
401 * **Equipment working conditions**: Ambient temperature: 0-60℃ Relative humidity: <85%RH
402 * **IP Rated**: IP68
403 * **Max Pressure**: 0.6MPa
404
405 == 3.2 Wiring ==
406
407
408 == 3.3 Mechinical Drawing ==
409
410 [[image:image-20240714174241-2.png]]
411
412 == 3.4 Installation Notice ==
413
414 Do not power on while connect the cables. Double check the wiring before power on.
415
416 Installation Photo as reference:
417
418 **~ Submerged installation:**
419
420 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.
421
422 [[image:image-20240718191348-6.png]]
423
424 **~ Pipeline installation:**
425
426 Connect the equipment to the pipeline through the 3/4 thread.
427
428 [[image:image-20240718191336-5.png||height="239" width="326"]]
429
430
Karry Zhuang 32.3 431 === 3.5 Maintenance ===
Edwin Chen 8.1 432
Edwin Chen 9.1 433
Karry Zhuang 29.1 434 (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 435
Karry Zhuang 29.1 436 (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 437
Karry Zhuang 29.1 438 (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 439
Karry Zhuang 29.1 440 (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 441
Karry Zhuang 29.1 442 (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 443
Karry Zhuang 29.1 444 (6) The electrode should be cleaned with deionized water before and after the measurement to ensure the measurement accuracy.
Karry Zhuang 32.3 445
Karry Zhuang 29.1 446 (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 447
Karry Zhuang 29.1 448 (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 449
Karry Zhuang 29.1 450 (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.
451
452 == 3.6 RS485 Commands ==
453
454
455 RS485 signaldefault address 0x13
456 Standard Modbus-RTU protocol, baud rate: 9600; check bit: none; data bit: 8; stop bit: 1
457
Karry Zhuang 33.2 458 === 3.6.1 Query address ===
Karry Zhuang 29.1 459
460 send
461
462 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:676.25px" %)
463 |=(% style="width: 50px;background-color:#4F81BD;color:white" %)Original address|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 1px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)CRC16 high
464 |(% 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
465
466 response
467
468 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:561.333px" %)
469 |=(% style="width: 50px;background-color:#4F81BD;color:white" %)New address|=(% style="width: 50px;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
470 |(% style="width:99px" %)0X01|(% style="width:112px" %)0X03|(% style="width:106px" %)0X00|(% style="width:93px" %)0X20|(% style="width:104px" %)0XF0
471
472 === 3.6.2 Change address ===
473
474 For example: Change the address of the sensor with address 1 to 2, master → slave
475
476 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:676.25px" %)
477 |=(% style="width: 50px;background-color:#4F81BD;color:white" %)Original address|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 1px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)CRC16 high
478 |(% 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
479
480 If the sensor receives correctly, the data is returned along the original path.
481 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.
482
483
484 === 3.6.3 Modify intercept ===
485
486 send
487
488 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:676.25px" %)
Karry Zhuang 35.1 489 |=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 67px; 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: 69px; background-color: rgb(79, 129, 189); color: white;" %)Register Length high|=(% style="width: 66px; background-color: rgb(79, 129, 189); color: white;" %)Register Length low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)CRC16 high
Karry Zhuang 29.1 490 |(% 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" %)(((
491 0X96
492 )))
493
494 Change the intercept of the sensor with address 1 to 10 (default 0), which is 0X000A in the command.
495
496 response
497
498 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:676.25px" %)
499 |=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Function code|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address high|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)Quantity high|=(% style="width: 1px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)CRC16 low|=(% style="width: 50px;background-color:#4F81BD;color:white" %)CRC16 high
500 |(% style="width:99px" %)0X13|(% style="width:112px" %)0X06|(% style="width:135px" %)(((
501 0X00
502 )))|(% style="width:126px" %)0X10|(% style="width:85px" %)0X00|(% style="width:1px" %)0X64|(% style="width:1px" %)0X8A|(% style="width:1px" %)(((
503 0X96
504 )))
505
506 === 3.6.4 Query data ===
507
Edwin Chen 9.1 508
Karry Zhuang 35.1 509 Query the data (ORP) of the sensor (address 10), host → slave
510
511 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:599.333px" %)
512 |=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 64px; 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: 70px; background-color: rgb(79, 129, 189); color: white;" %)Register length high|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Register length low|=(% style="width: 56px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 56px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
513 |(% 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
514
515 If the sensor receives correctly, the following data will be returned, slave → host
516
517 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:599.333px" %)
518 |=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data high|=(% style="width: 70px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data low|=(% style="width: 56px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 56px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
519 |(% 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
520
Karry Zhuang 11.1 521 The query data command is 13 03 00 00 00 01 87 78
Karry Zhuang 10.1 522
Karry Zhuang 11.1 523 For example, the returned data is 13 03 02 (% style="color:red" %)**02 AE**(%%) 80 9B.
Karry Zhuang 10.1 524
Karry Zhuang 11.1 525 02 AE is the ORP value, converted to decimal, the actual value is 686, 02 AE means the current ORP value is 686mV
526
527
Karry Zhuang 29.1 528 === 3.6.5 Calibration Method ===
529
530 This device uses two-point calibration, and two known ORP standard solutions need to be prepared. The calibration steps are as follows:
531 (1) Place the electrode in distilled water to clean it, and then place it in 86mV standard buffer solution. After the data stabilizes,
532 enter the following calibration command, and the 86mV point calibration is completed;
533
534 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:575.333px" %)
535 |=(% style="width: 64px; 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
536 |(% style="width:64px" %)0X13|(% style="width:72px" %)0X06|(% style="width:66px" %)(((
537 0X00
538 )))|(% style="width:68px" %)0X24|(% style="width:72px" %)0XFF|(% style="width:70px" %)0XFF|(% style="width:55px" %)0XCB|(% style="width:55px" %)(((
539 0X03
540 )))
541
542 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.
543
544 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:575.333px" %)
545 |=(% style="width: 64px; 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
546 |(% style="width:64px" %)0X13|(% style="width:72px" %)0X06|(% style="width:66px" %)(((
547 0X00
548 )))|(% style="width:68px" %)0X25|(% style="width:72px" %)0XFF|(% style="width:70px" %)0XFF|(% style="width:55px" %)0X9A|(% style="width:55px" %)(((
549 0XC3
550 )))
551
Edwin Chen 8.1 552 = 4. DR-DO1 Dissolved Oxygen Sensor =
553
554
Karry Zhuang 11.1 555
Karry Zhuang 32.1 556 == 4.1 Specification ==
557
Karry Zhuang 33.2 558
559 * **Measuring range**: 0-20mg/L, 0-50℃
560 * **Accuracy**: 3%, ±0.5℃
561 * **Resolution**: 0.01 mg/L, 0.01℃
562 * **Maximum operating pressure**: 6 bar
563 * **Output signal**: A: 4-20mA (current loop)B: RS485 (standard Modbus-RTU protocol, device default address: 01)
564 * **Power supply voltage**: 5-24V DC
565 * **Working environment**: temperature 0-60℃; humidity <95%RH
Karry Zhuang 32.1 566 * **Power consumption**: ≤0.5W
567
Karry Zhuang 33.2 568 == 4.2 wiring ==
Karry Zhuang 32.1 569
Karry Zhuang 33.2 570
571
572 == (% id="cke_bm_224234S" style="display:none" %) (%%)4.3 Impedance requirements for current signals ==
573
Karry Zhuang 32.1 574 [[image:image-20240718195414-8.png||height="100" width="575"]]
575
576
577 == 4.4 Mechinical Drawing ==
578
579
Karry Zhuang 33.2 580 [[image:image-20240719155308-1.png||height="226" width="527"]]
Karry Zhuang 32.1 581
Karry Zhuang 33.2 582
Karry Zhuang 32.1 583 === 4.5 Instructions for use and maintenance ===
584
585 * It can be directly put into water without adding a protective tube, ensuring the long-term stability, reliability and accuracy of the sensor.
586 * If the water conditions are complex and you want accurate data, you need to wipe the sensor probe frequently.
587
588 == 4.6 RS485 Commands ==
589
Karry Zhuang 34.1 590 RS485 signaldefault address 0x14
591 Standard Modbus-RTU protocol, baud rate: 9600; check bit: none; data bit: 8; stop bit: 1
592
Karry Zhuang 32.3 593 === 4.6.1 Query address ===
Karry Zhuang 32.1 594
Karry Zhuang 32.3 595 send
596
597 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:599.333px" %)
Karry Zhuang 34.1 598 |=(% style="width: 50px;background-color:#4F81BD;color:white" %)Original address|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 64px; background-color: rgb(79, 129, 189); color: white;" %)Register address high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register address low|=(% style="width: 70px; background-color: rgb(79, 129, 189); color: white;" %)Register length high|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Register length low|=(% style="width: 56px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 56px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
599 |(% 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 600
Karry Zhuang 34.1 601 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 602
603
604 response
605
Karry Zhuang 34.1 606 Register 0 data high and register 0 data low indicate the actual address of the sensor: 1
607 Register 1 data high and register 1 data low indicate the sensor version
Karry Zhuang 32.3 608
Karry Zhuang 34.1 609 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:599.333px" %)
610 |=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 64px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data high|=(% style="width: 70px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data low|=(% style="width: 70px; background-color: rgb(79, 129, 189); color: white;" %)Register 1 Data high|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Register 1 Data low|=(% style="width: 56px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 56px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
611 |(% 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
612
Karry Zhuang 33.2 613 === 4.6.2 Change address ===
Karry Zhuang 32.3 614
Karry Zhuang 34.1 615 For example: Change the address of the sensor with address 1 to 2(address range: 1-119), master → slave
Karry Zhuang 33.2 616
617 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:907.333px" %)
618 |=(% style="width: 67px; background-color: rgb(79, 129, 189); color: white;" %)Original address|=(% style="width: 71px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 65px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address high|=(% style="width: 65px; background-color: rgb(79, 129, 189); color: white;" %)Starting register address low|=(% style="width: 70px; background-color: rgb(79, 129, 189); color: white;" %)Register length high|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Register length low|=(% style="width: 53px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 53px; background-color: rgb(79, 129, 189); color: white;" %)Start address high|=(% style="width: 53px; background-color: rgb(79, 129, 189); color: white;" %)Start address low|=(% style="width: 53px; background-color: rgb(79, 129, 189); color: white;" %)Sensor version|=(% style="width: 53px; background-color: rgb(79, 129, 189); color: white;" %)Sensor version|=(% style="width: 56px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low
619 |(% 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
620
Karry Zhuang 34.1 621 response
Karry Zhuang 32.3 622
Karry Zhuang 34.1 623 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:599.333px" %)
624 |=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 64px; 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: 70px; background-color: rgb(79, 129, 189); color: white;" %)Register length high|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Register length low|=(% style="width: 56px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 56px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
625 |(% 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 626
Karry Zhuang 34.1 627 === 4.6.3 Query data ===
Edwin Chen 9.1 628
629
Karry Zhuang 34.2 630 Query the data (dissolved oxygen) of the sensor (address 14), host → slave
Karry Zhuang 34.1 631
632 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:599.333px" %)
633 |=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 64px; 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: 70px; background-color: rgb(79, 129, 189); color: white;" %)Register length high|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Register length low|=(% style="width: 56px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 56px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
634 |(% 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
635
Karry Zhuang 34.2 636 If the sensor receives correctly, the following data will be returned, slave → host
Karry Zhuang 34.1 637
638 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:599.333px" %)
639 |=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data high|=(% style="width: 70px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data low|=(% style="width: 56px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 56px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
Karry Zhuang 34.2 640 |(% 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 641
Karry Zhuang 11.1 642 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 643
644 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
645
Karry Zhuang 11.1 646
Karry Zhuang 34.2 647 Query the data (temperature) of the sensor (address 14), host → slave
648
649 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:599.333px" %)
650 |=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 64px; 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: 70px; background-color: rgb(79, 129, 189); color: white;" %)Register length high|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Register length low|=(% style="width: 56px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 56px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
651 |(% 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
652
653 If the sensor receives correctly, the following data will be returned, slave → host
654
655 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:599.333px" %)
656 |=(% style="width: 50px;background-color:#4F81BD;color:white" %)Address|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Data length|=(% style="width: 68px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data high|=(% style="width: 70px; background-color: rgb(79, 129, 189); color: white;" %)Register 0 Data low|=(% style="width: 56px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 56px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
657 |(% 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
658
659 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.
660
661 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℃
662
663
Edwin Chen 8.1 664 = 5. DR-TS1 Water Turbidity Sensor =
665
Edwin Chen 9.1 666
Karry Zhuang 10.1 667
Karry Zhuang 32.3 668 == (% id="cke_bm_81470S" style="display:none" %) (%%)5.1 Specification ==
669
670 * **Measuring range**: 0.1~1000.0NTU
671 * **Accuracy**: ±5%
672 * **Resolution**: 0.1NTU
673 * **Stability**: ≤3mV/24 hours
674 * **Output signal**: A: 4~20 mA (current loop)B: RS485 (standard Modbus-RTU protocol, device default address: 01)
675 * **Power supply voltage**: 5~24V DC (when output signal is RS485)12~24V DC (when output signal is 4~20mA)
676 * **Working environment**: temperature 0~60℃; humidity ≤95%RH
677 * **Power consumption**: ≤0.5W
678
679 == 5.2 wiring ==
680
681
682 == 5.3 Impedance requirements for current signals ==
683
684 [[image:image-20240718195414-8.png||height="100" width="575"]]
685
686
687 == 5.4 Mechinical Drawing ==
688
689 [[image:image-20240718195058-7.png||height="305" width="593"]]
690
691
692 === 5.5 Instructions for use and maintenance ===
693
694 * It can be directly put into water without adding a protective tube, ensuring the long-term stability, reliability and accuracy of the sensor.
695 * If the water conditions are complex and you want accurate data, you need to wipe the sensor probe frequently.
696
697 == 5.6 RS485 Commands ==
698
699 === 4.6.1 Query address ===
700
701 send
702
703 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:599.333px" %)
704 |=(% style="width: 50px;background-color:#4F81BD;color:white" %)Original address|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Function code|=(% style="width: 64px; 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: 70px; background-color: rgb(79, 129, 189); color: white;" %)Quantity high|=(% style="width: 72px; background-color: rgb(79, 129, 189); color: white;" %)Quantity low|=(% style="width: 56px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 low|=(% style="width: 56px; background-color: rgb(79, 129, 189); color: white;" %)CRC16 high
705 |(% style="width:99px" %)0XFE |(% style="width:72px" %)0X03|(% style="width:64px" %)0X00|(% style="width:68px" %)0X50|(% style="width:70px" %)0X00|(% style="width:72px" %)0X00|(% style="width:56px" %)0X51|(% style="width:56px" %)0XD4
706
707 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.
708
709
710 response
711
712 (% border="1" cellspacing="3" style="background-color:#f2f2f2; width:561.333px" %)
713 |=(% style="width: 50px;background-color:#4F81BD;color:white" %)New address|=(% style="width: 50px;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
714 |(% style="width:99px" %)0X01|(% style="width:112px" %)0X03|(% style="width:106px" %)0X00|(% style="width:93px" %)0X20|(% style="width:104px" %)0XF0
715
716 === 5.6.2 Query data ===
717
718
Karry Zhuang 10.1 719 The address of the dissolved oxygen sensor is 15
720
Karry Zhuang 11.1 721 The query data command is 15 03 00 00 00 01 87 1E
Karry Zhuang 10.1 722
Karry Zhuang 11.1 723 For example, the returned data is 15 03 02 (% style="color:red" %)**02 9A**(%%) 09 4C
724
725 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