1 系统原理与设计
1.1 检测原理
目前,常见的鼠标有2种,滚轮式和光电式。滚轮式鼠标是靠滚轮的传动带动X和Y轴上的译码轮转动,来感测鼠标位移的变化;光电式鼠标是用一个自带光源的光电传感器,跟随鼠标的移动连续记录它途经表面的“快照”,这些快照(即帧)有一定的频率、尺寸和分辨力,而光电鼠标的--DSP通过对比这些快照之间的差异从而识别移动的方向和位移量,并将这些位移的信息加以编码后实时地传给电脑主机。
而基于MEMS技术的无线鼠标是用微加速度传感器实时测量鼠标运动的加速度,经过两次积分转换为位移信号传输给主机,来控制光标的移动,从而实现鼠标的功能。
1.2 硬件设计
如图1所示,整个无线鼠标系统分为2个子系统,远端子系统和主机端子系统。
图1 无线鼠标系统结构框图
远端子系统由微加速度传感器、微控制器和nRF2401射频收发器组成。微加速度传感器采用美国AD公司生产的ADXL203微传感器,微控制器采用Atmel公司生产的ATmega 16L微控制器,该微控制器附带有8路10位可编程的A/D转换电路,可以实时地将ADXL203加速度传感器输出的加速度模拟信号转换成加速度数字信号。
ADXL203加速度传感器在加速度为0时输出电压为2.5V,为提高A/D转换的,本文利用ATmega 16L内置的差分放大功能,用差分信号将这2.5V电压给滤掉,并将差分后的电压信号放大到与A/D转换的参考电压相匹配。系统供电采用电器中常见的9V电池,连接一个LM78M05稳压贴片得到恒定的5V电压,供各个模块使用。
主机端子系统由nRF2401射频收发器,串行传输接口芯片和另一个ATmega 16L微控制器组成,其中,RS232串行通信接口芯片采用的是Maxim2IC公司的MAX233芯片,作用是将微控制器输出的5V TTL/CMOS电平转换为EIA/TIA-232-E电平,以便与电脑主机进行串行(RS232)通信。
1.3 软件与算法设计
鼠标在人的操纵下移动,微加速度传感器便会实时地输出鼠标运动的加速度大小和方向,ADXL203传感器的量程为±1.7gn ,电压灵敏度为1000mV/gn,这个电压信号经过差分放大5.0/1.7倍后,通过微控制器A/D转换功能变成与加速度大小对应的数字信号,加速度经过两次积分,便变成了鼠标移动的位移信号,然后,再经过编码,并通过nRF2401射频收发器将位移信号发射出去。
当加速度传感器输出电压为a时,经A/D转换得到的数字量大小为
式中[ ]表示取整数;a为加速度传感器输出的电压大小,V。ATmega 16L单片机采样速率可以达到15000次/秒,本文采用1000次/秒;即每1ms采样,每25ms便向电脑相对的位移改变量,以保证屏幕上鼠标指针运动的和平滑,则每的位移改变量包含25次对加速度采样的数据。可以采用近似算法来对加速度信号进行二次积分,得到位移信号。
编码的目的是将X和Y方向的位移改变量,连同鼠标按键的实时信息,按照标准的Microsoft鼠标协议要求的格式进行编码,以便发送到主机的信息能够被电脑正确识别,从而使电脑能正确处理发送给它的位移信号,来正确控制鼠标光标的移动等动作。表1表示的即是标准的鼠标协议规定的三字节数据包格式,第1个字节记录的是左右按键的信息和鼠标X,Y位移的2个字位的数据,按键按下时,对应的位置1,否则,置0;第2和第3个字节分别记录X和Y方向位移的低6位数据。位移值的范围取-127~+127,再大的位移改变量会自动溢出。
表1 Microsoft标准鼠标协议数据包格式
2 具体设计方案
2.1 鼠标原理
光学鼠标的是一个低分辨率迷你摄像机, 称为传感器。浏览LED照亮表面,光从表面反射回来,通过透镜采集。大多数鼠标制造商采用可视的红色LED,有些制造商还生产采用红外线LED的鼠标。
当鼠标移动时,传感器会连续拍摄物体表面,并利用数字信号处理来比较各个影像,以决定移动的距离和方向。产生的结果会传回计算机,而屏幕上的光标会根据这些结果来移动。虽然光学鼠标传感器几乎可以在任何一种物体表面上移动,但仍有一些表面是鼠标传感器无法浏览的,例如镜面、玻璃表面、光滑表面、杂志及全像摄影表面。
根据图1,鼠标可划分为以下几个功能部分:
1)位移检测单元--X、Y双轴加速度传感器;
2)按键检测单元;
3)单片机(MCU);
4)蓝牙发射芯片;
5)蓝牙收发芯片--做接收器(RX);
6)带USB接口的单片机(USB MCU)。
图1 基于加速度传感器无线鼠标的描述
鼠标具体的工作原理为:鼠标内的单片机实时监测加速度传感器的移动和按键状态,当鼠标器的状态发生变化时,单片机读出按键状态并及时得到当前X/Y坐标移动的位置;接着单片机就将变化的数据按照约定的通信协议将数据打包通过无线收发技术发送到接收端,接收端通过单片机解码把符合鼠标USB协议的数据包送至PC主机的USB端口;PC中的鼠标驱动程序接收到端口的数据包后将其解码再传送给相应的应用软件,从而完成鼠标器的检测和控制过程。
2.2 发射端
加速度传感器采集加速度信号,单片机通过软件实现对加速度信号的二重积分而转换为位移信号,经编码处理至蓝牙发射芯片,通过天线将数据发射出去。
2.2.1 加速度传感器电路
采用ADI的低成本、低功耗双轴单片加速度传感器 ,其可测量加速度范围至少在 ±2g 以上 ,可以测量动态加速度(比如振动)和静态加速度(比如重力加速度),其输出的占空比是和加速度的大小成一定的线性关系,并且可以直接被单片机(MCU)采样而不需模数转换(ADC)。工作周期则可以简单地通过RSET来调节 ,范围在0. 5m s到10m s之间。带宽可以通过调节XFLT和管脚上的电容Cx和Cy来确定, 本方案中选用Cx=Cy= 0.10μF, 故,需要注意的是,加速度传感器在平动时会在相应的方向产生与加速度相关的输出,在转动的时候也是如此 ,本方案中我们假设鼠标在水平面使用 ,因此我们只需要一片加速度传感器就可以解决问题 ,加速度的大小可以通过 T1/ T2 = 11% 3A+ 50%这个线性比例关系获得 其中 T1表示工作周期中高电平部分的长度 , T2表示整个工作周期的长度 , T1/ T2就是输出占空比的大小,A 是加速度大小 ,而加速度的方向可以通过其正负性来判定。
2.2.2 占空比输出解码
对于每一个轴,传感器的输出电路把模拟信号转变成占空比调制的数字信号,这样就可以通过MCU 的定时/计数器解码获得加速度信息,其大小可以通过下式计算得到:
由于每个器件存在差异,其 0g输出和灵敏性会因为温度、噪声等原因而不同,为实现高测量,0g的偏移量和比例因子必须按照实际测量所得。本方案在TA=25℃,VDD=3V,RSET=125KΩ,中测得:
为了实现高测量,考虑到T2易受温度漂移的影响,必须周期性地更新T2的平均值。一种新的改进型脉宽调制(PWM)解码方法是通过占空比调制在X轴和Y轴使用相同的三角形参考波 ,使得每个周期中 T1的中点达到同步 ,这种方法能加快数据传输时间,也称之为高速解码,X轴和Y轴的占空比输出如图2所示。
图2 X轴和Y轴的占空比输出
单片机软件编程实现获取加速度信息的流程图如图3所示。
图3 ADXL202E高速解码技术流程图
2.2.3 软件实现获取位移信号
如何实现高度且易于编程的二重积分算法是把加速度信号转换为位移信号的关键所在,用积分电路来实现二重积分的误差较大,因此拟用软件编程来实现二重积分的算法 ,并且先在 matlab环境下用动态系统的simulink模型模拟 FFT、辛普生公式等不同的积分算法 ,来进行算法的比较与选择 ,通过加速度传感器鼠标的 simulink模型对实际位移和软件实现的位移信号进行比较,误差控制在在0.5%以内,满足鼠标设计要求。
2.2.4 无线鼠标按键
鼠标按键采用标准开关,每个开关直接连到ATmega16 的通用输入输出(GPIO)口, GPIO被配置成输入引脚,每个引脚可以单独地选择上拉电阻,单片机检测按键操作,软件进行按键去抖处理和实现噪声抑制功能,然后通过蓝牙芯片发射出按键信息。
2.2.5 蓝牙模块发射芯片
nRF2402是单片2.4 ~2.5GHz射频发射芯片, 发射器包含频率合成器、功放、晶体振荡器和调制器 ,输出功率和信道选择很容易通过3-线接口编程实现, 在输 出功率为-5dBm时电流消耗仅10mA ,内置的ShockBurst技术以及休眠模式用来降低发送数据的电流消耗 ,以延长电池使用寿命 ,并且向pc发送的数据包也应尽可能少(取采样速率为100采样点/秒)。ShockBurst技术使用片内先入先出堆栈(FIFO)低速处理数据(10Kbps)而高速发送数据(1Mbps)。
该设计需要一个16MHz的晶体振荡器和一个外部的EPROM用来固件存储。固件将使用ShockBurst技术从鼠标发送RF数据包。其中固件必须完成下列任务:
装载地址(ADDR)和有效载荷(PAYLOAD);
计算循环冗余检查(CRC);
添加信息位(PRE);
使用ShockBurst技术发送数据包;
数据包发送完成回到休眠模式。
2.3 接收端
2.3.1 蓝牙收发芯片
接收器是将nRF2401收发芯片配置成接收模式(RX),其性能类似发射芯片,但该芯片采用Duo2Ceiver同步双通道接收技术,这样就可以实现鼠标和键盘的无线控制(在此我们仅考虑鼠标的使用)。误差控制其固件必须完成下列任务:
当nRF2401作为ShockBurst的接收器时,设置正确的地址和接收到的RF数据包的有效载荷长度;
激活RX,并设CE为高;
等待200μs后,nRF2401处于等待接收数据状态;
当有效数据包正确的ADDR和CRC信息接收到后,nRF2401去除数据包中的附加信息、地址和循环冗余检查位;
nRF2401通知MCU使DR1设置为高;
MCU设置CE为低也可能不设置为低 使芯片处于低电流模式;
MCU以一定的速率记录有效载荷信息;
当得到有效载荷后nRF2402设置DR1为低。如果CE为高则准备接收新的数据包 ,如果CE为低,则重新开始起始序列。
2.3.2 PCB天线设计
为实现2.4GHz低功耗射频器件nRF2401和nRF2402 的小尺寸、易制造和低成本特点,在PCB上选用1/4波长单极天线是一个理想的解决方案。但是如同其他天线一样 , 1/4 波长单极天线的增益会由于壳体材料、与接地面(ground p lane)接地面的尺寸以及PCB天线的宽度和厚度等参数的改变而发生变化,因此单极PCB天线的长度必须的改变而发生变化,因此单极PCB天线的长度必须优化。在本方案中,天线采用标准1.6mm材料,其相对介电常数为4.4,天线的宽度W=1.5 mm,通过计算可得到单极天线周围物质的介电常数为3.16,从而在该条件下波长为 68.9mm。在PCB基底上选用印制1/4波长单极天线的长度L=17.2 mm ,为了使得天线在 2.4GHz更容易谐振,天线的长度可适当延长,本方案中选天线长度L =22mm的类“┓”型设计,是PCB天线制作较为合理的一种方法,大大节省了PCB板的面积,同时在规定PCB板面积的条件下应保证天线的开口端和接地面之间的距离d尽可能大,实现信号高、高增益的准确发射和接收。
2.3.3 带USB接口的单片机
USB设备具有即插即用、热插拔等优势 ,鼠标采用USB接口必将成为一种趋势,因此我们采用带USB收发器的单片机CY7C637xx系列。该系列是采用高性能8位精简指令(RISC)结构,集成了USB串行接口引擎(SIE)的单片机 ,其内置了时钟振荡器、计时器、可编程电流驱动以及在每个I/O口线上的上拉电阻,可以用极少量的外部元件和简单的固件编程实现高性能低成本的人机交互设备(HID)。
软件部分对接收的RF数据包进行译码,并经过处理转换为符合鼠标USB协议的数据包格式送到PC机,以及完成为实现鼠标功能所需的固件的编写。当USB器件次连到总线,总线供电,D-的上拉电阻集线器连接一低速(1.5Mbps)USB器件,主机识别这个USB器件,总线重启。主机接收到器件的描述符后赋予器件一个新的地址,这样器件和主机通过这个新的地址进行数据通信。
2.4 节能考虑
单片机可通过软件选择省电方式:闲置方式停止CPU的工作 ,而SRAM、定时 /计数器、SPI口及中断系统继续工作;掉电方式保留寄存器的内容,但停止晶振,终止芯片的其他功能,直至下外部中断或硬件复位。蓝牙芯片则通过配置特殊寄存器,可使芯片工作在ShockBurst无线方式,并支持休眠模式和掉电模式,可实现数据的超低功耗传输,因此,对于用电池供电的鼠标器发射端无疑延长了其使用时间。
3 结语
本文详细讨论了基于微加速度传感器的MEMS无线鼠标的软件、硬件设计和系统构成,并给出了Matlab环境下系统的simulink模型和算法,模拟的结果证明:无线鼠标的设计是合理可行的,文中提出的二次积分近似算法是简捷有效的;文中讨论的二维鼠标的设计技术,能为进一步研究多维多功能的MEMS输入设备打下很好的基础。本文选择硬件时,充分考虑了系统向多维和多功能扩展的可能性,可以在此二维鼠标的基础上再添加一些器件,构成功能更多更完善的MEMS输入设备,例如:可以再添加一个微加速度传感器来感测Z轴的加速度,从而实现三维鼠标,可以实现对三维立体旋转等的控制;也可以利用nRF2401射频收发器内置的多点通信控制的特性,再多增加几个接收模块,可以同时控制多台主机,或多增加几个发射模块,用几个输入设备来控制同一台主机,以适应不同应用场合的需要。
另外,基于MEMS技术的无线鼠标很容易向三维空间使用拓展,这样就能为很多场合,尤其是作演讲时提供很大的方便,具有很大的应用价值。
[1]. nRF2401 datasheet https://www.dzsc.com/datasheet/nRF2401_521030.html.
[2]. ADXL203 datasheet https://www.dzsc.com/datasheet/ADXL203_125303.html.
[3]. LM78M05 datasheet https://www.dzsc.com/datasheet/LM78M05_1109823.html.
[4]. RS232 datasheet https://www.dzsc.com/datasheet/RS232_585128.html.
[5]. MAX233 datasheet https://www.dzsc.com/datasheet/MAX233_1089800.html.
[6]. ADXL202E datasheet https://www.dzsc.com/datasheet/ADXL202E_125295.html.
[7]. ATmega16 datasheet https://www.dzsc.com/datasheet/ATmega16+_144718.html.
[8]. nRF2402 datasheet https://www.dzsc.com/datasheet/nRF2402_521032.html.
[9]. EPROM datasheet https://www.dzsc.com/datasheet/EPROM_1128137.html.
[10]. RISC datasheet https://www.dzsc.com/datasheet/RISC_1189725.html.
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。