拉格朗日插值算法在触摸屏校准中的应用
杨莉 蒋奇良
(武汉理工大学自动化学院,湖北 武汉 430070)
摘要:以三星ARM9(S3C2440)处理器作为试验平台,研究了拉格朗日插值算法在触摸屏校准中的应用,并对校准数据作了分析,在当前逻辑点比例换算校准法广泛用于触摸屏校准的情况下,为触摸屏的校准提供了一种新的方法,解决了在触摸屏安装过程中所产生的机械安装位置误差的校准问题。
关键词: 触摸屏;校准;ARM9;拉格朗日插值算法
中图分类号:TP301.6 文献标识码:A 文章编号:1672-4801(2011)02-008-03
随着社会的发展与进步,人们对人机交互界面的友好和方便程度提出了更高的要求,触摸屏技术开始逐步取代传统的按键[1]。采用触摸屏不仅可以大大节省成本和空间而且能够提供更为友好的交互界面,这些都使得触摸屏的应用越来越广泛,然而在触摸屏安装过程中和触摸屏与液晶屏的实际尺寸的转换中总是存在不可避免的误差,因此触摸屏的校准成为了触摸屏应用首要考虑的问题。触摸屏有很多种类,在本文中主要以四线电阻式触摸屏作为研究对象,分析了拉格朗日插值算法在校准中的应用[2-5]。
1 触摸屏原理和校准算法的分析
1.1 实验的硬件构成介绍和框图
S3C2440 是一款基于ARM920T 内核的16/32位RISC 嵌入式微处理器,运行的频率可达
400MHz,ARM920T 核由ARM9TDMI,存储管理单元(MMU)和高速缓存三部分组成。本实验所用的S3C2440 最小系统由电源模块,时钟模块,复位模块,SDRAM 存储器模块,Flash 模块,UART 串口模块,JTAG 调试接口设计组成[6-8]。最小系统的结构框图如图1 所示。
图1 ARM 最小系统结构
触摸屏系统结构框图如图2 所示。
图2 典型的四线式电阻触摸屏系统
1.2 触摸屏原理和误差的来源
电阻触摸屏的主要工作部分是一块与显示器表面非常配合的电阻薄膜层,这是一种多层复合薄膜,由一层玻璃或有机玻璃作为基层,表面涂有一层叫ITO 的透明导电层,上面再盖有一层经外表面硬化处理的塑料层,它的内表面也涂有一层导电层(ITO 或镍金),在两层导电层之间有许多细小的透明隔离点把它们隔开绝缘。在触摸屏被施压后,触摸屏的上下两层会在施压点导通,在上下两层电阻表面分别交替的供电,并通过A/D 转换就可以得到该触摸点的坐标值,因此触摸屏电阻的精度、A/D 转换的精度、触摸屏的安装机械特性和摆放位置都会影响触摸屏坐标转换的精度[9-10]。本文主要讨论有机械安装产生的位置误差。主要的机械安装位置误差有比例系数误差和旋转误差。
在安装的过程中,由于机械特性的存在,触摸屏的顶点坐标不可能和LCD 的顶点坐标完全重合,因此会有一个偏移量的修正问题(如图3 和图4 所示)。
图3 比例系数误差
图4 旋转误差
由于触摸屏的坐标要通过A/D 转换获取,由于A/D 转换的结果只与该A/D 的位数有关,例如在本文的实验环境下,LCD 的尺寸是240×320mm,A/D 的精度是10bit,因此触摸屏输出的坐标值为x 方向:0-1023( f(X')), y 方向:0-1023(f ( y' )) ;因此存在一个转换关系,即:f (x') = X ', f (y' ) = Y 。
1.3 坐标转换和插值算法分析
在触摸屏校准的过程中要求保证的是被按下的触摸板处的坐标和LCD 上的像素坐标要尽量的接近,也就说在校准的过程对离散的精度要求很高,拉格朗日插值算法刚好就可以保证插值点的精度。
在进行触摸屏的校准时,首先需要在触摸屏上定义5 个点,在LCD 上分别对应P0,P1,P2,P3 , P4 的像素点坐标为(20,20) , (20,300) ,(220,300),(220,20),并在屏幕上用“+”表示(如图5 所示)。P0,P1,P2,P3,P4 的位置将触摸屏划分为4 个相等的三角形区域,在每显示一个坐标的同时等待触摸笔在触摸屏相应的点按下,当触摸屏按下时S3C2440 则保存了这5 个点经过AD 转换的数据,P0,P1,P2,P3 一起作为拉格朗日插值算法的4 个插值,P4 作为验证拉格朗日插值算法的一个点,如果P4 点计算出来的值和给定的像素点一致,则进入下一个界面证明拉格朗日算法有效,反之则说明误差偏大,从P0 重新开始计算,直到P4 点计算出来的值和给定像素点一致。
图5 校准点分布图
1.4 拉格朗日插值算法的数学推理
假定P0,P1,P2,P3 的4 个点分别为(X0,Y0),(X1,Y1),(X2,Y2),(X3,Y3)与之对应的触摸屏上面的点为(f(X0)),(f(Y0)),(f(X1)),(f(Y1)),(f(X2)),(f(Y2)),(f(X3)),(f(Y3))分别组成关于X和Y 的2组插值(X0,f(X0)),(Y0,f(Y0)),(X1,f(X1)),(Y1,f(Y1)),(X2,f(X2)),(Y2,f(Y2)),(X3,f(X3)),(Y3,f(Y3))分别构成关于X 和Y 的2 个拉格朗日插值函数,如下:
l(x)和l'(y)分别为关于X 和Y 的2 个拉格朗日插值函数的插值基函数。
1.5 程序的软件结构和插值算法的代码实现
控制程序在ADS 下用C 语言开发,采用前台程序结构。主程序开始进行系统初始化配置,包括S3C2440 系统时钟配置,LCD 和触摸屏端口工作模式的配置,再进行数据的采集和处理的过程。触摸屏模块的软件设计思想:当触摸屏受到挤压或点击时,通过中断请求通知ARM 有触摸发生,此时引脚为低电平,从而向ARM 提出中断请求[6],进入中断服务程序,关掉外部中断,可以避免多个触摸点相互干扰发生冲突,通过判断中断输入口电平的变化消除非意图触摸产生的抖动,消除抖动后,在进行具体的算法处理。软件的具体流程如图6 所示。
图6 软件结构图
具体的代码实现:
float lagrange (float x,int count)
{
float y=0.0;
for(int k=0;k<count;k++)//这儿默认为count-1 次
插值,count 在这里为5
{
float p=1.0;//初始化p
for(int j=0;j<count;j++)
{ //计算p 的值
if(k==j)continue; //判断是否为同一个数
p=p*(x-d[j].x)/(d[k].x-d[j].x); //为插值基函数
}
y=y+p*d[k].y; //求和
}
return y;//返回y 的值 ,即校准后对应LCD 上的
像素点
}
2 实验调试分析
电阻式触摸屏参数一般具有较大的分散性,由于触摸屏按下时间的长短因场合、人等的不同而不同,所触发的中断也会因此有所偏差,导致触摸屏的AD 转换值在同一位置也会有一定的差异,所以我们必须在中断触发的AD 转换函数中对采样值取一组值,然后通过简单算法剔除偏差最大的值,最后计算平均值作为触摸屏的AD 转换值,这样能有效的减少上述偏差。如果条件允许的话,可以选择尽量多的点作为拉格朗日插值算法的插值点,可以进一步的减小机械安装误差。表1 是拉氏校准法和逻辑点比例换算校准的实验结果对比表。
表1 实验结果对比表
通过对比分析,此方法可以有效提高在触摸屏校准中常用方法逻辑点比例换算校准的精度,很大程度的降低了逻辑点选点过程中的偶然误差。
3 结束语
本文提出了一个基于拉格朗日插值算法的触摸屏校准方法,一定程度上提高了校准算法的精度。对于电阻式触摸屏来说,在机械安装误差不可避免的情况下,确保其硬件工作稳定可靠,不断提高软件算法的精度,是在触摸屏校准中切实可行的办法。
参考文献
[1] 许荣斌,谢莹,朱永红. 触摸屏校准常用算法分析[J]. 工业控制计算机,2006,1(4):77-78.
[2] 魏瑾,郁云. 触摸屏数据采样和滤波算法实现[J]. 电脑知识与技术,2008,4(34)1965-1968.
[3] 杨伟钧,戴青云,张辉,等. 基于STC 单片机的触摸屏5 点校准算法设计与实现[J].仪器仪表用户,2009,15(3):79-81.
[4] 宋学瑞,蔡子裕,段青青.触摸屏数据处理算法[J]. 计算机工程,2009,34(23)255-257.
[5] 王丁,闫瑶,张廷宇. 触摸屏校准的一种通用算法[J]. 自动化技术与应用,200827(2):116-117.
[6] 盛占石,王楚华,周新云,孙俊.基于ARM7 嵌入式系统中的触摸屏的设计和研究[J].电测与仪表,2008,45(5):61-64.
[7] 王黎明,陈双桥等. ARM9 嵌入式系统开发与实践[M]. 北京:北京航空航天大学出社,2007.
[8] 田泽. 嵌入式系统开发与应用[M]. 北京:北京航空航天大学出版社,2005.
[9] 韩兵. 触摸屏技术及应用[M]. 北京:化学工业出版社,2008
[10] 万厚冲,孙超云. 电阻式触摸屏数据校准的一种补偿算法[J]. 福建电脑,2010(2:64-64.