基于传感器的精确微型操纵杆的设计

描述

便携式设备通常需要使用线性双轴位置传感器或操纵杆,随着便携式设备的激增,对这种传感能力的需求也在增加。设计人员的任务是满足关键性能要求,如灵敏度,准确度,低功耗和更平稳的操作,同时还降低成本,减小尺寸,并添加触觉反馈等功能。

本文将介绍在介绍为移动设备设计低成本,灵敏的操纵杆所需的部件和代码之前,操纵杆的功能如何。

操纵杆的功能

视频游戏中常用的操纵杆由以下部分组成:两个正交电位器,用于通过旋转轴的机构进行X和Y运动(图1)。这些工作良好且价格低廉,但相当大并且在中心位置周围有明显的睫毛。此外,电位器触点易受环境因素的影响,这可能会引入噪声并降低可靠性。

图1:Parallax的27800是一个很好的例子。操纵杆使用两个彼此成直角安装的旋转电位器。 (图像来源:Parallax)

PC笔记本电脑键盘中嵌入的无处不在的“指点杆”使用了力敏感或应变计电阻作为传感元件(图2)。这些电阻器放置在杆的四个侧面上。移动棒压缩一个或多个电阻器改变它们的值。它们非常小,可靠,并提供与位移成比例的触觉力反馈。向下按压杆会改变所有四个电阻器的值,从而可以测量Z轴位移。问题是这些指点杆不再以高容量制造。目前可用的是非常昂贵的,可能花费数十甚至数百美元。

图2:嵌入在PC中的典型“nub”指点杆笔记本键盘。这被发现作为鼠标或触摸板的替代品的普及。 (图片来源:维基百科)

使用磁铁检测运动

另一种操纵杆解决方案是来自ams的AS5013霍尔效应IC,它使用微小的移动磁铁来确定X-Y位置。 AS5013是一个完整的解决方案,包含五个传感器和一个处理引擎,与主机处理器的集成非常容易。它具有体积小(3.7 mm 2 ),精确,低功耗,可靠且易于实施的优点。它需要2.7伏至3.6伏电源,在空闲模式下功耗不到3微安。它将检测磁体在标称±1 mm范围内的运动。

图3:AS5013和轴向磁铁的典型布置(图像来源:ams)

磁铁在磁铁上的移动霍尔元件产生几何分布的响应,如钟形曲线(图4)。最大磁铁行程是围绕AS5013中心的2 mm半径圆。霍尔元件C1至C4放置在以包装中间为中心的圆上。正好位于中间的霍尔元件C5用于更好的线性响应,磁体位移大于±1.0 mm。

传感器

图4:霍尔元件的放置和磁场,磁铁位于每个霍尔元件的中心。 (图像来源:ams)

使用单个电源的简单应用只需要四根电线:两个用于电源,两个用于I 2 C通信。另外,可以添加第五个连接以便向主机CPU发送中断,并且可以添加第六个连接作为重置。

传感器

图5:AS5013与主机微控制器的框图和电气连接。所有六条线都显示连接,但只需要VDD,GND和两个I 2 C信号(SDA和SCL)。 ADDR引脚选择两个I 2 C地址之一。 (图片来源:ams)

为了简化AS5013的开发,ams提供了AS5013-QF_EK_AB评估套件(图6),可以轻松连接到Arduino或NXP Freedom板。

图6:AS5013-QF_EK_AB评估套件简化了AMS5013的开发,包含两个主要组件:AS5013霍尔传感器电路板和磁体组件(左下)。磁铁组件安装在电路板的背面。 (图像来源:ams)

IC安装在印刷电路板的正面,而磁铁组件安装在AMS5013 IC中心正下方的背面。该套件需要仔细焊接才能完成组装。非常重要的是磁体组件正确定位或读数会有偏移,这将在后面讨论。

套件中使用的安装方法只是一个建议。磁铁组件模块也可以用合适的安装硬件安装在IC的顶部。对于需要仅安装在一侧的组件的电路板,这可能更为可取。

磁性组件模块还有一个内部圆顶开关。按下杆,常开(N.O.)开关被激活,作为按钮点击。开关的焊盘位于背面,需要焊接到印刷电路板上。

在评估套件的原理图中,注意内部圆顶开关的按钮信号(标记为BUTn)(图7) )。按下操纵杆时,这将短接到地面。

传感器

图7:在AS5013评估板原理图上,请注意按钮信号(BUTn)按下操纵杆时,内部圆顶开关会短路接地。 (图像来源:ams)

评估设置

为了评估ams操纵杆,它可以连接到NXP的FRDM-KL05Z板,它使用非常小且成本低32位ARM ® Cortex ® M0 +。只需要4根导线:3.3伏,接地,I 2 C SLK和I 2 C SDA。

图8:FRDM-KL05Z和AS5013评估套件仅使用4根电线进行连接。 (图片来源:Digi-Key)

嵌入式代码是使用mbed开发系统(mbed.org)编写的。它是一个免费的基于Web的集成开发环境(IDE)。编程语言类似于Arduino草图,但实际上是带有库类的C ++。代码是开源的,整个项目可以在这里获得。

嵌入式代码非常简单,充当套件和主机PC之间的桥梁。 FRDM-KL05Z与AS5013之间的通信通过2线I 2 C进行。代码的主要部分在连续的while循环中运行(清单1)。每隔100 ms,读取AS5013的数据,然后通过虚拟USB UART COM设备以115200波特8N1打印。

#include“mbed.h”

#if defined(TARGET_KL05Z)

#else

#error TARGET NOT DEFINED

#endif

PinName const SDA = PTB4;

PinName const SCL = PTB3;

I2C i2c(SDA,SCL);//构造I2c对象

const int addr = 0x40 << 1;//AS5013的i2c地址

串行电脑(USBTX,USBRX);//可选,但需要设置更快的波特

char data [7];

int main(){

int8_t x,y;//x y要打印到终端的值

uint8_t statusF;//状态标志

pc.baud(115200);

init_AS5013();//重置并初始化AS5013

while(1){//无限循环

wait(0.1);//等待100毫秒

statusF = 0;

data [0] = 0x0f;

i2c.write(addr,data,1);//设置为读取地址0x0f

i2c.read(addr,data,3);//在寄存器0x0f,0x10,0x11读取数据

statusF = data [0];//获取状态字节

if(statusF&amp; 0x01){

x = data [1];//get x

y = data [2];//得到

printf(“%d%d”,x,y);//输出结果

printf(“ n”);

}

< p> else {

pc.printf(“error 0x%x n”,statusF);//不应该到这里

}

}

}//结束

清单1:使用“mbed”IDE的main()源代码。这是在FRDM-KL05Z板上运行的代码。它由一个无限循环组成,它从I 2 C接口读取X和Y值。 (代码来源:mbed)

在主机PC端,您有许多选择。最简单的方法是使用终端程序,如Tera Term for Windows或MiniCom for Linux。终端输出列出了X和Y的值(图9)。 AS5013为X和Y提供8位有符号值,相对于Y = X = 0(校准后)的中心位置,从+128到-127。

传感器

图9:连续显示AS5013 X和Y 8位值的Tera Term输出。 (图像来源:Digi-Key)

PC图形显示

用Python 3.6编写的程序提供了很好的数据可视化。代码可以在GitHub上获得。

这个程序是用Windows 7编写和测试的,但相同的代码将在Linux或Mac上运行。 Python可以从python.org下载。

图10显示了“示波器”显示中X和Y数据的输出。 X显示在蓝色迹线中,Y显示为红色。

传感器

图10:显示X(蓝色)和Y(红色)操纵杆移动。操纵杆左右上下移动。 (图像来源:Digi-Key)

第二个选项与棒的移动同步地在屏幕周围移动一个小圆圈(图11)。屏幕中心的红色圆圈对应于默认的杆位置,其中X和Y均为零。未触摸时,操纵杆返回此位置。

传感器

图11:红色圆圈(代表操纵杆)在中间位置或中心位置的位置。 (图像来源:Digi-Key)

传感器

图12:当棒被推到鞋面时红圈在左上象限中的位置剩下。 (图片来源:Digi-Key)

偏移效应和校准

如前所述,磁性组件模块的正确定位非常重要,因为它直接位于AS5013的上方(或下方)。不这样做会产生偏移。在这种情况下,中心位置X和Y值将不为零。为了克服这个问题,计算每个轴的偏移并将其添加到最终结果中。图13和图14显示了校准前偏移的影响。

传感器

图13:带偏移的X-Y值。请注意,零位置低于中心线。 (图像来源:Digi-Key)

传感器

图14:由于偏移而偏离中心的操纵杆位置。 (图片来源:Digi-Key)

校准非常简单。当程序首次启动时,取几个读数的X和Y值,并将棒放在中心位置,取平均值并加上或减去一个偏移量,使结果为零。

缩放

磁铁与AS5013之间的距离因设计而异,影响了获得+/- 127满量程读数的能力。例如,电路板厚度会影响灵敏度。幸运的是,这可以通过AS5013的寄存器0x2D中设置的“缩放因子”来控制。如果磁铁距离太近,则应将其从默认值100%降低。相反,如果磁铁太远,应该增加。通过改变比例因子也可以调节运动灵敏度。

低功耗模式

AS5013可以进入超低功耗模式,可以被唤醒通过将杆移动到用户可配置的阈值。唤醒后,它可以向主机MCU产生中断,然后继续正常操作。

高级传感器数据

总共有五个霍尔传感器。可以从每个传感器读取原始数据并将其用于自定义配置。一个有趣的应用是感应磁铁在Z方向上移动,模仿按钮。随着磁铁靠近AS5013,中心霍尔元件值增加。这可以与固定阈值进行比较以确定推动状态。其余四个霍尔传感器也会受到较小的影响。然而,在外部寄生磁场的情况下,这四个传感器可用于改善检测。在ams的应用笔记AN5013-20中有一个很好的例子。

然而,当使用磁性组件模块时,圆顶开关是一种更简单,更强大的按钮按压解决方案。

结论

AS5013和磁性装配模块是小而精确的操纵杆界面的理想选择。它非常敏感,可以对很小的动作做出反应。在许多情况下,它是大型电位计或昂贵的应变计操纵杆的理想替代品。评估套件提供了一个简单的开发平台。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
frankjxliu 2020-12-03
0 回复 举报
不错,学习了,谢谢。 收起回复

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分