本应用笔记介绍了使用MAX44009环境光传感器在智能手机和平板电脑等便携式应用中进行背光控制的解决方案。提出了两种不同的控制方案来调节背光亮度。应用笔记提供了提高性能的其他技巧,以及实现本文讨论的算法的示例代码。
概述
环境光传感器 (ALS) IC 越来越多地用于各种显示和照明应用,以节省功耗并改善用户体验。借助 ALS 解决方案,系统设计人员可以根据环境光量自动调整显示器亮度。由于背光占系统功率预算的很大一部分,动态亮度控制可以转化为可观的节能效果。它还可以改善用户体验,允许根据环境光条件优化屏幕亮度。
实现这样的系统需要三个部分:用于监控环境光量的光传感器、用于处理数据的器件(通常是微控制器)以及用于控制通过背光的电流的执行器。
背光控制:环境光传感器
图1提供了实现背光控制的系统的示例框图。光传感器是此设置的关键部分,因为它向系统的其余部分提供有关环境光照水平的信息。光传感器必须包含一个用于将光转换为电信号的换能器(例如光电二极管或CdS光敏电阻)、一些放大和/或信号调理以及一个模数转换器(ADC)。
图1.实现背光控制的系统的框图。
图2显示了光电二极管电路的分立实现方案。如您所见,该电路需要一个或多个运算放大器:一个用于I-V转换,另一个用于额外增益。它还包括额外的布线,为所有这些组件供电,并确保信号链的鲁棒性。在空间非常宝贵的应用中,所需的大量组件可能会出现问题。
图2.光电二极管电路的分立实现。
这里还有第二个更微妙的问题。具体而言,希望确保以复制人眼对光的光学响应的方式测量环境光。这通常用CIE明视曲线来描述(图3)。然而,光电二极管很少复制这种响应,因为它们通常具有很高的红外(IR)灵敏度。这种灵敏度会导致红外重光下的错误读数,例如白炽灯泡或太阳的读数。
解决此问题的一种方法是使用两个光电二极管:一个具有可见光加红外分量,另一个仅具有红外分量。然后可以相互减去两个响应,以仅获得可见光部分,并最小化红外部分。
虽然有效,但该解决方案增加了上述分立电路所需的空间。此外,要足够紧密地匹配分立光电二极管以消除红外干扰,即使不是不可能,也是非常困难的。如果没有非常复杂的放大器实现,例如对数放大器,动态范围可能会受到限制。使用这种设置很难获得可重复的结果。
图3.CIE曲线与典型光电二极管的比较。
集成解决方案不仅可以产生更符合人眼光学响应的光读数,还可以节省大量空间。MAX44009环境光传感器等器件将所有信号调理和A/D转换电路集成到小尺寸(2mm × 2mm UTDFN)中,在空间受限的应用中节省了大量电路板空间。
图4所示为MAX44009的功能框图。它使用 I2C通信协议允许一种快速、简单的方法与微控制器接口。除此之外,该解决方案的集成特性使其能够放置在柔性电缆上,并设置在远离主电路板的所需位置。
图4.MAX44009的功能框图
背光控制:调制屏幕亮度
该控制方案的第二部分涉及驱动屏幕上背光的变化。这可以通过多种方式完成,具体取决于应用程序中使用的屏幕模块。两种最简单的方法是直接通过脉宽调制(PWM)方案或使用屏幕控制器芯片间接。
现在许多显示模块都有一个集成控制器,允许用户通过向设备发送串行命令来直接设置亮度。但是,如果不可用,则可以通过控制传递到屏幕后面的一系列白光LED的功率来实现简单的背光控制执行器,这些LED提供背光。实现此目的的一种粗略方法是直接将 FET 与 LED 串联,并使用 PWM 信号快速打开和关闭(图 5)。然而,使用单芯片可以更优雅、更稳健地完成这项工作:MAX1698升压型电流调节器,用于LED(图6)。参见应用笔记3866:“低功耗PWM输出控制LED亮度”,了解该实现方案的更多细节。
图5.简单的PWM控制电路。
图6.基于MAX1698的LED稳压器
背光控制:弥合差距
最后一步是弥合传感器和执行器之间的间隙,这在微控制器中完成。人们可能会问的第一个问题是:“如何将环境光映射到背光亮度?事实上,有一些规范描述了应该如何做到这一点。Microsoft® 为运行 Windows 7 的计算机推荐了一个映射示例。图 7 中的曲线由 Microsoft 提供,用于将环境光级别映射到屏幕亮度(占全亮度的百分比)。®
图7.将环境光水平映射到最佳屏幕亮度的亮度曲线示例。
这条特定的曲线可以用以下函数来描述:
如果应用使用具有集成亮度控制的LCD控制器芯片,则可以通过向芯片发送具有所需值的命令来轻松设置亮度。如果应用使用PWM直接控制亮度,则必须考虑如何将百分比信号映射到亮度。
以MAX1698为例,可以将驱动电流映射到电压,如数据资料中所述。从那里,人们通常可以假设LED的电流几乎与其强度线性相关。因此,可以将常数乘以上述等式,以将PWM映射到有效电压,然后将其映射到LED电流,从而转换为屏幕亮度。
实施说明
最好不要直接从一种设置跳到另一种设置:相反,背光亮度应平滑地上下增加,以确保级别之间的无缝过渡。这最好通过使用具有固定或可变亮度步长大小的定时中断来逐渐改变用于控制通过LED的电流的PWM值或发送到显示控制器芯片的串行命令。图 8 提供了此类算法的示例。
图8.亮度步进算法示例。
另一个问题是系统应该多快响应环境光水平的变化。应避免过快地更改亮度级别。令人担忧的是,光线的瞬态变化(例如,经过窗户或灯)会导致背光亮度发生不希望的变化,一些用户会觉得很烦人。此外,使用较慢的响应时间可减少不断轮询光传感器的需要,从而释放一些微控制器资源。
一种基本方法是每两秒轮询一次光传感器,然后更改亮度。更好的方法是仅在光线水平离开特定区域特定时间时才更改亮度。例如,如果当前的光照水平为 200lux,则可能只想在光线水平低于 180lux 或高于 220lux 的时间超过几秒钟时更改亮度。幸运的是,MAX44009具有中断引脚和门限寄存器,因此非常容易实现。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !