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

上传人:ldj****22 文档编号:35834343 上传时间:2018-03-21 格式:PDF 页数:10 大小:258.70KB
返回 下载 相关 举报
采用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:/ 采用采用 MAX44009MAX44009 环境光传感器,轻松控制环境光传感器,轻松控制 LCDLCD 显示屏亮度显示屏亮度 Ilya Veygman, Ilya Veygman, 应用工程师应用工程师 摘要:本应用笔记主要讲述采用摘要:本应用笔记主要讲述采用 MAX44009MAX44009 环境光传感器控制便携式设备环境光传感器控制便携式设备( (譬如智能手譬如智能手 机和平板电脑机和平板电脑) )背光亮度的应用。针对背光亮度调节,本文介绍了两种不同的控制方案。此背光亮度的应用。针对背光亮度调节,本文介绍了两种不同的控制方案。此 外,本文还就如何获得更好的控制效果

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

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

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

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

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

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

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

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

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

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

12、CONFIG_REG 0x02 #define HIGH_BYTE 0x03 #define LOW_BYTE 0x04 #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; / th

13、e current screen 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

14、dc - desired duty 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 - addre

15、ss of the slave device * uint8 command - destination register in slave device * uint8 data - data to write to the register * 美信社区:http:/ * 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 * uint8 command - destination register

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

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