一些应用除了简单地开启和关闭LED之外还需要更多视觉效果。举例来说,笔记本电脑可在设备待机状态下让电源LED闪烁,亮度发生明暗变化,形成一种所谓的呼吸效应,这也是设备中使用的众多LED效果(淡入淡出或闪烁)之一。高级LED效果结合电容式触摸按键能提高系统的美感并改善用户体验。
我们通常希望使用同一片上系统(SoC)来实现多种特性,从而降低BOM成本。,我们将介绍用同一SoC实现电容式感应和LED照明的不同方面,包括:
●我们将通过实际使用案例简单介绍电容式感应型UI应用中所采用的不同LED照明技术。
●脉冲宽度调节(PWM)是实现LED效果的常见技术之一。我们将分析采用PWM技术的不同LED效果实现方案,从而探讨如何选择适当的SoC。
●在同一SoC中整合实现多种特性肯定会充满挑战。要确保设计的高健硕性,就必须解决这些挑战。我们将讨论的常见挑战包括:LED和电容式传感器之间的串扰、驱动强度功能、导致电容式感应子系统内部噪声的LED负载瞬态以及避免方法。
●功耗优化对于任何电子系统都非常重要。我们将讨论需要LED效果的应用的低功耗设计考虑因素。
LED效果
高效的用户界面设计需要在具备电容式触摸按键情况下提供某种用户反馈功能。当用户按压机械按键时,机械按键本身就具备触觉反馈功能。然而电容式按键则不能提供这种触觉反馈。因此,采用电容式触摸按键的UI可以采用不同的反馈形式,包括视觉、音效、触觉等。根据用户界面设计,也可组合采用多种不同类型的反馈。在这些反馈类型中,用LED实现视觉反馈是一种常见的选择。我们在此将介绍一些不同类型的LED效果及其使用案例。
传感器状态驱动的LED控制
为了改进对用户的视觉反馈或模仿机械开关,LED可在固件中采取多种不同的控制方式。一些常见的方法包括:
1.LED开关
这是最简单的LED效果类型,通常用来显示触摸状态。LED位于传感器导体片背后作为背光。当有触摸时,此LED点亮为按键提供照明,没有触摸时LED就关闭。该应用实例为Samsung Galaxy S4等Android手机的菜单或后退按键。
2.闪烁
电视机制造商通常为不同型号的电视提供标准的遥控器。遥控器上的某些按键可能不支持某些型号的电视机。在此情况下,如果触摸的按键无效,可通过LED闪烁背光效果来发出提示,这是通过周期性开关LED来实现的。
3.切换
设想一下,房间灯光用机械开关控制。按下一次开关,灯会打开。只要开关继续保持这种状态,灯就会一直开着。再按一次开关,灯就会熄灭。切换特性类似于这种机械切换开关。当触摸电容式按键时,相应的LED灯会点亮。即便用户手指离开按键,LED灯还会一直亮着。如果用户再次触摸按键,LED灯就会关闭。也就是说,在每个电容式传感器状态的上升沿,输出状态都会切换其状态,具体如下图所示。CS0反映传感器状态,而GPO0反映LED状态。
图1:LED切换
4.LED开启时间
通常对于电容式按键来说,LED直接位于按键之下,从中心位置发光。用户手指放在按键上,LED就会被隐藏起来。在此情况下,如果用户手刚从按键上拿开LED灯就马上关闭,那么用户可能难以确定按键操作到底成功没有。为此,我们可以让LED在触摸结束后保持“开启”一小段时间,从而为用户提供更好的视觉反馈。这种特性就叫LED开启时间,如图2所示。
图2:LED开启时间
高级LED效果
通过改变LED灯的亮度能够实现许多高级效果。设想一下,一台电视机的前面板可通过触摸按键实现不同操作,包括调节音量等。下图就是电视机面板的一个实例。
图3:采用背光触摸按键的电视前面板
面板为全黑色,表面光亮,匹配边角设计和美学效果要求。为了让用户能在黑暗条件下方便控制,按键始终用低亮度LED点亮。如果触摸到按键,LED亮度会提高。
PWM是LED亮度控制应用中的关键技术。通过改变PWM输出的占空比,我们能如图4一样调节LED亮度,从而让用户界面的亮度对应于按键状态和环境光条件。事实上,改变亮度正是呼吸、淡入淡出等高级效果的基础所在。我们将在第二部分介绍PWM的设计参数和多种不同实现方案。
图4:LED亮度控制
1.LED淡入淡出
淡入淡出就是让亮度逐级变化。低亮度变为高亮度叫淡入,相反的就叫淡出。通过不同LED状态之间的一系列小步骤逐渐改变占空比,我们能实现淡入淡出效果(见下图)。
图5:LED淡入淡出
2.LED呼吸
我们在本文开始处通过笔记本电脑的电源键为例简单介绍了一下呼吸效应。持续地逐渐提升或逐渐下降两级之间的占空比能让LED形成“呼吸”的效果,如图6所示。待机模式下电源按键支持呼吸效应能告诉用户电源按键是活动状态并能进行操作。
图6:LED呼吸
一些厂商已经推出了用单芯片实现上述高级LED效果和电容式感应的可配置型器件,比方说赛普拉斯的CY8CMBR2110和CapSense MBR3.
我们在本部分中通过实际使用案例介绍了电容式感应型UI应用中所采用的不同LED照明技术。在第二部分中,我们将介绍实现PWM的不同方法。
我们在第一部分中通过实际使用案例介绍了电容式感应型UI应用中所采用的不同LED照明技术。下面我们将了解一下实现脉冲宽度调制(PWM,面向LED控制应用的关键技术)的各种不同方法。
PWM有两大属性:
频率:用PWM信号快速开关LED,由于开关频率会产生LED闪烁,因此PWM频率应大于100 Hz,确保人眼不会感觉到闪烁。
占空比:PWM通过改变占空比、保持负载电流恒定以控制LED的亮度。LED的平均电流取决于占空比。平均电流会随占空比的提升而升高,进而提高亮度。占空比在0%和100%之间的步长数量应满足应用中需要调节的不同亮度级数量要求。举例来说,如果应用在完全关闭(0%)到完全开启(100%)之间需要20个亮度级,那么就应支持5%的步长(除完全关闭之外包含20个步长)。
用微控制器实现PWM有两种方法。我们可用简单的定时器/计数器在固件中实现整个PWM逻辑,也可以选择集成硬件PWM功能的高级控制器来实现。
基于固件的PWM实现方案
简单的固件实现方案需要定时器和中断服务子程序(ISR)。定时器在与占空比每个步长大小的相同时间内创造中断。举例来说,如果PWM周期为10ms(100Hz)而步长大小为1ms(10%的占空比),那么定时器就要每1ms对CPU发出中断,即:定时器周期 = 脉冲宽度/步长大小。
图1给出了ISR中的逻辑。PULSE_WIDTH和ON_TIME代表PWM步长数量的脉冲宽度和开启时间。举例来说,PULSE_WIDTH = 5即满足5个亮度级的要求,而ON_TIME = 2则满足40%的占空比要求。ISR变量isrVar控制输出何时切换开/关。该逻辑可方便地进行扩展,从而支持多个LED引脚,而每个LED都有不同的占空比。
图1:固件PWM ISR逻辑
基于硬件的PWM实现方案
高级控制器有驱动PWM的专用硬件块。举例来说,赛普拉斯的PSoC4有一个TCPWM硬件块,能实现基于硬件的PWM驱动。通常说来,我们用带有比较功能的定时器来实现它,逻辑类似于上面讨论的固件逻辑。定时器将采用比较寄存器和周期寄存器。周期寄存器载入的值等于脉冲宽度,而比较寄存器载入的值等于开启时间。只要比较值大于tick值,定时器输出就会走高,反之就会走低。此外,tick值达到最大(16位定时器为65535)时,会自动回滚为零。当输出布线到端口引脚,从而能用硬件块直接驱动LED。
表1总结了基于固件和基于硬件的PWM实现方案之间的差别。
表1:基于固件和基于硬件的PWM实现方案
我们在本部分分析了实现PWM的不同方法。在第三部分中,我们将探讨设计具有电容式感应和LED照明的系统时所遇到的常见挑战,以及应对方法。