基于AD7879的“两点触摸”手势识别系统的实现
扫描二维码
随时随地手机看文章
引言
在许多消费电子应用中,电容式触控技术与目前市场占有率最高的传统电阻式触控技术相比,为使用者带来了多项优点,包括:更佳的视觉享受──提供高达97%的穿透率与更真实的色彩呈现;更轻松灵活的操控性──触控功能的实现只需轻触即可,甚至於可不必实际与面板接触;更长的使用寿命──电容式面板的寿命约为两亿次,为四线电阻式(一百万次)的两百倍,五线电阻式(四千万次)的五倍。目前,低成本阻性技术的应用市场包括:只需要单点触控、至关重要的极其精确的空间分辨率、利用触控笔来实现特定功能(如亚洲语言符号识别等),或者用户必须戴手套的场合。以小尺寸为主流的消费性市场在触控技术的选择上仅有电阻式与投射电容式两种,前者虽然成本低廉,但是不佳的光学表现与耐受性长期受到市场诟病;後者虽有多项优点,但真正能量产的供应商屈指可数,售价自然相当昂贵,以致仅见於少数高单价产品上。
虽然阻性技术传统上是用来检测屏幕上“单点触摸”的位置,但本文提出了一个创新的“两点触摸”概念,它利用阻性触摸屏控制器AD7879在廉价的阻性触摸屏上检测最常见的双指手势(缩放、捏合和旋转)。
1 阻性触摸屏的经典方法
典型的阻性触摸屏包括两个平行的氧化铟锡(ITO)导电层,中间的间隙将两层分开(图1)。上层(Y)的边缘电极相对于下层(X)的边缘电极旋转90°。当对屏幕的一个小区域施加压力,使这两层发生电气接触时,就发生了“触摸”现象。如果在上层的两个电极之间施加一个直流电压,而下层悬空,则触摸将使下层获得与触摸点相同的电压。判断上层方向触摸坐标的方法是测量下层的电压,以便确定触摸点处的电阻占总电阻的比值。然后交换两层的电气连接,获得触摸点在另一个轴上的坐标。
连接直流电压的层称为“有源”层,电流与其阻抗成反比。测量电压的层称为“无源”层,无相关电流流经该层。发生单点触摸时,在有源层中形成一个分压器,无源层电压测量通过一个模数转换器读取与触摸点和负电极之间的距离成比例的电压。
由于成本低廉,传统的4线阻性触摸屏深受单点触控应用的欢迎。实现阻性多点触控的技术有多种,其中总是会用到一个矩阵布局屏幕,但屏幕制造成本高得吓人。此外,控制器需要许多输入和输出来测量和驱动各个屏幕带,导致控制器成本和测量时间增加。
图1.(a)阻性触摸屏的结构;(b)用户触摸屏幕时的电气接触
2 超越单点触控
虽然如此,但通过理解并模拟该过程背后的物理原理,我们可以从阻性触摸屏提取更多信息。当发生两点触摸时,无源屏幕中的一段电阻加上触点的电阻与有源屏幕的导电段并联,因此电源的负载阻抗减小,电流增大。阻性控制器的经典方法是假设有源层中的电流恒定不变,无源层为等电位。两点触摸时,这些假设不再成立,为了提取所需的信息,需要进行更多测量。
阻性屏幕中的两点触摸检测模型如图2所示。Rtouch为层间的接触电阻;在现有的大多数屏幕中,其数量级一般与两层的电阻相同。如果有一个恒定的电流I流经有源层的两端,则有源层上的电压为:
图2.阻性屏幕两点触摸的基本模型
3 手势识别
以“捏合”(pinch)作为范例可以更好地描述手势识别的工作原理。捏合手势从两根分开较远的手指触摸开始,产生双重接触,使得屏幕的阻抗降低,有源层两根电极之间的电压差因此减小。随着两根手指越来越接近,并联面积减小,因而屏幕的阻抗提高,有源层两根电极之间的电压差相应地增大。
紧密捏合后,并联电阻趋于0,Ru+Rd提高到总电阻,因此电压增大到:
图3显示了一个沿着垂直(Y)轴捏合的例子。当手势开始时,其中一层的两根电极之间的电压恒定不变,另一层则表现出阶跃性降低,然后随着手指相互靠近而提高。
图3.垂直捏合时的电压测量
图4显示倾斜捏合时的电压测量结果。这种情况下,两个电压均表现出阶跃性降低,然后缓慢恢复。两个恢复速率(利用各层的电阻归一化)的比值可以用来检测手势的角度。
图4.倾斜捏合时的电压测量
如果手势为缩放(手指分开),其行为可以从上述讨论推导出来。图5显示了沿各轴及沿倾斜方向缩放时测得的两个有源层电压趋势。
图5.沿不同方向缩放时的电压趋势
4 利用AD7879检测手势
AD7879触摸屏控制器设计用于与4线式阻性触摸屏接口。除了检测触摸动作外,它还能测量温度和辅助输入端的电压。所有四种触摸测量加上温度、电池、辅助电压测量,均可以通过编程写入其片内序列器。
AD7879结合一对低成本运算放大器,可以执行上述捏合和缩放手势测量,如图6所示。
下面的步骤说明了手势识别的过程:
在前半周期中,将一个直流电压施加于上层(有源层),并测量X+引脚的电压(对应于VY+–VY–),以提供与Y方向上的运动(接近还是分开)相关的信息。
在后半周期中,将一个直流电压施加于下层(有源层),并测量Y+引脚的电压(对应于VX+–VX–),以提供与X方向上的运动(接近还是分开)相关的信息。
图6所示的电路需要为差分放大器提供保护,防止短接到VDD。在前半周期中,下方放大器的输出短接到VDD。在后半周期中,上方放大器的输出短接到VDD。为避免这种现象,AD7879的GPIO可以控制两个外部模拟开关,如图7所示。
图6.基本手势检测应用图
图7.避免放大器输出短接到VDD的应用图
这种情况下,AD7879设置为从机转换模式,并且仅测量半个周期。当AD7879完成转换时,产生一个中断,主处理器重新设置AD7879以测量第二个半周期,并且改变AD7879GPIO的值。第二转换结束时,两层的测量结果均存储在器件中。
旋转可以通过一个方向上的同时缩放和一个倾斜捏合来模拟,因此检测旋转并不困难。挑战在于区别旋转是顺时针(CW)还是逆时针(CCW),这无法通过上述过程来实现。为了检测旋转及其方向,需要在两层(有源层和无源层)上进行测量,如图8所示。图7中的电路无法满足之一要求,图9提出了一种新的拓扑结构。
图8 顺时针和逆时针旋转时的电压测量
图9所示的拓扑结构实现了如下功能:
半周期1:电压施加于Y层,同时测量(VY+–VY–)、VX–和VX+。每完成一个测量,AD7879就会产生一个中断,以便处理器改变GPIO配置。
半周期2:电压施加于X层,同时测量(VX+–VX–)、VY–和VY+。
图9中的电路可以测量所有需要的电压来实现全部性能,包括:a)单点触摸位置;b)缩放、捏合、旋转手势检测和量化;c)区别顺时针与逆时针旋转。用两点触摸手势来完成单点触摸操作时,可以估计手势的中心位置。
图9.单点触摸位置和手势检测的应用图
5 实用提示
轻柔手势产生的电压变化相当微细。通过放大这种变化,可以提高系统的鲁棒性。例如,可以在屏幕的电极与AD7879的引脚之间增加一个小电阻,这将能提高有源层的压降,但单点触摸定位精度会有所下降。
另一种方法是仅在低端连接上增加一个电阻,当X层或Y层为有源层时,仅检测X–或Y–电极。这样就可以应用一定的增益,因为直流值相当低。
ADI公司有许多放大器和多路复用器可以满足图6、图7和图9所示应用的需求。测试电路使用AD8506双通道运算放大器和ADG16xx系列模拟多路复用器;多路复用器的导通电阻很低,采用3.3V单电源供电。
6 结语
利用AD7879控制器和极少的辅助电路,可以检测缩放、捏合和旋转。只需在有源层上进行测量,就能识别这些手势。在主处理器的控制下,利用两个GPIO测量无源层的电压,可以区别旋转方向。在该处理器中执行相当简单的算法,就能识别缩放、捏合和旋转,估计其范围、角度和方向。