ST集成传感器方案实现电子罗盘功能

原文地址http://www.dzsc.com/data/html/2010-11-29/87454.html

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

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

  1.    地磁场和航向角的背景知识

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

图1 地磁场分布图

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

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

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

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

  2.1  磁力计工作原理

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

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

图3 AMR材料示意图

图4 45º角排列的导线

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

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

图6 θ-R特性曲线

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

图7 惠斯通电桥

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

  2.2  置位/复位(Set/Reset)电路

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

图8 LSM303DLH置位/复位电路

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

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

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

  3)    消除由于温漂引起的电桥偏差。

  2.3  LSM303DLH的性能参数

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

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

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

  3.   ST电子罗盘方案介绍

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

图9 电子罗盘结构示意图

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

  LSM303DLH的典型应用如图10所示。它需要的周边器件很少,连接也很简单,磁力计和加速计各自有一条I2C总线和处理器通信。如果客户的I/O接口电平为1.8V,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的大小。

图10 LSM303DLH典型应用电路图

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

  4.   铁磁场干扰及校准

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

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


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

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

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

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

  4.1  平面校准方法

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

  4.2  立体8字校准方法

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

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

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

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

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

  4.2  十面校准方法

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

图15 10面交准法步骤

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

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

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

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

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

图17 Pitch角和Roll角定义                图18 Pitch角引起的航向角误差

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

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

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

  6.Android平台指南针的实现

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

  其中包括:

  BSP Reference

  Linux Kernel Driver (LSM303DLH_ACC + LSM303DLH_MAG)

   HAL Library(Sensors_lsm303dlh + Liblsm303DLH) for sensors.default.so

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

时间: 2024-10-21 22:41:47

ST集成传感器方案实现电子罗盘功能的相关文章

WEB集成开发方案-Windows 版

WEB集成开发方案-Windows 版 前言 今天要解决下面几个问题: 1.  CSS压缩: 2.  JS压缩: 3.  JS依赖包的管理: 4.  各终端浏览器自动实时同步,解脱反复手动刷新与清缓存工作,非常适合响应式开发. 5.  项目发布 首先看下传统的开发模式,从编码.调试到发布,要做若干反复繁琐的操作,长期以来,会浪费很多宝贵的时间,工作效率是很低的. 不难看出,css与js的压缩,需要安装对应的工具,而且还有可能每次都要执行下对应的命令.往往开发目录中还有很多辅助的文件或代码,不希望

Android开发:app工程集成mob短信验证码功能

一.前言 现在的app基本上都需要用到短信功能,注册时或者有消息通知时需要给用户发送一条短信,但是对于个人开发者来说,去买第三方的短信服务实在是有点奢侈,很好的是mob为我们提供了免费的短信验证码服务功能,我不是打广告,的确觉得这项服务很不错.那么下面就简单讲一下如何在自己的工程里集成mob的短信功能,其实整个流程并不复杂,只是个人觉得mob的官方文档有点小乱,官方Demo也有点小复杂,同时有一些细节地方容易被忽视,也会导致一些问题. PS:太喜欢mob的logo了. 二.实现过程 本篇只涉及A

Android集成友盟推送功能

友盟是中国最大的移动开发者服务平台,为移动开发者提供免费的应用统计分析.社交分享.消息推送.自动更新.在线参数.移动推广效果分析.微社区等app开发和运营解决方案. 如何快速集成友盟推送功能: 1. 注册友盟账号 友盟开发者账号的注册地址:http://www.umeng.com/users/sign_up 2. 创建推送应用 首先进入友盟消息推送的应用中心,创建一个应用,链接地址为:http://message.umeng.com/appList. 应用创建完成后,点击应用名称进入应用详情页面

android_app开发集成mob短信验证码功能

一.前言 现在的app基本上都需要用到短信功能,注册时或者有消息通知时需要给用户发送一条短信,但是对于个人开发者来说,去买第三方的短信服务实在是有点奢侈,很好的是mob为我们提供了免费的短信验证码服务功能,我不是打广告,的确觉得这项服务很不错.那么下面就简单讲一下如何在自己的工程里集成mob的短信功能,其实整个流程并不复杂,只是个人觉得mob的官方文档有点小乱,官方Demo也有点小复杂,同时有一些细节地方容易被忽视,也会导致一些问题. PS:太喜欢mob的logo了. 二.实现过程 本篇只涉及A

Android集成友盟社会化分享功能

1.  产品概述 友盟社会化组件,可以让移动应用快速具备社会化分享.登录.评论.喜欢等功能,并提供实时.全面的社会化数据统计分析服务. 指南将会手把手教你使用社会化组件SDK,用5分钟为APP增加新浪微博.腾讯微博.人人网分享功能. 注意:本文示例代码均针对最新版SDK,如果你所用SDK的类名或方法名与此文不符合,请使用你所用SDK的随包文档.或者下载使用最新版SDK. 2.  获取友盟Appkey 如果你之前已经在友盟注册了应用,并获取到了Appkey,可以继续使用它. 如果你尚未在友盟注册开

超高频原理UHF局部放电在线监测装置/超高频局放监测/局测温装置含传感器方案实现及预算

为了考虑泛在电力物联网未来发展的需要,考虑技术的成熟度及统一性,iHPS-3300型 开关柜(环网柜)局放及温升在线监测装置传感设备采用了超高频原理进行局放监测,同时具备对表面电晕放电.内部放电及噪声测量功能.开关柜局放/环网柜局放/超高频局部放电及温度在线监测/局放传感器iHPS-3300型 超高频局放监测及温升在线监测装置.该装置所采用的传感器为特高频(UHF)传感器,随时检测伴随局部放电产生的电磁波辐射脉冲信号.由于高压设备四周总是充斥着各类噪声及干扰信号,而由于UHF特高频传感器单独安装

GitLab CI持续集成配置方案

目录 1. 持续集成介绍 1.1 概念 1.2 持续集成的好处 2. GitLab持续集成(CI) 2.1 简介 2.2 GitLab简单原理图 2.3 GitLab持续集成所需环境 2.4 需要了解知识 3. 搭建GitLab持续集成环境(NET版) 3.1 环境搭建 3.1.1 基础环境搭建 3.1.2 Git安装 3.1.3 NuGet安装 3.2 相关配置 3.2.1 Git环境变量配置 3.2.2 PowerShell调用测试 3.2.3 GitLab-Runner下载 3.3 Git

Android集成二维码扫描功能

文章转载自  https://github.com/yipianfengye/android-zxingLibrary 在具体介绍该扫描库之前我们先看一下其具体的使用方式,看看是不是几行代码就可以集成二维码扫描的功能. 在module的build.gradle中执行compile操作 compile 'cn.yipianfengye.android:zxing-library:2.1' 在demo Application中执行初始化操作 @Override public void onCreat

安卓应用内计费方案 --Android 计费功能最全面的SDK

安卓应用内计费方案 通常应用计费只有按时长.按流量.按次.包月这几种.这些传统的计费规则已不能满足日益增长的应用内容的需要. 比如阅读.导航.音乐.工具类应用等,由于其本身特性需要多种计费规则.采用下载免费.应用内计费的大原则前提下,应用内计费的多样性将能大大提高付费转化率.因为一款应用从上线到成熟是需要一个过程的,用户从了解到熟悉到原意付费使用也需要一个长期过程.在这个过程中需要多种计费规则来引导用户使用应用.如尝试性的按次收费,包次数收费,免费N次后收费,多种产品打包收费,节假日促销买二送一