INFORMACIÓN
Este sensor digital de luz ambiental, completamente impermeable, mide la intensidad de la luz en diferentes entornos con un rango de detección de 0 a 200000 lux. Utiliza el protocolo de comunicación Modbus-RTU 485 y una fuente de alimentación de amplio voltaje de 5 a 32 V CC. El sensor de luz ambiental tiene una clasificación de impermeabilidad IP68 y puede sumergirse completamente en agua sin sufrir daños.
El sensor de luz ambiental impermeable es adecuado para diversos entornos hostiles, tanto interiores como exteriores, como estaciones meteorológicas, invernaderos, iluminación exterior, cultivo de flores, iluminación de talleres y luces inteligentes para automóviles.
ESPECIFICACIONES Y CARACTERÍSTICAS
- Voltaje de la fuente de alimentación: 5V a 32V
- Corriente de trabajo: <10 mA
- Modo de salida: RS485
- Protocolo estándar: Modbus-RTU
- Rango de medición: 0 a 200000Lux
- Resolución: 0.01 Lux
- Precisión: ±5%
- Nivel de protección: IP68
- Temperatura de trabajo: -40°C a 80°C
- Dimensiones:
- Longitud de la rosca: 10 mm
- Tamaño de apertura: 25 mm
- Tamaño de llave: 33 mm
- Diámetro del cable: 4-10 mm
- Longitud de la línea: 1 m
- Peso:60.89g
DOCUMENTACIÓN Y RECURSOS
INFORMACIÓN ADICIONAL
Modo de Uso
Se puede usar con el Adaptador RS485 a UART con Aislamiento Activo Gravity DFR0845 para leer el valor de la luz en el Arduino UNO R3, crear rápidamente un entorno de prueba y cuenta con un cableado sencillo y fácil de usar.
Referencia de brillo
- Nocturna: 0.001 a 0.02 lx
- Luz de Luna: 0.02 a 0.3 lx
- Nublado en interiores: 5 a 50 lx
- Nublado exterior: 50 a 500 lx
- Interior soleado: 100 a 1000 lx
- Luz del mediodía de verano: alrededor de 10*6 lx
- Iluminación al leer libros: 50 a 60 lx
- Iluminación estándar para vídeo doméstico: 1400 lx
Diagrama de conexión
Si la potencia del dispositivo RS485 es pequeña y la corriente requerida es inferior a 12 V-160 mA, el módulo de conversión de señal RS485 a UART no requiere una fuente de alimentación externa de 12 V, lo que hace que el cableado sea más conveniente.
#include <SoftwareSerial.h> SoftwareSerial mySerial(2,3); uint8_t Com[8] = { 0x01, 0x03, 0x00, 0x02, 0x00, 0x02, 0x65, 0xCB }; float LUX; void setup() { Serial.begin(9600); mySerial.begin(9600); } void loop() { readLux(); Serial.print("Lux = "); Serial.print(LUX, 3); Serial.println(" (lux) "); delay(1000); } void readLux(void) { uint8_t Data[10] = { 0 }; uint8_t ch = 0; 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 == 0x04) { Data[2] = ch; if (readN(&Data[3], 6) == 6) { if (CRC16_2(Data, 7) == (Data[7] * 256 + Data[8])) { LUX = (Data[3] * 0x1000000 + Data[4] * 0x10000 + Data[5] * 0x100 + Data[6]) / 1000.000; flag = 0; } } } } } } } } mySerial.flush(); } } 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; }
Valoraciones
No hay valoraciones aún.