Board logo

标题: ADISl6209 IMU在倾角测量中的应用 [打印本页]

作者: Bazinga    时间: 2014-11-17 16:46     标题: ADISl6209 IMU在倾角测量中的应用

O 引言

  倾角传感器是测量关于水平倾斜角的装置,倾角变化测量仪器是许多工业应用设备需要具备的一个组成部分,包括测量设备、卫星天线稳定系统、工厂机床、运动安全监视器和汽车轮位对准装置等。准确地测量倾角的变化,有利于这些设备更加稳定的工作及避免事故发生。现在采用的倾角测试仪大多数体积较大,信号采集比较慢,测量精度不高,误差较大,需要做大量的温度补偿和校准工作。这些缺点制约着工业设备性能的提高,也加大了工程的工作量。

  ADISl6209是ADI公司新推出的一款精密的微电子机械系统(MEMS)倾斜计,提供小于O.1°线性倾斜误差的全补偿直接角度输出,它使用出厂时安装的校正系数动态地检测系统环境并且补偿直接数字角度输出以便解决电压、温度、角度和其他参数变化引起的误差,减少了产品设计时间、减低成本和复杂性。

  本文详细地介绍ADISl6209的功能特性和使用方法,并使用Luminary公司的LM3S8962 Cortex-M3微处理器与之组合设计一个倾角测量系统。最后对测量结果进行分析。

  1 ADISl6209功能与使用方法

  ADISl6209的是一种高精度、数字化倾角测量仪和双轴加速度测量仪,可以在单轴(±180°),双轴(±90°)等两种模式下运作。标准电源电压 (3.3 V)和串行外设接口(SPI)设计最简单,集成方便。一个简单的内部寄存器结构处理所有的输出数据和配置功能。这包括访问以下输出数据:校准加速度、准确倾斜角度、电源、内部温度、辅助模拟和数字输入信号、诊断错误标志和可编程报警条件。

  ADISl6209采用9.2 mm×9.2 mm×3.9 mmLGA封装,可工作在-40~+125℃,能连接使用标准RoHS标准的回流焊工艺,广泛应用于医疗仪器、测量设备、工厂机床、机器人、惯性测量单元、导航控制等领域。

  1.1 ADISl6209的功能

  如图l所示,分别是ADISl6209的功能图、安装示意图与引脚图。由图1(a)可知,ADISl6209主要由两轴MEMS加速度计、温度传感器、1 个模/数转换模块(ADC)、1个数/模转换模块(DAC)和报警模块(ALARMS)组成。传感器感知外界信号后,信号调理并转换,经过信号处理后,将得到的数据结果存入输出寄存器。通过SPI总线,外部SPI主控器件向ADISl6209发送控制指令或者读取。ADISl6209内部设置有控制寄存器,寄存器都有默认的值,通过对控制寄存器的修改写操作,可以改变采样频率,改变平均滤波参数等多个方面的控制效果。每个采样周期结束后,传感器测量结果存放至输出寄存器,并且DIO1引脚向器件外产生一个脉冲,表示一组新的完整的测量数据已经采集准备好,可供外部SPI主控器件读取。


  图1(b)是ADISl6209坐标朝向图,传感器测量的Ax与Ay两个方向上的加速度分量。第1,2,3,4引脚是传感器的SPI接口,第9引脚RST是传感器的复位引脚。

  1.2 ADISl6209使用方法

  1.2.1 ADISl6209硬件连接

  ADISl63209的SPI接口与各种微处理器SPI主控制器件接线如图2所示。


  SPI总线的时钟频率最高可以达到2.5 MHz。但ADISl6209的采样频率对SPI时钟一定的要求:当采样频率大于等于546 SPS时,SPI的时钟频率最高可以采用2.5 MHz。当采样频率小于546 SPS时,SPI的时钟频率应不大于1 MHz,建议采用1 MHz。

  1.2.2 ADISl6209数据读写与数据处理

  通过SPI总线,可以对ADISl6209进行读写操作。可以根据自己的要求设置控制寄存器的值达到控制效果,也可以使用寄存器的默认设置。控制指令由1 位的读写控制位,1位空位,6位寄存器地址位和8位的数据位组成。向ADISl6209写控制指令时,要将指令的最高位置1,例如,要将采样频率设置为2 731 SPS,也就是采样频率寄存器的值设置为0x0001,那么写指令就应该如下:先写寄存器低地址0x36,数据为0x0l,再写高地址0x37,数据为 0x00,所以指令为0xB6018700。对其他的控制寄存器的修改也可按照这样的方式修改。

  读取ADISl6209输出的数据与写控制指令稍有区别,读取每个寄存器的值要分为2个16位的时序。第1个16位时序向ADISl6209写入读取命令和寄存器地址。第2个16位时序将对应寄存器内容发送至DOUT数据线上,微控制器才可以得到正确的数据。如要读取x轴加速度寄存器的值(X_ACC),那么第1个16位时序DIN=0x0400,第2个时序XACCL_OUT(x轴加速度值)将被发送到DOUT数据线上,SPI主机此时读到的数据才是上一个16位读指令发出的需要的指令。
从SPI总线上读取到的传感器数据是二进制数据或者二进制补码形式的数据。需要对其进行一定的解读才可以得到实际输出的代表的值。传感器输出的各个值代表的意义可详见A13ISl6209的数据手册中的output Data Register Format表。其中SUPPLYOUT,AUX ADC和TEMP OUT的数据格式都为二进制数据,可以使用以下公式进行解算:

  

  式中:VALUE代表实际的测量量的值;DATA_VAL_UE代表寄存器的值;Scale代表寄存器每个最小单位代表的实际值;n为对应寄存器的数据位数。

  XACC_OUT,YACC_OUT,XINCL_OUT和YINCL_OUT输出的数据格式均为14位2的补码,可以使用以下公式进行解算:

  

  式中:DATA_VALUE为寄存器的输出数据;VALUE为转换后实际的测量量的值;Scale为寄存器值最小值代表的最小单位;n为对应寄存器的数据位数。

  2 基于Luminary LMS8962与ADISl6209的倾角测量系统设计

  下面介绍基于Luminary公司的LMS8962与ADISl6209的倾角测量系统的原理与设计。

  2.1 倾角测量原理

  加速度计是测量物体所受除万有引力加速度以外的加速度。将ADISl6209静止放在水平面时,其受到的是水平面对其向上的支撑力的加速度和地球自转的向心加速度的矢量和。而地球自转的向心加速度很小,在测量中忽略不计。那么只要使得ADISl6209将一个加速传感器的输出摆置为O时,也即是将传感器摆置如图3(a)所示。或者两个加速度计测得的矢量和等于水平面对其向上的支撑力的加速度,也就是重力加速度的反方向矢量,也即是将传感器摆置如图4(a) 所示。那么就可以利用这些矢量求出传感器与水平的倾角关系。


  当使用单轴测量方式时,如图3(b)所示,可知Ay轴测得的分量为O,Ax轴测得的分量为ax,那么Ax轴与水平面的夹角:

  

  同理可以得到使用Ay轴作单轴测量方式时,Ay轴与水平面的夹角:

  

  当使用双轴测量方式时,如图4(b)所示,传感器Ax与Ay轴组成的平面垂直于水平面,那么重量加速度轴测得的分量为ax,那么Ax轴与水平面的夹角:

  

  Ay轴与水平面的夹角:

  


  2.2 硬件电路设计

  本文使用Luminary公司的LMS8962与ADISl6209搭建成倾角测量系统。LMS8962是一款高性能的32位Cortex-M3内核微处理器,它有丰富的片内外设,如模/数转换(ADC),PWM,CAN和串行总线(SSI)等,功能强大,易于集成。


  如图5所示是由LMS8962与ADISl6209组成的倾角测量系统。LMS8962通过SSI总线(SSI是串行通信总线,它兼容SPI总线。)与ADISl6209进行通信。将采集到的数据存储到SD卡中,将解算得到的结果实时在LCD上显示出来。

  2.3 软件设计

  如图6所示是系统的软件流程图。程序启动进入系统初始化,接下来向ADISl6209写控制指令,以设置ADISl6209工作在需求的模式下,然后读取返回的数据并进行解算,最后通过存储数据到SD卡中并在液晶模块中显示出来。


  3 实验结果

  Crossbow Technology公司的AHRS500GA-226是高精度的IMU,其广泛应用于航空航天等高科技领域。实验以AHRS输出的结果为参考,将 ADISl6209与AHRS固定于同一平台上,使得ADISl6209的Ax与Ay轴与AHRS的Ax与Ay轴方向相一致。令它们的Ax与Ay轴组成的平面与水平面垂直,绕着Ax与Ay轴组成的平面的垂直线转动,使Ax与Ay轴与水平面成一定的夹角。图7~图10是ADISl6209与AHRS输出的数据结果的对比,图中主要看较平稳的数据部分,数据抖动部分是因为在切换方向,切换方向时手对传感器有一个加速度,叠加在原来静止状态下受到的力,此时测量到的不能作为准确的结果。



  4 结语

  (1)在静止状态下,ADISl6209双轴加速度计的输出与AHRS的输出趋势吻合,误差小于O.005g,具有较高的精度。

  (2)在静止状态下,由ADISl6209双轴测量方式得到的AX轴、AY轴与水平面的夹角和AHRS测得的结果趋势吻合,误差在1°以内,在但是ADISl6209有一定的噪声,如果对ADISl6209输出的加速度值进行滤波除噪处理,可以得到更好的结果。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0