HS-S03P紫外线传感器

目 录 (点击目录列表可以跳转到相应位置)

  1. 介绍
  2. 原理图
  3. 模块参数
  4. 电路板尺寸
  5. ArduinoIDE 和 Python示例程序
  6. 米思齐 Mixly 示例程序(图形化语言)
  7. Arduino测试环境搭建
  8. 视频教程
  9. 测试结论

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、原理图 点这里回到目录

HS-S03P紫外线传感器


3、模块参数 点这里回到目录

引脚名称 描述
G GND(电源输入负极)
V VCC(电源输入正极)
S 模拟信号引脚
  • 供电电压:3.3V / 5V

  • 连接方式:PH2.0端子线

  • 安装方式:双螺丝固定


4、电路板尺寸 点这里回到目录

HS-S03P紫外线传感器


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开发板):点击下载

HS-S03P紫外线传感器

示例程序(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

电路接线图:

HS-S03P紫外线传感器

HS-S03P紫外线传感器


8、视频教程 点这里回到目录

视频教程:点击查看


9、测试结论 点这里回到目录

HS-S03P紫外线传感器

器件连接好线之后,将上述程序烧录到UNO-R3PRO开发板之后,接通电源。打开串口监视器,波特率设置为9600。程序使用一个简单的滤波算法来采集和处理传感器的模拟输出值。具体地说,程序通过运行1024次循环,每次循环读取A0引脚的模拟数值,并将其累加到一个总和变量中。循环结束后,将累加的结果除以1024,得到平均值vout。接着,通过一系列的数学计算,将平均值转换为传感器的光电流输出电压(以毫伏为单位),并将结果打印到串口监视器中。也可用通过LCD1602液晶显示屏输出光电流输出电压(以毫伏为单位),通过这个过程,程序实现了测量紫外线光的强度,并将其转换为相应的紫外线等级。


点这里回到目录