本應用筆記描述了在智能手機和平板電腦等便攜式設備中正確使用MAX9635環境光傳感器的中斷輸出功能進行LCD背光管理。中斷功能允許調整多個照明區域的光閾值,而無需反復輪詢光傳感器。如果使用得當,此功能允許系統保持低功耗睡眠模式或將其他資源專用于其他用戶定義的任務。中斷功能顯著提高了能源效率、系統性能和用戶在不同照明條件下的體驗。本文還給出了一個用于對中斷進行編程的I2C C偽代碼示例。
介紹
MAX9635環境光傳感器采用先進的技術檢測環境光的亮度。該器件可用于多種應用,包括但不限于便攜式和家用電子產品以及室內照明中的顯示 LCD 背光調節。MAX9635具有極低的工作功耗(僅為0.65μA)和1.8V工作電壓(設計用于方便與微控制器I/O端互),使其非常適合用于許多傳感器和安全應用。背光調節和低工作功耗可延長電池壽命并提高照明應用的能源效率。
MAX9635最有價值的特性之一是高度通用的中斷輸出引腳。此引腳允許系統保持低功耗休眠狀態或將資源專用于其他用戶有價值的任務。
本應用筆記解釋了如何對此中斷輸出功能進行編碼,以確保最佳系統性能。給出了一些示例 C 風格的偽代碼。
寄存器預設
下表顯示了MAX9635的寄存器圖,以及上電復位(POR)狀態。
注冊 | 位 | 寄存器地址 | 上電復位狀態 | R/W | |||||||
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||||
地位 | |||||||||||
中斷狀態 | — | — | — | — | — | — | — | INTS | 0x00 | 0x00 | R |
中斷使能 | — | — | — | — | — | — | — |
INTE |
0x01 | 0x00 | R/W |
配置 | |||||||||||
配置 | CONT | MANUAL | — | — | CDR | T | 0x02 | 0x03 | R/W | ||
LUX reading | |||||||||||
LUX high byte | — | — | — | — | M3 | M2 | M1 | M0 | 0x04 | 0x00 | R |
閾值集 | |||||||||||
上限閾值高字節 | UE3 | UE2 | UE1 | UE0 | UM7 | UM6 | UM5 | UM4 | 0x05 | 0xFF | R/W |
下限閾值高字節 | LE3 | LE2 | LE1 | LE0 | LM7 | LM6 | LM5 | LM4 | 0x06 | 0x00 | R/W |
閾值計時器 | T7 | T6 | T5 | T4 | T3 | T2 | T1 | T0 | 0x07 | 0xFF | R/W |
預設寄存器包括配置、中斷使能和閾值定時器。
配置寄存器(地址 0x02)、CONT=0 和 MANUAL=0 的上電設置足以滿足大多數用戶應用的需求。這些設置告訴MAX9635根據適當的環境光水平自動調整其靈敏度。
為了啟用中斷功能,主機(即微控制器)首先向中斷啟用寄存器(地址 1x0)寫入 01。
然后,主機將適當的延遲寫入閾值定時器寄存器(地址0x07)。通常,此設置不會更改。編寫此閾值延遲有兩個主要原因。首先,將非零值寫入此寄存器可防止由于光照條件的短暫或瞬時變化而導致的誤跳閘。當用戶手勢或設備移動后,陰影經過光傳感器時,可能會發生短暫的光線變化。其次,顯示器亮度響應的有意延遲為定義的用戶界面算法留出了時間。這方面的一個例子是像iPad?設備這樣的移動應用程序。在這個例子中,人們不希望顯示器亮度在通過黑暗的走廊(如被周期性燈光打斷的地鐵)時快速波動。
閾值寄存器設置
在正常操作期間,用戶重復編程上限閾值寄存器(地址0x05)和下限閾值寄存器(地址0x06)。當環境光水平超過這些寄存器定義的窗口電平時,將觸發中斷(寄存器0x00中的INTS位設置為1,/INT硬件引腳被拉低)。此中斷的持續時間將超過閾值計時器寄存器(地址 0x07)定義的延遲。
為了對閾值寄存器設置進行編程,主機首先從數據寄存器中讀取勒克斯計數,LUX高字節(地址0x03)和LUX低字節(地址0x04),以找到當前工作區。然后,主站設置適當的上限閾值寄存器和下限閾值寄存器計數。
背光控制算法示例
人眼以對數方式感知亮度,其方式與人耳感知響度的方式大致相同。因此,背光強度通常經過編程,使其也以對數方式響應環境光水平。因此,在低光水平下有更精細的步進,而在明亮的環境條件下,背光強度變化不大。理想情況下,主機處理器還將實現其他高級圖像處理算法,例如基于此環境光水平信息的對比度和顏色調整。
典型的亮度控制算法可能有五個控制閾值級別。通常,界面玻璃的類型和物理開口的大小可以將光傳感器“看到”的光減少到外部環境光的5%至10%。在設置閾值水平時,應考慮此縮放。
下表是背光強度以及上限和下限閾值的一個示例。要將閾值勒克斯轉換為閾值計數,只需將目標勒克斯設置除以 0.045。
照明區 | 外部照度(典型值) | 背光強度(%) | 外部勒克斯,下限閾值(典型值) | 外部勒克斯,上限閾值(典型值) | 下限閾值(10% 玻璃) | 上限閾值(10% 玻璃) |
黑暗 | 4 | 25 | < 0 | > 10 | < 0 | > 1 |
? | 20 | 45 | < 10 | > 50 | < 1 | > 5 |
家 | 100 | 65 | < 50 | > 200 | < 5 | > 20 |
辦公室 | 400 | 85 | < 200 | > 1000 | < 20 | > 100 |
陽光 | > 2000 | 100 | < 1000 | >最大值 | < 100 | >最大值 |
隨外部照明條件改變背光強度。
實現中斷
下圖顯示了主微控制器實現的流程圖的典型示例。
算法閾值水平和環境測量:計數與勒克斯
根據計數而不是勒克斯值實現算法更直接。這樣做無需使用任何浮點數學運算,并允許簡單的定點微控制器代碼。
環境光計數 | 2^(指數) × 尾數 |
指數 = 8xE3 + 4xE2 + 2xE1 + E0 | |
尾數 = 128xM7 + 64xM6 + 32xM5 + 16xM4 + 8xM3 + 4xM2 + 2xM1 + M0 | |
上限閾值計數 | 2^(指數) × 尾數 |
指數 = 8xE3 + 4xE2 + 2xE1 + E0 | |
尾數 = 128xM7 + 64xM6 + 32xM5 + 16xM4 + 15 | |
較低的閾值計數 | 2^(指數) × 尾數 |
指數 = 8xE3 + 4xE2 + 2xE1 + E0 | |
尾數 = 128xM7 + 64xM6 + 32xM5 + 16xM4 |
使用上表中所需的閾值,可以計算閾值寄存器字節,以用作每個照明區域的偽代碼中的限制。這些閾值與根據上述公式計算的環境光計數進行了簡單比較。
區 | 下限閾值,10% 玻璃 (勒克斯) | 上限閾值,10% 玻璃(勒克斯) | 所需的下限閾值計數 | 所需的閾值上限計數 | 下限閾值寄存器字節 | 上限閾值寄存器字節 | 實際下限閾值計數 | 實際上限閾值計數 | 實際下限閾值 | 實際上限閾值 |
黑暗 | < 0 | > 1 | 0 | 22 |
0000 0000 |
0000 0001 |
0 | 31 | < 0 | > 1.395 |
? | < 1 | > 5 | 22 | 111 |
0000 0001 |
0000 0110 |
16 | 111 | < 0.72 | > 4.995 |
家 | < 5 | > 20 | 111 | 556 |
0000 0110 |
0010 1001 |
96 | 636 | < 4.32 | > 28.62 |
辦公室 | < 20 | > 100 | 556 | 2222 |
0010 1001 |
0100 1000 |
576 | 2288 | < 25.92 | > 102.96 |
陽光 | < 100 | >最大值 | 2222 | 4177920 |
0100 1000 |
1110 1111 |
2048 | 4177920 | < 92.16 | > 188006 |
應該注意的是,如果工作光水平非常接近定義的照明區域的邊界,背光水平可能會更頻繁地波動并給用戶帶來不適。因此,在一個照明區域的上限閾值和下一個較高照明區域的下限閾值之間定義了一個小的重疊區域。這提供了一個自然的滯后,作為對小光波動的屏蔽。如果需要,可以進一步擴展這些重疊。
這里描述的算法只是背光亮度控制的一種可能實現的一般準則。那些精通背光控制技術的人已經開發了許多不同的算法,為最終用戶提供復雜而透明的感覺。
審核編輯:郭婷
-
傳感器
+關注
關注
2553文章
51390瀏覽量
756571 -
lcd
+關注
關注
34文章
4438瀏覽量
168376
發布評論請先 登錄
相關推薦
評論