接近與環境光強度數字傳感器-APDS9930

    傳感器APDS9930爲具有兩種傳感功能的芯片,一方面能夠反映周圍環境的亮度,另一方面能根據紅外測距的原理能夠感應物體的靠近。其廣泛應用於手機,幫助手機做到根據環境光照強度調節屏幕背光亮度以及接聽電話自動鎖屏等功能。

    APDS9930封裝有8個腳,電和地各一個腳,I2C通信一個數據腳一個時鐘腳,還有一箇中斷腳,可以根據用戶設置的光照強度或者接近閾值來觸發中斷,還有腳LEDA和LEDK分別爲芯片內部紅外發光二極管的陽極和陰極,陰極一般直接連接芯片的最後一個腳:LDR。這個腳會根據用戶的設置來產生不同頻率的驅動信號來驅動發光二極管。

    使用這個芯片獲取環境光照強度手冊說的比較清楚了,我們就簡單說一下接近傳感這一部分,芯片使用I2C與MCU通信,我這邊的實現考慮移植性以及功能需求,決定採用IO口模擬的方式來實現與傳感器通信。NXP 半導體(原 Philips半導體)於 30 多年前發明了一種簡單的雙向二線制串行通信總線,這個總線被稱爲現在被稱爲I2C 總線。關於I2C總線的詳細介紹詳見https://www.nxp.com/docs/en/user-guide/UM10204.pdf?fsrch=1&sr=1&pageNum=1。

    I2C通信舉個配置 APDS9930的例子簡單說明。首先控制SLC和SDA發送I2C開始標誌,然後發送從機地址(0x39)以及寫入標誌,然後等待一個數據位的ACK。然後發送8位數據COMMAND.這8位數據表明寫入的寄存器地址以及操作方式(自增地址模式等),等待ack。然後發送要寫入的8位數據以及等待ack,最後發送結束標誌。

    我們需要用I2C總線,去配置寄存器Enable Register,使能接近傳感功能,Proximity Time Control Register寄存器以及Wait Time Register,配置積分轉換時間以及狀態機輪轉等待時間,以及Proximity Pulse Count Register和Control Register寄存器,配置紅外二極管的驅動脈衝數及電流等。下面列出跟接近傳感功能相關的參數的意義。

    PTIME:接近傳感器ADC的積分轉化時間,以2.73爲一個單位時間。他決定了AD輸出的最大Count值,雖然固定積分時間越高,在有效量程的基礎上分辨率會有所提高,但是鑑於其會提升累計誤差的副作用,建議還是將這個參數設置爲最低的時間2.73ms,對應的AD輸出MAX_Count爲1023。它並不能使有效量程改變。
    PGAIN: 傳感器ADC的積分轉化比例。他決定了AD輸出與距離之間的比例,轉化比例越大,距離的變化對AD輸出的Count值影響會越明顯紅外的有效量程的起點和終端都會增大,對起點與終點在別的參數爲手冊推薦的時候,增大的比較明顯。有效的量程會有些許增大。但是受干擾的可能性也會變大。
    PDRIVE:接近紅外LED驅動電流大小,分爲100mA到12.5mA四個檔位,推薦參數爲100mA,當調整爲此參數更小的時候,有效量程的起點和重點都會明顯的縮短,並且量程會減小。在區分離傳感器極近距離的mm級別距離變化的時候用到電流值較小。

    PPULSE: 在Prox Accum狀態時,驅動接近紅外傳感的脈衝數,其對起點與終點有明顯的更改,有效的量程會有些許增大。但是受干擾的可能性也會變大。手冊做的調整這個參數的實驗數據截圖如下:

    

    由上圖可以看出,傳感器會根據所射向物體的不同灰度有不同的表現。

    我們的接近功能的實現就利用AD輸出滿量程的這段距離。舉個例子,如上圖的8P的配置,灰度在18%~90%之間,其AD從滿量程往下衰減的距離爲4cm~8cm,及當物品在4cm~8cm之間的距離時,將會從寄存器Proximity DATA Register讀出的AD值爲滿量程,用來區分物體是否接近。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章