利用智能手机上的陀螺仪测量加速度

2017-09-27 11:36:25
物理之友 2017年9期
关键词:纸带计时器陀螺仪

(江苏省南京市宁海中学高一5班,江苏 南京 210009)

·学生园地·

利用智能手机上的陀螺仪测量加速度

王馨怡

(江苏省南京市宁海中学高一5班,江苏 南京 210009)

随着智能手机不断发展,越来越多的传感器被集成到手机中,比如摄像头、陀螺仪、地磁仪、压力传感器等。很多传感器可以应用于物理实验,笔者利用手机中的陀螺仪传感器,在测量小车加速度实验中实现辅助测试与校验功能,并计算出由于打点计时器纸带拖拽作用而产生的误差。

智能手机;陀螺仪;加速度

1 引言

经过开发,智能手机可以变身为无线体感鼠标,其原理是应用了手机上陀螺仪的传感器,通过程序读取陀螺仪的角速度和加速度数据,经过WIFI传给电脑,驱动电脑鼠标移动。这让笔者想起高一物理中有使用打点计时器测量小车加速度的实验,既然手机可以直接测定物体的角速度和加速度,那么是否可以将手机应用到这个实验中,用于测试、校正打点计时器测量的加速度?带着问题,笔者请教了相关专家,查阅了相关资料,从认识陀螺仪、用手机读取加速度到实验误差分析等,做了有益的尝试。

2 陀螺仪(MEMS)介绍

图1

传统陀螺仪是指一个高速沿一轴向回转的物体,可以使该物体维持一定的空间姿态。现在手机用的陀螺仪指的是微电机系统中的一种应用(MEMS Micro-Electro-Mechanical System),是在微电子技术(半导体制造技术)基础上发展起来的,融合了光刻、腐蚀、薄膜、LIGA、硅微加工、非硅微加工和精密机械加工等技术制作的高科技电子机械器件。市场上常见的有InvenSense MPU系列、BOSCH的BMI系列、FairChild的FIS等系列陀螺仪,本文以InvenSense MPU6050为例,该陀螺仪可以测量X、Y、Z三个方向上的角速度和加速度,角速度全格感测范围为±250、±500、±1000与±2000°/sec,可准确追踪快速与慢速动作,加速器全格感测范围为±2g、±4g、±8g、±16g(如图1)。产品传输可透过最高至400kHz的IIC与主控连接,以便让主控读取角速度和加速度数据,被广泛应用于手机及体感设备当中。

3 手机读取加速度的程序实现

为了采集手机上的陀螺仪加速度数据,本实验使用的是Adobe Flash CS6软件,开发Android手机应用程序,通过AIR接口读取陀螺仪的加速度数据,并实时显示在屏幕上,每隔0.1s将数据保存一次,以便在实验后进行查看,程序实现步骤如下。

(1) 打开Flash CS6软件,新建一个AIR for Android应用程序,程序界面宽设定为480像素,高设定为800像素(如图2),点击“确定”按钮。

图2

(2) 在界面中添加2个文本框,一个用于显示每0.1s采集的加速度值,另外一个显示所有加速度的平均值。

(3) 在第一帧上编写AS3程序,参考程序如下:

import flash.events.Event;

import flash.events.AccelerometerEvent;

import flash.sensors.Accelerometer;

import flash.utils.setInterval;

import flash.utils.clearInterval;

var aAverageX:Number = 0;//X轴平均加速度

var aAverageY:Number = 0;//Y轴平均加速度

var aAverageZ:Number = 0;//Z轴平均加速度

var aCurX:Number = 0;//X轴当前加速度

var aCurY:Number = 0;//Y轴当前加速度

var aCurZ:Number = 0;//Z轴当前加速度

var intervalId:uint = 0;//0.1秒定时器ID

var fl_Accelerometer:Accelerometer = new Accelerometer();//定义加速度

if (fl_Accelerometer != null)

{

fl_Accelerometer.addEventListener(AccelerometerEvent.UPDATE, fl_AccelerometerUpdateHandler);

}

function fl_AccelerometerUpdateHandler(e:AccelerometerEvent):void

{

aCurX = e.accelerationX;

aCurY = e.accelerationY;

aCurZ = e.accelerationZ;

if (intervalId == 0 && aCurX > 0.2)

{

aAverageX = aCurX;

aAverageY = aCurY;

aAverageZ = aCurZ;

intervalId = setInterval(beginTest,100);

}

}

function beginTest():void

{

text1.appendText("X:" + aCurX + " Y:" + aCurY + " :Z" + aCurZ);

aAverageX = (aAverageX + aCurX) / 2;

aAverageY = (aAverageX + aCurY) / 2;

aAverageZ = (aAverageX + aCurZ) / 2;

text2.text = "X:" + aCurX + " Y:" + aCurY + " :Z" + aCurZ;

if (aCurX - aAverageX < 0.2)

{

clearInterval(intervalId);//当加速度开始下降一个阈值时,自动停止计数

}

}

主要程序说明:程序启动时通过fl_Accelerometer.addEventListener()函数,开始侦测陀螺仪数据,当手机有一定加速度时,则启动0.1s的定时器,每隔0.1s进行一次数据读取,通过beginTest()函数进行平均值计算,并显示在界面上。

(4) 生成.apk程序,安装到安卓手机上,并测试运行。

4 手机在实验中的应用

手机程序编写完成后,则开始应用到测量小车加速度的实验中。

如图3所示,把附有滑轮的长木板平放在实验桌上,将细绳绕过滑轮,下面挂上适量的钩码,将手机用透明胶带固定在小车上,实验中可以认为手机是小车的一个组成部分,小车也就变成可以自己测量加速度的智能小车了,将小车放在长木板上,细绳一端与小车相连,第一步不用纸带和打点计时器,启动手机中前面编好的程序,然后放开小车和手机的组合体,让组合体在钩码的牵引下做加速运动,在小车停止后,查看手机和小车从开始加速运行到开始减速这段区间的加速度记录,将这些数据拷贝出来,以便与以后的实验数据进行比较。

图3

表1 用智能小车测量的加速度

如图4所示,在其他实验条件不变的情况下,在小车上固定纸带,并让纸带通过打点计时器,把小车靠近打点计时器的位置。启动打点计时器,然后放开小车,这时可以通过手机中的软件读出一组加速度数据,同时通过测量纸带上的点距,也可以获得一组加速度数据,并与手机中加速度数据进行比对,可以发现用打点计时法测得的数据不如手机传感器测量的稳定。这是由于手机出厂时,陀螺仪传感器是经过校准的,其灵敏度与准确性要比打点计时器要高。

图4

因此,可采用手机读取的加速度数据,来研究打点计时器本身对测量加速度产生的系统误差。

表2 用打点计时器测量小车加速度

不难发现,使用打点计时器之后,测得的加速度数据小于未用打点计时器时的数据。这是因为打点计时器击打纸带时,会产生阻力,从而小车的加速度减小。在手机引入本实验之前,这种影响只是一种定性的认识,无法测量出到底打点计时器对实验结果有多大影响,但是通过实验比较就可以定量分析引入打点计时器对实验产生的误差。

注意到除第一个数据之外,f基本稳定在0.005N,说明打点计时器开启后由于纸带的拖拽作用产生了基本稳定的误差。

使用手机中的陀螺仪传感器测量加速度,可以直观校验用打点计时器测得的加速度,如果发现两者数据相差悬殊,说明实验需要重测。本实验是否可以检测桌面摩擦阻力?程序如何判断智能小车已经开始运动、如何智能停止计数?这些问题很有趣,留待以后深入探讨。

[1] 人民教育出版社,课程教材研究所,物理课程教材研究开发中心.普通高中课程标准实验教科书 物理必修1[M].北京:人民教育出版社,2010.

[2] InvenSense.MPU-6000 and MPU-6050 Product Specification Revision 3.2[M].美国:Invensense,2011.

[3] 王超.中文版Flash CS6基础与案例教程[M].北京:北京交通大学出版社、清华大学出版社,2013.

[4] 俞彬.Adobe Flash CS6中文版经典教程[M].北京:人民邮电出版社,2014.

猜你喜欢
纸带计时器陀螺仪
松鼠的计时器
基于EMD的MEMS陀螺仪随机漂移分析方法
神奇的纸带
超高精度计时器——原子钟
我国著名陀螺仪专家——林士谔
小猪相框
纸带上的秘密
抗缪勒氏管激素:卵巢功能的计时器!
妈妈宝宝(2017年2期)2017-02-21 01:21:22
微机械陀螺仪概述和发展
MEMS三轴陀螺仪中不匹配干扰抑制方法