普通电阻触摸屏多点触摸低成本解决方案

注:本文是作者以前发表在其个人博客,现在发布到“聚丰开发”专栏
苹果公司iphone的成功将多点触摸技术推到了一个前所未有的高度,经典的弹钢琴应用程序可以支持超过5点的同时触摸,虽然这一性能并不见得有太多的实用价值,但绝对带给了用户技术无限领先的震撼感。苹果公司的iphone采用电容屏和他们的专利技术来实现对多点触摸的支持,价格自然不菲,但一点可以肯定,在支持的点数和性能稳定方面,目前还少有公司能在这方面挑战苹果的权威。
对于消费电子产品来说,流行就是硬道理,在iphone大行其道的同时,一时间但凡是有触摸屏的产品,都想让自己通过多点触摸等特性与iphone攀上亲戚关系,尤其是手机、mp4、gps等产品,仿苹果的心理更是急切。
苹果公司的技术虽然在性能方面无可挑剔,但过高的成本使得这项技术只适合iphone之类的奢侈品,对于更多的触摸屏产品显然无法承受这一成本。正是这个原因,寻找一种更为便宜的多点触摸解决方案,成为众多技术人员的期望,本文在不增加其它硬件成本的前提下,基于普通四线电阻屏,提出一种低成本解决方案,能够在一定限制条件下可实现两点触摸的识别。
几种现有的多点触摸方案
1.硬件采用电容屏,通过软件实现多点触摸。优点是灵敏度高,性能稳定,支持的点数可满足绝对大部分应用需求;缺点是成本高,而且苹果有专利保护。
2.硬件采用数字电阻屏,实际上是用电阻屏的材料做成一个透明键盘矩阵,通过行列扫描判断所按下的点。优点是价格便宜,性能可靠,可支持的点数最多;不足是需要比较多的行列连线接口,不能实现手写功能。
3.硬件采用模拟电阻屏,在专用芯片中通过软件计算出多点触摸。优点是既能支持多点触摸,又保持手写功能,另外成本增加不多;缺点是支持的点数最少,方案商在实现细节上大都语焉不详,性能和稳定性尚待验证。
4.采用红外、表面超声波等方式实现触摸检测,实际应用比较少,这里不做探讨。
低成本多点触摸方案
毫无疑问,四线模拟电阻屏是触摸屏中成本最低的一种,如果我们能在这种屏的基础上找到一种实现多点触摸的方法,只要控制额外增加的硬件成本,成本上考虑能够有所突破的可能性最大。
虽然现在有不少mcu带有触摸屏接口,因为我们需要识别多点触摸,所以这类mcu的触摸屏接口并不适用,实际上方案的要求更简单,只需要选用mcu能提供4路adc口使用,另外再用4条双向io进行控制。来看一下这种低成本方案的构成细节,图(一)中(d)部分为方案示意图,并不需要对电阻屏做出过多改动,只是在外围增加了两个电阻,这几乎是可以忽略不计的成本。
图(一) 低成本电阻触摸屏原理及方案示意图
图(一)中(a)(b)(c)三部分对电阻触摸屏的原理做了简单示意,对单点触摸位置的识别方法这里不做详述,不清楚的朋友请自行查阅相关资料进行了解。单点触摸的识别只需要4条双向io就可以实现,其中2条需要支持adc功能,从图(一)中(d)部分可以看出方案做了一点修改,使用的io口数量增加了一倍,另外还有两个电阻。
为便于分析,我们需要建立一个触摸屏工作的等效电路模型。因为触摸屏x和y方向对触摸检测方法是一样的,所以我们只建立一个电路模型,图(二)展示了触摸屏按下一个点和两个点的状态。
图(二) 触摸屏等效电路模型示意图
图(二)标号说明:r1、r2为io口的输出电阻,只要知道它的存在,不用管具体大小;r3、r4、r5、r6为4路adc口的输入电阻,阻值远大于其它电阻;r7、r8、r9为触摸屏的分段等效电阻,阻值总和为几百欧;r12、r13、r14为触摸屏另外一层的分段等效电阻,阻值总和为几百欧;r10、r11为按下触摸屏时的接触电阻,阻值动态变化; k1、k2表示按下触摸屏的位置。
r15为限流电阻,因为触摸屏的电阻通常为几百欧,普通io驱动能力可能不够,所以用r15对io输出进行限流,r15对应图(一)中(d)部分r1和r2。
假定io1输出高电平,io2输出低电平, v1~v4为4路adc口测量到的电压。
触摸屏没有按下时,测量adc1和adc2得到v1_0和v2_0;触摸屏按下一点时,假设此时按下位置为k1,4路adc测量的电压为vn_1;触摸屏按下两点时,4路adc测量的电压为vn_2。忽略adc口输入电阻的影响,这些电压会满足下面的关系。
v1_0=v1_1,v2_0=v2_1
v3_1=v4_1=(v1_1-v2_1)*(r8+r9)/(r7+r8+r9)
(v1_1-v2_1)≥(v1_2-v2_2)
后一种关系式因为两点按下后会让与r1、r2、r15串联的触摸屏等效电阻变小,从而使得分在触摸屏两端的电压也变小。现在引入三个新参数l7、l8、l9,分别表示同标号电阻等效的触摸屏宽度,三者的总和等于触摸屏宽。另外还根据实际引入一个限制条件,当有两点被按下时,只要程序检测速度够快,对于程序来说就不会有同时按下的情况,始终都是依次按下或松开,这一点非常重要。
对于单点位置的检测不存在任何问题,现在我们来处理两点的情况,结合前面引入的限制条件,程序可以检测到中间有一小段时间是单点按下,也就是程序先检测到k1按下,经过一小段时间才检测到k2按下。这个中间过程可以准确得到k1位置,如果我们利用前后变化的比例关系,就可以计算出后面k2按下的位置。
k1单独按下:
l7=(l7+l8+l9)*(v1_1-v3_1) /(v1_1-v2_1)
k1和k2同时按下(忽略r10和r11的影响):
(v1_2-v3_2)/l7=(v4_2-v2_2)/l9
因为l7+l8+l9为已知条件触摸屏的宽度l,所以有:
l7=l*(v1_1-v3_1)/(v1_1-v2_1)
l9=(v4_2-v2_2)*l7/(v1_2-v3_2)
l9=l*(v4_2-v2_2)*(v1_1-v3_1)/((v1_1-v2_1)*(v1_2-v3_2))
到这里我们已经得到所按两点的具体位置,只要我们依照此方法对触摸屏的x和y轴分别处理,就可以在普通电阻屏上实现两点触摸位置的检测。
方案的其它说明
前面的公式推导过程忽略了接触电阻r10和r11的影响,这两个电阻的大小并不固定,主要由使用者按下的力度决定,按的力越大,其阻值越小。当只按下一个点时,所按力度的大小对k1位置的计算影响可以不用考虑,但对于两点的计算则要考虑其影响,按的力度越小,计算出来的k2位置误差就越大。这样在按下的过程中,会存在一个误差从大变小的过程,不过只要用力足够,最后还是保证误差在允许范围内。另外触摸屏并不是完全线性,这里是简化为线性关系。
该方案在两点按下时最好保持先按下的点位置不变动,这样可以保证计算结果更为精准。如果两点按下后需要移动,虽然通过比例关系也可以计算出运动轨迹,但误差会随之加大,这里也不做过多分析。松开的过程与按下相反,由两点按下变为一点按下,最后全松开。如果在精度上适度降低要求,在此方案的基础还可以利用三角形重心的原理进行第三点的判断,笔者进行的验证实验发现难点是需要考虑的组合情况偏多,从而导致判断程序复杂。
实际应用中还需要进行触摸屏是否按下的检测,这里不详述具体的检测方法,只是要留意为了防止触摸屏悬空状态的影响,可以在两端接一个比较大的电阻到地,建议用470k或510k的阻值。
使用该方案除了具备普通电阻屏的基本功能,还可以实现对屏幕的拖动,用手指合分动作实现图像的缩放,对两个游戏功能键的同时控制。从成本上看除了需要另外增加4条io口外并无其它硬件开销,主要是通过软件计算来实现多点检测。该方案虽然性能上相较电容屏存在明显差距,但成本上占有绝对优势,对于一些对精度要求不高的应用还是具有一定的实用价值。

关于英特尔网络转型战略的探讨
ARM处理器体系结构概述
浪潮云将以“云底座”搭建教育信息化快车道
一文解析AUTOSAR CAN网络管理
电磁流量计的组成及基本原理
普通电阻触摸屏多点触摸低成本解决方案
工信部发布2020年7月通信业运行情况
物联网落实到现实世界:智能交通成长动能最强
斯普奥汀隔空无线充电解决方案正式亮相MWC
TI推出SWIFT同步降压稳压器TPS54061
华为P10携麒麟芯片970,或添无线充电功能
Zynq7000 FPGA的高速信号采集处理平台的设计搭建以及后续拓展
如何在ADAS应用中成功使用NI AWR设计环境平台
元启未来落地蓉城 全面开启“AI+”场景应用
苹果首次公布AppStore生态商业数据:中国区贡献排名第一
玩游戏手机推荐一加5,htcu11,iphone7/7plus,努比亚z17,带你超神体验王者归来!
IMX6UL核心板特点及规格表
荣耀Magic V折叠屏旗舰今晚发布
应用于学校安防设备的视频监控在线监测和运维系统
基于红外温度传感器实现体温计的设计