VEML6075簡介
VEML6075是一種紫外線(UV)光傳感器,它可以測(cè)量紫外線強(qiáng)度。它通常用于各種應(yīng)用,包括環(huán)境監(jiān)測(cè)、皮膚防護(hù)和生物醫(yī)學(xué)應(yīng)用,在紫外線中,UVA是最常見的紫外線,它的波長范圍是320-400納米。它可以穿過玻璃,因此它可以通過窗戶進(jìn)入室內(nèi)。UVA對(duì)皮膚的影響不如UVB嚴(yán)重,但它可以加速皮膚衰老并使皮膚暗淡。UVB是一種更強(qiáng)的紫外線,其波長范圍為290-320納米。它不能穿過玻璃,因此只能在戶外被暴露。UVB可以導(dǎo)致皮膚曬傷,并且過度暴露可能會(huì)導(dǎo)致皮膚癌,我們可以通過Veml6075實(shí)現(xiàn)對(duì)UVA和UVB值的讀取。

VEML6075相關(guān)參數(shù)

參數(shù)中得出的重要參數(shù)有工作電壓和IIC的電平都是3.3V的,在使用的時(shí)候,5V的51單片機(jī)記得加一個(gè)電平轉(zhuǎn)換模塊通訊會(huì)穩(wěn)定一些,不然可能出現(xiàn)不正?,F(xiàn)象,本人在調(diào)試代碼過程中就因?yàn)?V的通訊電平不穩(wěn)定導(dǎo)致的通訊異常。
VEML6075IIC讀寫相關(guān)時(shí)序

拋開具體的IIC的基本時(shí)序需求,因?yàn)閂eml6075的寄存器都是16位寄存器,所以在這個(gè)地方需要注意,發(fā)送相關(guān)指令和讀取相關(guān)寄存器數(shù)據(jù)的時(shí)候嚴(yán)格按照手冊(cè)中給出的時(shí)序流程進(jìn)行通信,否則會(huì)出現(xiàn)異常情況,記得嚴(yán)格按照手冊(cè)進(jìn)行不要憑借經(jīng)驗(yàn)去寫。
VEML6075IIC讀寫驅(qū)動(dòng)代碼
// 初始化 VEML6075
bit VEML6075Init()
{
Start_I2c(); // 啟動(dòng) I2C 傳輸
SendByte(IIC_Add_W); // 寫入 VEML6075 設(shè)備地址
if(ack == 0) return 0;
SendByte(VEML6075_CONF); // 寫入 VEML6075 配置寄存器地址
if(ack == 0) return 0;
SendByte(0x10); // 寫入 VEML6075 配置寄存器的值,使用默認(rèn)設(shè)置
if(ack == 0) return 0;
Stop_I2c(); // 停止 I2C 傳輸
return 1;
}
進(jìn)行初始化操作可以在主函數(shù)中使用返回的Bit值進(jìn)行判斷模塊是否成功初始化來進(jìn)行下一步操作
// 讀取 VEML6075 的 UVA 數(shù)據(jù)
unsigned int VEML6075ReadUVA()
{
unsigned char dataH, dataL;
Start_I2c(); // 啟動(dòng) I2C 傳輸
SendByte(IIC_Add_W); // 寫入 VEML6075 設(shè)備地址
SendByte(VEML6075_UVA); // 寫入 VEML6075 UVA 數(shù)據(jù)寄存器地址
Start_I2c(); // 啟動(dòng) I2C 傳輸
SendByte(IIC_Add_R); // 寫入 VEML6075 設(shè)備地址,同時(shí)設(shè)置讀取位
dataH = RcvByte(); // 讀取 UVA 數(shù)據(jù)的高字節(jié)
Ack_I2c(0);
dataL = RcvByte(); // 讀取 UVB 數(shù)據(jù)的低字節(jié)
Ack_I2c(1);
Stop_I2c(); // 停止 I2C 傳輸
return (dataH < < 8) | dataL; // 將讀取到的數(shù)據(jù)組合成 16 位數(shù)據(jù)并返回
}
// 讀取 VEML6075 的 UVB 數(shù)據(jù)
unsigned int VEML6075ReadUVB()
{
unsigned char dataH, dataL;
Start_I2c(); // 啟動(dòng) I2C 傳輸
SendByte(IIC_Add_W); // 寫入 VEML6075 設(shè)備地址
SendByte(VEML6075_UVB); // 寫入 VEML6075 UVB 數(shù)據(jù)寄存器地址
Start_I2c(); // 啟動(dòng) I2C 傳輸
SendByte(IIC_Add_R); // 寫入 VEML6075 設(shè)備地址,同時(shí)設(shè)置讀取位
dataH = RcvByte(); // 讀取 UVB 數(shù)據(jù)的高字節(jié)
Ack_I2c(0);
dataL = RcvByte(); // 讀取 UVB 數(shù)據(jù)的低字節(jié)
Ack_I2c(1);
Stop_I2c(); // 停止 I2C 傳輸
return (dataH < < 8) | dataL; // 將讀取到的數(shù)據(jù)組合成 16 位數(shù)據(jù)并返回
}
上述代碼中嚴(yán)格按照手冊(cè)中的讀寫時(shí)序操作進(jìn)行,可以讀取出UVA和UVB的數(shù)值。
VEML6075IIC讀寫串口打印

上圖讀出的為原始的傳感器輸出的UVA和UVB的數(shù)值現(xiàn)象。
總結(jié)
使用VEML可以自己制作個(gè)人或者或者其他的一些DIY的小物品,進(jìn)行夏日的紫外線的數(shù)據(jù)進(jìn)行檢測(cè),本驅(qū)動(dòng)程序給出的數(shù)據(jù)是原始數(shù)值,如果需要做一些小作品的話需要自己找當(dāng)?shù)貧庀缶只蛘攮h(huán)境檢測(cè)機(jī)構(gòu)了解下計(jì)算因子進(jìn)行數(shù)據(jù)解析調(diào)用從而得到紫外線的UV指數(shù)值,相關(guān)程序和Veml6075的應(yīng)用手冊(cè)和校準(zhǔn)計(jì)算都會(huì)放在資料中打包,有需要的小伙伴可留言郵箱獲取。
-
傳感器
+關(guān)注
關(guān)注
2576文章
55028瀏覽量
791233 -
51單片機(jī)
+關(guān)注
關(guān)注
278文章
5714瀏覽量
134266 -
紫外線
+關(guān)注
關(guān)注
1文章
380瀏覽量
22111
發(fā)布評(píng)論請(qǐng)先 登錄
51單片機(jī)驅(qū)動(dòng)VEML6075測(cè)量紫外線強(qiáng)度
評(píng)論