采用光強(qiáng)傳感器TSL256x的感測(cè)系統(tǒng)設(shè)計(jì)方案
4.2 軟件設(shè)計(jì)
微控制器可以通過I2C總線協(xié)議對(duì)TSL2561進(jìn)行讀寫。寫數(shù)據(jù)時(shí),先發(fā)送器件地址,然后發(fā)送要寫的數(shù)據(jù)。TSL2561的寫操作過程如下: 先發(fā)送一組器件地址;然后寫命令碼,命令碼是指定接下來寫寄存器的地址00h~0fh和寫寄存器的方式,是以字節(jié)、字或塊(幾個(gè)字)為單位進(jìn)行寫操作的;最后發(fā)送要寫的數(shù)據(jù),根據(jù)前面命令碼規(guī)定寫寄存器的方式,可以連續(xù)發(fā)送要寫的數(shù)據(jù),內(nèi)部寫寄存器會(huì)自動(dòng)加1。對(duì)于I2C協(xié)議具體的讀寫時(shí)序,可以參考相關(guān)資料,在此不再贅述。TSL2561的軟件設(shè)計(jì)流程如圖4所示。
圖4 軟件設(shè)計(jì)流程
限于篇幅,在此給出對(duì)TSL2561讀寫操作的部分程序:
unsigned char TSL2561_write_byte( unsigned char addr, unsigned char c) {
unsigned char status=0;
status=twi_start();//開始
status=twi_writebyte(TSL2561_ADDR|TSL2561_WR);//寫TSL2561地址
status=twi_writebyte(0x80|addr);//寫命令
status=twi_writebyte(c);//寫數(shù)據(jù)
twi_stop( );//停止
delay_ms(10);//延時(shí)10 ms
return 0;
}
unsigned char TSL2561_read_byte( unsigned char addr, unsigned char *c) {
unsigned char status=0;
status= twi_start( );//開始
status=twi_writebyte(TSL2561_ADDR|TSL2561_WR);//寫TSL2561地址
status=twi_writebyte(0x80|addr);//寫命令
status=twi_start( );//重新開始
status=twi_writebyte(TSL2561_ADDR|TSL2561_RD);//寫TSL2561地址
status=twi_readbyte(c,TW_NACK);//寫數(shù)據(jù)
twi_stop( );
delay_ms(10);
return 0;
}
當(dāng)積分式A/D轉(zhuǎn)換器轉(zhuǎn)換完成后,可以從通道0寄存器和通道1寄存器讀取相應(yīng)的值CH0和CH1,但是要以Lux(流明)為單位,還要根據(jù)CH0和CH1進(jìn)行計(jì)算。對(duì)于TMB封裝,假設(shè)光強(qiáng)為E(單位為L(zhǎng)ux),則計(jì)算公式如下:
?、?0CH1/CH0≤0.50
E=0.030 4×CH0-0.062×CH0×(CH1/CH0)1/4
② 0.50CH1/CH0≤0.61
E=0.022 4×CH0-0.031×CH1
?、?0.61CH1/CH0≤0.80
E=0.012 8×CH0-0.015 3×CH1
?、?0.80CH1/CH0≤1.30
E=0.001 46×CH0-0.001 12×CH1
⑤ CH1/CH0>1.30
E=0
對(duì)于CHIPSCALE封裝,計(jì)算公式可以查看相應(yīng)的芯片資料。
5 結(jié)論
采用TSL256x實(shí)現(xiàn)光強(qiáng)度實(shí)時(shí)監(jiān)測(cè)的系統(tǒng),具有精度高、成本低、體積小等優(yōu)點(diǎn)。芯片內(nèi)部集成了積分式A/D轉(zhuǎn)換器,采用數(shù)字信號(hào)輸出,因此抗干擾能力比同類芯片強(qiáng)。該芯片在光強(qiáng)監(jiān)測(cè)控制領(lǐng)域已得到廣泛應(yīng)用。
評(píng)論