1. 产品简介
LTR390-UV紫外线传感器是一款可以测量和直接输出紫外线原始数据和环境光强度的光传感器。紫外线响应波长范围为280nm~430nm,具有高灵敏度、高响应速度和抗干扰能力强等特点。传感器内置ADC转换和MCU,可对光信号进行数据转化,数字量输出。Gravity接口,支持I2C和UART两种通信协议,可用于需要监测紫外线光强度和环境光照强度的场景,例如光教学实验、户外紫外线检测等。
2. 产品特性
- 支持l2C和UART两种通讯方式
- 兼容3.3V和5V工作电压
- 具有13~20 bit采集率
- 可调增益1倍 3倍 6倍 9倍 18倍
- 具有中断功能,可编程上下阈值
- 接近人眼光谱响应
3. 应用场景
- 紫外线强度检测
- 光照强度检测
- 气象教学实验
- 光线检测实验
- UV指数监控设备
- 户外紫外线检测设备
4. 引脚排列图
引脚 | 引脚全称 | 引脚功能 |
---|---|---|
D/T | SDA/TXD | I2C数据线/UART发送数据 |
C/R | SCL/RXD | I2C时钟线/UART接收数据 |
- | 电源负极 | |
+ | 电源正极(DC 3.3V-5V) |
注:拨码开关控制选择I2C和UART模式
5. 规格参数
- 主芯片型号:LTR390-UV-01
- 工作电压:DC 3.3V~5V
- 工作电流:2.73mA左右(设置采集18位数据和采集时间100ms)
- 通讯接口:I2C UART
- I2C地址:0x1C
- UV响应波长:280nm~430nm
- ALS光谱响应波长:450nm~700nm
- 输出类型:数字量输出
- 产品尺寸:32mm × 27mm
6. 产品尺寸图
7. Arduino UNO使用教程
7.1 硬件准备
- DFRduino UNO(SKU:DFR0216)
- LTR390UV 紫外线传感器(SKU:SEN0540)
7.2 软件准备
- 下载Arduino IDE: 点击下载Arduino IDE
- 下载Arduino库:紫外线传感器库 RTU库
- 关于如何安装库文件: 如何加载库文件
7.3 硬件连线图
I2C连线图
管脚连接说明:
紫外线模块:+ ---(连接)---Arduino UNO主控: 5V;
紫外线模块:- ---(连接)---Arduino UNO主控:GND;
紫外线模块:D ---(连接)---Arduino UNO主控: SDA;
紫外线模块:C ---(连接)---Arduino UNO主控: SCL;
UART连线图
管脚连接说明:
紫外线模块:+ ---(连接)---Arduino UNO主控: 5V;
紫外线模块:- ---(连接)---Arduino UNO主控:GND;
紫外线模块:T ---(连接)---Arduino UNO主控: 4;
紫外线模块:R ---(连接)---Arduino UNO主控: 5;
7.4 演示代码
I2C模式
环境光
#include "DFRobot_LTR390UV.h"
DFRobot_LTR390UV ltr390(/*addr = */LTR390UV_DEVICE_ADDR, /*pWire = */&Wire);
void setup()
{
Serial.begin(115200);
while(ltr390.begin() != 0){
Serial.println(" Sensor initialize failed!!");
delay(1000);
}
Serial.println(" Sensor initialize success!!");
ltr390.setALSOrUVSMeasRate(ltr390.e18bit,ltr390.e100ms);//18位数据,采样时间100ms
ltr390.setALSOrUVSGain(ltr390.eGain3);//3倍增益
ltr390.setMode(ltr390.eALSMode);//设置环境光模式
}
void loop()
{
float als = 0;
als = ltr390.readALSTransformData();//获取环境光转换后数据,只能在环境光模式下使用
Serial.print("ALS:");
Serial.print(als);
Serial.println("Lux");
delay(1000);
}
结果
串口打印出环境光数值(强光办公室环境)
注:环境光参考数据范围
场所/环境 | 光照度 |
---|---|
晴天 | 30000~300000 lux |
晴天室内 | 100~1000 lux |
阴天 | 3000~10000 lux |
阴天室外 | 50~500 lux |
阴天室内 | 5~50 lux |
黄昏室内 | 10 lux |
日出日落 | 300 lux |
黑夜 | 0.001~0.02 lux |
月夜 | 0.02~0.3 lux |
无光照办公室 | 30~50 lux |
手电筒直接照射 | 8000~15000 lux |
紫外线
#include "DFRobot_LTR390UV.h"
DFRobot_LTR390UV ltr390(/*addr = */LTR390UV_DEVICE_ADDR, /*pWire = */&Wire);
void setup()
{
Serial.begin(115200);
while(ltr390.begin() != 0){
Serial.println(" Sensor initialize failed!!");
delay(1000);
}
Serial.println(" Sensor initialize success!!");
ltr390.setALSOrUVSMeasRate(ltr390.e18bit,ltr390.e100ms);//18位数据,采样时间100ms
ltr390.setALSOrUVSGain(ltr390.eGain3);//3倍增益
ltr390.setMode(ltr390.eUVSMode);//设置环境光模式
}
void loop()
{
uint32_t data = 0;
data = ltr390.readOriginalData();//获取紫外线数据原始数据
Serial.print("data:");
Serial.println(data);
delay(1000);
}
结果
串口打印出紫外线原始数据(晴天无太阳光直射的环境)
UART模式
环境光
#include "DFRobot_LTR390UV.h"
#include <SoftwareSerial.h>
#define UARTMODE //UART模式
SoftwareSerial mySerial(/*rx =*/4, /*tx =*/5);
DFRobot_LTR390UV ltr390(/*addr =*/LTR390UV_DEVICE_ADDR, /*s =*/&mySerial);
void setup()
{
#define UARTMODE
mySerial.begin(9600);
Serial.begin(115200);
while(ltr390.begin() != 0){
Serial.println(" Sensor initialize failed!!");
delay(1000);
}
Serial.println(" Sensor initialize success!!");
ltr390.setALSOrUVSMeasRate(ltr390.e18bit,ltr390.e100ms);//18位数据,采样时间100ms
ltr390.setALSOrUVSGain(ltr390.eGain3);//3倍增益
ltr390.setMode(ltr390.eALSMode);//设置环境光模式
}
void loop()
{
float als = 0;
als = ltr390.readALSTransformData();//获取环境光转换后数据,只能在环境光模式下使用
Serial.print("ALS:");
Serial.print(als);
Serial.println("Lux");
delay(100);
}
结果
串口打印出环境光数值(强光办公室环境)
紫外线
#include "DFRobot_LTR390UV.h"
#include <SoftwareSerial.h>
#define UARTMODE //UART模式
SoftwareSerial mySerial(/*rx =*/4, /*tx =*/5);
DFRobot_LTR390UV ltr390(/*addr =*/LTR390UV_DEVICE_ADDR, /*s =*/&mySerial);
void setup()
{
#define UARTMODE
mySerial.begin(9600);
Serial.begin(115200);
while(ltr390.begin() != 0){
Serial.println(" Sensor initialize failed!!");
delay(1000);
}
Serial.println(" Sensor initialize success!!");
ltr390.setALSOrUVSMeasRate(ltr390.e18bit,ltr390.e100ms);//18位数据,采样时间100ms
ltr390.setALSOrUVSGain(ltr390.eGain3);//3倍增益
ltr390.setMode(ltr390.eUVSMode);//设置紫外线模式
}
void loop()
{
uint32_t data = 0;
data = ltr390.readOriginalData();//获取紫外线数据原始数据
Serial.print("data:");
Serial.println(data);
delay(100);
}
结果
串口打印出紫外线原始数据(晴天无太阳光直射的环境)
8. API
/**
* @fn begin
* @brief Init SEN0540 device
* @return Return value init status
* @retval 0 Succeed
* @retval -1 Failed
*/
int8_t begin(void);
/**
* @fn setMode
* @brief 设置模块采集数据模式
* @param mode 采集数据选择
* @return NONE
*/
void setMode(eModel_t mode);
/**
* @fn setALSOrUVSMeasRate
* @brief 设置模块采集数据位数和采集时间,采集时间必须大于采集位数所需时间
* @n --------------------------------------------------------------------------------------------------------
* @n | bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 |
* @n ---------------------------------------------------------------------------------------------------------
* @n | Reserved | ALS/UVS Resolution | Reserved | ALS/UVS Measurement Rate |
* @n ---------------------------------------------------------------------------------------------------------
* @n | ALS/UVS Resolution |000|20 Bit, Conversion time = 400ms |
* @n | |001|19 Bit, Conversion time = 200ms |
* @n | |010|18 Bit, Conversion time = 100ms(default) |
* @n | |011|17 Bit, Conversion time = 50ms |
* @n | |100|16 Bit, Conversion time = 25ms |
* @n | |110/111|Reserved |
* @n ---------------------------------------------------------------------------------------------------------
* @n | ALS/UVS Measurement Rate |000|25ms |
* @n | |001|50ms |
* @n | |010|100ms (default) |
* @n | |011|200ms |
* @n | |100|500ms |
* @n | |101|1000ms |
* @n | |110/111|2000ms |
* @n ---------------------------------------------------------------------------------------------------------
* @param bit 设置数据位数
* @param time 设置采样时间
* @return None
*/
void setALSOrUVSMeasRate(eResolution bit,eMeasurementRate time);
/**
* @fn setALSOrUVSGain
* @brief 设置传感器增益调节
* @n ---------------------------------------------------------------------------------------------------------
* @n | bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 |
* @n ---------------------------------------------------------------------------------------------------------
* @n | Reserved | ALS/UVS Gain Range |
* @n ---------------------------------------------------------------------------------------------------------
* @n | ALS/UVS Gain Range |000|Gain Range: 1 |
* @n | |001|Gain Range: 3 (default) |
* @n | |010|Gain Range: 6 |
* @n | |011|Gain Range: 9 |
* @n | |100|Gain Range: 18 |
* @n | |110/111|Reserved |
* @n ---------------------------------------------------------------------------------------------------------
* @param data 控制数据
* @return None
*/
void setALSOrUVSGain(eGainRange data);
/**
* @fn readData
* @brief 获取原始数据
* @return 返回获取得原始数据
*/
uint32_t readOriginalData(void);
9. 更多资料
10.Mind+(基于Scratch3.0)图形化编程
1、下载及安装软件。下载地址:https://mindplus.cc 详细教程:Mind+基础wiki教程-软件下载安装
2、软件右上角切换开关,切换到“上传模式”。 详细教程:Mind+基础wiki教程-上传模式编程流程
3、打开“扩展库”>“用户库”,输入“紫外线传感器”,加载本模块的库。
4、进行编程,示例程序如下图:
5、菜单“连接设备”,“上传到设备”,打开串口查看数据。
常见问题
还没有客户对此产品有任何问题,欢迎通过qq或者论坛联系我们!
更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖
WIKI文档修改历史
文档版本号 | 修改时间 | 修改人 | 修改内容 |
---|---|---|---|
V1.0 | 2022.8.18 | 康啸 | 第一版发布 |
产品修改历史
产品版本号 | 修改时间 | 修改人 | 产品修改内容 |
---|---|---|---|
V1.0 | 2022.8.18 | 谭晓兰 | 第一版发布 |