[经验] 【VEML6075紫外线检测试用体验】+ 读取VEML6075寄存器并计算

[复制链接]

技术员

发表于 2017-4-15 15:28:02   400 查看 0 回复 显示全部楼层 倒序浏览
分享
1 VEML6075应用流程分析1.1 紫外线及其检测介绍
紫外线主要包括365nm波长(320-400nm,3dB带宽为350--375nm)的UVA区域和330nm波长(280--4430nm,3dB带宽为315--340nm)的UVB区域,
25 紫外UVA与UVB频谱分布
UVB波长较短伤害较大,不过仅占太阳能的0.1%,而UVA虽然波长长单个光子伤害低,但是能量丰富,占了太阳能的4.5%。
由于CMOS制造工艺下的紫外光传感器很容易受到不同的可见光以及红外光噪声背景影响,因此对紫外检测需要进行校正计算。VEML提供了UVA、UVB、可见光UVcomp1和红外光UVcomp2的四个原始传感监测数据,需要利用以下公式对真实的UV紫外光照指数进行校正计算。
25 紫外光照指数校正计算公式
其中系数a/b/c/d分别对应UVA受到可见光噪声影响系数、UVA受到红外光噪声影响系数、UVB受到可见光影响系数、UVB受到红外光影响系数。默认是:
a = uva_a_coef = 2.22,
b = uva_b_coef = 1.33,
c = uvb_c_coef = 2.95,
d = uvb_d_coef = 1.74,
为了测试不同的覆盖在传感器上的保护罩或者保护膜所对应的a/b/c/d,需要采用白光LED+白炽灯,分别调节不同的亮度进行测试确定。本模块是裸露的传感芯片,因此可以采用默认的校正系数。
1.2 紫外光照指数校正计算
修改代码,读取VEML6075的所有寄存器,并且计算UVAcalc和UVBcalc,并通过串口显示。
需要注意的是,VEML6075的I2C寄存器读取需要延时一段时间,否则如果连续读取I2C的话,所有的寄存器读取值都是同一个数值,因此每次进行I2C读取都插入delay(100)函数。
  1. float a = 2.22, b = 1.33, c = 2.95, d = 1.74;

  2.         while(1) {
  3.                 uint16_t UVA_data, UVB_data, UVcomp1_data, UVcomp2_data, UV_id;
  4.                 float UVAcalc, UVBcalc;
  5.                  
  6.                  
  7.                 // 发送0x07命令,读取UVA_data寄存器的数值
  8.                 txData[0]=0x07;
  9.                 SetupXferRecAndExecute(I2C_ADDR_7BIT, txData,txSize, rxData, rxSize);
  10.                 UVA_data = (rxData[1] << 8) + rxData[0];
  11.                 delay(100);
  12.                
  13.                 // 发送0x09命令,读取UVB_data寄存器的数值
  14.                 txData[0]=0x09;
  15.                 SetupXferRecAndExecute(I2C_ADDR_7BIT, txData,txSize, rxData, rxSize);
  16.                 UVB_data = (rxData[1] << 8) + rxData[0];
  17.                 delay(100);
  18.                
  19.                 // 发送0x0A命令,读取UVcomp1_data寄存器的数值
  20.                 txData[0]=0x0A;
  21.                 SetupXferRecAndExecute(I2C_ADDR_7BIT, txData,txSize, rxData, rxSize);
  22.                 UVcomp1_data = (rxData[1] << 8) + rxData[0];
  23.                 delay(100);
  24.                
  25.                 // 发送0x0B命令,读取UVcomp2_data寄存器的数值
  26.                 txData[0]=0x0B;
  27.                 SetupXferRecAndExecute(I2C_ADDR_7BIT, txData,txSize, rxData, rxSize);
  28.                 UVcomp2_data = (rxData[1] << 8) + rxData[0];
  29.                 delay(100);
  30.                
  31.                 // 发送0x0C命令,读取UV_id寄存器的数值
  32.                 txData[0]=0x0C;
  33.                 SetupXferRecAndExecute(I2C_ADDR_7BIT, txData,txSize, rxData, rxSize);
  34.                 UV_id = (rxData[1] << 8) + rxData[0];
  35.                 delay(100);
  36.                
  37.                 printf("UVA_data = %d, UVB_data = %d, UVcomp1_data = %d, UVcomp2_data = %d, UV_id = %x\n",
  38.                         UVA_data, UVB_data, UVcomp1_data, UVcomp2_data, UV_id);
  39.                        
  40.                 UVAcalc =  (float)UVA_data -  a*(float)UVcomp1_data - b*(float)UVcomp2_data;
  41.                 UVBcalc =  (float)UVB_data -  c*(float)UVcomp1_data - d*(float)UVcomp2_data;
  42.                 printf("UVAcalc = %f, UVBcalc = %f\n\n", UVAcalc, UVBcalc);
  43.                
  44.                 delay_Long(20000);
  45.         }
复制代码

最终显示的串口如下图:

25 紫外传感器所有寄存器读取值与计算的UV值
进一步的UVI未能给出K公式,目前来说直接采用UVA和UVB的原始值比较合适。

标签:寄存器 紫外线
高级模式
您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐 上一条 /9 下一条

小黑屋|手机版|Archiver| 电子发烧友 ( 粤ICP备14022951号-2 )     

GMT+8, 2017-7-23 14:39 , Processed in 0.223657 second(s), 19 queries , Memcache On.

微信扫描
快速回复 返回顶部 返回列表
-

推荐专区

技术干货集中营

专家问答

用户帮助┃咨询与建议┃版主议事

我的提问

工程师杂谈

工程师创意

工程师职场

论坛电子赛事

社区活动专版

发烧友活动

-

嵌入式论坛

单片机/MCU论坛

FPGA|CPLD|ASIC论坛

DSP论坛

嵌入式系统论坛

-

电源技术论坛

电源技术论坛

-

硬件设计论坛

PCB设计论坛

电路设计论坛

电子元器件论坛

控制|传感

总线技术|接口技术

-

测试测量论坛

LabVIEW论坛

Matlab论坛

测试测量技术专区

仪器仪表技术专区

-

EDA设计论坛

multisim论坛

PADS技术论坛

Protel|AD|DXP论坛

Allegro论坛

proteus论坛|仿真论坛

EasyEDA-中国人自已的EDA工具

Orcad论坛

-

综合技术与应用

电机控制

智能电网

光电及显示

参考设计中心

汽车电子技术论坛

医疗电子论坛

-

开源硬件

DFRobot专区

树莓派论坛

智能硬件论坛

开发快智能硬件开发平台

Intel物联网开发者专区

Waveshare

乐美客SBC专区

Arduino论坛

BeagleBone论坛

机器人论坛

创客神器NanoPi

小钢炮CANNON

比派科技banana pi专区

-

无线通信论坛

无线通信技术专区

天线|RF射频|微波|雷达技术

-

IC设计论坛

芯片测试与失效分析

Mixed Signal/SOC[数模混合芯片设计]

Analog/RF IC设计

设计与制造封装测试

-

个人版区

阿东Verilog技术专版

直流马达驱动电路设计

LabVIEW英雄联盟

特权同学FPGA专区

-

厂商专区

灵动微电子 MM32

盈鹏飞嵌入式

TI论坛

TI Deyisupport社区

芯灵思嵌入式论坛

Tisan

米尔科技

庆科社区

WIZnet技术专区

Cypress技术论坛

飞凌嵌入式

Qualcomm技术论坛

英创嵌入式

机智云GoKit论坛

-

检测技术与质量

电磁兼容(EMC)设计与整改

安规知识论坛

检测与认证

-

消费电子论坛

手机技术论坛

平板电脑/mid论坛

音视/视频/机顶盒论坛

-

电子论坛综合区

聚丰众筹官方社区

新人报道区

聚丰供应链

-

论坛服务区

-

供求信息发布

供需广告

招聘┃求职发布区

电子展览展会专区