Wiki source code of Water Quality Sensors

Version 45.48 by Xiaoling on 2024/08/06 13:55

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