分享

详述惯性测量单元(IMUs)

 昵称7501213 2012-05-15
详述惯性测量单元(IMUs)
发布时间:2011.04.08 新闻来源:转载自 www.roboticfan.com 浏览次数:305
 

综述:

惯性测量装置(IMUs)包括加速度传感器和陀螺仪,分别用来测量运动的加速度和旋转运动的角速度。通过将两个测量装置采集的加速度值和旋转角速度值进行整合处理从而可以计算出物体的实时的运动状态和推算出的位置。惯性测量装置被广泛应用于导航系统,如无人机、制导导弹、航海、太空飞船、卫星的导航。现在也越来越多的应用到生活领域,如人运动行为信号的采集分析以及与外界多媒体信号的交互。

原理:

加速度传感器的测量原理是惯性原理,也就是力的平衡,A(加速度)=F(惯性力)/M(质量)。不同传感器采集力信号的方式不一样,有的是通过用电磁力去平衡力F,进而测量电磁力对应于电流的关系;有的是根据压电效应的原理测量惯性力作用在变形体上产生的对应的电压变化。当然,还有很多其它方法来制作加速度传感器,比如压阻技术,电容效应,热气泡效应,光效应,但是其最基本的原理都是由于加速度产生某个介质产生变形,通过测量其变形量并用相关电路转化成电压输出。

性能指标:

·灵敏度:

  一般来说,越灵敏越好。越灵敏的传感器对一定范围内的加速度变化更敏感,输出电压的变化也越大,这样就比较容易测量,从而获得更精确的测量值。

·带宽:

这里的带宽实际上指的是刷新率。也就是说每秒钟,传感器会产生多少次读数。对于一般只要测量倾角的应用,50HZ的带宽应该足够了,但是对于需要进行动态性能,比如振动,你会需要一个具有100HZ以上带宽的传感器。

通用相关参数:

参考电压设置:模拟口的参考电压,3.3伏即产生电压的变化范围是,0-3.3伏,如果读取的参考电压为5v则读数会偏小,这也是使用加速度传感器读数容易出错误的原因。

温度影响补偿:外界温度的变化会带来相应的读数偏移误差,可根据传感器手册中的温度变化引起的读数偏值来进行相应的补偿(ADXL330中温度补偿为1mg/摄氏度),在系统中增加温度传感器来测量温度。有些传感器自带温度补偿,例如在ADXL330中内置补偿电路,在?25°C to +70°C的温度变化区间内,电压变化保持在小于3mg的范围内。 灵敏度:输出电压与对应加速度值的对应关系。灵敏度越高,加速度变化对应的电压变化越明显,这样比较容易测得电压的变化从而精确检测加速度的微小变化。对于输出一定的电压范围来说,较高的精度意味着加速度的量程将变小。

实际加速度值计算:

对传感器得到的数值进行换算得加速度值。在计算过程中我们需要有硬件的相关参数:加速度传感器的灵敏度、参考电压和AD转换的分辨率。以ADXL330 和Arduino328为例,其相关参数:

·灵敏度:300mv/g

·参考电压:3.3V

·AD转换分辨率:10位(1024)

通过Arduino328读取ADXL330某时刻加速度值对应的电压值(0-3.3V)用1024个数字(0-1023)表示出来,通过串口监视器我们得到的数字是在0-1023之间。

输出值与电压输出的对应关系:Val_Arduino/1024=Val_Voltage/3.3

为了得到加速度的正负方向,输出数值的中值的加速度设为0g,即0g对应电压输出为3.3/2V,Arduino输出的值为1024/2。然而,根据传感器的参考说明,0g输出的标准电压为1.5V,变化幅度为1.2-1.8V,因此传感器的0g对应的数值还需要我们使用时实际测量。

通过串口监视器我们可以得到XYZ三轴的数值(0-1023),我们把传感器的任意平面放置平行于水平平面的时候,会发现其中平行于水平平面的两个轴的数值相近在465(1024*1.5/3.3)左右,而垂直水平平面的轴的数值与其他两个轴相差±Val。

在三轴加速度都为0g的时候,数值都应该在中值465左右。然而在传感器静止的情况下,没有运动的加速度,但是有重力加速度1g.

理论上重力加速度对应的AD转换数值为:Val_1g=(300mv/g)/1000/(3.3V)*1024=93.1。所以垂直于水平面的轴的读取数值为:465±93.1正负取决于轴的朝向.

在实际过程中如果发现AD转换后的读数,0g时数值明显小于465,那就是参考电压选择的问题。如果模拟口的参考电压为默认的5V。那么理论上,0g输出的标准电压仍为1.5V,Val_0g=1024*1.5/5=307.2。

计算加速度传感器实际的加速度时,我们需要灵敏度这个参数,整个计算过程就是将AD转换后读取的数值再通过计算转换为传感器输出电压,然后再通过灵敏度计算出所对应的加速度值。因此没有设置参考电压为3.3V,只要在将单片机读取的数值转换电压过程中的比例电压按照5V计算就可以了。

在实际使用中,我们可以通过串口监视器的数值来实测Val_1g。在加速度测量的使用中,我们不需要准确的得到一个轴方向上加速度为0时的数值,只需要知道数值相对于静止时数值的变化就可以得到相应的加速度增加量。

ACC=(Val_present-Val_rest)/1024*3.3/0.3

静止夹角测量:
在静止状态下,加速度传感器只有一个重力加速度值。空间上,这个重力加速度值将矢量分布在三个轴上XYZ,当是三个轴中的一个轴上没有分布重力加速度即XYZ三轴组成的三个平面处于水平竖直位置。根据重力加速度在任意两个轴上的分量数值,我们就可以得到两轴相对倾角的数值。例如,加速度传感器Z轴与水平面垂直,那么

·加速度传感器沿YZ平面转动的转角为Pitch=arctan(Val_Y/Val_Z)*180/pi;

·加速度传感器沿XZ平面转动的转角为Roll=arctan(Val_X/Val_Z)*180/pi;

当只有一轴加速度可用的时候,可以通过测定所处环境重力加速度的数值,然后根据此单轴的加速度分量来求的倾角。例如,加速度传感器Z轴与水平面垂直,三轴只有Y轴可用,那么

·Pitch_Single=arcsin(Val_Y/Val_g) *180/pi;

当物体并不处于匀速或静止状态时,用上述方法测量倾角会有较大偏差,因为各轴向除了受重力加速度以外,还有运动的加速度。此时就要运用一些高级算法来实现角度的精确测量。在倒立摆自平衡设计中,是通过卡曼滤波将加速度和角速度的值进行整合来算出交稳定的倾角值。接下来引入陀螺仪的角速度测量。

陀螺仪测量使用:

与加速度传感器类似,陀螺仪也是通过单片机将其产生的信号对应的电压变化采集通过AD转换以及转换电压计算从而得到相应的角速度值 。以IDG300陀螺仪为例介绍其信号计算及处理。其他的相关参数性能跟加速度传感器类似,需要计算补偿时可以作为参考。

根据IDG300DataSheet,陀螺仪的参考电压为3.3V,灵敏度为2mV/°/sec。同样对于10位的AD转换电路,将陀螺仪处于静止状态,角速度输出应该为0°/sec即通过串口监视器看到单片机读数在1024/2左右。但是实际使用中角速度为0状态下的输出数值以实际为准。同样可以通过代码记录实际使用中静止状态时的读数,然后根据相对于静止读数的增减变化来计算角速度值。

以X轴为转轴,角速度计算公式为:Rate_X=(Val_X-Val_rest)/1024*3.3/0.002

在实际使用中,陀螺仪会出现零点漂移现象即静止时陀螺仪的读数不为0,这时我们就需要通过相关算法来抑制零点漂移,例如监测其他的运动量,得到物体静止状态时陀螺仪读数不为0而进行人工清零操作,具体的实施需要根据控制系统而定。

刷新率:

刷新率就是传感器发送检测数据的频率,决定着传感器的反应快慢,IDG300的升级版IDG500 刷新频率要高出IDG300一倍。

其他相关注意:

在使用过程中,我们要判定一下我们计算的最终数值是否正确可用,因为往往由于参考电压、灵敏度的误用而导致所得数据与实际相差太大而无法使用。

通过加速度计算倾角,我们可以很容易来辨别测量的倾角与实际倾角是否一致。然而角速度值确难以估计,在实际中我们可以将陀螺仪固定在匀速旋转的物体上进行测定,方法之一就是将陀螺仪固定在舵机上,通过让舵机以不同的转速旋转,我们就可以观察,陀螺仪输出的数据是否正确。实测:舵机转速为66.7度每秒。测得的角速度为66度每秒左右(最低 45度每秒 ,最大82 度每秒,上下±20度每秒)。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多