รหัสสินค้า | AS00633 |
หมวดหมู่ | วัดสภาพแวดล้อมและแก๊ส Environmental / Gas |
ราคา | 3,250.00 บาท |
สถานะสินค้า | พร้อมส่ง |
จำนวน | ชิ้น |
ดูการใช้งานอย่างละเอียดและตัวอย่าง code ได้ที่ Product WiKi
The RS485 UV Sensor is designed to measure ultraviolet (UV) intensity and index values within the wavelength range of 290-390nm. Utilizing a photoelectric detector and an industrial-grade microprocessor, ensures reliable and stable performance. The sensor operates on a DC 5-30V wide voltage power supply and employs the Modbus-RTU 485 communication protocol, making it compatible with Arduino and other microcontroller platforms through expansion boards like the TTL to RS485 module. With an IP67-rated metal aluminum shell, it is suitable for environmental monitoring, health protection, crop growth monitoring, photovoltaic systems, and laboratory research.
High Precision and Wide Measurement Range
The sensor accurately measures UV intensity (0-15mW/cm²) and UV index (0-15) with a resolution of 0.01mW/cm² and an accuracy of ±10%FS. Its ability to detect UV wavelengths from 290-390nm ensures precise monitoring across various applications, from environmental studies to health protection.
Industrial-Grade Durability
Built with a metal aluminum shell and an IP67 protection rating, the sensor is resistant to dust, water, and harsh environmental conditions. This robust design ensures long-term reliability in demanding outdoor and industrial settings.
Easy Integration and Compatibility
The sensor supports the Modbus-RTU 485 protocol and can be seamlessly integrated with Arduino and other systems using compatible expansion boards. Its wide voltage power supply (DC 5-30V) and simple wiring make it user-friendly and adaptable to diverse setups.
Overview of RS485 UV Sensor
Applications
Specification
Documents
Shipping List
RS485 UV Sensor x1
Adapter cable x1
Screw package x1
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);
uint8_t Com[8] = { 0x01, 0x03, 0x00, 0x00, 0x00, 0x01, 0x84, 0x0A };
uint8_t Com1[8] = { 0x01, 0x03, 0x00, 0x01, 0x00, 0x01, 0xD5, 0xCA };
void setup() {
Serial.begin(9600);
mySerial.begin(4800);
}
void loop() {
float UV = readUV();
Serial.print("UV = ");
Serial.print(UV);
Serial.print(" mW/cm² ");
uint16_t UVI = readUVI();
Serial.print("UVI = ");
Serial.println(UVI);
delay(1000);
}
float readUV(void) {
uint8_t Data[10] = { 0 };
uint8_t ch = 0;
float data;
bool flag = 1;
while (flag) {
delay(100);
mySerial.write(Com, 8);
delay(10);
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])) {
data= (Data[3] * 256 + Data[4]) / 100.00;
flag = 0;
}
}
}
}
}
}
}
}
mySerial.flush();
}
return data;
}
int readUVI(void) {
uint8_t Data1[10] = { 0 };
int16_t data1;
uint8_t ch1 = 0;
bool flag1 = 1;
while (flag1) {
delay(100);
mySerial.write(Com1, 8);
delay(10);
if (readN(&ch1, 1) == 1) {
if (ch1 == 0x01) {
Data1[0] = ch1;
if (readN(&ch1, 1) == 1) {
if (ch1 == 0x03) {
Data1[1] = ch1;
if (readN(&ch1, 1) == 1) {
if (ch1 == 0x02) {
Data1[2] = ch1;
if (readN(&Data1[3], 4) == 4) {
if (CRC16_2(Data1, 5) == (Data1[5] * 256 + Data1[6])) {
data1 = Data1[3] * 256 + Data1[4];
flag1 = 0;
}
}
}
}
}
}
}
}
mySerial.flush();
}
return data1;
}
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;
}
Print the collected UV intensity and index values, which cannot be collected by ordinary indoor light sources.
Possible reasons for no output or output errors:
ชำระเงินค่าสินค้าโดยการโอนเงินเข้าบัญชีธนาคาร KBANK, SCB, BBL,TMB
กรุณาเก็บหลักฐานการโอนเงินของท่านไว้เพื่อแจ้งการชำระเงินด้วยค่ะ
ท่านสามารถแจ้งการชำระเงินผ่านระบบอัตโนมัติได้โดย Click Link ข้างล่างค่ะ
https://www.arduitronics.com/informpayment
หน้าที่เข้าชม | 15,375,394 ครั้ง |
ผู้ชมทั้งหมด | 5,878,472 ครั้ง |
เปิดร้าน | 21 พ.ค. 2556 |
ร้านค้าอัพเดท | 5 ก.ย. 2568 |