





| รหัสสินค้า | AS00646 |
| หมวดหมู่ | วัดสภาพแวดล้อมและแก๊ส Environmental / Gas |
| ราคา | 9,450.00 บาท |
| สถานะสินค้า | พร้อมส่ง |
| จำนวน | ชิ้น |
ดูตัวอย่างการทำ calibration และโค๊ดตัวอย่างการใช้งานร่วมกับบอร์ด Arduino ได้ที่ Click
สินค้าใช้คู่กัน: Gravity: Active Isolated RS485 to UART Signal Adapter Module
RS485 Fluorescence Dissolved Oxygen Sensor (Seawater) คือเซนเซอร์วัดออกซิเจนที่ออกแบบมาเฉพาะสำหรับน้ำทะเลและน้ำเค็มโดยเฉพาะ วัดค่าแบบ Fluorescence จึงไม่ต้องเปลี่ยนสารละลาย ไม่กินออกซิเจน และไม่ต้องบำรุงรักษาบ่อย ให้ความเสถียรสูงกว่าวิธีไฟฟ้าเคมีทั่วไป โพรบทำจาก สเตนเลส 316 กันสนิม กันเกลือ ระดับ IP68 จุ่มน้ำได้ต่อเนื่องยาวนาน รองรับแรงดันถึง 0.6MPa ใช้งานในบ่อทะเล ฟาร์มกุ้ง มอนิเตอร์น้ำชายฝั่ง หรือทุ่นตรวจวัดกลางทะเลได้สบาย สื่อสารผ่าน RS485 ModBus-RTU เชื่อม PLC หรือ Data Logger ได้ทันที พร้อมระบบ ชดเชยอุณหภูมิอัตโนมัติ ให้ค่าที่แม่นยำในทุกสภาวะ หากคุณต้องการเซนเซอร์ที่วัด DO ในน้ำเค็มได้อย่างเชื่อถือได้จริง รุ่นนี้คือ “ตัวจบ” สำหรับงานวิจัยและงานอุตสาหกรรมระดับมืออาชีพ.
Introduction
This RS485 Fluorescence Dissolved Oxygen Sensor is an advanced monitoring instrument specifically engineered for high-salinity applications. It operates on the principle of fluorescence quenching to provide stable, accurate readings across a 0–20 mg/L (0–200% saturation) range. Unlike traditional electrochemical sensors, this method eliminates the need for electrolytes and avoids electrode polarization, ensuring long-term reliability with minimal maintenance.
Featuring an industrial-standard RS485 ModBus-RTU interface, a wide 10–30V DC power supply, and automatic temperature compensation, this sensor is designed for easy integration and dependable performance in demanding marine environments.

This seawater version is specifically designed for high-salinity waters. It utilizes specialized calibration and advanced algorithms to accurately compensate for the effects of salinity on dissolved oxygen measurement, ensuring reliable data integrity in oceans and marine aquaculture farms.
The sensor measures the phase difference between an excited red light and a reference light, a value inversely proportional to the oxygen concentration. This fluorescence-based method does not consume oxygen during measurement and requires no electrolyte replacement, drastically reducing operating costs and service frequency.

Built to withstand harsh marine conditions, the probe is constructed from 316 stainless steel. It features an overall IP68 waterproof rating, providing excellent resistance to corrosion, salt, and alkali. This durable design ensures continuous operation in submerged, high-pressure (up to 0.6MPa) environments.
Equipped with an RS485 communication interface supporting the standard ModBus-RTU protocol, the sensor is easily integrated into PLCs, data loggers, and other industrial monitoring systems. A built-in temperature sensor provides real-time data and enables automatic temperature compensation for enhanced accuracy.

Hardware
Software
If the power of the RS485 device is small and the required current is less than 12V-160mA, the RS485 to UART signal conversion module does not require a 12V external power supply, making wiring more convenient.

#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); //TX,RX
uint8_t Com[8] = { 0x01, 0x03, 0x00, 0x00, 0x00, 0x06, 0xC5, 0xC8 };
uint8_t Com1[8] = { 0x01, 0x03, 0x10, 0x22, 0x00, 0x01, 0x20, 0xC0 };
uint8_t Com2[8] = { 0x01, 0x03, 0x10, 0x20, 0x00, 0x01, 0x81, 0x00 };
float sal, ap;
void setup() {
Serial.begin(9600);
mySerial.begin(4800);
}
void loop() {
readDO_DOS_TEM();
Atmospheric_pressure();
Serial.print("AP = ");
Serial.print(ap, 2);
Serial.print("Kpa ");
Salinity();
Serial.print("Salinityt = ");
Serial.print(sal,0);
Serial.println("% ");
Serial.println(" ");
delay(1000);
}
void readDO_DOS_TEM(void) {
uint32_t val = 0, val1 = 0, val2 = 0;
uint8_t Data[18] = { 0 };
uint8_t ch = 0;
bool flag = 1;
long timeStart = millis();
long timeStart1 = 0;
while (flag) {
if ((millis() - timeStart1) > 100) {
while (mySerial.available() > 0) {
mySerial.read();
}
mySerial.write(Com, 8);
timeStart1 = millis();
}
if ((millis() - timeStart) > 1000) {
Serial.println("Time out");
return -1;
}
if (readN(&ch, 1) == 1) {
if (ch == 0x01) {
Data[0] = ch;
if (readN(&ch, 1) == 1) {
if (ch == 0x03) {
Data[1] = ch;
if (readN(&ch, 1) == 1) {
if (ch == 0x0C) {
Data[2] = ch;
if (readN(&Data[3], 14) == 14) {
if (CRC16_2(Data, 15) == (Data[15] * 256 + Data[16])) {
val = Data[3];
val = (val << 8) | Data[4];
val = (val << 8) | Data[5];
val = (val << 8) | Data[6];
float *dos = (float *)&val;
float Dos = *dos * 100.00;
Serial.print("DO Sat = ");
Serial.print(Dos, 1);
Serial.print("% ");
val1 = Data[7];
val1 = (val1 << 8) | Data[8];
val1 = (val1 << 8) | Data[9];
val1 = (val1 << 8) | Data[10];
float *Do = (float *)&val1;
Serial.print("DO = ");
Serial.print(*Do, 2);
Serial.print(" mg/L ");
val2 = Data[11];
val2 = (val2 << 8) | Data[12];
val2 = (val2 << 8) | Data[13];
val2 = (val2 << 8) | Data[14];
float *tem = (float *)&val2;
Serial.print("TEM = ");
Serial.print(*tem, 1);
Serial.println("°C");
flag = 0;
}
}
}
}
}
}
}
}
}
}
void Atmospheric_pressure(void) {
uint8_t Data[12] = { 0 };
uint8_t ch = 0;
bool flag = 1;
long timeStart = millis();
long timeStart1 = 0;
while (flag) {
if ((millis() - timeStart1) > 100) {
while (mySerial.available() > 0) {
mySerial.read();
}
mySerial.write(Com1, 8);
timeStart1 = millis();
}
if ((millis() - timeStart) > 1000) {
Serial.println("Time out2");
return -1;
}
if (readN(&ch, 1) == 1) {
if (ch == 0x01) {
Data[0] = ch;
if (readN(&ch, 1) == 1) {
if (ch == 0x03) {
Data[1] = ch;
if (readN(&ch, 1) == 1) {
if (ch == 0x02) {
Data[2] = ch;
if (readN(&Data[3], 4) == 4) {
if (CRC16_2(Data, 5) == (Data[5] * 256 + Data[6])) {
ap = (Data[3] * 256 + Data[4]) / 100.0;
flag = 0;
}
}
}
}
}
}
}
}
}
}
void Salinity(void) {
uint8_t Data[12] = { 0 };
uint8_t ch = 0;
bool flag = 1;
long timeStart = millis();
long timeStart1 = 0;
while (flag) {
if ((millis() - timeStart1) > 100) {
while (mySerial.available() > 0) {
mySerial.read();
}
mySerial.write(Com2, 8);
timeStart1 = millis();
}
if ((millis() - timeStart) > 1000) {
Serial.println("Time out3");
return -1;
}
if (readN(&ch, 1) == 1) {
if (ch == 0x01) {
Data[0] = ch;
if (readN(&ch, 1) == 1) {
if (ch == 0x03) {
Data[1] = ch;
if (readN(&ch, 1) == 1) {
if (ch == 0x02) {
Data[2] = ch;
if (readN(&Data[3], 4) == 4) {
if (CRC16_2(Data, 5) == (Data[5] * 256 + Data[6])) {
sal = Data[3] * 256 + Data[4];
flag = 0;
}
}
}
}
}
}
}
}
}
}
uint8_t readN(uint8_t *buf, size_t len) {
size_t offset = 0, left = len;
int16_t Tineout = 500;
uint8_t *buffer = buf;
long curr = millis();
while (left) {
if (mySerial.available()) {
buffer[offset] = mySerial.read();
offset++;
left--;
}
if (millis() - curr > Tineout) {
break;
}
}
return offset;
}
unsigned int CRC16_2(unsigned char *buf, int len) {
unsigned int crc = 0xFFFF;
for (int pos = 0; pos < len; pos++) {
crc ^= (unsigned int)buf[pos];
for (int i = 8; i != 0; i--) {
if ((crc & 0x0001) != 0) {
crc >>= 1;
crc ^= 0xA001;
} else {
crc >>= 1;
}
}
}
crc = ((crc & 0x00ff) << 8) | ((crc & 0xff00) >> 8);
return crc;
}
Zero Oxygen Standard Solution Preparation: In a windless, sun-proof location, take enough pure water (distilled or deionized) to cover the stainless steel parts of the device. Add 5g of anhydrous sodium sulfite to every 95g of water and stir thoroughly to dissolve to create a 5% sodium sulfite solution. Let stand for 1 hour to ensure that the oxygen in the solution is completely consumed. If possible, add a trace amount of cobalt chloride as a catalyst.
100% Oxygen Environment Preparation: In a windless, sun-proof location, take enough pure water (distilled or deionized) to cover the stainless steel parts of the device. Using an air pump, continuously introduce air into the water for 1 hour. Then, let it stand for 30 minutes to create air-saturated water. Alternatively, in a windless, sun-proof location, take a small amount of water in a sealed container and shake vigorously for 30 seconds to create water-saturated air. During calibration, keep the device's fluorescent film approximately 1cm above the water surface to ensure it is moist but free of water droplets.
Place the sensor in a 100% oxygen environment. After the dissolved oxygen value stabilizes, send the 100% saturation calibration command to complete the 100% oxygen saturation calibration.
Then place the sensor in zero oxygen standard solution, gently stir to accelerate the response, and let it sit. After the dissolved oxygen value stabilizes, send the zero oxygen calibration command to complete the zero oxygen calibration.
Note: The sensor should be allowed to sit for a sufficient period of time in each calibration environment to ensure that the sensor temperature is consistent with the ambient temperature.
The sensor should be installed below the liquid surface. Avoid bumping or scratching the fluorescent membrane during installation and use. Keep the fluorescent membrane away from sediment. Remove the rubber protective cover before use.
◆ If the device exhibits obvious malfunctions, do not open it and attempt to repair it yourself. Contact us immediately!
◆ Avoid bumping or scratching the fluorescent membrane on the front of the device. Any damage will reduce measurement accuracy or even render it unusable. ◆ Avoid using organic solvents and avoid using organic solvents to clean the fluorescent cap.
◆ When installing the device, avoid excessive tension or stress on the cables.
◆ Device Cleaning:
The exterior surface of the device can be cleaned with tap water and a damp soft cloth. Stubborn dirt can be removed by adding some household detergent to the tap water.
For the exterior surface of the fluorescent cap, rinse any dirt from the sensor's optical window with clean water. If wiping is necessary, wipe gently with a soft cloth and avoid scratching vigorously to prevent damage to the fluorescent film, which can lead to inaccurate measurements or inability to measure. If dust or moisture enters the fluorescent cap, remove the cap and rinse the interior surface and the device's optical glass window with tap water. If there is grease or oil, rinse with tap water mixed with household detergent. Rinse off the detergent and wipe all cleaned surfaces dry with a lint-free soft cloth. Place in a dry place to allow the moisture to evaporate completely. Cleaning every 30 days is recommended.
◆ Before measuring, remove the black rubber protective cover.
◆ During long-term storage, add water to the sponge in the protective case and squeeze out any excess water to keep the phosphor film moist. Keep the temperature above 0°C to prevent freezing and damage. For dry storage, the lowest temperature can be -10°C. Before use, soak the device in water for 48 hours to restore the phosphor film's response.
◆ It is recommended to replace the phosphor film annually.
◆ Calibrate the device before each measurement. For long-term use, calibrate every three months. The calibration frequency should be adjusted based on application conditions (such as the degree of dirt and chemical deposits).
Note: To ensure the accuracy of the equipment, please clean the lower surface of the measuring area of the equipment regularly to keep it clean and free of dust or other foreign matter.






ชำระเงินค่าสินค้าโดยการโอนเงินเข้าบัญชีธนาคาร KBANK, SCB, BBL,TMB
กรุณาเก็บหลักฐานการโอนเงินของท่านไว้เพื่อแจ้งการชำระเงินด้วยค่ะ
ท่านสามารถแจ้งการชำระเงินผ่านระบบอัตโนมัติได้โดย Click Link ข้างล่างค่ะ
https://www.arduitronics.com/informpayment
| หน้าที่เข้าชม | 15,522,312 ครั้ง |
| ผู้ชมทั้งหมด | 6,025,390 ครั้ง |
| เปิดร้าน | 21 พ.ค. 2556 |
| ร้านค้าอัพเดท | 6 ธ.ค. 2568 |