应用笔记 4871

优化MAX44007环境光传感器,改善黑色玻璃的设计性能

By: Prashanth Holenarsipur

摘要 : 黑色玻璃会改变照在环境光传感器上的光线频谱,这是环境光传感器所面临的设计挑战。尤其是黑色玻璃增强了光谱中的红外分量,而人眼看不到这部分光谱。本应用笔记介绍了几种校准/补偿方法,从而对光传感器在不同光源条件下的流明读数进行修正。本文探讨了如何利用MAX44007光传感器的高级模式调节其对可见光、IR通道的响应。利用MAX44007的寄存器可以优化传感器在黑色玻璃下的性能。

引言

MAX44007环境光传感器提供高级工作模式,用于优化传感器在黑色玻璃下的性能。

目前,大多数智能手机、平板电脑、笔记本电脑和TV都有采用黑色玻璃作为LCD屏的框架,这种框架使得终端产品看起来精致、美观。传统设计中,在环境光传感器的位置提供一个清晰的圆形窗口或缝隙。而新型产品中,光传感器的窗口或缝隙被几乎不透明的黑色油墨覆盖,与其周边的颜色浑然一体。制造商的原因很简单:颜色越深,越不容易分散用户注意力,看起来会更加专业,外观更精致!

不幸的是,深色油墨覆盖环境光传感器后,会在两个方面造成设计复杂。首先,深色油墨将衰减环境光,从而降低传感器接收到的光量。第二,油墨还改变了光线的光谱。从油墨的光谱特性看,几乎全部通过红外入射光,而可见光却衰减到其原来光强的3%至5%。所以,环境光的红外含量被大幅放大。由于深色油墨的实际化学特性会随供应商的不同而有所不同,从而使光信号传输(红外光或环境光)特性进一步复杂化。

针对黑色玻璃进行校准和补偿

准确匹配人眼的CIE曲线非常困难。正因如此,大多数高性能环境光传感器(例如 MAX44009)具有校准/补偿机制,用于修正不同光源下的流明数。这种修正通过组合两种片上光敏二极管实现,组合后可有效提供准确的光强读数,以消除不同光源条件的影响。由于照射在黑玻璃下方传感器上的光谱发生明显变化,需要进一步调整校准参数。

需要特别注意光源对黑色玻璃下方传感器的影响,对其进行校准修正。如果光源中红外成分较高,例如太阳光和白炽灯,尤其需要进行校正。白光LED (WLED)和荧光灯照射下,所需调整较小。

MAX44007具有高级模式,可用于调节对可见光和IR信号的响应。

用于优化玻璃下方传感器性能的寄存器

以下为MAX44007的寄存器,器件数据资料也提供了该寄存器表。

REGISTER BIT REGISTER ADDRESS POWER-ON RESET STATE R/W
7 6 5 4 3 2 1 0
STATUS
Interrupt Status               INTS 0x00 0x00 R
Interrupt Enable               INTE 0x01 0x00 R/W
CONFIGURATION
Configuration CONT MANUAL     CDR TIM[2:0] 0x02 0x03 R/W
LUX READING
LUX high byte E3 E2 E1 E0 M7 M6 M5 M4 0x03 0x00 R
LUX low byte         M3 M2 M1 M0 0x04 0x00 R
THRESHOLD SET
Upper Threshold—High Byte UE3 UE2 UE1 UE0 UM7 UM6 UM5 UM4 0x05 0xFF R/W
Lower Threshold—High Byte LE3 LE2 LE1 LE0 LM7 LM6 LM5 LM4 0x06 0x00 R/W
Threshold Timer T7 T6 T5 T4 T3 T2 T1 T0 0x07 0xFF R/W
ADVANCED MODE REGISTERS
Adv1 Register                 0x09 0x00 R/SW
Adv2 Register                 0xA 0x00 R/SW
Visible Gain Register                 0xB 0x00 R/SW
IR Gain Register                 0xC 0x00 R/SW
Trim Enable Register 1             ADV 0xD 0x80 R/W

一次性预设置,上电设置

按照以下步骤进行一次性预设置,通常在上电时设置。
  1. 读取4个寄存器中每个寄存器的内容:0x09–0x0C。
    • 存储变量:分别为Adv1、Adv2、VisibleGain和IRGain。
  2. 将这些变量1的补码保存为新的变量:分别为Adv1C、Adv2C、VisibleGainC和IRGainC。例如,IRGainC = !IRGain;
    • 如果IRGain = 1010 0110,则IRGainC = 0101 1001。
  3. 向寄存器0x0D写入1000 0001,进入高级模式(将ADV置1)。
  4. 将Adv1C、Adv2C、VisibleGainC和IRGainC分别写入寄存器0x09–0x0C。
    • 例如,向寄存器0x0C写入0101 1001,其原始值为1010 0110。
    • 注:随后读取寄存器0x0C (上述写操作之后),仍然读回0101 1001,因为IC在数据保存到这些高级寄存器之前进行了内部自动位翻转。
    • 保留IRGainC值,供将来使用。
  5. 必要时,为门限定时寄存器0x07设置一个合适的延迟。
  6. 设置INTE = 1 (寄存器0x01),使能中断。

进入正常工作模式

按以下步骤进入正常测量模式。
  1. 读取寄存器0x03和0x04,获得12位的流明读数。
    • 将数值保存为ComboLux。
  2. 向寄存器0x0C写入0000 0000,进入临时测量模式。
  3. 等待至少1.6s (2x 800ms)。
    • 如果需要,可联系Maxim缩短这一时间。
  4. 读取寄存器0x03和0x04,获得12位的流明读数。
    • 将数值保存为ApproxLux。
  5. 向寄存器0x0C写入IRGainC,退出临时测量模式。
  6. 计算:ActualLux = ApproxLux - IRFactor × (ApproxLux - ComboLux)
    • ActualLux为实际环境光读数。
    • ApproxLux = ComboLux,近似荧光灯和WLED灯。
    • ApproxLux > ComboLux,通常为白炽灯和太阳光。
    • 若需计算合适的IRFactor,请联系Maxim应用支持,并提供玻璃样本。可直接从实验室测试获得数据。
  7. 根据上面计算的ActualLux,设置相应的背光强度。
  8. 将ComboLux作为参考(器件的正常工作模式),设置相应的流明上限(寄存器0x05)和流明下限(寄存器0x06)。
  9. 执行INTS位(寄存器0x00)空读操作,清除所有中断(若之前已置位)。
  10. 等待硬件中断。
    • 此时程序占用时间最长。
  11. 发生硬件中断后,读取寄存器0x00,确认INTS = 1。
    • 如果INTS = 1,则转至上面的第7步。
    • 否则,如果INTS = 0,在检查其它硬件中断源后,返回至第16步。