kaiyun官方注册
您所在的位置: 首页> 嵌入式技术> 设计应用> 基于AT89S52的MEMS陀螺信号采集与处理系统设计
基于AT89S52的MEMS陀螺信号采集与处理系统设计
来源:微型机与应用2011年第14期
阚如文1,王芳荣1,董绪斌2,刘顺安2,尚 涛2
(1.吉林大学 控制科学与工程系,吉林 长春130025;2.吉林大学 机械工程学院,吉林 长春13
摘要:针对MEMS陀螺仪在实际应用中达不到需要的精度,为改善陀螺仪的工作性能,降低陀螺信号噪声,通过AT89S52单片机与ADIS16355惯性陀螺仪搭建一个硬件平台,经过SPI接口通信、AT89S52单片机控制,将采集的数据通过LCD显示,并对平台系统进行静态和动态测试,最后对系统进行了误差分析,该系统具有较高精度、成本低、操作方便简单,在陀螺仪实际应用中具有良好的推广价值。
Abstract:
Key words :

摘 要:针对MEMS陀螺仪在实际应用中达不到需要的精度,为改善陀螺仪的工作性能,降低陀螺信号噪声,通过AT89S52单片机ADIS16355惯性陀螺仪搭建一个硬件平台,经过SPI接口通信、AT89S52单片机控制,将采集的数据通过LCD显示,并对平台系统进行静态和动态测试,最后对系统进行了误差分析,该系统具有较高精度、成本低、操作方便简单,在陀螺仪实际应用中具有良好的推广价值。
关键词:MEMS陀螺仪;ADIS16355芯片;AT89S52单片机;SPI接口;数据采集

 MEMS(Micro Electron Mechanical System)陀螺仪是一种可以精确测量物体方位的仪器,不仅成本低,体积小,重量轻,而且可以与微电子加工的电路实现集成,做到机电一体化。MEMS陀螺适用于汽车工业、惯性导航、计算机、机器人、军事等急需大量小型、廉价陀螺的应用领域,是国防、工业发展中必不可少的仪器。
但是,MEMS陀螺仪在实际应用中达不到需要的精度,为了提高陀螺仪系统工作性能和测量精度,对陀螺仪进行数据采集并减小误差是至关重要的。
ADIS16355惯性测量装置将三轴角速度感知与三轴加速度感知相结合,提供六自由度运动感知、嵌入式校准与传感器处理以及传感器-传感器交叉补偿,并大大提高信号稳定性(使用偏移稳定性为0.015 deg/sec),体积小于1立方英寸。ADIS16355是在整个温度范围内校准,具有卓越的偏压温度稳定性(0.005 deg/sec/°)。ADISl6355提供一个串行外部接口SPI(Serial Peripheral Interface),通过SPI可以对芯片进行配置,获得运行状态与测量结果等,其对外部供电要求不高,内部自带高精度的稳压电路,外围电路较少[1]。
AT89S52单片机[2]是一种低功耗、高性能CMOS 8位微控制器,具有8 KB在系统可编程Flash存储器,使用美国ATMEL公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,同时,AT89S52带有ISP下载功能,它利用在线编程器替代昂贵的单片机仿真器编程器,既方便使用,又节省开发费用。
本文结合单片机对ADIS16355惯性传感器进行控制,将采集的数据实时存储并通过LCD1602进行显示,最后对系统进行测试,并分析了系统存在的误差。
1 ADIS16355芯片数据采集硬件设计
根据数据采集系统的需要,系统以AT89S52作为主控单元,外扩一片6264静态存储器作为数据存储器,并设计AT89S52与ADIS16355通信的SPI接口模块、LCD显示模块、键控模块和在线编程模块,系统硬件连接框图如图1所示。

1.1 主控模块
控制单片机AT89S52具有8 KB Flash,256 B RAM,32 bit的I/O口线,看门狗定时器,两个数据指针,3个16 bit定时器/计数器,一个六向量两级中断结构,全双工串行口,片内晶振及时钟电路等功能[3]。它与ADIS16355陀螺仪之间通过SPI接口相连。因为AT89S52单片机没有专门的SPI接口,只能通过软件模拟P2.0口为时钟信号线与陀螺仪的SPI接口SCLK引脚相连,P2.1口为主输出从输入MOSI与陀螺仪SPI接口的数据输人SDI引脚相连,P2.2口为主输入从输出MISO与陀螺仪SPI接口的数据输出SDO引脚相连,P2.3口为片选信号。P3.2、P3.3为中断引脚,分别与ADIS16355的DIO1和DIO2相连,为数据转换中断。
1.2 LCD显示模块
系统显示部分采用液晶LCD1602芯片,其特点是:功耗低、体积小、质量轻、显示质量高、数字式,采用标准的16脚接口和单片机连接简单,操作方便,能够同时显示16×2即32个字符,1602液晶模块内部的字符发生存储器(CGROM)存储了160个不同的点阵字符图形,方便显示控制器采集出的数据。
1.3 在线编程模块
系统设计了在线编程模块,利用STC-ISP编程烧录软件实时在线下载程序,大大方便了开发者,提高了系统研发效率。
1.4 SPI接口模块通信与配置
SPI是MOTOROLA公司提出的同步串行总线方式,是一种全双工、同步、串行数据接口标准总线,与其他串行总线相比,它具有电路结构简单、速度快、通信可靠等优点[4]。标准的SPI总线由4根信号线组成:时钟信号(SCLK)、主输入\从输出线(SDI)、主输出\从输入线(SDO)和片选信号(CS)。
系统中ADIS16355通过SPI接口与外部进行通信,需要外部设备MCU通过该接口对其内部各寄存器进行设置,图2所示是一个典型的写入控制寄存器命令的数据帧。由芯片资料[5]可知,DIN系列的首位是1,第二位是0,后面是目标寄存器的6 bit地址和8 bit数据命令,因为每一个写命令包含一个数据位,所以给整个16 bit寄存器空间写值时要求有两个数据帧。图3为ADIS16355读操作SPI时序图,由芯片资料[5]可知ADIS16355完成一次SPI通信包括16 bit数据,其中第1位是SPI传输的读写状态标识,第2位为0,紧跟着的6 bit是目标寄存器地址,最后8 bit是在写操作时将要写进寄存器的数据,如果是读操作则忽略,完成ADIS16355的一个读操作需要进行两次16 bit的SPI通信,其中第一次是写入将要读取的寄存器地址,该寄存器的内容将在第二次SPI通信出现在ADIS16355的DOUT信号线上,输入SPI的主设备。

本设计中控制器与ADIS16355进行SPI通信的每个数据帧为16 bit,而AT89S52的数据宽度为8 bit,所有内部寄存器和数据空间存储器都是8 bit宽度组成,作为主设备在其发出有效的SPI片选信号使能ADISl6355后,要对其自身的SPI数据寄存器进行两次写操作,才能在总线上完成一次16 bit数据传输。
2 软件设计
ADISl6255陀螺仪所有的数据和命令的读取和写入都是通过读写寄存器来完成的。通过AT89S52单片机编写程序读取ADISl6355内部相应的寄存器地址,相应读取回来的12 bit或者14 bit长度的数据经过换算再乘以对应的比例因子就得到了相应的x、y、z轴陀螺仪和加速度计以及内部温度信息。
在启动陀螺仪前,首先要对陀螺仪的各个寄存器进行正确的设置。由参考文献[5]、[6]知,设置GYRO_OFF和GYRO_SCALE寄存器对陀螺仪三轴输出的灵敏度和偏差进行用户自校准;设置SMPL_PRD寄存器,选取合适的采样频率;设置SENS/AVG寄存器,定义陀螺动态量程以及对应的数字滤波器;设置MSC_CTRL寄存器,定义自检位以及数据更新中断位;设置COMMAND寄存器,定义数据校正模式;设置ALM_CTRL寄存器,为数据报警。
陀螺仪自身带有一个校准控制指令,在读取数据之前需要用户的自定义校准,具体操作方法[6]是将MSC_
CTRL寄存器的第10位置1,20 ms后,读取状态寄存器的值,如果为0x0000,表明自检通过,否则表明陀螺仪存在如供电超限、SPI通信错误等问题,响应的错误位将在状态寄存器中标出。
MEMS陀螺仪数据采集软件设计主要是对AT89S52的程序设计。系统上电复位后,首先完成单片机初始化,对陀螺仪各个自由度寄存器参数设置,初始化LCD1602,初始化SPI接口,陀螺仪自校准过程,定时器和相应中断打开,数据存储及更新,最后通过按键分别显示X、Y、Z轴陀螺仪和加速度计以及内部温度信息。系统软件程序采用Keil μVision4软件编写,Keil μVision4是基于80C51内核开发的,可以用C语言和汇编语言进行编程,C编译工具在产生代码的准确性和效率方面达到了较高的水平,并且可以附加灵活的控制选项,在开发大型项目时非常实用[7]。其软件程序流程图如图4所示。


3 测试结果
完成硬件平台搭建和软件程序设计后,室温下对系统进行静态测量,通过改变温度,分析角度的漂移;在小型旋转平面上进行动态测试,分析线性加速度的变化,针对过大的漂移率现象,进行自校准,再测量。
静态测试,在室温下,由液晶屏显示输出温度为
+21.36 ℃,输出角度有不超过0.02°/s的漂移率。当把陀螺仪温度提高到50 ℃时,显示温度为+50.07 ℃,陀螺角度出现单向漂移现象,输出角度大约为0.72°/min漂移率。经过软件自校准后,角度漂移较稳定变化,单漂移现象消除。
动态测试,对三轴加速度计的测试采用重力场1 gn试验方法[8],安装方法如图5所示,将加速度计通过卡具安装在位置转台上,使加速度计的输入轴在铅垂平面内相对重力加速度转动。

使位置转台在360°范围内旋转,由图5可知,敏感轴上的加速度分量为[9]:
a=gn·sinθ (1)
式中a为敏感轴上的加速度;θ为加速度计敏感轴与水平方向间的夹角。由式(1)可知,当位置转台转动时,加速度计敏感轴上的重力加速度分量呈正弦关系变化,加速度计的输出也呈正弦关系变化。在知道敏感轴与水平方向的夹角后,就可以计算出加速度计所感应到的加速度大小[8]。
测试采取十二位置测试方法,即每间隔30°测量一次,首先需要确定机械零点,即试验前要确保初始状态的敏感轴与水平方向间夹角为0°,确定机械零位一般采用四点法[9],测量当地重力加速度gn(如长春重力加速度为9.801 m/s2),由公式(1)可以计算出十二位置点的重力加速度分量值,选取部分测试点与本系统显示的加速度值对比,分析绝对误差如表1所示。

由表1知,在常温下测量的ADIS16355加速度计 系统显示的值与理论值绝对误差在转台限定的误差范围之内,并且满足ADIS16355线性加速度精度误差为2.522 mg/LSB(约为0.024 7 m/s2)的要求,加上温度补偿可以进一步提高测量精度。
本数据采集系统主要存在以下误差:一方面是由陀螺仪自身出厂工艺缺陷、结构、工作模式等形成的各种漂移;另一方面是由重力场、磁场、检测电路干扰、系统安装不平衡引起的陀螺输出偏差。对于以上误差中确定性误差可以采用标定测试、自检校准和温度补偿来减小,对于不确定性误差采用统计方法统计变化规律和有效系统辨识方法来处理。
ADIS16355 iSensor是一款完整的三轴陀螺仪与三轴加速计惯性检测系统。本文以AT89S52单片机为核心控制器件,只需要很少的外围电路,采用KeilC51软件编写程序,实时存储采集的数据并经LCD显示,通过静态温度和角度测试及重力加速度试验测试表明,该系统具有较高的精度和实时性。最后对系统存在的误差进行分析。本文设计的MEMS数据采集系统具有精度高、成本低、操作简单、使用方便,在陀螺仪的实际应用中存在较大的市场价值。
参考文献
[1] 陈国华,王刚. 基于ADIS16255 MEMS芯片陀螺仪的应用研究[J].中国惯性技术学报,2008,16(4):480-483.
[2] 李朝青.单片机原理与接口技术[M].北京:北京航空航天大学出版社,2003.
[3] 8-bit microcontroller with 8 K Bytes in-system programmable Flash.AT89S52 datasheet. Micro- controllers.2008,[2011- 01-06].http://www.atmel. com/dyn/resources/prod_documents/doc1919.pdf.
[4] 陈宝毅.MEMS惯性器件的数据采集与误差分析技术研究[D].哈尔滨:哈尔滨工程大学,2009.
[5] Programmable low power gyroscope,ADISl6355 datasheet. ANALOG DEVICES.2007,[2011-01-06].http://www.analog.com/pr/ADIS16355.
[6] 王犇,袁涛,谭涛.基于MEMS陀螺仪的微惯性测量系统的实现[J].微机电(MEMS)技术应用,2008,24(9):152-153.
[7] 陈小忠,黄宁,赵小侠.单片机接口技术实用子程序[M].北京:人民邮电出版社,2005.
[8] 李振波,李疆,刘北英.基于单片机的数字微加速度计静态测试平台设计[J].传感器与微系统,2008,28(2):88-90.
[9] 董景新.微惯性仪表-微机械加速度计[M].北京:清华大学出版社,2003:227-265.

此内容为AET网站原创,未经授权禁止转载。
Baidu
map