陀螺仪可感应空间的变化,与位置无关,能够检测运动过程中每个轴上旋转的角速度(角度/s) [1-2]。目前已有的无线空中鼠标大多数所采用的技术有:Gyration公司的无线空中鼠标GYM1100NA,采用传统的微机械数字陀螺仪方式来实现,其型号为MG1101BA,灵敏度达+/-500°/s,该数字陀螺仪的售价为8美元。然而随着微机电系统(MEMS)技术的飞速发展和不断成熟,MEMS的陀螺仪应运而生,如罗技公司应用了MEMS陀螺仪技术设计实现了无线空中鼠标MX Air。它采用了应美盛(INVENSENSE)公司的IXZ-500两轴模拟陀螺仪来实现,灵敏度达+/-500°/s,该模拟陀螺仪的售价约为3美元。但采用模拟陀螺仪,单片机内部需要完成AD转换,需要另外再增加0.5美元左右的单片机成本。因此,要实现数字陀螺仪同样的功能,成本为3.5美元左右。由此可见,采用模拟陀螺仪加AD转换的方案成本减少了4.5美元,同时传统的微机械陀螺仪MG1101的体积为13.8 mm×14.75 mm×16 mm,而IXZ-500的MEMS陀螺仪的体积仅为4 mm×5 mm×1.2 mm。为了节省空中鼠标的生产成本和缩小鼠标的体积,本文采用两轴MEMS模拟陀螺仪(IXZ-500)+AD转换的方式来实现空中鼠标指针空中姿态控制。
1 两轴模拟陀螺仪的外围硬件设计
本文研究的两轴模拟陀螺仪为INVENSENSE公司的IXZ-500陀螺仪,它的每轴灵敏度达+/-500°/s,两路模拟输出,工作电压为3.0 V。采用该陀螺仪实现无线空中鼠标的空中指针控制的外围硬件设计如图1所示。
2 两轴模拟陀螺仪的数据处理及转化
2.1 两轴陀螺仪数据的模数转换
(1)带AD功能的单片机选型
因为两轴陀螺仪输出的是2路模拟信号,输出后需要经过AD转换。因此在选择主控单片机时,要选择至少带2路AD的单片机。为了提高采样的精度,可选择AD在10位以上、采样速率在100 b/s以上的主控单片机。但采样精度的提高会影响采样速度,在采样精度和速率选择上,可以先通过理论分析,然后经过实际性能的测试,选择合适的采样精度和速率,从而获得一个较好的空中鼠标姿态感知的灵敏度。本文选择的是12位2路以上AD的单片机,采样速率可达480 b/s。
(2)AD时钟及采样率设置
设置单片机的CPU时钟CPU_Clock为12 MHz,AD采样的时钟DataClock为8 MHz,采样精度为12 bit。则:
(3)IXZ-500工作原理及AD转换的实现
IXZ-500陀螺仪的工作灵敏度为+/-500°/s,当陀螺仪在平面上发生旋转时,每个轴上会输出一个与旋转角度相关的模拟电压信号,在工作范围之内,旋转的角度大小与电压变化大小成正比。设计中,通过单片机的AD转换器来检测电压变化的大小以检测平面上旋转角度的变化大小,从而实现空中旋转角度的检测,即实现空中鼠标在空中的旋转角度检测。
当IXZ-500陀螺仪开始通电工作后,陀螺仪保持静止不动时,每个轴会输出一个大小为1.25 V的静态电压值;当陀螺仪发生旋转后,电压会在静态电压值的两侧发生变化。旋转方向不同,电压变化的方向也不同(增大或者减少),即1.25 V +/-?驻V。旋转的角度与电压变化大小关系为:2 mV/(°/s)。
单片机启动AD转换后,完成对陀螺仪输出电压的转换,AD完成1次电压转换需要约2 ms的时间。本设计设置为10 ms采样一次,通过采用定时器10 ms的中断方式进行控制。
2.2 静态基准点的捕捉
当陀螺仪保持静止不动时,芯片的数据手册给出的参考静态电压值为1.25 V。然而在实际工作中,由于器件的差异性、外围环境温度变化等,都会使每个陀螺仪工作在静止状态时,静态电压值并不一定是数据手册给定的值[3]。因此需要对静止状态下的输出电压进行重新检测,即静态基准点的捕捉。
静态基准点的捕捉方法如下:
(1)保持两轴陀螺仪在静止状态,由单片机的AD转换器采样陀螺仪的输出电压并完成AD转换。假设两轴陀螺仪AD转换后的值为:Current_x和Current_z。
(2)由于陀螺仪本身存在噪声的影响,需要屏蔽噪声。这里Current_x和Current_z都为12 bit的数值,设计时将其最低2位数据屏蔽掉,即将Current_x和Current_z分别与0xffc位进行“与”操作。
(3)为了进一步消除误差,将上述的数据连续读取两次,求平均值。
(4)因为两轴陀螺仪在静止状态下,输出的电压基本上不变化,所以可以连续检测多次,然后进行数据比较。如果连续检测多次经过屏蔽及平均之后的数据都相等,则表明两轴陀螺仪是处在静止状态。
(5)分别记录此时Current_x和Current_z的值。这两个值即为静态基准点的值:Static_x和Static_z。
(6)在实际应用中,将Static_x和Static_z写入主控器的EEPROM中,其目的是使得下次Static_x和Static_z的值可以直接从EEPROM中读出,不必要每次都检测静态基准点。
2.3 动态旋转角度变化率的测量
当两轴陀螺仪发生旋转时,每个轴的输出电压会发生变化,即在静态基准电压的两侧变化。
(1)两轴陀螺仪发生旋转时,计算两维方向上的旋转角度变化率:
式中,Current_x表示x轴上的输出量,Static_x表示x轴上的没有发生旋转时输出量;q为陀螺仪的灵敏度系数(系数的大小可根据实际的需要进行设置,要提高灵敏度则可以减小系数的大小)。z轴上旋转角度变化率的计算方法同x轴。
当物体发生旋转时,陀螺仪也跟着旋转,通过对旋转角度变化率的测量,就能测量出陀螺仪在平面上旋转角度的变化,从而得知物体在空中的旋转变化。
(2)在空中鼠标的应用中,本文将陀螺仪的灵敏度系数q的值设置为20,经过实际鼠标的测试,已能满足鼠标指针在空中的位移控制需要。
3 无线空中鼠标指针控制流程
无线空中鼠标指针的空中旋转控制流程如图2所示。对于2.4 GHz的无线通信部分,可以参考文献[4]。
4 两轴陀螺仪的参数动态自校正
由于两轴陀螺仪在环境温度变化或工作电压下降后,两轴陀螺仪静态的基准点会发生改变即发生零点漂移[5],使得Static_x和Static_z的值发生改变。因此需要对静态的基准点进行校正,即重新捕捉Static_x和Static_z的值。为此本文提出一种动态自校正的算法,对相应的Static_x和Static_z参数进行自校正,取得较好的校正效果。
动态自校正的算法引用静态基准点的捕捉方法进行控制,控制过程如图3所示。
对于参数i、j用户可以根据具体不同的实际需要进行调整,i、j增大会增加校正的时间,但可以增加静态捕捉点的精度。本文i、j的设置是根据空中鼠标实际性能的测试后得出的。通过对鼠标的实际测试,该控制方法校正时间小于2 s。
本文通过对传统的微机械陀螺仪、数字陀螺仪及MEMS陀螺仪进行了比较研究,提出了一种采用两轴模拟陀螺仪技术实现低成本的空中鼠标指针的控制方法。该方法目前已成功应用于无线空中鼠标中,在空中可以检测旋转角度范围为+/-500°/s,实现了空中鼠标指针在空中的自由控制,已获得实用新型专利一项[6]。此外,该方法还可应用于人体动作跟踪、游戏控制器、机器人及自动导航等人机输入设备中。