一种鼠标位移测量技术研究
2016-10-14 来源:elecfans
1 鼠标的工作原理及位移测量的实现方法
1.1 鼠标的工作原理与驱动程序
鼠标( mouse) 在现代个人电脑( PC)中被广泛应用,特别是图形用户界面(GUI)的流行,鼠标已经不可或缺。大规模的生产使鼠标的价格很低,通过利用鼠标来测位移也使成本趋于合理。经过数十年的技术发展,尤其是光电鼠标与激光鼠标的出现,其精度得到极大提高。利用鼠标进行位移测定,具有高精度、低成本的优点。鼠标虽然实际上是位移传感器,但其是为PC 机配备的外部输入设备,各种操作系统自带的鼠标驱动程序只是为了提供图形用户界面操作,无法满足普遍的位移测量要求。
鼠标全称显示系统纵横位置指示器。光电鼠和机械鼠的最大区别是对轨迹的检测方法,但其工作原理基本相同: 通过光栅信号传感器或光电传感器将位移转换为电脉冲信号,然后通过芯片将信号处理为数据包传递给PC 机。目前利用鼠标实现位移测量的方法主要是利用单片机实现信号处理,实现位移检测功能,但此方法稳定性差,噪声较大,需要额外硬件系统,性价比低。在操作系统已经尽可能挖掘了底层硬件数据通信能力的情况下,重新对底层硬件通信浪费资源。实际上,鼠标提供GUI 操作,通过鼠标移动控制显示设备上鼠标指针的像素移动。反之,可以利用指针运动的位移来确定实际鼠标的位移。
1.2 鼠标坐标系统与显示坐标系统的关系
鼠标坐标系统( 即实际位移) 与显示坐标系统通过映射来完成对应关系,二者坐标均使用平面直角坐标系。鼠标坐标系统在平面上任意取一点作为原点,以相对原点的偏移量计算目标点的坐标值,然后以相对该目标点的偏移量计算下一新目标点的坐标值,以此类推。鼠标坐标系统中基本单位为米基。显示坐标系统同显示器的实际分辨率及工作方式有关。使用平面直角坐标系,原点在屏幕的左上方,横向代表X 方向,纵向代表Y 方向。图形方式下的横向、纵向的象素为基本单位进行衡量。例如,1024×768 分辨率时,显示坐标的横向和纵向坐标范围为0~ 1023,0~ 767。
鼠标坐标系到显示坐标系完成三个方面的映射:(1) 原点映射:( x 0 , y 0 ) = ( X 0, Y0 ) , 其中X 0 , Y0 ( 为屏幕原点坐标)值可任意给定:( 2) 目标点映射:( x i , y i ) = ( x i- 1 +△x i , y i- 1 + △yi ) →(X i , Yi ) = X i- 1 + △X i , Yi- 1 + △Yi ( i =1, 2 ……, n, 横向下界≤ X i ≤ 横向上界,纵向下界≤Yi ≤纵向上界; ( 3) 基本单位映射: 在图形方式下( 米基到象素映射) ,△x i / x 方向比例因子= △X i , △yi / y 方向比例因子= △Yi ( i =1, 2……,n)。改变米基到象素的比例因子μ 影响鼠标灵敏度,μ 值决定着指针的移动速度,可以在PC 机w indow s 操作系统中的控制面板设置。因此无须改变鼠标底层的硬件驱动,实际鼠标的位移可以通过象素坐标来确定。但实际的显示坐标均有边界限制,不能满足大范围的位移测量。通过LabVIEW编程消除显示坐标系象素X i 与Yi 的上下界限制,通过测量指针移动的象素来精确检测鼠标的位移量。
1. 3 位移测量的LabVIEW 实现方法
通过库函数节点( CLF) 来访问动态链接库( DLL) 的方法,直接调用WINDOWS API 函数与LabVIEW 自行编制的库函数,使得LabVIEW 对鼠标的通信得到大大的增强,同时也为操作系统底层函数支持LabVIEW 提供了便捷,节省了内存空间。与鼠标相关的动态链接库函数如表1 所示,二者库函数有部分相同的功能。
表1 鼠标驱动程序接口函数
通过调用以上函数实现鼠标的位移测量。具体方法为: 在显示坐标系内,坐标范围分成M × N 象素。位移的X 、Y 分量二者互不影响,编程时可以分别处理。方法实现的重点是消除操作系统固有的显示坐标系象素X i 与Yi 的上下界限制。首先要判断鼠标的运动方向,若鼠标向左移动,则其必然到达坐标系右边界。这时通过函数使象素X i 置零,Yi 不变,同时记录一次其过边界。通过显示坐标( X i , Yi ) 与初始坐标( X 0 ,Y0 ) 之差与过边界次数即可求出在显示坐标中鼠标指针的位移。其他运动方向的位移同理可以得到。最后通过比例因子μ将显示坐标映射到鼠标坐标系中,即可求出实际位移( x i ,yi ) .详细的程序流程图如图1 所示。
图1 鼠标位移测量程序流程图
LabVIEW 具有代码直观、层次清晰的图形化编程特点。在前面板上设置显示坐标为M×N = 500 × 300 的指针工作区域,并设置初始坐标在工作区的中心( 250, 150) .X 方向右位移消除边界的部分程序框图如图2 所示,条件语句判断当指针到达右边界( 499, Yi ) 时,下一次循环将其设为( 0, Yi ) ,并将以后的位移增加1 倍M.循环体内使用了移位寄存器。
图2 部分消除边界的LabVIEW 程序框图
2 检测实验与性能分析
检测实验采用USB 接口的dell 三键光电有线鼠标,最高分辨率400dpi.分别测试了鼠标在指针最小与最大移动速度( 控制面板中设置) 中以4mm/ s 与20mm/ s 的速度进行位移测量性能。采用步进电机与控制器对其进行位移标定,位移精确度为0.01mm.得到如图3 所示位移图像。
由于步进电机显示位移与鼠标实际检测的位移具有统计关系而且是线性的,故可以建立回归模型: Yi = A + B ?? X i + εi( i= 1, 2, ……, n) , 其中( X i , Yj ) 表示( X , Y) 的第i 个观测值,A 、B 为参数,A + B ×X i 为反映统计关系直线的分量,εi 为反映在统计关系直线周围散布的随机分量,εi ~ N( 0, δ 2 ) , 服从正态分布。根据最小二乘法:
相关系数越接近1, 则二者越正相关。图3 直线拟合的结果如表2.
表2 线性拟合结果
图3 步进电机标定实验及线性拟合
由表可知,不同条件下两种方法测定的位移相关系数均接近于1, 即实验鼠标位移测定与步进电机标定位移接近相等;截距A 可以忽略不计,即鼠标位移测量没有系统误差; 斜率B 的标准差均小于0.3%, 即实验鼠标随机误差小。以上充分说明实验鼠标在低速的位移测量具有精度高、线性度好、误差小等优点。
图4 不同速度位移测定的误差
3 总结
结果显示此方法达到了精确位移测量的要求,可以提供精确度0.1mm 的位移测量,具有线性度好,精确度高,误差小的优点。同时研究显示该位移测量系统在低速的位移测量中具有更佳的性能。采用高层软件设计的方法,使鼠标位移测量不受鼠标接口、鼠标型号的限制,具有高性价比与强适用性的特征。此鼠标位移检测方法集成到基于LabVIEW 的漏磁检测系统中,取得了良好的效果。