0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于微加速度计的无线惯性鼠标的设计方案

li5236 来源:传感器门户网 作者:传感器门户网 2022-03-29 10:51 次阅读

摘要: 提出了一种基于微加速度计的无线惯性鼠标的设计方案。该方案以微加速度计ADXL213作为信号检测元件,并采用低功耗处理器MSP430F135和RF芯片nRF401进行信号处理与无线传输。按该方案设计的鼠标结构简单、密封性好,在降低鼠标功耗和提高鼠标使用灵活性等方面具有较大的应用前景。

1 引言

鼠标作为PC机的输入工具,其重要性不言而喻。但是,随着计算机外围设备的越来越多,各种连线也越来越多,给用户带来了许多的不便。于是,人们便有了无线接口的想法,迫切希望有一种鼠标,它能够克服诸如有线的距离限制、有线鼠标的线材损耗、连线多且错综复杂等问题。在这种情况下,无线鼠标应运而生。目前市场上的无线鼠标几乎都是光电射频鼠标,它虽然克服了有线的缺点,但在功耗、使用场合等方面仍然存在一些不足。

采用微加速度计设计的无线鼠标,既可以独立使用,作为桌面PC 的鼠标;同时也可以作为单独的模块嵌入到现有的机械鼠标和光电鼠标中,实现鼠标的悬空使用,方便用户的操作。该设计兼顾了设计成本与鼠标使用寿命,使得惯性鼠标具有相当大的竞争力。

2 系统硬件设计

2.1 信号检测电路的设计

ADXL213是一种低成本、低功耗、集成了信号调理电路和占空比调制器的微加速度计芯片。输出为PWM数字信号,因此可与计数电路或单片机直接接口,无须放大和A/D电路。用户只需外接三个无源器件就可以设置滤波器输出带宽和输出PWM波的周期。

ADXL213的典型带宽为1Hz~2500Hz,其-3dB带宽公式为:

可见,带宽主要由C(x,y)确定。C(x,y)越小,信号带宽越宽,分辨率越高,响应速度越快。设计时,首先要确定被测加速度的频率范围,然后再设计滤波器的参数。尽量使滤波器的带宽略高于信号的最高频率,这样做不仅有利于滤除高频干扰,也利于降低系统噪声干扰。

对于占空比的设计,占空比调制器(DCM)的周期就是芯片输出方波的周期T2。该周期是由RSEL确定的,其关系式为T2=RSEL/125MΩ(RSEL是用来设置输出信号循环周期的电阻)。当DCM输出方波频率大于模拟带宽10倍以上,测量准确度就很理想。从这一点来看,T2越小越好,但是T2的减小会提高对计数器以及微控制器的处理速度要求。另一方面,要提高测量的分辨率就应该尽量提高T2时间内的计数次数,这就要求计数器和控制器有更高的处理速度,而实际中硬件的处理速度是受到器件性能限制的。综上所述,T2是根据模拟带宽、计数器和处理器速度以及测量分辨率的要求共同确定的。在设计时要明确测量的指标要求,综合考虑各种因素。

本设计中要求被测带宽为20~50Hz,则选择滤波器的带宽为60Hz,选定T2为1.25ms,即DCM输出方波频率为800 Hz,该频率是测量最大频率的16倍,因此可以很好地反映加速度的变化。根据上述选择,可以计算出电阻RSEL为156KΩ,两个电容选用0.08μF。

对于鼠标的按键设计,主要是要考虑消抖。考虑到鼠标体积、功耗等要求,设计中采用软件延时方式来消抖。加速度计及鼠标的按键信号的处理由MSP430F135单片机来完成。

设计时应将鼠标响应的实时性放在第一位,而将鼠标的功耗放在第二位。加速度计需设置一个控制开关,以解决其一直有信号输出的问题(加速度计有零漂,鼠标倾斜等原因)。按键及加速度计与单片机的连接如图1:

图1 鼠标按刍及加速度计与单片机的连接图

2.2 无线模块的设计

图2 发送端的硬件电路图

图3 接收端的电路图

传输模块的关键是无线收发芯片。考虑到鼠标的体积和功耗等方面的因素,无线通信模块选用了Nordic公司的nRF401芯片。nRF401在工作时,只需要外接一个晶振和几个阻容、电感元件,基本无需测试。设计中,单片机通过异步串口与nRF401通信,然后再分别使用三个引脚作为nRF401的通信控制即可。外接晶体及阻容、电感等元件均按照nRF401推荐的典型参数值选取。发送端的硬件电路如图2。接收端的nRF401接收到数据后通过USB接口与PC机相连,接收端的处理器采用AT89C51,具体连接见图3。

为了获得较好的RF性能,PCB设计至少需要两层板来实现,分成射频电路和控制电路两部分来布置。nRF401采用PCB天线,在天线的下面没有接地面。为了减少分布参数的影响,PCB上应该避免长的电源走线,所有元件地线,VDD连接线,VDD去耦电容必须离nRF401尽可能地近。nRF401的电源必须经过很好的滤波,并且与数字电路的电源分离,在离电源脚VDD尽可能近的地方用高性能的电容去耦,最好是一个小电容和一个大电容相并联。PCB板顶层和底层最好敷铜接地,把这两层的敷铜用较多的过孔紧密相连,再将VSS脚连接到敷铜面。所有开关信号和控制信号都不能经过PLL环路滤波器元件和VCO电感附近。

2.3 USB接口硬件设计

鼠标与计算机的通信采用USB通信方式。USB控制芯片选择了PHILIPS公司的PDIUSBD12。PDIUSBD12与89C51的连接如图3,PDIUSBD12的8位并行数据接入89C51的P0口,地址线A15(P2.7)作为PDIUSBD12的片选,地址线A14(P2.6)作为PDIUSBD12的命令或数据的选择线。PDIUSBD12 与89C51的数据交换采用中断方式(外中断INT0)。PDIUSBD12从USB口得到信息后向89C51发出中断信号,89C51进入中断处理程序进行响应。

3 系统软件设计

3.1 信号检测部分的软件设计

信号检测部分软件设计的关键是计算加速度计输出信号的占空比,从而计算出加速度值。待机时,处理器工作在低功耗模式LPM3,从而降低整个系统的功耗。加速度计的输出信号接MSP430F135的比较/捕获模块的输入端,为了能精确测出输出信号的占空比,可利用MSP430F135中Timer_A的比较/捕获模块,令其工作在捕获模式,且让其在上升沿和下降沿都捕获。在上升沿时,捕获一个定时器数据,这个数据在捕获寄存器器中读出;再等下降沿到来,在下降沿时又捕获一个定时器数据;两次捕获的定时器数据差就是脉冲的宽度也即输出信号中高电平的宽度。

限于篇幅,这里仅给出X轴的信号检测部分的程序,分别用start和end记录上升沿和下降沿捕获时计数单元的值:

#include 《msp430x13x.h》

unsigned int start,end;

unsigned char overflow;

void main(void) {

WDTCTL=WDTPW+WDTHOLD; //关闭看门狗

P1DIR|=BIT0+BIT4; //P1.0设为输出

P1SEL|=BIT1; //P1.1为模块使用

CCTL0=CM0+SCS+CAP+CCTE0; //软件捕获,CCIOA

输入,允许捕获中断

TACTL=TASSEL0+TACLR+TAIE+MC1; // ACLK,连续计数模式,清除TAR,允许定时器溢出中断

_EINT(); //系统总中断

for(;;){ //低功耗模式3

_BIS_SR(CPUOFF+SCG1+SCG0);

_NOP();}}

interrupt[TIMERA0_VECTOR]void TimerA0(void) {

Switch(TAIV) {

case:2; //捕获中断

if(CCTL0&&CM0) //上升沿

{CCTL0=(CCTL0&&(~CM0))|CM1; //改为下降沿触发

star=TAR; //记录初始时间

overflow=0; } //溢出计数复位

else if(CCTL0&&CM1) //下降沿

{CCTL0=(CCTL1&&(~CM1))|CM0; //改为上升沿触发

end=TAR; } //用start、end和overflow计算宽度

break;

case 10; //定时器溢出中断

overflow++; //溢出计数加1

break;

default: break; }}

3.2 无线通信模块部分的软件设计

为了节能,nRF401大多数情况下应处于关闭状态。由于无线部分硬件不具备自动唤醒功能,nRF401由MSPF135根据加速度信号来唤醒。在通信模块的设计中,鼠标的功耗、响应的及时性和指针定位的准确性是要考虑的主要问题。鼠标的通信是一种非对称的单工通信,系统的功耗主要产生在鼠标主体部分即发送端。接收端由USB接口供电,可以一直处于接收监听状态,不影响系统的功耗,因此不需要设置同步码来唤醒接收端,可以在帧尾加上2字节的CRC校验来校验数据传输的正确性,提高抗干扰能力。

综上所述,通信帧格式采用了1字节地址加4字节有效数据信息再加2字节CRC校验的短帧格式。当CRC校验错误时,直接丢弃该帧。这样做虽然牺牲了数据传输的可靠性(数据传输的可靠性对鼠标来说并不太重要),却换来了整个系统功耗的降低和响应时间的加快。

程序设计时应注意:nRF401的通信速率最高为20kbit/s;发送数据之前需将发送端置于发射模式(TXEN = l),接收端一直打开。在待机模式,电路不接收和发射数据。待机模式转换为发射模式的转换时间至少2ms;待机模式转换为接收模式的转换时间至少3ms。

3.3 USB接口的软件设计

USB接口的软件设计部分包括接口外设端的固件程序、PC操作系统上的USB设备驱动程序和串行通信程序。固件设计的目标是使PDIUSBD12在USB上达到最大的传输速率。本方案的固件设计采用完全的中断驱动方式。当CPU处理前台任务时,USB的传输在后台进行,中断和主循环的数据交换通过事件标志和数据缓冲区进行。这样既保证了最佳的传输速率,又简化了编程和调试。固件结构如图4所示,图中箭头表示数据传输方向。

图4 固件结构和数据流向

固件中必须先定义命令和数据所在的地址:

unsigned char d12 _cmd xdata_at_0X7FFF;

unsigned char d12_data xdata_at_0X3FFF;

向PDIUSBD12发命令和对其进行读写的子程序:

void_wrt_cmd (unsigned char command)

{d12_cmd=command;} // 向PDIUSBD发命令

void wrt_data (unsigned char tmp_data)

{d12_data=tmp_data;} // 向PDIDUSBD写数据

void read_data()

{return (d12_data);} // 从PDIUSBD12读数据

PDIUSBD12命令接口包括了对PDIUSBD12读写操作的所有命令,通过定义若干个子程序对应于各自不同的命令。当固件中其它程序需要对PDIUSBD12进行读写时,只须调用其中相应的子程序。

本设计的驱动程序直接采用了通用的USB鼠标的驱动程序,因而可以在很大程度上简化软件设计。

4 结语

本文作者创新点:本设计按照低功耗系统的设计原则,利用加速度计和用户操作的灵活性来判断和检测鼠标的移动,设计了一种没有活动部件、机械传动机构和光电器件的密封性好的低功耗无线惯性鼠标。测试结果表明该无线惯性鼠标灵敏度达到了使用要求,很好地解决了现有无线鼠标存在的电池寿命低、使用场合不灵活等缺点,具有较大的应用前景。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 鼠标
    +关注

    关注

    5

    文章

    576

    浏览量

    39196
  • 光电器件
    +关注

    关注

    1

    文章

    170

    浏览量

    18258
  • 低功耗
    +关注

    关注

    10

    文章

    2227

    浏览量

    102683
收藏 人收藏

    评论

    相关推荐

    加速度计的输出都是数字信号,那么它的带宽,截止频率这些参数是什么意思?

    加速度计的输出都是数字信号,那么它的带宽,截止频率这些参数是什么意思?
    发表于 04-02 07:34

    请问要如何设置才会让加速度计LIS3DH轻微振动不触发中断,但是翻转一定角度触发中断?

    我使用加速度计LIS3DH监控设备角度的异常改变,但在应用中发现轻微振动和角度翻转都会触发中断,唤醒MCU,无法实现低功耗。请问要如何设置才会让加速度计LIS3DH轻微振动不触发中断,但是翻转一定角度触发中断?
    发表于 03-22 07:03

    MEMS加速度计与MEMS陀螺仪的区别

    MEMS加速度计与MEMS陀螺仪是现代惯性导航系统中最常用的传感器。
    的头像 发表于 02-17 14:05 594次阅读
    MEMS<b class='flag-5'>加速度计</b>与MEMS陀螺仪的区别

    ADXL1001加速度计没有输出的原因?

    近期在使用ADXL1001加速度计时出现问题,具体表现为供电电压为5V时加速度计没有输出电压,所以我们无法判断是加速度计本身有问题,还是我们电路设计有问题,电路原理图如图所示,电源为15V,经
    发表于 12-29 07:05

    两轴加速度计和三轴加速度计的使用区别?

    有个问题请教一下:在静态测量的情况下,两轴的加速度计在测得X、Y轴上的加速度后,是不是就可以根据这两个值和重力加速度g算出Z轴方向的加速度,这样的话XYZ三个方向的角度也可以推导出来。
    发表于 12-29 06:06

    采集到的ADIS16477-2的imu数据,测试陀螺、加速度计的漂移非常大怎么解决?

    我现在采集到的ADIS16477-2的imu数据,测试陀螺、加速度计的漂移非常大,IMU是放在台面上镜子不动的。 下图第一排陀螺x、y、z的原始数据,第二排分别是5s钟平滑后的数据。 下图第一排
    发表于 12-28 07:25

    请问ADXL1004加速度计背面引脚的材料是什么?

    我想问下ADXL1004加速度计背面引脚的材料是什么?我想从背面引线出来,需要知道引脚的材料来确定引线的材料
    发表于 12-28 06:25

    adxl356加速度计输出10g正常吗?

    adxl356加速度计输出10g,正常吗,分辨率80mv/g?
    发表于 12-27 06:50

    mems加速度计的量程是指什么

    Mems加速度计(Micro Electro Mechanical Systems Accelerometer)是一种微型化的加速度传感器,可以测量物体在三个轴向上的加速度,并且广泛地应用于许多领域
    的头像 发表于 12-15 10:21 637次阅读

    如何利用3轴加速度计计算Z方向的角度?

    现在想利用3轴加速度计计算Z方向的角度,但是网上都说需要磁力,请教有没有一位大神知道在没有磁力的情况下如何计算Z方向角度
    发表于 10-30 07:05

    一种低g三轴加速度计的倾斜检测理论和倾斜角测量方法

    该应用笔记介绍了一种低g三轴加速度计的倾斜检测理论和倾斜角测量方法。一般来说,这里描述的程序也可以应用于三轴模拟或数字加速度计,这取决于它们各自的规格。
    发表于 09-13 07:11

    一种低g三轴加速度计的倾斜检测理论和倾斜角测量方法

    该应用笔记介绍了一种低g三轴加速度计的倾斜检测理论和倾斜角测量方法。一般来说,这里描述的程序也可以应用于三轴模拟或数字加速度计,这取决于它们各自的规格。
    发表于 09-06 07:43

    如何为水下泵监测选择理想的加速度计

    水下泵监测理想的加速度计关键标准配备水下泵时,需要从加速度计制造商处了解的关键标准是该传感器是否满足以下标准:密封加速度计在水下应用中,强烈建议使用密封加速度计。这些
    的头像 发表于 08-14 09:46 420次阅读
    如何为水下泵监测选择理想的<b class='flag-5'>加速度计</b>

    关于LIS2HH12TR读加速度计的问题求解

    情况,不需要中断的情况 我的测试环境:我把装有加速度计的板子安装在三轴云台上,首先水平,读出的X 是7.4° 然后三轴台绕X轴旋转三十度(三轴台的精度是0.01°)此时读出的角度是38.56°。但是在此位置
    发表于 08-07 14:45

    NHS3100SENSORDB加速度计原始数据如何提取?

    ,我可以记录温度、湿度,并感知一些倾斜信息。 然而,这并不是我所期望的。我想测量用于测量俯仰角和滚动角的加速度计的输出。有没有一种方法可以让我使用 JTAG(LPC-Link 2)与电路板通信,在
    发表于 05-06 06:20