引 言
传感器技术是测量技术、半导体技术和信息处理技术等众多学科相互交叉的综合性高新技术密集的前沿技术之一,也是当代科学技术发展的一个重要标志。如果说计算机是人类大脑的扩展,那么传感器就是人类五官的延伸。随着传感器技术的发展,人机接口的种类越来越丰富,从早期最简单的机械式按钮、电位器旋钮到现在的电容式触摸感应、电场非接触传感、人脸识别及语音识别等,人机接口的智能性、易用性及可靠性也显著提高。本文通过使用Freescale公司的MC33794电场传感器,设计了一种新型的模拟游戏控制器。该模拟游戏控制器通过电场传感器的电极,非接触感知手掌的姿态,从而控制模拟游戏中各个方向上的力度,实现对“模拟量”控制的功能。
模拟游戏中,通常需要控制游戏中上、下、左、右各个方向上的力度。例如汽车模拟游戏中,通常需要控制游戏中汽车的油门及方向,这2个参数是确定汽车行驶的重要参数,而这些参数的变化是连续的,并且在不同的控制力度下汽车的行驶会有不同的表现。在以往的低成本游戏控制器中,不能感知这些强度连续变化的模拟量。在本设计中,将手掌放置于模拟游戏控制器电极上方,控制时只须变化手掌相对于游戏控制板电极平面的姿态,就可以将游戏玩家需要的控制强度转化为对游戏的控制强度,输出到游戏控制中心,实现对游戏中被控物体的控制功能。
1 电场传感器MC33794
电场是指存在于带电物体的周围,使带电物体能够受到力的作用的空间。电场普遍存在于自然界中,物体的摩擦会转移电荷产生电场,鲨鱼等鱼类通过电场侦测猎物,电子领域的电容器中存在穿过带电电容极板的电场。只要物体可以看作是电容板,那么都可以成为电场感应器的一部分。几乎所有的物体在其自身的电容和电场改变时都能够被感应,电场和电容是物体问相互作用的固有现象。通过一个主动电极就能够产生和调节一个电场;具有一定介电常数的物体靠近电容的两极,通过感应电极就可以测量到电容的变化。这样就可以通过非接触感应技术测量物体的三维空间位置变化。
FTeescale公司的电场传感器MC33794适用于需要对物体进行非接触感应的应用。它包含了产生电场所必需的电路,能够产生低水平电场,测量由于物体在电场中移动造成的电场负载。MC33794还可用于检测与电极相关的电场中的物体。集成电路可以产生一个低频正弦波。其频率可通过使用外部电阻进行调节,并优化到125kHz。正弦波的谐波含量非常低,可以避免产生谐波干扰。内部产生器可以产生5.0V的峰一峰输出电压,并通过大约22Ω的内部电阻。MC33794与MCU的连接示意图如图1所示。
MC33794可以连接9个电极和2个参考电极,通过一个屏蔽驱动以减小线缆电容回路对测量产生的影响。MC33794还带有+5V的电压调节器,可向外部单片机系统供电,同时还提供了一个灯驱动输出。
2 游戏控制器系统设计
2.1 组合型方向控制电极设计
电场传感器能够感知电场中物体在三维空间内的移动,物体感知原理如图2所示。当手掌进入电极产生的电场区域以后。电极卜的电流会有相应的变化,从而感知手掌距电极的距离。
根据此物体原理,可以通过使用MC33794的5个电极在同一平面内组成“十”字组合型方向控制电极,如图3所示。该组合型方向控制电极可以感知电极上方5个垂直方向上的物体高度变化,将手掌置于组合电极上即可方便地对游戏中被控物体的方向进行控制。单个电极选用八角型铜板,面积约为30 cm2(5cm×6cm);整个“十”字组合型方向控制电极所占面积约为270cm2(15cm×18cm),适合大部分成年人手掌覆盖在此组合电极区域。针对儿童市场,须使用更小尺寸的电极。
在使用时,1~4号电极表示游戏中的4个方向,手掌相对这些电极的高度表示需要对这些方向上控制的强度,高度越低,表示需要控制的强度越大;由于在设计游戏控制器时考虑到如果手掌弯曲,那么将出现需要同时控制相反两个方向的情况(这种控制方式在实际情况中不存在),因此在1~4号电极中间加入了5号电极,以检测手掌弯曲状态。又因为手掌不可能保持绝对水平,因此引入水平误差系数ε。该参数使得控制平面允许有一定的弯曲度。
2.2 前端信号调理电路
MC33794输出端LEVEL是O~3.5V变化的模拟信号,根据不同的电极种类,输出的最大值会略有不同。当极板上方无物体时,LEVEL输出最大值;当有物体进入电极感应区域后,LEVEL输出电压将会降低,最终降至OV。由于MC33794产生的电场为低水平电场,电极较为敏感的区域在电极上方O~2cm处,而作为游戏控制器使用时,需要用到的电极敏感区域为电极上方2~10cm处,因此在前端信号调理部分需要放大此高度区间内的信号。
图4为前端信号调理电路图。该电路由2个工作在反向放大模式下的LM358D运算放大器组成。电阻R8的滑动端输出VOFFSET偏置电压,并输入到放大器的正输入端。MC33794的LEVEL信号接到第一级LM358D运算放大器的负输入端,经过放大后,输出信号LEVEL_AMP的变化趋势与LEVEL信号一致。
该信号放大电路输出电压与输入电压的关系为:
通过调节VOFFSET与R7的值,可以对LEVEL信号中所感兴趣的电压区间进行放大,同时还可以控制输出信号的幅度范围。在该设计中,通过对LEVEL信号2.9~3.5V电压区间内的信号放大,满足了被测物体在电极上方2~10cm变化时,输出电压在0~3.4V变化的灵敏度要求。
2.3 游戏控制器硬件设计
游戏控制器的主控MCU选用Silicon Lab公司的C805lF310单片机。该单片机集成有采样频率为200ksps的10位ADC,外设有串口及SPI等常用接口。当单片机工作在25MHz时,速度町达25MIPS。
本设计中,将信号调理电路的输出接到C8051F310的ADC输入端,数据经过计算后通过RS232串口发送至PC。系统硬件框图如图5所示。
将MC33794的A、B、C、D接到C805lF310的I/O口上,通过软件控制I/O口输出,选择需要采样的电极。MC33794共9个电极可以使用,其中E1~E5接控制方向的电极,其余电极用作其他按键。
2.4 游戏控制器软件设计
控制器的软件主要控制选择电极、采样、滤波、运算,最后将数据通过RS-232串口送回游戏控制中心。软件的运算部分需要将方向控制电极上采集到的三维手掌姿态信息,变换为二维直角坐标平面内x轴与y轴上的数值,供游戏合成方向矢量使用。三维直角坐标系内,方向控制电极上所采集到的各点的电压为这些点在z轴上的幅度值,分别表示为zE1、zE2、…、zE5,则在二维直角坐标系内x轴上的控制力度为△x=zE2-zE4,y轴上的控制力度为△y=zE3-zE1。当手掌平面与方向控制电极平面平行时,△x与△y均为0;当手掌平面偏向1号与4号电极方向(即以1号电极为向前方向时的右前方向)时,△x与△y均为正值,此时,在二维直角坐标系内,合成后的方向矢量将在第一象限中。由于实际中不存在同时进行两个相反方向控制的情况。因此须事先约定手掌平面不能弯曲,同时引入水平误差系数ε。计算方向矢量的同时,各个变量还须满足以下2个公式:
软件流程如图6所示。当手掌向右前方向倾斜时,按照图3所示的三维空间直角坐标系内的电极放置方向,分别对各个方向控制电极三维空问内的坐标投影至xz和yz平面,即将2号与4号电极的三维坐标在xz平面上投影,将1号与3号电极的三维坐标在yz平面投影。投影后的xz与yz坐标如图7所示。
当手掌向右前方向倾斜时,二维坐标平面内x轴与y轴上的方向控制分量在坐标系内合成的方向控制矢量如图8所示。
合成后的矢量v=△x+i△y,角度值为,模代表该方向上的力度。通过此向量便可控制游戏中被控物体的方向以及该方向上所需的控制强度。
结语
本设计通过使用电场传感器实现了模拟游戏控制器,通过电场传感器对三维空间的感知能力,给游戏玩家带来了模拟游戏的全新体验。目前,该游戏控制器已经完成全部硬件调试及软件测试。试验结果表明.其完全实现了预计的控制功能,且工作良好。这种通过电场进行控制的方式具有可靠性高、使用寿命长、成本较低等特点,同时还可以应用于各种需要控制模拟量的场合(如模型汽车控制板),具有广阔的应用前景。