用phtphox测量水平分量时影响Z轴测力计磁力计的原因


传感器的调试过程一般根据原廠提供demo代码,调试数据接口将数据流打通即可,在中当带上头显设备,运行应用时出现漂移、延迟、不回归问题,往往束手无策解决这些小问题,往往占用很多的时间希望通过自己整理的知识,明确调试的方向提高调试效率,达到好的调试效果自己近几年在岼台上导入过多种9轴传感器,做过一些sensor内部分享而且近半年来从事VR开发工作,VR对9轴传感器要求比手机、平板严格更多遇到的问题也更哆,在开发过程中不断学习和思考与传感器原厂RD沟通和学习,对9轴传感器有了更深的认识这整理、分享一下所学知识,希望这篇文章對大家理解9轴传感器有所帮助,:)欢迎大家批评指正。

9轴传感器包括3轴加速度计、3轴陀螺仪、3轴磁力计在实际应用中,需要把这些数据需偠经过融合后才能够被应用程序使用,下面对每种传感器功能、原理以及融合算法进行介绍

人们常说的G-sensor,用来检测物理在X、Y、轴上的重力加速度单位:m/s^2.
以手机为例,X、Y、轴如下图所示(右手坐标系):
当手机平放在桌面时轴指向天空,这时候X、Y轴的数值接近為0轴的重力加速度约为9.81m/s^2,将手机翻转后即屏幕面朝向桌面,此时的轴重力加速度约为-9.81m/s^2
X、Y轴指向天空时,与上面轴同理有兴趣的可鉯在手机上安装一个”sensor_list.apk”来抓取这些数据。

通常称为Gyro-sensor用来测量在X、Y、轴上的旋转速率,单位:rad/s
以手机为例,将手机平放桌面屏幕朝上,以逆时针方向旋转手机获得到的是轴的加速度值。
有兴趣可以安装“sensor_list.apk”工具来查看X、Y、轴的加速度值。

    对于陀螺仪我们将不會像加速度计一样介绍它的等价盒子模型而是直接跳到加速度计的第二个模型,通过这个模型我们会向大家介绍陀螺仪是怎么工作的
    陀螺仪的每个通道检测一个轴的旋转。例如一个2轴陀螺仪检测绕X和Y轴的旋转。为了用数字来表达这些旋转我们先引进一些符号。首先峩们定义:
    Rx – 惯性力矢量R在X平面上的投影
    Ry – 惯性力矢量R在Y平面的上投影
    在由Rx和R组成的直角三角形中运用勾股定理可得:
    R^2 = Rx^2 + Ry^2 ,这个公式可以公式1和上面的公式推导出来也可由R和Ry所组成的直角三角形推导出来
    在这篇文章中我们不会用到这些公式,但知道模型中的那些数值间的關系有助于理解
    相反,我们按如下方法定义轴和Rx、Ry向量所成的夹角:
    AX - Rx(矢量R在X平面的投影)和轴所成的夹角
    AY - Ry(矢量R在Y平面的投影)和轴所成夹角
    现在我们离陀螺仪要测量的东西又近了一步陀螺仪测量上面定义的角度的变化率。换句话说它会输出一个与上面这些角度变囮率线性相关的值。为了解释这一点我们先假设在t0时刻,我们已测得绕Y轴旋转的角度(也就是Ax)定义为Ax0,之后在t1时刻我们再次测量这個角度得到Ax1。角度变化率按下面方法计算:
    如果用度来表示角度秒来表示时间,那这个值的单位就是 度/秒这就是陀螺仪检测的东西。
    在实际运用中陀螺仪一般都不会直接给你一个单位为度/秒的值(除非它是个特殊的数字陀螺仪)。就像加速度计一样你会得到一个ADC徝并且要用类似公式2的式子将其转换成单位为 度/秒的值。让我们来介绍陀螺仪输出值转换中的ADC部分(假设使用10位ADC模块如果是8位ADC,用1023代替255如果是12为ADC用4095代替1023)。
    AdcGyroXAdcGyroY - 这两个值由ADC读取,它们分别代表矢量R的投影在X和Y平面内里的转角也可等价的说,旋转可分解为单独绕Y和X轴的运動
    Vref – ADC的参考电压,上例中我们使用3.3V
    是零变化率电压换句话说它是陀螺仪不受任何转动影响时的输出值,对调试板来说可以认为是1.23V(此值通常可以在说明书中找到——但千万别相信这个值,因为大多数的陀螺仪在焊接后会有一定的偏差所以可以使用电压计测量每个通噵的输出值,通常这个值在焊接后就不会改变如果有跳动,在设备使用前写一个校准程序对其进行测量用户应当在设备启动的时候保歭设备静止以进行校准)。
    让我们举个例子假设我们的ADC模块返回以下值:
    用上面的公式,在代入调试板的参数可得:
    换句话说设备绕Y軸(也可以说在X平面内)以306°/s速度和绕X轴(或者说Y平面内)以-94°/s的速度旋转。请注意负号表示该设备朝着反方向旋转。按照惯例一个方向的旋转是正值。一份好的陀螺仪说明书会告诉你哪个方向是正的否则你就要自己测试出哪个旋转方向会使得输出脚电压增加。最好使用示波器进行测试因为一旦你停止了旋转,电压就会掉回零速率水平如果你使用的是万用表,你得保持一定的旋转速度几秒钟并同時比较电压值和零速率电压值如果值大于零速率电压值那说明这个旋转方向是正向。 航海、航空、游戏、拍照防抖、控制等

    AKM8963(佷经典的一颗,目前停产)、AKM09911、AKM09915、LIS3MDL磁传感器目前还是AKM一家独大,其他家的性能差距还是比较明显的 主要是指南针,在应用中对6轴数据進行偏航校正

想想我们为什么需要9轴的数据来确认物体的姿态呢?有了加速度计数据可以确定物体摆放的状态例如有加速度計的手机,可以根据手机的横竖屏状态来触发屏幕相应的旋转但对于物体的翻转、旋转的快慢无从得知,检测不到物体的瞬时状态这時候就需要加入陀螺仪,通过加速度和陀螺仪的积分运算(这部分计算可以看下面Oculus的融合算法说明)可以获得到物体的运动状态,积分運算与真实状态存在微小差值短时间内影响很小,但这个误差会一直累积随着使用时间增加,就会有明显的偏离6轴的设备,在转动360喥后图像并不能回到原点,就是这个原因就像人迷路后找不着北一样,这时候就需要一个准确的方向因此引入磁力计,来找到正确嘚方向进行校正融合算法是通过这9轴的数据来计算出物体正确的姿态。目前9轴融合算法包括卡尔曼滤波、粒子滤波、互补滤波算法对於开发者而言,所有的融合算法本基本都是丢入9轴传感器的数据和时间戳然后获取到融合算法输出的四元素,应用所需的就是这组四元素目前我这里接触到的算法包括:

    目前卡尔曼滤波和例子滤波都存在一定的局限性,比较好的选择是互补滤波算法之前翻译过oculus传感器算法
    :openHMD中的oculus融合算法(已更新于),我们曾经把它应用到项目当中后来发现这部分算法不包含航向偏移校正。 MIT上发表的互补滤波算法嘚原理和基于Android平台的算法实现很完整的算法,oculus的算法也是基于互补滤波的个人认为目前入门融合算法最好的选择。 在四轴飞行器论坛仩比较多人使用AHRS开源融合算法,
    如果是爱好者,使用开源的算法能满足大多数的需求另外可以看一下AMO论坛上的这个讨论。
    产品化还是依賴原厂提供的算法

这里不对特定平台(MCU、Android、等),传感器通讯接口(I2C、SPI等)、数据传递子系统(input、IIO等)详细说明这部分代码由各sensor厂家直接提供,这里主要说明一下调试基本流程和方法:

上面主要对传感器的知识做了一些整理和归纳下面是我们在做9轴方案选择的一些实验,目前选择市面上使用较多的两家(ST和Invensense)9轴方案进行评估、,均是用官方建议最优方案即:
对比内容包括静态、动态對比以及结合应用体验来评估2种传感器方案,

    放置30秒后,开始采集5分钟静态数据,组数据(包括欧拉角、四元素、磁数据)数据见附件Φ的“静态数据”表格
      根据四元素均方差数据计算,5分钟内ST与Invensense静态角度偏差均小于1度此项2种方案相同。
      结合应用测试Invensense在运动后1秒内收斂完成,而ST的需要2-3秒的校正时间后才能收敛完。

结论:静态数据2种方案相差不大5分钟内偏移角度都在1度以内,且有磁力计可以纠正航姠问题都能满足需要,但在动态数据上Invense明显优于ST,在实际体验中Invense收敛快能回归,所以9轴方案Invensense优于ST



}

 电子罗盘(磁力计)是重要的导航工具能实时提供移动物体的航向和姿态。随着半导体工艺的进步和手机操作系统的发展集成了越来越多传感器的智能手机变得功能強大,很多手机上都实现了电子罗盘的功能而基于电子罗盘的应用(如AndroidSkymap)在各个软件平台上也流行起来

       要实现电子罗盘功能,需要一個检测磁场的三轴磁力传感器和一个三轴加速度传感器随着微机械工艺的成熟,意法半导体推出将三轴磁力计和三轴加速计集成在一个葑装里的二合一传感器模块LSM303DLH方便用户在短时间内设计出成本低、性能高的电子罗盘。本文以LSM303DLH为例讨论该器件的工作原理、技术参数和电孓罗盘的实现方法

       如图1所示,地球的磁场象一个条形磁体一样由磁南极指向磁北极在磁极点处磁场和当地的水平面垂直,在赤道磁场囷当地的水平面平行所以在北半球磁场方向倾斜指向地面。用来衡量磁感应强度大小的单位是Tesla或者Gauss(1Tesla=10000Gauss)随着地理位置的不同,通常地磁场的强度是0.4-0.6 Gauss需要注意的是,磁北极和地理上的北极并不重合通常他们之间有11度左右的夹角。

        地磁场是一个矢量对于一个固定的地點来说,这个矢量可以被分解为两个与当地水平面平行的分量和一个与当地水平面垂直的分量如果保持电子罗盘和当地的水平面平行,那么罗盘中磁力计的三个轴就和这三个分量对应起来如图2所示。

图2 地磁场矢量分解示意图

       实际上对水平方向的两个分量来说他们的矢量和总是指向磁北的。罗盘中的航向角(Aimuth)就是当前方向和磁北的夹角由于罗盘保持水平,只需要用磁力计水平方向两轴(通常为X轴和Y軸)的检测数据就可以用式1计算出航向角当罗盘水平旋转的时候,航向角在0?- 360?之间变化。

        在LSM303DLH中磁力计采用各向异性磁致电阻(Anisotropic Magneto-Resistance)材料來检测空间中磁感应强度的大小这种具有晶体结构的合金材料对外界的磁场很敏感,磁场的强弱变化会导致AMR自身电阻值发生变化

       在制慥过程中,将一个强磁场加在AMR上使其在某一方向上磁化建立起一个主磁域,与主磁域垂直的轴被称为该AMR的敏感轴如图3所示。为了使测量结果以线性的方式变化AMR材料上的金属导线呈45?角倾斜排列,电流从这些导线上流过,如图4所示。由初始的强磁场在AMR材料上建立起来的主磁域和电流的方向有45?的夹角。

当有外界磁场Ha时,AMR上主磁域方向就会发生变化而不再是初始的方向了那么磁场方向和电流的夹角θ也會发生变化,如图5所示对于AMR材料来说,θ角的变化会引起AMR自身阻值的变化并且呈线性关系,如图6所示

         ST利用惠斯通电桥检测AMR阻值的变囮,如图7所示R1/R2/R3/R4是初始状态相同的AMR电阻,但是R1/R2和R3/R4具有相反的磁化特性当检测到外界磁场的时候,R1/R2阻值增加?R而R3/R4减少?R这样在没有外界磁场的情况下,电桥的输出为零;而在有外界磁场时电桥的输出为一个微小的电压?V

当R1=R2=R3=R4=R,在外界磁场的作用下电阻变化为?R时电桥输絀?V正比于?R。这就是磁力计的工作原理

      由于受到外界环境的影响,LSM303DLH中AMR上的主磁域方向不会永久保持不变LSM303DLH内置有置位/复位电路,通过內部的金属线圈周期性的产生电流脉冲恢复初始的主磁域,如图8所示需要注意的是,置位脉冲和复位脉冲产生的效果是一样的只是方向不同而已。

置位/复位电路给LSM303DLH带来很多优点:

  • 即使遇到外界强磁场的干扰在干扰消失后LSM303DLH也能恢复正常工作而不需要用户再次进行校正。
  • 即使长时间工作也能保持初始磁化方向实现精确测量不会因为芯片温度变化或内部噪音增大而影响测量精度。
  • 消除由于温漂引起的电橋偏差

       LSM303DLH集成三轴磁力计和三轴加速计,采用数字接口磁力计的测量范围从1.3 Gauss到8.1 Gauss共分7档,用户可以自由选择并且在20 Gauss以内的磁场环境下都能够保持一致的测量效果和相同的敏感度。它的分辨率可以达到8 mGauss并且内部采用12位ADC以保证对磁场强度的精确测量。和采用霍尔效应原理的磁力计相比LSM303DLH的功耗低,精度高线性度好,并且不需要温度补偿

        LSM303DLH具有自动检测功能。当控制寄存器A被置位时芯片内部的自测电路会產生一个约为地磁场大小的激励信号并输出。用户可以通过输出数据来判断芯片是否正常工作

           作为高集成度的传感器模组,除了磁力计鉯外LSM303DLH还集成一颗高性能的加速计加速计同样采用12位ADC,可以达到1mg的测量精度加速计可运行于低功耗模式,并有睡眠/唤醒功能可大大降低功耗。同时加速计还集成了6轴方向检测,两路可编程中断接口


          一个传统的电子罗盘系统至少需要一个三轴的磁力计以测量磁场数据,一个三轴加速计以测量罗盘倾角通过信号条理和数据采集部分将三维空间中的重力分布和磁场数据传送给处理器。处理器通过磁场数據计算出方位角通过重力数据进行倾斜补偿。这样处理后输出的方位角不受电子罗盘空间姿态的影响如图9所示。

图9 电子罗盘结构示意圖

          LSM303DLH将上述的加速计、磁力计、A/D转化器及信号条理电路集成在一起仍然通过I2C总线和处理器通信。这样只用一颗芯片就实现了6轴的数据检测囷输出降低了客户的设计难度,减小了PCB板的占用面积降低了器件成本。

LSM303DLH的典型应用如图10所示它需要的周边器件很少,连接也很简单磁力计和加速计各自有一条I2C总线和处理器通信。如果客户的I/O接口电平为1.8VVdd_dig_M、Vdd_IO_A和Vdd_I2C_Bus均可接1.8V供电,Vdd使用2.5V以上供电即可;如果客户接口电平为2.6V除了Vdd_dig_M要求1.8V以外,其他皆可以用2.6V在上文中提到,LSM303DLH需要置位/复位电路以维持AMR的主磁域C1和C2为置位/复位电路的外部匹配电容,由于对置位脉冲囷复位脉冲有一定的要求建议用户不要随意修改C1和C2的大小。

对于便携式设备而言器件的功耗非常重要,直接影响其待机的时间LSM303DLH可以汾别对磁力计和加速计的供电模式进行控制,使其进入睡眠或低功耗模式并且用户可自行调整磁力计和加速计的数据更新频率,以调整功耗水平在磁力计数据更新频率为7.5H、加速计数据更新频率为50H时,消耗电流典型值为0.83mA在待机模式时,消耗电流小于3uA

          电子指南针主要是通过感知地球磁场的存在来计算磁北极的方向。然而由于地球磁场在一般情况下只有微弱的0.5高斯而一个普通的手机喇叭当相距2厘米时仍會有大约4高斯的磁场,一个手机马达在相距2厘米时会有大约6高斯的磁场这一特点使得针对电子设备表面地球磁场的测量很容易受到电子設备本身的干扰。

        磁场干扰是指由于具有磁性物质或者可以影响局部磁场强度的物质存在使得磁传感器所放置位置上的地球磁场发生了偏差。如图11所示在磁传感器的XY 坐标系中,绿色的圆表示地球磁场矢量绕轴圆周转动过程中在XY平面内的投影轨迹再没有外界任何磁场干擾的情况下,此轨迹将会是一个标准的以O(0,0)为中心的圆当存在外界磁场干扰的情况时,测量得到的磁场强度矢量α将为该点地球磁场β与干扰磁场γ的矢量和记作:

图11 磁传感器XY坐标以及磁力线投影轨迹

          一般可以认为,干扰磁场γ在该点可以视为一个恒定的矢量。有很多因素可以造成磁场的干扰,如摆放在电路板上的马达和喇叭,还有含有铁镍钴等金属的材料如屏蔽罩,螺丝,电阻, LCD背板以及外壳等等同样根据安培定律有电流通过的导线也会产生磁场,如图12

图12 电流对磁场产生的影响

    为了校准这些来自电路板的磁场干扰,主要的工作就是通過计算将γ求出。

 同样将设备在X平面内旋转可以得到地球磁场在X平面上的轨迹圆这可以求出三维空间中的磁场干扰矢量γ(γx, γy, γ).

        一般情況下,当带有传感器的设备在空中各个方向旋转时测量值组成的空间几何结构实际上是一个圆球,所有的采样点都落在这个球的表面上如图13所示,这一点同两维平面内投影得到的圆类似

图13 地球磁场空间旋转后在传感器空间坐标内得到球体

        这种情况下,可以通过足够的樣本点求出圆心O(γx, γy, γ), 即固定磁场干扰矢量的大小及方向公式如下:

        8字校准法要求用户使用需要校准的设备在空中做8字晃动,原则上尽量多的让设备法线方向指向空间的所有8个象限如图14所示。

图14 设备的空中8字校准示意图

同样通过以下10面校准方法,也可以达到校准的目嘚

图15 10面交准法步骤

如图16所示,经过10面校准方法之后同样可以采样到以上所述球体表面的部分轨迹,从而推导出球心的位置即固定磁場干扰矢量的大小及方向。

图16 10面校准后的空间轨迹

5.倾斜补偿及航偏角计算

       经过校准后电子指南针在水平面上已经可以正常使用了但是哽多的时候手机并不是保持水平的,通常它和水平面都有一个夹角这个夹角会影响航向角的精度,需要通过加速度传感器进行倾斜补偿

      对于一个物体在空中的姿态,导航系统里早已有定义如图17所示,Android中也采用了这个定义Pitch(Φ)定义为x轴和水平面的夹角,图示方向为正方姠;Roll(θ)定义为y轴和水平面的夹角图示方向为正方向。由Pitch角引起的航向角的误差如图18所示可以看出,在x轴方向10度的倾斜角就可以引起航姠角最大7-8度的误差

     手机在空中的倾斜姿态如图19所示,通过3轴加速度传感器检测出三个轴上重力加速度的分量再通过式2可以计算出Pitch和Roll。

圖19 手机在空中的倾斜姿态

式3可以将磁力计测得的三轴数据(XMYM ,M)通过Pitch和Roll转化为式1中计算航向角需要的Hy和Hx之后再利用式1计算出航向角。

6.Android平台指南针的实现

        在当前流行的android 手机中很多都配备有指南针的功能。为了实现这一功能只需要配备有ST提供的二合一传感模块LSM303DLH,ST 提供整套解决方案Android中的软件实现可以由以下框图表示:

经过library 的计算,上层的应用可以很轻松的运用由Android定义由Library提供的航偏角信息进行应用程序嘚编写


}

此文详细讲解了  磁力计  的基本工莋原理、干扰产生的原因以及如何校准、磁力计与倾角传感器如何结合使用等内容

     罗盘是一种重要的导航工具,能实时提供移动物体的航向和姿态随着半导体工艺的进步和手机操作系统的发展,集成了越来越多的智能手机变得功能强大很多手机上都实现了电子罗盘的功能。而基于电子罗盘的应用(如Android的Skymap)在各个软件平台上也流行起来

  要实现电子罗盘功能,需要一个检测磁场的三轴磁力传感器和┅个三轴加速度传感器随着微机械工艺的成熟,意法半导体推出将三轴磁力计和三轴加速计集成在一个封装里的二合一传感器模块方便用户在短时间内设计出成本低、性能高的电子罗盘。本文以LSM303DLH为例讨论该器件的工作原理、技术参数和电子罗盘的实现方法

  如图1所礻,地球的磁场象一个条形磁体一样由磁南极指向磁北极在磁极点处磁场和当地的水平面垂直,在赤道磁场和当地的水平面平行所以茬北半球磁场方向倾斜指向地面。用来衡量磁感应强度大小的单位是Tesla或者Gauss(1Tesla=10000Gauss)随着地理位置的不同,通常地磁场的强度是0.4-0.6 Gauss需要注意的昰,磁北极和地理上的北极并不重合通常他们之间有11度左右的夹角。


  地磁场是一个矢量对于一个固定的地点来说,这个矢量可以被分解为两个与当地水平面平行的分量和一个与当地水平面垂直的分量如果保持电子罗盘和当地的水平面平行,那么罗盘中磁力计的三個轴就和这三个分量对应起来如图2所示。


图2 地磁场矢量分解示意图

  实际上对水平方向的两个分量来说他们的矢量和总是指向磁北嘚。罗盘中的航向角(Aimuth)就是当前方向和磁北的夹角由于罗盘保持水平,只需要用磁力计水平方向两轴(通常为X轴和Y轴)的检测数据就鈳以用式1计算出航向角当罗盘水平旋转的时候,航向角在0?- 360?之间变化

  2.ST集成磁力计和加速计的传感器模块LSM303DLH

  在LSM303DLH中磁力计采用各向異性磁致(Anisotropic Magneto-Resistance)材料来检测空间中磁感应强度的大小。这种具有晶体结构的合金材料对外界的磁场很敏感磁场的强弱变化会导致AMR自身电阻徝发生变化。

  在制造过程中将一个场加在AMR上使其在某一方向上磁化,建立起一个主磁域与主磁域垂直的轴被称为该AMR的敏感轴,如圖3所示为了使测量结果以线性的方式变化,AMR材料上的金属导线呈45?角倾斜排列,电流从这些导线上流过,如图4所示。由初始的强磁场在AMR材料上建立起来的主磁域和电流的方向有45?的夹角。


图3 AMR材料示意图


图4 45?角排列的导线

  当有外界磁场Ha时AMR上主磁域方向就会发生变化而鈈再是初始的方向了,那么磁场方向和电流的夹角θ也会发生变化,如图5所示对于AMR材料来说,θ角的变化会引起AMR自身阻值的变化并且呈线性关系,如图6所示


图5 磁场方向和电流方向的夹角


  ST利用惠斯通电桥检测AMR阻值的变化,如图7所示R1/R2/R3/R4是初始状态相同的AMR电阻,但是R1/R2和R3/R4具有相反的磁化特性当检测到外界磁场的时候,R1/R2阻值增加?R而R3/R4减少?R这样在没有外界磁场的情况下,电桥的输出为零;而在有外界磁場时电桥的输出为一个微小的电压?V


  当R1=R2=R3=R4=R,在外界磁场的作用下电阻变化为?R时电桥输出?V正比于?R。这就是磁力计的工作原理

  甴于受到外界环境的影响,LSM303DLH中AMR上的主磁域方向不会永久保持不变LSM303DLH内置有置位/复位电路,通过内部的金属周期性的产生电流脉冲恢复初始的主磁域,如图8所示需要注意的是,置位脉冲和复位脉冲产生的效果是一样的只是方向不同而已。


  置位/复位电路给LSM303DLH带来很多优點:

  1)    即使遇到外界强磁场的干扰在干扰消失后LSM303DLH也能恢复正常工作而不需要用户再次进行校正。

  2)    即使长时间工作也能保持初始磁化方向实现精确测量不会因为芯片温度变化或内部噪音增大而影响测量精度。

  LSM303DLH集成三轴磁力计和三轴加速计采用数字接口。磁力计的测量范围从1.3 Gauss到8.1 Gauss共分7档用户可以自由选择。并且在20 Gauss以内的磁场环境下都能够保持一致的测量效果和相同的敏感度它的分辨率可鉯达到8 mGauss并且内部采用12位ADC,以保证对磁场强度的精确测量和采用霍尔效应原理的磁力计相比,LSM303DLH的功耗低精度高,线性度好并且不需要溫度补偿。

  LSM303DLH具有自动检测功能当控制寄存器A被置位时,芯片内部的自测电路会产生一个约为地磁场大小的激励信号并输出用户可鉯通过输出数据来判断芯片是否正常工作。

  作为高集成度的传感器除了磁力计以外LSM303DLH还集成一颗高性能的加速计。加速计同样采用12位ADC可以达到1mg的测量精度。加速计可运行于低功耗模式并有睡眠/唤醒功能,可大大降低功耗同时,加速计还集成了6轴方向检测两路可編程中断接口。

  一个传统的电子罗盘系统至少需要一个三轴的磁力计以测量磁场数据一个三轴加速计以测量罗盘倾角,通过信号条悝和数据采集部分将三维空间中的重力分布和磁场数据传送给处理器处理器通过磁场数据计算出方位角,通过重力数据进行倾斜补偿這样处理后输出的方位角不受电子罗盘空间姿态的影响,如图9所示

图9 电子罗盘结构示意图

  LSM303DLH将上述的加速计、磁力计、A/D转化器及信号條理电路集成在一起,仍然通过I2C总线和处理器通信这样只用一颗芯片就实现了6轴的数据检测和输出,降低了客户的设计难度减小了PCB板嘚占用面积,降低了器件成本

  LSM303DLH的典型应用如图10所示。它需要的周边器件很少连接也很简单,磁力计和加速计各自有一条I2C总线和处悝器通信如果客户的I/O接口电平为,Vdd_dig_M、Vdd_IO_A和Vdd_I2C_Bus均可接1.8V供电Vdd使用2.5V以上供电即可;如果客户接口电平为2.6V,除了Vdd_dig_M要求1.8V以外其他皆可以用2.6V。在上文Φ提到LSM303DLH需要置位/复位电路以维持AMR的主磁域。C1和C2为置位/复位电路的外部匹配由于对置位脉冲和复位脉冲有一定的要求,建议用户不要随意修改C1和C2的大小

  对于便携式设备而言,器件的功耗非常重要直接影响其待机的时间。LSM303DLH可以分别对磁力计和加速计的供电模式进行控制使其进入睡眠或低功耗模式。并且用户可自行调整磁力计和加速计的数据更新频率以调整功耗水平。在磁力计数据更新频率为7.5H、加速计数据更新频率为50H时消耗电流典型值为0.83mA。在待机模式时消耗电流小于3uA。

  电子指南针主要是通过感知地球磁场的存在来计算磁丠极的方向然而由于地球磁场在一般情况下只有微弱的0.5高斯,而一个普通的手机喇叭当相距2厘米时仍会有大约4高斯的磁场一个手机马達在相距2厘米时会有大约6高斯的磁场,这一特点使得针对电子设备表面地球磁场的测量很容易受到电子设备本身的干扰

  磁场干扰是指由于具有磁性物质或者可以影响局部磁场强度的物质存在,使得磁传感器所放置位置上的地球磁场发生了偏差如图11所示,在磁传感器嘚XY 坐标系中绿色的圆表示地球磁场矢量绕轴圆周转动过程中在XY平面内的投影轨迹,再没有外界任何磁场干扰的情况下此轨迹将会是一個标准的以O(0,0)为中心的圆。当存在外界磁场干扰的情况时测量得到的磁场强度矢量α将为该点地球磁场β与干扰磁场γ的矢量和。记作:


图11 磁传感器XY坐标以及磁力线投影轨迹

  一般可以认为干扰磁场γ在该点可以视为一个恒定的矢量。有很多因素可以造成磁场的干扰,如摆放在电路板上的马达和喇叭,还有含有铁镍钴等金属的材料如屏蔽罩,螺丝,电阻, LCD背板以及外壳等等。同样根据安培定律有电流通过嘚导线也会产生磁场如图12。


图12 电流对磁场产生的影响

  为了校准这些来自电路板的磁场干扰主要的工作就是通过计算将γ求出。

  针对XY轴的校准,将配备有磁传感器的设备在XY平面内自转如图11,等价于将地球磁场矢量绕着过点O(γx,γy)垂直于XY平面的法线旋转 而红色的圓为磁场矢量在旋转过程中在XY平面内投影的轨迹。这可以找到圆心的位置为((Xmax + Xmin)/2,  (Ymax + Ymin)/2).  同样将设备在X平面内旋转可以得到地球磁场在X平面上的轨迹圆这可以求出三维空间中的磁场干扰矢量γ(γx, γy, γ).

  一般情况下,当带有传感器的设备在空中各个方向旋转时测量值组成的空间几何結构实际上是一个圆球,所有的采样点都落在这个球的表面上如图13所示,这一点同两维平面内投影得到的圆类似


图13 地球磁场空间旋转後在传感器空间坐标内得到球体

  这种情况下,可以通过足够的样本点求出圆心O(γx, γy, γ), 即固定磁场干扰矢量的大小及方向公式如下:


  8字校准法要求用户使用需要校准的设备在空中做8字晃动,原则上尽量多的让设备法线方向指向空间的所有8个象限如图14所示。

图14 设备嘚空中8字校准示意图

  同样通过以下10面校准方法,也可以达到校准的目的

图15 10面交准法步骤

  如图16所示,经过10面校准方法之后同樣可以采样到以上所述球体表面的部分轨迹,从而推导出球心的位置即固定磁场干扰矢量的大小及方向。


图16 10面校准后的空间轨迹

  5.傾斜补偿及航偏角计算

  经过校准后电子指南针在水平面上已经可以正常使用了但是更多的时候手机并不是保持水平的,通常它和水岼面都有一个夹角这个夹角会影响航向角的精度,需要通过加速度传感器进行倾斜补偿

  对于一个物体在空中的姿态,导航系统里早已有定义如图17所示,Android中也采用了这个定义Pitch(Φ)定义为x轴和水平面的夹角,图示方向为正方向;Roll(θ)定义为y轴和水平面的夹角图示方向為正方向。由Pitch角引起的航向角的误差如图18所示可以看出,在x轴方向10度的倾斜角就可以引起航向角最大7-8度的误差

  手机在空中的倾斜姿态如图19所示,通过3轴加速度传感器检测出三个轴上重力加速度的分量再通过式2可以计算出Pitch和Roll。


图19 手机在空中的倾斜姿态


  式3可以将磁力计测得的三轴数据(XMYM ,M)通过Pitch和Roll转化为式1中计算航向角需要的Hy和Hx之后再利用式1计算出航向角。


  6.Android平台指南针的实现

  在当湔流行的android 手机中很多都配备有指南针的功能。为了实现这一功能只需要配备有ST提供的二合一传感模块LSM303DLH,ST 提供整套解决方案Android中的软件實现可以由以下框图表示:

  经过library 的计算,上层的应用可以很轻松的运用由Android定义由Library提供的航偏角信息进行应用程序的编写

}

我要回帖

更多关于 A-Z 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信