UltraV:便携式紫外线指数仪 的教程


材料清单

1、Arduino Nano rev3
2、ML8511 紫外线传感器
3、128×64 OLED 显示屏(SSD1306)
4、MT3608 DC-DC 变压器
5、CR2电池
6、CR2电池座
7、开关
8、外壳

传感器说明



ML8511是一种紫外线传感器,适用于室内或户外读取紫外线强度。 ML8511内部配有放大器,可根据紫外线强度将光电流转换为电压。这种独特的功能可以为ADC等外部电路提供了简便的接口。在省电模式下,通常待机电流为0.1μA,从而延长电池寿命。

特征:

  • 对UV-A和UV-B敏感的光电二极管

  • 嵌入式运算放大器

  • 模拟电压输出

  • 低电源电流(典型值300μA)和低待机电流(典型值0.1μA)

  • 小而薄的表面封装(4.0mm x 3.7mm x 0.73mm,12引脚 陶瓷封装QFN)

可惜的是,我没有找到任何紫外线透明材料来保护传感器。我测试过的任何一种透明盖子(塑料,玻璃等)都会减弱紫外线测量。更好的选择可能是熔融石英玻璃,但我没有找到合理价位的材料,所以我决定将传感器直接裸露的放在盒子外面。

操作说明


测量紫外线的方式非常简单,只需打开设备并将其指向太阳几秒钟,使其与太阳光线的方向保持一致。然后在显示屏上观察:左侧的指数始终显示瞬时测量值(每个200毫秒一个),而右侧的读取是期间的最大读数:这正是你需要的值。
在显示器的左下部分,还报告了测量的UV指数程度(低度,中度,高度,非常高,极度的高)。

电池电压和读数

我选择CR2电池是因为它的尺寸和容量(800 mAh)。整个夏天,我都在使用UltraV,电池仍然可以读取2.8V。这个选择我非常满意。
操作时,电路消耗大约100 mA,但读数测量不会超过几秒钟。当电池额定电压为3v时,我增加了一个DC-DC升压转换器,使电压达到9v时,将其连接到Vin引脚。
为了在显示器上显示电池电压,我使用了模拟输入(A2)。 Arduino模拟输入可用于测量0到5V之间的直流电压,但这种技术需要校准。校准时,你需要一个万用表。
1、 首先使用最终选择的电池(CR2)为电路供电,而不是使用计算机的USB电源。
2、 在稳压器上(在Arduino 5V引脚上找到)测量Arduino上的5V电压。默认情况下,此电压用于Arduino ADC参考电压。现在将测量值放入草图中,如下所示(假设我读取的是5.023):

voltage = ((long)sum / (long)NUM_SAMPLES * 5023) / 1024.0;

在草图中,我将电压测量值作为10个样本的平均值。

原理图和接线

软件安装

对于显示器,我使用了U8g2lib,它非常灵活,功能强大,适用于这种OLED显示器,允许多种字体选择和良好的定位功能。
关于ML8511的电压读数,我使用3.3v Arduino参考引脚(精度在1%以内)作为ADC转换器的基础。因此,通过在3.3V引脚上进行模数转换(将其连接到A1),然后将此读数与传感器的读数进行比较,我们可以推断出真实的读数,无论VIN是什么(只要它高于3.4V)。

int uvLevel = averageAnalogRead(UVOUT);
int refLevel = averageAnalogRead(REF_3V3);
float outputVoltage = 3.3 / refLevel * uvLevel;

完整代码在文件库自行下载。
http://maker.quwj.com/project/76

外壳设计


我使用CAD应用程设计了外壳,并尽可能地使用最小的尺寸,我将CR2电池安装在外壳的背面(电池盒粘在盒子上)。
请在文件库中下载STL文件。
http://maker.quwj.com/project/76

组装图片





还需改进的地方

1、使用紫外光谱仪测量各种条件下的实时紫外线指数(紫外光谱仪非常昂贵)。
2、使用Arduino微控制器同时记录ML8511的输出。
3、写入算法,在标准的大气条件下实时将ML8511输出与实际UVI值联系起来。


> UltraV:便携式紫外线指数仪

组件清单

  • Arduino Nano rev3 × 1
  • ML8511 紫外线传感器 × 1
  • 128×64 OLED 显示屏(SSD1306) × 1
  • MT3608 DC-DC 变压器 × 1
  • CR2电池 × 1
  • CR2电池插座 × 1
  • 开关 × 1
  • 外壳 × 1