傳感器APDS9930為具有兩種傳感功能的芯片,一方面能夠反映周圍環(huán)境的亮度,另一方面能根據(jù)紅外測(cè)距的原理能夠感應(yīng)物體的靠近。其廣泛應(yīng)用于手機(jī),幫助手機(jī)做到根據(jù)環(huán)境光照強(qiáng)度調(diào)節(jié)屏幕背光亮度以及接聽(tīng)電話自動(dòng)鎖屏等功能。
APDS9930封裝有8個(gè)腳,電和地各一個(gè)腳,I2C通信一個(gè)數(shù)據(jù)腳一個(gè)時(shí)鐘腳,還有一個(gè)中斷腳,可以根據(jù)用戶設(shè)置的光照強(qiáng)度或者接近閾值來(lái)觸發(fā)中斷,還有腳LEDA和LEDK分別為芯片內(nèi)部紅外發(fā)光二極管的陽(yáng)極和陰極,陰極一般直接連接芯片的最后一個(gè)腳:LDR。這個(gè)腳會(huì)根據(jù)用戶的設(shè)置來(lái)產(chǎn)生不同頻率的驅(qū)動(dòng)信號(hào)來(lái)驅(qū)動(dòng)發(fā)光二極管。
使用這個(gè)芯片獲取環(huán)境光照強(qiáng)度手冊(cè)說(shuō)的比較清楚了,我們就簡(jiǎn)單說(shuō)一下接近傳感這一部分,芯片使用I2C與MCU通信,我這邊的實(shí)現(xiàn)考慮移植性以及功能需求,決定采用IO口模擬的方式來(lái)實(shí)現(xiàn)與傳感器通信。NXP 半導(dǎo)體(原 Philips半導(dǎo)體)于 30 多年前發(fā)明了一種簡(jiǎn)單的雙向二線制串行通信總線,這個(gè)總線被稱為現(xiàn)在被稱為I2C 總線。關(guān)于I2C總線的詳細(xì)介紹詳見(jiàn)https://www.nxp.com/docs/en/user-guide/UM10204.pdf?fsrch=1&sr=1&pageNum=1。
I2C通信舉個(gè)配置 APDS9930的例子簡(jiǎn)單說(shuō)明。首先控制SLC和SDA發(fā)送I2C開(kāi)始標(biāo)志,然后發(fā)送從機(jī)地址(0x39)以及寫入標(biāo)志,然后等待一個(gè)數(shù)據(jù)位的ACK。然后發(fā)送8位數(shù)據(jù)COMMAND.這8位數(shù)據(jù)表明寫入的寄存器地址以及操作方式(自增地址模式等),等待ack。然后發(fā)送要寫入的8位數(shù)據(jù)以及等待ack,最后發(fā)送結(jié)束標(biāo)志。
我們需要用I2C總線,去配置寄存器Enable Register,使能接近傳感功能,Proximity Time Control Register寄存器以及Wait Time Register,配置積分轉(zhuǎn)換時(shí)間以及狀態(tài)機(jī)輪轉(zhuǎn)等待時(shí)間,以及Proximity Pulse Count Register和Control Register寄存器,配置紅外二極管的驅(qū)動(dòng)脈沖數(shù)及電流等。下面列出跟接近傳感功能相關(guān)的參數(shù)的意義。
PTIME:接近傳感器ADC的積分轉(zhuǎn)化時(shí)間,以2.73為一個(gè)單位時(shí)間。他決定了AD輸出的最大Count值,雖然固定積分時(shí)間越高,在有效量程的基礎(chǔ)上分辨率會(huì)有所提高,但是鑒于其會(huì)提升累計(jì)誤差的副作用,建議還是將這個(gè)參數(shù)設(shè)置為最低的時(shí)間2.73ms,對(duì)應(yīng)的AD輸出MAX_Count為1023。它并不能使有效量程改變。
PGAIN: 傳感器ADC的積分轉(zhuǎn)化比例。他決定了AD輸出與距離之間的比例,轉(zhuǎn)化比例越大,距離的變化對(duì)AD輸出的Count值影響會(huì)越明顯紅外的有效量程的起點(diǎn)和終端都會(huì)增大,對(duì)起點(diǎn)與終點(diǎn)在別的參數(shù)為手冊(cè)推薦的時(shí)候,增大的比較明顯。有效的量程會(huì)有些許增大。但是受干擾的可能性也會(huì)變大。
PDRIVE:接近紅外LED驅(qū)動(dòng)電流大小,分為100mA到12.5mA四個(gè)檔位,推薦參數(shù)為100mA,當(dāng)調(diào)整為此參數(shù)更小的時(shí)候,有效量程的起點(diǎn)和重點(diǎn)都會(huì)明顯的縮短,并且量程會(huì)減小。在區(qū)分離傳感器極近距離的mm級(jí)別距離變化的時(shí)候用到電流值較小。
PPULSE: 在Prox Accum狀態(tài)時(shí),驅(qū)動(dòng)接近紅外傳感的脈沖數(shù),其對(duì)起點(diǎn)與終點(diǎn)有明顯的更改,有效的量程會(huì)有些許增大。但是受干擾的可能性也會(huì)變大。手冊(cè)做的調(diào)整這個(gè)參數(shù)的實(shí)驗(yàn)數(shù)據(jù)截圖如下:
由上圖可以看出,傳感器會(huì)根據(jù)所射向物體的不同灰度有不同的表現(xiàn)。
我們的接近功能的實(shí)現(xiàn)就利用AD輸出滿量程的這段距離。舉個(gè)例子,如上圖的8P的配置,灰度在18%~90%之間,其AD從滿量程往下衰減的距離為4cm~8cm,及當(dāng)物品在4cm~8cm之間的距離時(shí),將會(huì)從寄存器Proximity DATA Register讀出的AD值為滿量程,用來(lái)區(qū)分物體是否接近。