本帖最后由 jundao721 于 2017-4-5 18:12 编辑
ML8511A是一款UV紫外线模拟传感器,从其DataSheet上可以看出其内部通过UV 二极管采集,通过一个运放输出。如图1所示。
电压支持-0.3 to 4.6V,整体我们还是使用的是STM32的开发板,所以统一使用3.3V供电。该模块是模拟电压输出,高电平使能。功能控制比较简单,需要对输出的电压进行AD采样,并把采样值根据OUTPUT VOLTAGE– UV INTENSITY CHARACTERISTICS关系图计算出UVIntensity(mW/cm2)。该关系图如图2所示:
关于AD采样就不细说了,使用了平均值滤波,程序如图3所示: - for(count0=0;count0<10;count0++)
- {
- sumAD += ADCvalue[count0];
- }
- ADvalue = (u16)(sumAD/10);
- sumAD = 0;
复制代码根据关系图,因为是线性的,计算出K值和B值,将采集数据带入即可,程序如图4所示: - ADData();
- UVvalue = ADvalue *3.3*8.3/4096-8.3;
- if(UVvalue <=0)
- UVvalue =0;
- printf("UVÖµ%4.5f\t\n",UVvalue);
- for(i=0;i<5;i++)
- Delay_nms(0xAFFFF);
复制代码最后将测试结果通过串口助手显示,正常光照下如图5所示:
使用手机光照下如图6所示:
遮挡传感器下,数据图7所示,基本为无光线:
如果有其他UV设备对比就最好了,有时间找到另一款设备对比一下。总体来说,这款传感器对外部的光照还是比较灵敏的。
|