采用max44009环境光传感器,轻松控制lcd显示屏亮度

上传人:wm****3 文档编号:46919953 上传时间:2018-06-28 格式:PDF 页数:10 大小:435.74KB
返回 下载 相关 举报
采用max44009环境光传感器,轻松控制lcd显示屏亮度_第1页
第1页 / 共10页
采用max44009环境光传感器,轻松控制lcd显示屏亮度_第2页
第2页 / 共10页
采用max44009环境光传感器,轻松控制lcd显示屏亮度_第3页
第3页 / 共10页
采用max44009环境光传感器,轻松控制lcd显示屏亮度_第4页
第4页 / 共10页
采用max44009环境光传感器,轻松控制lcd显示屏亮度_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《采用max44009环境光传感器,轻松控制lcd显示屏亮度》由会员分享,可在线阅读,更多相关《采用max44009环境光传感器,轻松控制lcd显示屏亮度(10页珍藏版)》请在金锄头文库上搜索。

1、 美信社区:http:/ 采用采用 MAX44009 环境光传感器,轻松控制环境光传感器,轻松控制 LCD 显示屏亮度显示屏亮度 Ilya Veygman, 应用工程师 摘要:本应用笔记主要讲述采用摘要:本应用笔记主要讲述采用 MAX44009 环境光传感器控制便携式设备环境光传感器控制便携式设备(譬如智能手譬如智能手 机和平板电脑机和平板电脑)背光亮度的应用。针对背光亮度调节,本文介绍了两种不同的控制方案。此背光亮度的应用。针对背光亮度调节,本文介绍了两种不同的控制方案。此 外,本文还就如何获得更好的控制效果提供了相关建议,同时也提供了实现本文所述算法外,本文还就如何获得更好的控制效果提供了

2、相关建议,同时也提供了实现本文所述算法 的源代码。的源代码。 引言引言 环境光传感器(ALS)集成电路正越来越多地用于各种显示器和照明设备, 以节 省电能,改善用户体验。借助 ALS 解决方案,系统设计师可根据环境光强度,自 动调节显示屏的亮度。 因为背光照明的耗电量在系统的总耗电量中占据很大的比 例,实行动态的背光亮度控制,可节省大量的电能。此外,它还能够改善用户体 验,让显示屏亮度根据环境光条件自行调整到最佳状态。 MAX44009 详情见 系统实现需要三大部分:监测环境光强的光传感器、数据处理装置(通常是 微控制器)、控制背光输入电流的执行器。 背光控制:环境光传感器背光控制:环境光传感

3、器 图 1 是实施背光控制的系统示范框图。在这套组合中,光传感器是关键的组 成部分,因为它要向系统的其他模块提供环境光强信息。光传感器必须具备将光 信号转换成电信号的信号转换器(譬如光电二极管或 CdS 光敏电阻)和信号放大和 /或调节装置以及模/数转换器(ADC)。 图 1. 实施背光控制的系统框图 图 2 所示为分立光电二极管电路,从图中可以看出,该电路需要一个或多个 运算放大器: 一个用于电流到电压的转换, 可能还需要一级放大, 提供附加增益。 它还包括一些分支电路,用于供电,确保高度可靠的信号链。而在空间极其宝贵 的应用中,所需元件的数量过多可能导致空间受限问题。 美信社区:http

4、:/ 图 2. 光电二极管电路分立设计 这里还存在一个更细微的问题。具体而言,理想情况下,应确保环境光的测 量模拟了人眼对光线的响应机制。这通常借助 CIE 提供的视觉亮度曲线(图 3)。 然而,光电二极管很少能够完全模拟这种响应机制,因为它们通常具有很高的红 外(IR)灵敏度。在 IR 强度较大的光照条件(譬如白炽灯或日光)下,这种红外灵敏 度会造成错误地判断光线强度。 解决上述问题的方法之一是使用两个光电二极管: 一个采用对可见光和红外 光都很敏感的元件,另一个采用只对红外光敏感的元件。最终用前者的响应值减 去后者的响应值,将红外干扰降至最小,获得准确的可见光响应。 这种解决方案虽然有效,

5、却增加了分立电路的占用空间。通常还很难、甚至 不可能让两个分立的光电二极管配合得足够紧密,以实现消除红外干扰的目的。 如果不配备精密放大器(譬如对数放大器),动态范围可能很小。换句话说,很难 利用这种组合获得可重复的结果。 图 3. CIE 曲线和典型的光电二极管 高集成度解决方案不仅能够获得比人眼光学系统更真实的光强数据, 还能够 节省大量空间 MAX44009 等环境光传感器,可将所有信号调节和模/数转换器集 成在一个小封装(2mm x 2mm UTDFN 封装)内, 从而在空间受限应用中有效节省电 路板面积。 图 4 提供了 MAX44009 的功能框图,采用 I2C 通信协议,使其与微

6、控制器的 连接方式更简单,数据传输速度更快。除此之外,该解决方案的高集成特性使其 能够置于柔性电缆,安装在离主电路板距离合适的位置。 美信社区:http:/ 图 4. MAX44009 功能框图 背光控制:调节显示屏亮度背光控制:调节显示屏亮度 该控制方案的第二部分是调节显示屏的背光亮度。这可通过多种方式实现, 具体取决于设备中的显示屏模块。有两种最简单的方式,一种是借助脉冲宽度调 制(PWM)方案的直接调节方式,另一种是采用显示屏控制器的间接调节方式。 许多显示屏模块如今都配有一个集成控制器, 用户可以通过向控制器发送串 行命令,直接设置背光亮度。如果显示屏模块未配备集成控制器,还可安装一

7、个 简单的背光控制执行器, 控制显示屏后面用于背光照明的白光 LED 灯的输入电流。 实现这种控制的一种简单办法是: 直接给 LED 串联一个场效应晶体管(FET), 使用 PWM 信号快速打开、关闭 FET (图 5)。然而,也可以利用单一芯片(用于 LED 控 制的 MAX1698 升压转换器)准确、可靠地调节(图 6),请参考应用笔记 3866 “Low-power PWM output controls LED brightness” ,获取详细信息。 图 5. 简单的 PMW 控制电路 美信社区:http:/ 图 6. 基于 MAX1698 的 LED 亮度调节器 背光控制:建立连

8、接背光控制:建立连接 最后一步就是在传感器和执行器之间建立连接,通过微控制器实现。有人可 能首先要问: “环境光强如何映射到背光亮度?”事实上,有些文献专门介绍了 相关方案。其中一种映射方式是,Microsoft?针对运行 Windows? 71 操作系统的 计算机提出的。图 7 所示曲线是由 Microsoft 提供的,它可以将环境光强度映射 到显示屏亮度(以全部亮度的百分比表示)。 图 7. 将环境光强映射为最佳显示屏亮度的曲线示例 这种特殊曲线可以用以下函数表示: 如果设备采用的是已集成亮度控制功能的 LCD 控制芯片, 就可通过向芯片发 送指令,轻松设置背光亮度。如果设备采用的是 PW

9、M 直接控制亮度,则要考虑 如何将比例信号映射至显示屏亮度。 在 MAX1698 示例中,根据其产品说明书的介绍,可以将驱动电流映射为电 压。 通过这个示例, 我们可以假设 LED 电流强度几乎与其电流呈线性关系。 这样, 我们就可以在上述等式中乘上一个系数,计算出 PWM 所映射的有效电压,该电 压再被映射至 LED 电流,最后转化成显示屏亮度。 方案实施方案实施 美信社区:http:/ 最好不要从一个亮度级直接跳转到另一个亮度级, 而是平滑上调和下调背光 亮度,确保不同亮度等级之间无缝过渡。为了达到这一目的,最好采用带有固定 或不同亮度步长、 可逐步调节亮度的定时中断, 也可采用带有可控

10、制 LED 输入电 流的 PWM 值的定时中断,或者是能够发送到显示屏控制器的串行指令的定时中 断。图 8 提供了这种算法的一个示例。 图 8. 步进式亮度调节的算法示例 另一个问题是,系统响应环境光强变化的速度。我们应尽量避免过快地改变 亮度等级。这是因为光强的瞬间变化(譬如一扇窗户打开或瞬间有一束光扫过)可 能导致背光亮度发生不必要的变化,这往往会造成用户感觉不适。并且,较长的 响应时间还有助于减少微控制器对光传感器的检测次数, 从而可以释放一定的微 控制器资源。 最初级的方法就是每隔一两秒钟检查一次光传感器, 然后相应地调整背光亮 度。更好的方法是,只有光线强度偏离特定范围一定时间后,才

11、对背光亮度进行 调节。譬如,如果正常光强是 200lux,我们可能只会在光强降到 180lux 以下或 升至 220lux 以上,而且持续时间超过数秒的情况下才调节亮度。幸运的是, MAX44009 集成了中断引脚和阈值寄存器,可轻松实现这个目的。 附录:源代码附录:源代码 #define MAX44009_ADDR 0x96 / begin definition of slave addresses for MAX44009 #define INT_STATUS 0x00 #define INT_ENABLE 0x01 #define CONFIG_REG 0x02 #define HIGH

12、_BYTE 0x03 #define LOW_BYTE 0x04 美信社区:http:/ #define THRESH_HIGH 0x05 #define THRESH_LOW 0x06 #define THRESH_TIMER 0x07 / end definition of slave addresses for MAX44009 extern float SCALE_FACTOR; / captures scaling factors to map from % brightness to PWM float currentBright_pct; / the current scree

13、n brightness, in % of maximum float desiredBright_pct; / the desired screen brightness, in % of maximum float stepSize; / the step size to use to go from the current / brightness to the desired brightness uint8 lightReadingCounter; /* * Function: SetPWMDutyCycle * * Arguments: uint16 dc - desired du

14、ty cycle * * Returns: none * * Description: Sets the duty cycle of a 16-bit PWM, assuming that in this * architecture, 0x0000 = 0% duty cycle * 0x7FFF = 50% and 0xFFFF = 100% */ extern void SetPWMDutyCycle(uint16 dc); /* * Function: I2C_WriteByte * * Arguments: uint8 slaveAddr - address of the slave

15、 device * uint8 command - destination register in slave device * uint8 data - data to write to the register * * Returns: ACK bit * * Description: Performs necessary functions to send one byte of data to a * specified register in a specific device on the I2C bus */ uint8 2C_WriteByte(uint8 slaveAddr, uint8 command, uint8 data); /* * Function: I2C_ReadByte * * Arguments: uint8 slaveAddr - address of the slave device 美信社区:http:/ * uint8 command - destination register i

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号