摘要:在线动态签名越来截止多地运用于各种领域,尤其适用于银行金融系统以及个人身份识别等,而作为在线签名的基础—笔迹的数据以及预处理,对后续的准确性尤为重要。本文着重介绍触摸屏的工作原理以及如何利用AT89S51、触摸屏和触摸屏控制器ADS7846,实现对在线笔迹,包括压力在内的三维数据采集,并对采集的数据进行预处理。
关键词:AT89C51 触摸屏控制器 ADS7846 动态签名 数据采集 预处理
由于触摸屏输入方便、轻薄、便于携带等优点,越来越多的电子产品用触摸屏作为人机界面的输入设备。在动态签名中,亦采用触摸屏作为输入设备对笔迹进行数据采集。本文主要从触摸屏工作原理、ADS7846的工作方式以及单片机89S51对ADS7846的控制等方面,分析如何实现三维数据的采集。
系统主要由四线电阻式触摸屏、触摸屏控制器ADS7846、单片机89S51以及相应软件程序组成。系统框图如所示。
1 四线电阻式触摸屏
电阻触摸屏是采用电阻模拟量技术。它是一层玻璃作为基层,上面涂有一层透明氧化金属(ITO氧化铟)导电层,再盖有一层玻璃或是外表面硬化处理的光滑的塑料层;内表面也涂有一层ITO导电层。它们之间有许多细小的透明隔离点把两导电层隔开绝缘,每当有笔或是手指按下时,两导电层就相互接触。而形成电路,如所示。
导电层的两端都涂有一条银胶,称为该工作面的一对电极。上下两个导电层一个是水平方向,一个是竖直方向,分别用来测量X和Y的坐标位置。在水平面上的电极称为X+电极和X-电极,在竖直平面的电极称为Y+电极和Y-电极,如所示。工作时,两个电极根据测量需要提供参考电压或是作为测量端对接触点的位置进行测量。当测量接触点X坐标的时候,导电层上的X+电极和X-电极分别上参考电压和地;Y电极不加电压,那么X电极间会形成均匀的电压分布,用Y+电极作为测量点,得到的电压值通过A/D转换,就可对应地判断出接触点的X坐标。Y坐标亦是类似,只需改成对Y电极加电压而X电极不加电压即可。
其中VREF为加在ADS7846内部A/D转换器上的参考电压,可以接VCC作为参考电压。
测量触摸压力的原理与ITO(氧化铟)材料的自身特性有关。ITO导电膜的电导率公式为ρ=ρ0(1+3λ0/d)(d为导电膜的厚度),即ITO电导率和ITO导电膜的厚度成反比。触摸的压力越大,接触点的ITO导电膜就越薄,相应的电导率就大、电阻越小。所以,触摸压力的测量实质是测量接触ITO导电膜的电阻值。
2 触摸屏控制芯片ADS7846
ADS7846是Burn-Brown公司生产的专门用于四线电阻触摸屏数模转换芯片,内部有一个多通道的模拟开关组成的测量电路网络和12位的A/D转换器。工作时,ADS7846根据数据输入口DIN收到不同的命令字打开相应的开关通道,并接受返回的模拟电压,通过A/D转换得出对应的数字量,再通过DOUT传回单片机。
S是开始标志位,只有S位为高时ADS7846才开始接收命令字。A0、A1、A2是通道选择,根据测量的需要而改变,MODE选择是8位还是12位的A/D转换,根据实际要求在此选择了12位的A/D转换。SER/DFR是工作方式选择位。ADS7846有两种工作方式:一种是单端输入,一种是差分输入。在需要进行压力测量的时候,必须使用差分输入的工作模式。PD1和PD0是用来控制内部参考电压和模数转换器的开关。
3 单片机AT89S51与ADS7846的数据通信
(1) AT89S51
AT89S51是Atmel公司新推出的89C51的升级产品,全面兼容89C51。与89C51相比,新增加了以下几个主要功能:①可以通过数据线进行在线编程,使程序的写入更加方便简捷;②工作晶振可以达到33MHz,提高了运行速度;③新增了看门狗电路,提高了电路的抗干扰性。
(2)AT89S51与ADS7846的通信
AT89S51与ADS7846的通信主要通过单片机的I/O口与ADS7846的CLK、CS、DOUT、DIN、BUSY五个引脚进行。CLK是ADS7846的工作脉冲,CS是ADS7846的片选信号,DOUT是数据输出,DIN是数据输入,BUSY是转换判断位。当系统工作时,单片机首先通过片选信号选中ADS7846,再通过DIN向ADS7846发送命令控制字数据,并通过CLK引脚配以相应的时序脉冲。BUSY位被置位后,通过DOUT数据输出口获取12位转换结果。
由于要求系统能采集包括X坐标、Y坐标和压力在内的三维数据,所以,先送打开测量X通道的命令字,返回得到的数字值即为X坐标,再送打开测量Y通道的命令字,得到的值为Y坐标。再依次得到Z1、Z2的值,通过转换公式
可计算出RTOUCH也就是压力Z的值。其中Rx是X轴电阻值大小,与触摸屏的性能参数有关;是开始得到的X坐标值。
程序流程如所示。
值得一提的是,Z1、Z2仍然是转换后的12位A/D转换的数字值,但通过转换公式得到的Z值实际上是接触点间两层ITO氧化膜的电阻值大小。这样就完成了在某一个时刻的三维信息采集。根据实际要求,利用定时器设定采样的时间为10ms,即1s采样100个点。采集的数据通过USB接口送到PC机保存,以供后续匹配处理。同时,采集的数据可以通过液晶屏显示,以便书写时观察。
4 触摸屏的初始化标定
由于触摸屏的一些边缘部分是无效的触摸区域,所以,实际转换出来的X坐标和Y坐标并不是从0到4095的,因此要进行初始化标定,通过转换公式使其在0到4095整个区间线性化。X坐标值的转换公式为X=(X-Xmin)×4096/(Xmax-Xmin),其中Xmax和Xmin分别是触摸屏有效触摸区域X方向的值和值。同理,X坐标值所对应的转换公式为Y=(Y-Ymin) ×4096/(Ymax-Ymin),其中Ymax和Ymin分别是触摸屏有效触摸区域Y方向的值和值。压力值表示的是电阻值大小,并不能直接地反映压力的大小,所以,根据实际需要,将其转换成与压力大小相对应的0到256级压力值。转换公式为Z=(Zmax-Z) ×256/(Zmax-Zmin),其中Zmax和Zmin分别为书写笔与触摸屏接触时的电阻值和电阻值。
实验数据显示,所用触摸屏的特性参数Xmax和Xmin分别为3860和180,Ymax和Ymin分别为3690和440,Zmax和Zmin分别为540和350。由于每块触摸屏和书写笔的物理特性都不尽相同,所以每当更换触摸屏或是书与笔的时候,系统都要进行重新初始化示定的工作。
5 数据的预处理
在数据采集的过程中,有许多因素影响数据的准确性,所以必须对数据作一些相应的预处理,以保证采集数据的准确性。
(1)书写抖动造成的漏点
在进行数据采集时,会在连续的数据中出现零值点。出现零值点有两种可能:一种是正常书写笔划的改变造成的,另一种就是由于触摸屏不够平整或是书写时的抖动造成笔迹的间断而造成的。区别的方法主要是看间断时间也就是零值连续出现的个数。一般抖动造成的间断时间小于设定的采样时间10ms,所以,抖动产生的零值在两个有效数据中间只能出现1个,可以认为是无效零值;而出现两个以上的连续零值便可以认为是笔划的改变而生成的有效零值而不作处理。当判断出某个零值为无效零值后,对其进行线性内插来弥补数据的丢失,即an=(an+1+an-1)/2。其中an是无效零值点,an-1和an+1分别是an的前面和后面的一个有效值。和图分别是处理前和处理后的波形。
(2)重复采集点的去除
由于书写者书写时的停顿,造成在某一点多次重复采集,显然在后续的匹配会与样本数据产生很大的误差,所以有必要删除重复的数据。每当判断出前后两个点X坐标和Y坐标均相同的时候,就可以断定它们为重复点,则将后一个点删除,再用后续的点依次补上。这样保证了采集的数据能够真实地反映笔迹信息。
(3)书写位置的校准
书写者每次写时起笔的点不一定相同,这样,每次书写采样的结果都与样本模板里的采样值有一个恒定的差别,因此有必须进行书写位置的校准。处理的方法是把采集到的个数据的X坐标和Y坐标与校本数据里第1个数据的X坐标和Y坐标作比较,公式分别为ΔX=(X1-X1),ΔY=(Y1-Y1)。其中X1和Y1分别是采样数据的第1个点的X坐标值和Y坐标值,X*1和Y*1则是样本数据里的第1个点的X坐标值和Y坐标值,ΔX和ΔY则为采样的数据与样本数据在X方向和Y方向的偏移值。所以,校准公式为
Xn=Xn+ΔX,Yn=Yn+ΔY
以上是对数据进行预处理的几种方法。预处理可以为后续笔迹的匹配提供更加准确的数据,并减轻匹配的运算量。因此预处理是笔迹匹配前的重要步骤,它的好坏将直接影响的。
[1]. AT89S51 datasheet https://www.dzsc.com/datasheet/AT89S51_970858.html.
[2]. ADS7846 datasheet https://www.dzsc.com/datasheet/ADS7846_1056189.html.
[3]. AT89C51 datasheet https://www.dzsc.com/datasheet/AT89C51+_810155.html.
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。