电容式触摸感应是一项用于在智能手机、平板电脑、液晶和LED电视等各种电子应用中实现直观用户界面(UI)的流行技术。触摸按键正在快速取代传统的机械按键。不过,与本身提供用户触觉反馈的机械按键不同,触摸按键需要额外的组件才能提供反馈。LED广泛用于实现视觉反馈,并为基于触摸的UI提供背光照明。
一些应用除了简单地开启和关闭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的不同方法。
下面我们将了解一下实现脉冲宽度调制(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照明的系统时所遇到的常见挑战,以及应对方法。
我们在第二部分中介绍了PWM(脉冲宽度调制)的不用实现方法。在第三部分中,我们将探讨设计具有电容式感应和LED照明的系统时所遇到的常见挑战,以及应对方法。
布局设计
本节我们将讨论在设计具有电容式传感器和开关线路(例如LED、通信)的系统时所需遵循的重要布局设计规则。开关迹线与电容式传感器迹线并行布置会使感应系统的开关噪声结合在一起。由于我们试图以毫微微法拉级(fF)的分辨率测量电容,因此感应模块对串扰噪声就会很敏感。只要传感器迹线具有固定参考(例如并行的地线),感应系统就会具有恒定电容,但是,开关迹线会在接地与高阻抗或VDD间快速切换,从而改变参考值,进而导致电容变化。因此,在布线时应遵循的方法是决不能让开关迹线与感应迹线并行放置。图1给出了推荐的布局布线图。
图1:推荐的布线图
我们应该可以并行布置多条传感器迹线以防止进一步增加布线复杂性。让我们看一看并行布置两条传感器线路时会出现的问题。假设当扫描一条线路时,另一条线路为浮动状态。那么触摸浮动线路将导致与另一条线路间的电容变化。解决这个问题的办法是将所有未被扫描的传感器引脚接地。之所以能这样做是因为控制器通常具有可多路复用传感器引脚的电容式传感模块。但是,如果器件支持对多条线路同时扫描,那么需要同时扫描的引脚不应并行布线。例如,赛普拉斯的PsoC器件 支持双通道同时扫描。
设计原理图时将开关引脚与感应引脚的隔离(见图2)有助于在布局过程中避免并行布线。我们注意到在固件实现方案中可为PWM驱动选择任意引脚,这种优势能实现更方便的引脚分配。
图2:传感器与开关线路的隔离引脚分配
考虑到电子系统正变得越来越复杂,可能不一定总能完全避免并行布线。这种情况下可以采用一个电容器来降低LED线路的转换率,进而减少串扰,如图3所示。电容器的取值通常是0.1μF。
图3:串扰解决方案
驱动电流强度
务必要选择可满足应用中电流驱动要求的控制器,以减少BOM成本。端口引脚通常具有较高的吸入电流能力和较低的输出电流能力。应把需要高电流的LED连接在吸入结构中。这些引脚的驱动模式应该能够在开漏模式下进行配置。这样,写入0可将引脚驱动到高阻抗状态,从而关闭LED;写入1可将引脚驱动至低阻抗状态,从而打开LED。当与电容式感应相结合时,电流的吸入可能产生一个不良效果,会限制器件所能吸入的最大电流。我们将在第4部分具体介绍这个问题。
如果LED连接在多路复用结构中,那么输出能力就比较重要。需要更高驱动电流的应用必须使用外部MOSFET开关来驱动LED。
负载瞬变噪声
可以执行电容式感应并驱动LED的SoC属于混合信号IC,具有模拟和数字模块。模拟和数字电路必须尽可能地进行分离,以防止数字噪声降低电容式感应系统的性能。常见的挑战在于,当在吸入模式下连接LED的输出引脚并在逻辑高电平与逻辑低电平之间切换时,感应系统会拾取接地噪声。
为减少引脚数量,有些混合信号IC将芯片的模拟接地导体片和数字接地导体片共同连接到封装的共用接地引脚上。该接合线电阻通常是几十毫欧姆。图4给出了这种引脚分配方式。
图4:地端结合原理图
现在考虑LED被配置为吸入模式的情况。输出引脚将LED电流吸入到IC地端,同时驱动至低阻抗并打开LED。吸入的电流因接线的电阻产生IR压降,并改变相对于电路板地端的IC接地电势。尽管偏移量仅为几毫伏,但感应系统非常敏感,它需要在fF精度范围内测量电容。这对接地偏移比较敏感的感应方法来说是个问题。
当多个输出引脚同时吸入电流时,这个问题会变严重。这会导致相当于一个手指触摸的传感器原始计数有高偏移量,从而引起误触发。图5给出了由LED切换引起的原始计数偏移。
图5:LED电流吸入引起的原始计数偏移
克服这个问题的一些常见技术包括:
1. 如果IC的模拟和数字接地接出到不同的引脚,应使它们分开,并在电源端将它们短路。
2. 依照正确的布局原则减小电路板接地与IC接地之间的电阻,以减小寄生的IR压降。
3. 减小连接LED的输出引脚上的吸入电流,以减小寄生的IR压降。
4. 在原理图设计过程中一定要进行引脚分配,以便将LED分配给远离IC接地引脚的引脚,并将传感器分配给距接地引脚最近的引脚。这样就能把寄生的IR压降降到最小。
在这个部分中,我们探讨了如何应对具有电容式感应和LED照明的系统的常见设计挑战。在第4部分,我们将介绍针对此类应用的低功耗设计考虑因素。
在第三部分中,我们探讨了如何应对具有电容式感应和LED照明的系统的常见设计挑战。现在我们来介绍针对此类应用的低功耗设计考虑因素。
低功耗设计考虑因素
为了优化功耗,电容式传感器通常以扫描-休眠-扫描-休眠的重复程序进行扫描。应按照特定时间间隔扫描传感器,且器件会在连续扫描之间进入休眠状态。一个扫描-休眠周期被称为刷新间隔。 下面给出了扫描-休眠-扫描-休眠周期的时序图。
图1:扫描-休眠-扫描周期
现在我们来着重研究刷新间隔内的器件功率模式。当传感器被扫描时,称器件处于活动模式。传感器扫描完成后,器件继续处于活动模式,这期间CPU处理传感器数据,驱动LED、蜂鸣器等输出,并将传感器数据传输到主机。这步完成后,器件才进入休眠模式。
在活动模式下,以下模块启动。
1.以MHz速度运行的主时钟
2.电容式感应引擎
3.CPU
4.通信模块,例如I2C或SPI
5.用于实现PWM以进行LED亮度控制的定时器。我们称之为“快速定时器”,因为它能提供微秒时基。
6.用于维持刷新间隔的定时器。我们称之为“慢速定时器”,因为它提供毫秒时基。
在休眠模式下,以下模块启动。
1.用于维持刷新间隔的慢速定时器。该定时器还能将器件从休眠模式中唤醒。
2.通信模块,例如I2C(启用唤醒地址匹配)或SPI
为实现最佳的功耗,应使用如下方法:
1.当扫描传感器时,CPU进入休眠状态
2.在扫描某个传感器的同时,处理之前扫描过的传感器的数据。这样就避免了器件在所有传感器扫描完成后处理传感器数据的过程中处于活动状态。
这些方法确实有助于优化功耗,但如果设计中包含LED亮度控制等高级功能,那么功耗优化就会退居次席。这是因为LED亮度控制需要在器件的整个执行周期内发生,因此要求快速定时器一直处于启动状态,也就是使MHz时钟处于开启状态。这会导致更高的功耗。然而在功耗优化与LED亮度控制之间仍存在折衷方案。我们看看应该如何做。
1.CPU休眠
有些高级器件,包括赛普拉斯的PSoC4等ARM cortex-M器件,能在CPU进入休眠状态的同时让定时器等外设在后台运行。我们以前了解了有两种方法可以实现PWM:
a.在基于固件的实现方案中,我们使用定时器中断来驱动PWM。最好的方式是:只要中断未被触发就让CPU处于休眠状态。一旦触发中断,CPU立即唤醒以服务该中断。ISR必须保持越短越好,以获得更佳的功耗。
b.当使用硬件PWM时存在两种情况。第一种情况是使用具有比较功能的定时器,该定时器不能直接驱动引脚。这种情况的功耗比较低,原因在于确定PWM的占空比时ISR只驱动引脚而不驱动逻辑,因此CPU唤醒的时间较短。第二种情况是使用能直接驱动输出引脚的定时器。这种情况下不需要唤醒CPU来服务任何ISR,因此能进一步改善功耗。
以下的图2给出了不同情景的CPU状态。为了简化,图中未显示CPU唤醒以处理传感器数据的部分。
图2:基于固件和硬件的PWM实现方案中的CPU状态
2.在休眠模式下驱动LED
采用以上讨论的功耗降低方法实现的优化效果并不明显,因为只有CPU处于休眠状态。主时钟和定时器仍然开启,并消耗功率。
一种解决方法是采用由低功率休眠模式下的时钟驱动的定时器。这种情况下可将主时钟关闭,并使器件进入休眠模式。如果有一个以上的定时器能在休眠模式下运行,那么其中一个可用来实现PWM,其它的用来维持刷新间隔。否则,这两个工作都将通过慢速定时器来实现。
如果采用慢速定时器实现PWM以及维持刷新间隔,那么我们需要注意在功耗优化与PWM的占空比粒度之间进行权衡。如果要求的粒度低,应设定好定制器的周期,使其不能过于频繁地产生中断和唤醒器件。
例如,慢速定时器以32KHz的时钟运行,刷新间隔为120ms。如果要求占空比以10的步长变化,例如10%、20%、30%等,而且所需PWM频率是100Hz,那么定时器可加载周期值32,这样每隔1ms生成中断。如果要求的占空比粒度增加,那么中断必须出现得比1ms更加频繁。此时的功耗将比之前更高。
在很多SoC中,休眠模式下工作的时钟其精度比主时钟的精度要低很多。典型的休眠模式时钟容差很大,可达到±60%。而且,为了节省BOM成本通常不使用外部晶体。这种情况下,可定期根据主时钟校正休眠时钟,这样生成的PWM将与由主时钟计时的定时器所生成的PWM一样精确。
我们来了解一种借助主时钟校正休眠模式时钟的方法。定时器用休眠模式时钟计时,并根据主时钟周期的数量使用固件延迟程序生成固定延迟。固件逻辑在延迟的末尾读取定时器计数。这就是定时器校正值。可将校正值或其倍数加载到定时器以创建延迟。
校正值 = 休眠模式时钟 x 固件延迟
图3:休眠模式时钟校正法的方框图演示
我们可以使用这种方法计算休眠模式时钟的精确度。存在两个误差来源:
1. 主时钟的精确度(e)
这会直接反映在固件延迟中,进而反应在校正值中。
2. 校正值的舍入误差 (r)
假设最大有1位变化,误差计算方法如下
最大舍入误差 = 1/(固件延迟 ×休眠模式时钟)
当休眠模式时钟最低时,该误差最大。使用较大的固件延迟能减少该误差。
现在,校正值的最大误差 = e + r。
现在考虑这种情况:休眠模式时钟是32 KHz ± 50%,主时钟的精确度为±2 %,固件延迟为1ms。 这种情况下,最慢的休眠时钟是16 KHz,e = 0.02,r = 0.0625。因此,校正值的最大误差 = 0.0825 或 8.25 %。注意,使用10ms的固件延迟可将误差降至2.63%
3.用唤醒式接近传感器优化功耗
在触摸按键应用中实现LED亮度功能同时保持低功耗的一种创新方法是使用唤醒式接近传感器。
无线鼠标、移动电话、平板电脑、遥控背光以及笔记本键盘背光等应用均采用了这种技术,能在用户接近设备时唤醒系统。这些应用利用接近传感器确定何时从低功耗模式切换至全功能的活动模式。
图4:使用唤醒式接近传感器的应用
当电容式触摸感应器件运转在低功耗模式时,只扫描接近传感器,同时关闭背光以表明器件处于非活动状态。只扫描接近传感器,这样能降低平均功耗。当用户手部接近UI面板时,接近传感器可检测手的出现,并唤醒设备。从低功耗模式唤醒后,电容式感应器件进入活动模式,并扫描所有按键传感器以检测触摸情况。此外,背光开启可帮助用户触摸正确的按键。
赛普拉斯的CapSense MBR3等器件已经在可配置的单芯片SoC中实现了唤醒式接近功能以及电容式感应和亮度控制功能。
|