器件连接好线之后,将上述程序烧录到UNO-R3PRO开发板之后,接通电源。打开串口监视器,波特率设置为9600。程序使用一个简单的滤波算法来采集和处理传感器的模拟输出值。具体地说,程序通过运行1024次循环,每次循环读取A0引脚的模拟数值,并将其累加到一个总和变量中。循环结束后,将累加的结果除以1024,得到平均值vout。接着,通过一系列的数学计算,将平均值转换为传感器的光电流输出电压(以毫伏为单位),并将结果打印到串口监视器中。也可用通过LCD1602液晶显示屏输出光电流输出电压(以毫伏为单位),通过这个过程,程序实现了测量紫外线光的强度,并将其转换为相应的紫外线等级。
HS-S03P紫外线传感器
1、介绍 点这里回到目录
特点:1.尺寸小 :11mm×27mm
2.功耗低:供电电压2.5V~5V,工作电流是微安级
3.线性好
4.灵敏度高
5.高稳定性
6.检测范围宽:240nm-370nm
7.大角度:130度
8.肖特基种类的光敏二极管,适用于光电模式
典型应用:紫外线测试仪,紫外线手表,户外运动设备,手机移动电话等
本产品能用到行动电话领域的规格。并有直接对应紫外线指数(UV INDEX)的线性电流。
资料链接:https://pan.baidu.com/s/1pJvdC5l
学习链接1:https://zhuanlan.zhihu.com/p/641537240
学习链接2:https://blog.csdn.net/UbiBots/article/details/52558287
2、原理图 点这里回到目录
3、模块参数 点这里回到目录
引脚名称 | 描述 |
---|---|
G | GND(电源输入负极) |
V | VCC(电源输入正极) |
S | 模拟信号引脚 |
-
供电电压:3.3V / 5V
-
连接方式:PH2.0端子线
-
安装方式:双螺丝固定
4、电路板尺寸 点这里回到目录
5、Arduino IDE示例程序 点这里回到目录
示例程序(UNO开发板):点击下载
#include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C mylcd(0x27,16,2); int sensorValue;//传感器输出的数据包 long sum = 0;//由于测试中发现数据会溢出,就用了long,long目前还未溢出过 int vout = 0;//由于通信中输出的是整一串数据包,所以需要翻译,vout是处理好的数据,也就是CJMCU-GUVA-S12SD传感器光电流的输出电压 int uv = 0;//紫外线等级 void setup(){ Serial.begin(9600);//CJMCU-GUVA-S12SD的波特率为9600 mylcd.init(); mylcd.backlight(); } void loop() { sensorValue = 0; sum = 0; for(int i = 0 ; i < 1024 ; i++ )//这里我用的是最简单的filter算法 { sensorValue = analogRead(A0); sum = sensorValue + sum; delay(2); } vout = sum >> 10;//开始数据处理 vout = vout * 4980.0 / 1024; Serial.print("The Photocurrent value : "); Serial.print(vout); Serial.println("mV"); if(vout < 50){ //查表,把得到的光电流值转换成紫外线等级 uv = 0; } else if(vout < 227){ uv = 1; } else if(vout < 318){ uv = 2; } else if(vout < 408){ uv = 3; } else if(vout < 503){ uv = 4; } else if(vout < 606){ uv = 5; } else if(vout < 696){ uv = 6; } else if(vout < 795){ uv = 7; } else if(vout < 881){ uv = 8; } else if(vout < 976){ uv = 9; } else if(vout < 1079){ uv = 10; } else{ uv = 11; } delay(20); Serial.print("UV Index = "); Serial.println(uv); mylcd.clear(); mylcd.setCursor(0, 0); mylcd.print(String(" value :") + String(vout) + String("mV")); mylcd.setCursor(0, 1); mylcd.print(String(" UV Index =") + String(uv)); }
示例程序(ESP32开发板—基于Python语言,不能用Arduino IDE上传代码):
6、米思齐 Mixly 示例程序(图形化语言) 点这里回到目录
示例程序(UNO开发板):点击下载
示例程序(ESP32开发板):点击下载
7、测试环境搭建 点这里回到目录
准备配件:
- UNO-R3 开发板 *1
- UNO-R3 P 扩展板 *1
- USB type-c 数据线 *1
- LCD1602液晶显示屏(HS-F21P)*1
- 紫外线传感器(HS-S03P)*1
- PH2.0 3P双头端子线和PH2.0 4P双头端子线 *1 或 PH2.0 3P端子转杜邦线和PH2.0 4P端子转杜邦线 *1
电路接线图:
8、视频教程 点这里回到目录
视频教程:点击查看
9、测试结论 点这里回到目录