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

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

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

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

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