想出门前知道今天紫外线强不强,或者给大棚、UV灯做监测,一颗紫外线传感器就能搞定。GUVA-S12SD是个很常见的紫外光敏芯片,直接把紫外线强度转成线性电压,接上Arduino的模拟口读一下就能算出紫外线指数。这篇讲原理、接线和换算。
GUVA-S12SD怎么工作
它是块氮化镓光电二极管,只对紫外波段(大概240到370nm)敏感,对可见光几乎没反应,所以不用滤光片就能直接测UV。关键是好换算:它输出的电压和紫外线指数基本成正比,大约是0.1V对应1个指数点,阳光直射时大概输出0.5V左右,对应紫外线指数5。
紫外线传感器接线
三根脚很简洁:VCC接5V(部分板3.3V也能用)、GND接地、OUT接Arduino的模拟口A0。它对电压要求不高,因为输出上限也就1V左右,完全在ADC安全范围内,不需要电平转换。板上一般已经带了运放把微弱的光电流放大成好读的电压,直接插上就能用。

接好线,代码核心就一行换算:先analogRead(A0)拿到0到1023的原始值,再配上电压换算系数转成毫伏,然后除以100就是大致紫外线指数。想更准就把参考电压改到内部1.1V,ADC的整个量程都能用在紫外读数上。
读数和紫外线指数怎么对应
芯片手册给的对照很直观:电压0到1100毫伏大致对应紫外线指数0到11。室内或有遮挡时电压会掉到几十毫伏以下,往往读出来就是0,属于正常现象——它只对到达传感器的紫外线敏感。想看高强度就别隔着玻璃测,玻璃会挡掉大部分UVB,读数自然偏低。

用它做紫外线指数提醒特别合适:读到的指数超过某个阈值,就让蜂鸣器响一下或者屏幕变色提示防晒。配合之前的LCD、蜂鸣器模块,一套完整的紫外线监测小站就出来了。里面那个阈值和滑动平均,按自己的使用场景多调几轮就顺手了。


室内读数基本是0,别慌,到太阳底下才看得见
玻璃会挡紫外线,隔着窗测读数低是正常的
电压除以100算紫外线指数这个换算好记