许少睿
(广东机电职业技术学院 电子与通信学院,广东 广州 510550)
红外触控技术拥有成本低和安装售后简单的优势,作为55寸、65寸、86寸和98寸液晶屏触控技术的首选方案被广泛应用于各类电子产品中.传统的红外触控技术利用红外发射灯和红外接收灯构成了发射单元和接收单元[1-3],如图1(a)所示,发射灯和接收灯一发一收的光线排布形成横竖垂直的红外线检测网格,当有物体遮挡红外线时,可以通过垂直的交点快速判断物体的位置.这种方法适用于单点触控,但在多点触控时暴露出明显的不足:容易产生鬼点,识别率低.随着红外触控技术的发展[4-7],目前最新的技术是利用发射灯和接收灯的不等间距排布产生覆盖整个屏幕的光线.图1(b)是不等间距红外发射灯和接收灯布局所产生的光网图,黑色代表光线覆盖整个触控区域,无盲区.对比传统的方法,具有识别精度高的优点,但是因为光线数量呈现10倍的增长,对芯片的频率和算法的要求也呈现倍数的提高.本文提出了一种新型识别多点红外触控算法,在不增加物料清单BOM(Bill of Material)整体成本的基础上可以快速识别出20 点触控,基于AT32F403 芯片搭建硬件测试平台,经过软硬件综合设计,和传统的红外触控技术[8-10]对比,识别响应快,触摸体验感好.
图1 传统红外触控技术的红外灯布局和光网图
传统的多点触控识别方法首先选择指定的两个存在遮挡光线的接收灯,然后利用接收灯的非遮挡光线产生多个触控识别区域,区域包含了真实触控点和假点,如图2所示.图2(a)的黑色区域表示所有非遮挡光线,当有五只手指触控时,会在光网图上形成对应位置的非遮挡区域,用红圈表示触控点的位置.图2(b)利用两个指定接收灯产生了12个需要判断的识别区域,区域包含5个红色的真实触控点区域和7个蓝色的假点区域.对于12个识别区域,逐个结合遮挡光线和非遮挡光线缩小区域范围,最终删除小的假点区域,保留大的触控区域,完成多点识别.这种方法的缺点是需要消耗大量的时间判断多个假点区域,导致处理时间长,触控延时严重,用户体验感差.
图2 光网图上的真实触控点区域和假点区域
本文提出一种新型的多点触控识别算法,能够实现每次找出的可疑区域都是真实触控点的存在区域,通过减少可疑区域减少了大量的计算时间,提高识别速度.本文提出的方法分为四个步骤:
(一)坐标映射和区域选定.将所有(x,y)坐标空间遮挡光线映射到(k,b)坐标空间,然后选择两个最左侧的接收灯r1和r2和遮挡区域形成可疑区域R.xy坐标空间的遮挡直线y=k*x+b可以转化为b=y-k*x,在kb坐标空间就可以用点坐标(k,b)来表示遮挡直线y=k*x+b,触控点多条遮挡光线转化到kb空间后,多个(k,b)点连接产生的直线也可以反向转化得到xy空间的触控点坐标.通过坐标变换,将所有遮挡直线全部用(k,b)点表示,能够快速的锁定触控点的范围.图3(a)表示五根手指在平面上触控所遮挡到的所有光线,图3(b)表示遮挡光线映射到(k,b)空间后的所有点.通过计算kb 空间最左侧的点形成的直线斜率,查找出拥有相近斜率的最左侧两个接收灯r1 和r2,通过r1和r2的遮挡区域可以快速产生第一个触控点可疑区域范围,如图3(c)所示,红色光线相交区域即是触控点所在的区域.图3(d)的红色直线表示可以由多个(k,b)点反向得到xy空间的触控点坐标.
(二)对区域R进行缩减确定触控点TP的光标和范围.如图4(a)所示,遮挡光线用虚线表示,非遮挡光线用实线表示.非遮挡光线的数量比遮挡光线多,利用非遮挡光线能够得到触控物体的形状和大小.本文利用非遮挡光线缩减可疑区域的范围,通过在可疑区域的中心坐标附近记录所有非遮挡光线对应的值,找出包围最大区域的4根粗实线,即为触控点的最终确定范围.
图3 坐标映射和区域选定流程
图4 触控点区域缩减控制
(三)利用触控点TP的坐标删除掉(k,b)空间上所有经过触控点TP的光线点.确定了真实的触控点之后,需要删除掉经过该触控点的所有遮挡光线,减少遮挡光线信息的复杂度.然后将剩余的未判断遮挡光线重新映射到kb空间,如图4(b)所示.
(四)重复步骤一,循环删除(k,b)空间所有的点,即表示所有的遮挡光线都被删除,最终完成所有真实触控点的识别.本文给出的触控实例是5跟手指触控,只需要重复5次就可以完成所有点的识别.重复的次数等于触控的点数,避免了随着触控点数的增加,识别时间成倍数增加的情况,极大地减少识别所消耗的时间.
本系统由MCU主控电路模块、红外发射电路模块和红外接收电路模块三大部分组成.红外触控系统硬件整体布局如图5所示.MCU主控电路模块采用ARTERY公司Cortex M4芯片AT32F403,芯片最高主频200MHz,支持浮点运算,电源由电脑USB 接口提供5V 电压供电,LDO 采用芯片AMS1117ADJ.
图5 系统电路板分布图
红外发射电路模块的功能是利用MCU依次驱动每个红外发射灯发送光信号,单个红外发射灯的开关时间为500 ns,驱动瞬时电流为1 A.该电路的框图如图6 所示,采用了信号电平转换芯片74HC244,移位器芯片74HC74D,译码器芯片74HC139和74HC138,通过三极管矩阵驱动红外发射灯.
图6 红外发射电路模块
红外接收电路模块负责处理接收红外接收灯接收的红外信号,对接收的信号进行通道选择操作,多重信号放大和滤波,经过处理后的模拟信号进入MCU的ADC采样管脚,由MCU进行信号采样和模数转换.该模块的框图如图7 所示,采用了信号电平转换芯片74HC244,多路片选信号开关芯片74HC4051,移位器芯片74HC74D,2路片选信号开关芯片74LVC2G66.
图7 红外接收电路模块
程序的设计使用C语言作为编程工具,集成开发环境(IDE)是Keil uVision,通过功能的模块化来实现,软件程序功能包括:硬件资源初始化和USB枚举模块、发射灯控制模块、接收灯信号处理模块、数据坐标映射模块、区域缩减模块、遮挡光线删除模块、触控数据跟踪和位置分配模块、USB数据发送模块.程序的主流程图如图8所示.
图8 流程图
本文提出的新型多点触控识别算法在65寸红外触控一体机上进行验证.65寸红外触摸框总共需要1块MCU主控电路板,5块发射电路板和6块接收电路板.板级PCBA之间运用FPC排线串接方式连接,水平方向插入4块PCBA,垂直方向插入2块PCBA.硬件系统通过MCU主控电路板上的USB接口与PC端连接,由USB接口给系统提供5V供电.基于USB Multi-touch HID协议,MCU和PC之间完成USB枚举后,windows将红外触摸屏识别为Touch HID设备.当用户触控液晶屏时,硬件系统通过接收电路模块可以将实时信号传送入MCU ADC,由MCU采样并识别出用户触控的位置.MCU将触控点的坐标数据通过USB发送给windows操作系统,操作系统就会出现触摸响应.
测试书写的效果如图9 所示,经过测试验证可以识别出多点触控.通过windows软件Bus Hound观察USB传输时间,5点触控时间大约为13 ms,10点触控时间大约为15 ms,20 点触控时间大约为20 ms.传统的识别算法5 点触控时间大约为16 ms,10 点触控时间大约为20 ms,20点触控时间大约为26 ms.与传统的识别算法对比,本文提出的算法整体识别时间缩短了约20%.用户触控没有感觉出触控和显示的延后,输出效果优异.实验结果证明了本文提出的新型多点触控识别算法的有效性和系统软硬件设计的可行性.
图9 5点触控识别效果
针对传统红外多点触控识别方法的不足之处,提出了一种新型的红外多点触控识别算法,并基于AT32F403主芯片搭建了65寸液晶触控一体机硬件测试平台,详细阐述了硬件测试平台的各个硬件模块和软件设计流程,经过软硬件综合设计,实现了多点触控的识别,优化了识别时间,提升了用户的触控体验.最后通过实验结果验证该方案设计的有效性.整个设计方案在保持成本优势的基础上,提升了识别效率,能够满足市场的需求.