电阻触摸屏多点触控算法的研究与实现
2015-10-21朱莉权蕾
朱莉 权蕾
摘 要:触摸屏作为一种人机交互界面,已大量取代了以往的键盘、鼠标等人机沟通方式。电阻式触摸屏以其低廉的价格,稳定的性质更成为主打选择的触摸屏之一。在日常应用中,经常需要同时对多点进行操作。然而,触摸屏的触摸点之间会互相影响,而得出错误的触摸点坐标。本文优化了两点触摸的判断算法,实现了多点触控的正确识别和定位处理。经试验验证表明可以实现图像的放大、缩小、旋转等功能。
关键词:电阻触摸屏;多点触控;鬼点;采样点平均值
多点触控,是指能同时正确识别和定位两个或两个以上的触摸操作,能够独立判断每个触摸点的操作意义,并实现相应功能的技术。这是一种摆脱了传统的输入设备,简单而方便的人机交互操作模式。
多点触控技术目前有两种[1]:多点触控手势识别和多点触控位置识别。
目前市面上出现较多的方式是多点触控手势识别。手指同时触摸屏幕多点时,能够识别每个手指移动的方向,能够进行旋转、缩放、平移等操作,但还不能够判断出每个手指的具体位置。但两点触摸甚至多点触摸时,X、Y轴上会产生多个最大值,此时系统无法判断触摸点的准确位置。通常把并不是真正触摸的点叫做“鬼点”。
多点触控位置识别才是真正意义上的多点触控技术,可以识别到触摸点的具体位置,没有“鬼点”的现象。这种触控技术基于互电容检测方式,通过行列交叉处耦合电容Cm的变化判断触摸点。手指触摸时行列之间的互电容减小,可以判断触摸点存在,并且准确判断每一个触摸点位置。
1 电阻式触摸屏多点触摸技术
实现两点触摸,每个工作单元必须彼此独立,并且触摸点只能在同一个工作单元中。图1给出了电阻式触摸屏实现多点触摸的方法:在X1电极上加上电压,由Y1,Y2,Y3电极读取A、B、C触摸单元所检测到的X坐标;在以后的各个始终周期依次读取X2,X3的坐标。获得所有触摸单元的X坐标后,再依次给Y电极加上电压,以获得各个触摸单元的Y坐标,从而实现两点触摸[2]。
2 两点触摸判断算法实现
2.1剔除非触摸点
当触摸屏表面有触摸点时,上层的ITO导电层向下凹陷,发生形变,并接触到下层的ITO,接触点的两层ITO导电层之间存在一个电阻,当触摸的压力越大时,之间的电阻阻值就越小。通过计算相应阻值,可以得到触摸位置,但是想要正确识别出两点触摸的位置,就必须先剔除非触摸点。所谓非触摸点,就是指没有意愿的接触点。这些触摸点是随机的,而且是非有效触摸。比如,触摸力度较轻时,触摸屏ITO导电层的电阻处在接通与未接通的临界点,类似这样的触摸点就是非触摸点。这在没有意志支配的情况下产生的接触点,对整个检测没有意义的,所以必须将它们剔除。
考虑到非触摸点的随机性,两次测量的方法可将其剔除。若第一次测量的结果是有效值,但第二次测量的结果超出了整个触摸屏的阻值所规定的范围,是一个很大的值,则视其为无效值,该点即为非接触点,必将其剔除。反之,如果第二次测量的结果在整个触摸屏的阻值所规定的范围内,则视其为有效值,是有效的触摸点。2.2接触电阻的改进
触摸屏幕的压力大小不同,ITO导电层的电阻值也不同,也就是说轻触或重触触摸屏,产生的電阻是不同的。控制芯片可以测试出接触电阻的阻值大小,但是没法分辨出是轻触,还是重触,这只会影响判断触摸点的准确性,从而会影响整个触摸屏的可靠性。下图是图2是轻触的示意图。
在现阶段的方案中,接触电阻和压力成为影响触点坐标准确性的重要因素。如果接触电阻不大于方阻,不会影响坐标显示的准确性;如果大于方阻,就会出现跳跃点。比如,轻触触摸屏上的某一点,会造成电路接通不完全,对整个电路来说,它表现为测量电阻大,测得的值比实际值要大,那么它的坐标将会向后跳跃。与其相反的,如果是用力的重触触摸屏上的某一点时,坐标会前移。由此可见轻触或重触对接触电阻的测量值影响很大,接触电阻和压力成反比。
查阅过一些四线电阻式触摸屏的技术手册后发现:他们通常使用接触电阻小于2kΩ这个测试条件,来测试最小压力这个参数。在正常力度的压力下,一般接触电阻为2kΩ;如果压力更小,接触电阻则会大于2kΩ。由此可见,实际测量结果与所施加的压力存在动态变化,如果加在同一点上的力量是变化的,那么测量出的坐标点就是不确定的,所以这种测量方法仍然必须改进。
在此,分解一次完整的触摸过程:(1)手指接触到触摸屏表面,(2)手指对触摸屏逐步增加压力,(3)压力保持,(4)抬起手指,(5)手指的压力逐步减小,(6)手指离开触摸屏,整个触摸过程完成。分解过程之后可以发现,在这个过程中,手指对屏幕的压力并不是一个恒定不变的量。所以,细分整个过程,把不同时期得到的压力和接触电阻全部采样,然后求取平均值,那么这个值将更加接近实际数据,这就是用求平均值的最根本原因。用求平均值的方法可以模拟整个触摸过程,从而排除掉前期接触、后期接触或者中间接触时压力不稳等情况。
这个改进用一个循环来实现,多次执行读取采样函数,然后求平均值。由于A/D转换的速度很快,这给求平均值提供了有利的基础。按照程序设定,一共采样32次,在计算求平均值的时候,利用C语言中的左移,求得平均值。可以把这个求得的和左移5位,就得到平均值,这种计算方式十分便捷。另一个需要考虑的问题是时间,也就是A/D转换的速度问题。如果在完成一次触摸的整个过程中,采样的数目越多,对于触摸点平均取值就越接近实际数据,对确认触摸点坐标的影响也就越小。A/D转换数据读取过程的实现,以及改进后的算法如下:
第一步:接通触摸屏电流,循环读取32次A/D转换器的值,并求得这些值的总和。
第二步:将求得的总和值左移五位,求得平均值,并把该平均值作为有效的数据。
改进后的算法有效避免了不同压力对准确测量电阻值的影响,提高了数据的稳定性和可靠性。可以更加准确定位坐标,特别是屏幕中间区域的触摸点,效果尤其明显。
2.3边沿检测结果的改进
在进行测试画线的过程中,电压波形不是一条平滑的曲线,而是阶梯波,因此在采样过程中,有可能在电压上升沿或者下降沿采样,这样采样得到两个点之间的电压,并不代表这个点是处于采样得到的两个点直线之间的任何一个点,而是如图3所示,折线上的A点或者B点。这样会造成错误识别。在测试画线的时候,如果画线速度较快,第二次触摸时电压尚未稳定,会造成采样时的误读,落在电压变化的边沿,采样数据比A点(下降沿)样数据大,比B点(上升沿)小。理论上来说,的确存在一个跟这个采样数据对应的点,实际上选择的这个点不是A点,就是B点。下面来分析一下造成这种现象可能的原因。
首先是硬件电路,分两种情况:(1)在供给触摸屏的电路中有电容储能,或者旁路中的电容给阶梯的电压的变化造成了延缓,(2)在供电电路中存在比较大的电阻,电阻的电感特性影响较大,这两种情况都会导致电压变化的边沿拉长。此时采样的时机选在电压变化的边沿处的几率增大。
即便不存在硬件电路问题,也不能保证所有的点都直接跳变,不能保证采样的时机不在电压上升沿或者下降沿处。所以要想避免这个问题,不仅要考虑硬件电路问题,更要在现有的硬件电路基础上,在程序中剔除这些采样时机不对的点。因此,需要通过算法找出这些点,然后把它们剔除。基于这个思路,在2.2节中,已经对每个点采样32次,如果把这32个采样值中的最大值和最小值分别找出来,就能消除边沿处的采样值影响。这里的最大值是指在上一个阶梯下降时的采样值,最小值是指在本阶梯下降时的采样值,然后用32次采样的总和值减去这两个点的值。通过这种方法增加了采样数据的可信度,增强了触摸屏工作的可靠性。
2.4临界点的改进
關于触摸的临界点也有需要改进的地方。如图4所示,给出了触摸电阻随压力的变化而变化的曲线图。
由上图可以看出,如果是有效地触摸的话,电阻的变化率不会太大,如两接触临界点之间的电阻变化率就不是太大;但如果采样点正好落在接触临界点上,而且这个值小于2kΩ,那么,这个点就应该视为无效点,用采样的总和减去这个最大值的点就可以了。但是,如果在这一点上采样两次,它的影响就会明显表现出来了。检测出来的点将会使显示结果出现跳越。所以对这一类无效的点,最安全的做法就是将其直接剔除。可以在程序中设定:完成一次触摸以后,判断阻值的变化,比较最大值和最小值之间的差值,如果两个值的差值超过100Ω,则说明采样点在临界点上或者在临界点之外,判断为无效点,程序跳转到开始,重新开始检测点,这样就可以把这一类的点剔除掉。
参考文献:
[1] 宋学瑞,蔡子裕,段青青.触摸屏数据处理算法[J].计算机工程,2008,34(23):255-257.
[2] 秦万治.多点触控技术的初步研究[D].[硕士学位论文].成都:电子科技大学,2010 .
[3] 荣昌,封王,鹏飞.在多点触摸技术[R].发展的调查.亚太会议可穿戴计算系统(通用武器控制系统),2010:363-366.
[4] 沈庭芳等.数字图像处理及模式识别[M]. 北京:北京理工大学出版社,2001:68-84.