触摸屏的校准方法(转)
阻性触摸屏与LCD显示器上的各点很难完全准确配合,因此除了采用精确的机械装配技术校准之外,在使用之前还必须进行软件校准。本文介绍的校准方法首先确定误差源,然后通过三个选定点导出触摸屏的校准矩阵,并用软件方法来实施点与点之间对应关系的校准。掌握这种技术,对降低嵌入式系统的成本至关重要。
图1所示是一个阻性触摸屏的横截面,其结构十分简单,由上下相对放置的两片玻璃构成,玻璃的内表面涂上薄薄一层导电材料,并用一些小玻璃珠将导电表面隔开。当手指或铁笔按压玻璃表面时,上层玻璃产生弯曲接触下层玻璃。这种结构中玻璃珠间的距离决定了触摸屏的敏感度。玻璃珠互相放置得越近,敏感度越小,压力就要越大,以使两层玻璃片可靠接触。
图2所示是触摸屏的等效电路。通过一个触摸屏控制器(AD转换器)将电源的正、负极加到一块玻璃的导电层两端,另一块玻璃上的导电层则起到一个电位计游标的作用。在玻璃上不同的触摸点,导电的情况也不同,数字转换器上便会录得不同的测试电压值,然后控制器将录得的电压值转换成一个二维坐标:X轴坐标和Y坐标。
这些控制器每秒钟可进行200次或更多的采样。采样率通常与背景噪声和控制器质量有关。智能控制器还具备其它一些功能,如检测到触摸时中断CPU、在检测到触摸前设定采样率连续进行采样。没有触摸时,控制器处于待机状态。
由于阻性触摸屏结构简单、操作易懂、所需软硬件有多个厂商可供选择,因此可用于对成本敏感的设计中。然而,由于触摸屏与它背后的显示器(LCD或其它)间的对应点很难完全配合,因此几乎所有带阻性触摸屏的设备在出厂前均要经过一定的校准。否则在触摸屏上点击某一按钮或选择某项功能时,内置的软件便无法对这一点击做出正确响应。
本文介绍的校准方法需要三个目标点/或测试点,然后依次进行触摸测试,以确定该显示屏特有的校准因数。最后通过这些校准因数将触摸屏的对应点与实际显示的对应点完全对应起来。
误差的来源
有几个误差源会影响触摸屏控制器,使之无法产生正确的对应点X和Y坐标。最主要的误差源是电气噪声、机械误差及放大因子。此外,操作者的误操作也会有所影响,如手指或铁笔按压时间不够长或压力不够大。以上所有误差均会产生无用数据,必须对它进行纠正补偿才能使触摸屏正常工作。
在各种电气系统中,由热效应或电磁效应以及系统设计缺陷引起的电气噪声无处不在。在触摸屏中,由于AD转换器的前端电路具有高输入阻抗,因此特别容易受到电气噪声的影响。除了对带有触摸屏控制器的电路小心布局外,我们通常在AD转换器输入端增加低通滤波器来解决这一问题。此外也可选择软件方法,舍弃AD转换中的最小的一、两位,并用算法将一些落在允许误差范围之外的数据点从采样流中去除。这种软件算法也可消除由使用者产生的误差。
本文所阐述的校准方法可用来解决由于机械误差和放大因素引起的误差。图3中的圆圈表示触摸屏下的LCD显示的图形,椭圆则表示当用户顺着LCD显示的图像画圈时,触摸屏对应点的集合,不过有所夸大。这个重建的图形显然经过一系列旋转、移位和放大,而且在每个方向变换的参数不一样。校准的重点则是将触摸屏上显示的这个重建图形经过变换,换算出与LCD显示的图形相一致的对应点集合。
校准的数学基础 为了得到一个通用解决方案,我们将每个点描述为一个数学参量。如图4所示,可将LCD显示器上的每个点当作一个矢量PD,而该点在触摸屏上对应的点则当作矢量P。
此外,我们假设一个参量M,通过这个参量可将PD与P进行换算,即
PD=MP (1)
这里的M是一个转换矩阵,也是我们要研究的对象。如果能得到转换矩阵M中相关的数值,那么给定触摸屏上任一点P,我们就可换算出它在LCD显示器上的对应点PD。
现在假设LCD显示器上的任一点都与触摸屏上的某点相对应,但要经过旋转、移位和放大处理。
如果按矢量的长度和角度将每个点用(X,Y)两个坐标来表示,则LCD显示器和触摸屏上的点都可通过以下方程式来表达:
如果触摸屏在校准时与显示屏之间存在一个角度差异,为了进行补偿,要进行旋转处理,即θr=θD-θ,θr是角度差。这样我们便可得到一个中间点:
将每个点的X坐标和Y坐标以不同的因子放大,得到KX和KY。考虑放大因子可以得到以下方程式,它更准确地描述了LCD显示器与触摸屏上点与点之间的对应关系:
最后,我们加上位移因子XT和YT,得到LCD显示器与触摸屏上点与点之间的对应方程式:
为了将方程式5再次变换以求取方程式中的未知量,假设触摸屏和LCD显示器上点与点之间有一个角度差θr,但这一角度极小,因此sinθr≈θr,而cosθr≈1.0。根据这一假设我们得出另两个十分有用的近似方程式: 通过以下组合,方程式5可重新表示为:
方程式7的优点在于,它采用触摸屏坐标描述了LCD显示器上的点坐标。上述方程式也可转换为:
利用我们原先的假设(即实际情况中的放大、旋转和位移因数均为常量),除X和Y之外,上述方程式右边的各项均为常量。
通过采用更方便的方式表达XD和YD坐标,我们可以得到触摸屏与LCD显示器各点之间的对应关系方程式:
可见,只有当触摸屏和LCD显示器间的角度差非常小时,才可运用上述公式。
校准矩阵
一般的校准算法常选取2-5个采样点来收集校准信息。假设LCD显示器上的对应点可以通过触摸屏上的点转换得到,只需正好3个采样点我们就可得到校准数据。需要3个采样点的原因在于方程式9a和9b有三个未知量。从这3个采样点我们可获得足够的信息来建立并求解这一联立方程组。
采样点的选取也应当考虑到实际情况。它们必须能得出非冗余的联立方程组,它们不能太靠近触摸屏的边缘(此处呈现非线性),此外它们的间隔必须足够宽,以便尽可能减少放大误差。图5所示的P0、P1和P2这三个点符合这些条件。这些点距触摸屏边缘约10%,分布足够散,得出以下非冗余方程式:
从而求出A、B、C、D、E和F的值。一旦这些参数值定下来,便可利用方程式9,通过触摸屏上的原始数据计算出它在LCD显示器上的对应点。
上述联立方程组的未知量已求解出,此处不再推导。直接跳过中间步骤得出最后结论,将K作为各方程式的公分母,便可得出未知量:
软件实现
实际的软件实现过程相对简单。可从www.embedded.com/code.htm 上得到程序样本,它包括三个文件:alibrate.c、calibrate.h和sample.c。第一个文件包含两个函数setCalibrationMatrix()和getDisplayPoint()。前者实现了方程式13-18,后者则实现了方程式9。D,而该点在触摸屏上对应的点则当作矢量P。" hspace=12 src="/Article/UploadFiles/200504/20050420001204188.GIF" align=right vspace=12> 启动文件包含了各种声明,另一个源文件则实现了一个控制台应用程序,这一程序执行校准功能,并示范如何在器件中使用这些函数。sample.c中的代码假设在调用这些函数前,器件中实现了一个执行程序来采集校准数据。
表1是建议的校准步骤,将这些步骤执行完毕就实现了校准过程,此时设备便可开始从触摸屏系统接收精确的位置信息。触摸屏控制器中设有中断程序,当程序将数字转换器的输出数据过滤后,它需要调用函数getDisplay-Point()。通常,getDisplay-Point()函数调用是将触摸屏某点数据存入用户输入队列以前的最后一个步骤。
表1:建议的校准步骤。
=======================================
1. 用全组数值调用setCalibrationMatrix()以设置显示屏驱动器,并提供原始存取数据(见sample.c)。这样就不需要为存取数据构造特殊的函数。你只需要按照与程序一样的机制获取纵坐标。
2. 在坐标 (XD0,YD0)画出第一个目标。
3. 收集从触摸屏返回的数据,并存储在坐标(X0,Y0)。
4. 在坐标 (XD1,YD1)画出第二个目标。
5. 收集从触摸屏返回的数据,并存储在坐标(X1,Y1)。
6. 在坐标 (XD2,YD2)画出第三个目标。
7. 收集从触摸屏返回的数据,并存储在坐标(X2,Y2)。
8. 采用参考显示数据和其产生的触摸屏数据作为变量,调用setCalibrationMatrix()函数。
=================================
其它考虑因素
执行采样函数是为了保证每次都获得准确结果,因而它的中间值未经过放大。
由于多数数字转换器提供的原始数据为10位,因此需要进行整数型32位数学运算,方程式15和18会产生31位的符号数。执行这些方程式时要使用分辨率高达1,024点的触摸屏数字转换器,它适用于分辨率高达512点(宽度或高度)的显示器。
如果要在大面积的触摸屏中使用这些公式,就必须使用64位整数或将缩小输出值和中间结果,以免在计算校准因子时寄存器出现溢出。
函数getDisplayPoint()与校准矩阵有关,后者包括一套有效参量,这种采样结构使用自动变量来表明LCD显示器和触摸屏的对应点间以及校准矩阵间的关系,不过在实际执行中,校准矩阵最好是一个全局结构,并在启动时正确初始化。
这些代码可从www.embedded.com/code.htm免费下载,并用于多种场合。不过该代码未经过任何优化处理。
本文小节
本文描述的触摸屏校准方法简单、灵活并可纠正一些常见的机械性误差。这些误差(位移、放大、旋转)都是由于LCD显示器与触摸屏之间的不对应引起的。尽管可通过机械方法来弥补,但是软件方法无需使用机械设备,且更能保证产品质量。
本文来自: USB中国开发论坛(http://www.usbing.com) 详细出处参考:http://usbing.com/thread-18681-1-19.html
触摸屏的校准方法(转)相关推荐
- 固件升级校准_RS网络分析仪自检自校准方法-Agitekservice
R&S罗德与施瓦茨在射频方面比较突出,罗德的网络分析仪不管是手持还是台式个人觉得都比较好用,仪器使用久了就需要定期进行维护保养.也需要做自检自校准测试,那么问题来了,有的工程师不知道如何去操作 ...
- kuka机器人焊接飞溅大_库卡机器人KCP4示教器屏幕校准方法
库卡于1898年在德国奥格堡成立,是世界几家顶级工业机器人制造商之一,1973年公司研发的FAMULUS第一台工业机器人诞生.库卡机器人公司在全球拥有20 多个子公司,涵盖了美国.墨西哥.巴西.日本. ...
- android 触摸防抖,一种触摸屏防抖优化方法、系统及触摸屏终端与流程
本发明涉及触摸屏技术领域,尤其涉及一种触摸屏防抖优化方法.系统及触摸屏终端. 背景技术: 随着电子信息产业的快速发展,触摸屏作为具有人机交互功能的智能产品,应用面极为广泛,但其存在着较多的触摸抖动问题 ...
- linux加速度传感器校准,加速度传感器校准方法及装置与流程
本申请涉及传感器校准领域,具体而言,涉及一种加速度传感器校准方法及装置. 背景技术: 在移动终端中,导航软件的使用频率越来越高,比如说百度地图.高德导航等.目前,移动终端通常包含加速度传感器,在导航过 ...
- android 触摸屏干扰,一种电容触摸屏的抗干扰方法及其控制模块与流程
本发明涉及触摸控制技术领域,具体为一种电容触摸屏的抗干扰方法及其控制模块. 背景技术: 电容式触摸屏基于其良好的触控交互以及外观型式,已在多个行业得到广泛应用.当前新零售行业也在逐步引入电容式触控屏作 ...
- 手机罗盘(指南针)校准方法
百度查了一下,有两种方法: 第一是在床上铺上被子,使劲扔手机,让其在空中翻腾3周半以上,转体720°左右: 第二是把手机水平放在一边,坐等其校准好. 经过本人实测, 第一种折腾老半天,指南针没有变绿, ...
- 陀螺仪加速度计MPU6050程序与校准方法
文章目录 前言 一.陀螺仪与加速度计简介 二.程序使用 1.初始化 2.读取数据 三.误差校准 1.陀螺仪校准 2.加速度计校准 3.校准后的输出 四.源码获取 前言 本文将介绍陀螺仪和加速度计的使用 ...
- 毫米波雷达 ti awr2243 天线通道校准方法
为什么要校准? 级联芯片之间的工艺差异 各天线通道之间的增益差异 温度偏移 天线之间的耦合以及天线罩的影响等 数据处理层面的校准方法: ti awr2243使用的是4片级联方案,4个三发四收雷达板,总 ...
- 钳形表校准典型校准方法
一.导言: 钳形电流表是一种广泛应用在电力检修.工业检测等大电流测量场景的仪器,本文将对其典型校准方法做讨论分析.本文阅读时间约5分钟. 二.目录: 1. 背景:钳形电流表原理与分类 2. 钳形电流表 ...
- 低频相位计的校准方法
低频相位计的校准方法 随着科技的快速发展,电子测量技术广泛的应用于工业.电力.农业.交通运输.航空航天.国防建设等国民经济的诸多领域中,相位计又是进行信息检测的重要工具,在整个测试行业中占有举足轻重的 ...
最新文章
- centOS上安装redis
- 暗黑三使用服务器维护,《暗黑3》本周更新修复内容及维护时间公布
- 年入百万的 24 本理财秘籍,免费领取(速领)
- k8s证书配置:为 kubelet 配置证书轮换
- 计算机组成原理:I/O的三大特性
- SQL比oracle卡,对比Oracle与SQL Server
- vue组件的生命周期和执行过程
- 炎炎夏日需要一个清凉的地 - 自制水冷系统(十一 指尖的思绪之程序篇)
- 浅谈分布式一致性:Raft 与 SOFAJRaft
- ibm量子计算机 申请,【IBM量子计算机问世,造福人类的杰作!】IBM量子计算机已面前全球开放申请使用_来自网易大神圈子_科学企图玄学...
- 一次cpu占用100%的故障解决
- NGUI的拖拽和放下功能的制作,简易背包系统功能(drag and drop item)
- C加载JVM崩溃,一般是因为某个变量为NULL
- Chrome最新版如何安装代理Proxy SwitchyOmega
- newsgroup_txt
- 参加2010年磨房《在路上 - 十年》百公里徒步活动小记
- 2021年全球无水氢氟酸收入大约3120.8百万美元,预计2028年达到3634.6百万美元
- 命令行生成、运行及调用jar包
- 基于java的搜索引擎的设计与实现
- 决策树(三):CART算法