HMC5883L磁力计常见问题解答

news/2024/11/24 11:36:02/

原文地址:http://blog.sina.com.cn/s/blog_402c071e0102v8gj.html 


 本文提供了 HMC5883L 磁力计 的 常见问题的解答,本文来自百度文库,欢迎交流,新浪长沙@WalkAnt。

HMC5883L常见问题解答

HMC5883L常见问题解答:本文来源于百度文库:

http://wenku.baidu.com/link?url=eDNpt5pwY5nzmez2HfAgFNg7il5rZKVKpywKcF8F9fvGAmiiSkRCCjxIBO7YZHK26GxyvAw1L0A59kpHjwzuOc6xWSoZPUD4KWjZj4fY_u7

 

1.  使用 HMC5883L 能不能不用加速度传感器就能计算出航向?

        是的,不用加速度传感器就可以计算出航向。但是,传感器必须保证是水平的,也就是,俯仰角与滚转角都为零。这样,在水平面上的的三个轴中只有两个会被用到。

 

2.  为什么需要加速度传感器?

        如果罗盘不是水平的,就需要加速度传感器来纠正由于倾斜引起的误差。或者,Honeywell提供了一体化解决方案HMC6343 作为另外一种选择。HMC6343 内置3 轴加速度传感器,具备倾斜补偿的航向输出,封装在 9×9×1.9mm 的芯片中。

 

3.  HMC5883L Set/Reset 回路所起到的作用是什么?

        该回路是 Honeywell 的专利设计,其在每次数据测量之前能够进行一个自动消磁的作用,以消除设备本身存在的 offset,从而实现传感器在一个“纯净”的磁场进行测试。

 

4.  HMC5883L 能够降低“噪音”干扰吗?

        是的,该款产品内部有取点取平均值的功能-它能够取值 2,4,8个点的读数进行平均后再输出从而降低“噪音”的影响并且不会对高频率的信号识别产生影响,在配置寄存器A(Configuration Register A)中设置。

 

5.  如何判定传感器的好坏?

        可以通过设置HMC5883L的寄存器以启动传感器self-test的功能从而实现对于传感器好坏的判定。

设置自测条件:Gain=5,正偏置模式,单一测量状态;

        获得数据结果:三轴所读取数据在 243到 575。

        (换算一下:gain=5,则对应390LSB/Ga。243LSB~575LSB对应0.623~1.474Ga,这是合理的地磁范围,否则不合理),通过“配置寄存器B” (Configuration Register B)来设置设备增益(Gain)。

  

6.  如果未设置 self-test 模块的启动,如何判定传感器的好坏?

        如果未进行自测,那么可以从传感器所采集的数据来进行分析但首先要将各个轴的 Gain 值进行调整测试采集,如果传感器一直所采集的数据接近为零,则说明该传感器已经损坏或者焊锡出现虚焊和假焊现象。

 

7.  如何判定HMC5883L 在 PCB 板上的位置是否可行的?

        将已经布局在板上的传感器采集到的原始数据转换为十进制的数据进行分析,看各轴数据的分布形状是否呈椭圆或者近似圆的分布。

 

8.  PCB layout时应该注意的方面有哪些?

        在传感器周围不应该有比较大的带磁物质或者通过大电流的线路,对于蜂鸣器以及含铁物件尽量保持比较远的距离。

        对于线宽间距设计建议如下:

    1. Bottom Layer –

        a. Increase the distance between HMC5883 and the adjacent components. If possible, keep at least 2~3 mm away.

        b. Route pin 2 VDD trace away from the sensor (>1mm away).

        c. Increase pin 10 to C1 cap trace width (~0.3 mm).

        d. Increase pin 8 and 12 to C2 trace width (~0.3 mm).

    2. Layer 9 –

        a. Re-route traces for VDDIO and Set/Reset to go around the sensor. There should be no current carrying trace directly under the sensor in any layer.

        b. If this is power or ground plane, remove copper area directly under the sensor. This is to reduce any possible current generated magnetic noise.

        c. If possible, re-route traces so that there is no via under directly the sensor. This is to reduce any possible current generated magnetic noise.

    3. Layer 5~8 –

        If this is power or ground plane, remove copper area directly under the sensor. This is to reduce any possible current generated magnetic noise.

    4. Layer 4 – 

        Re-route traces to go around the sensor. Same reason as9a.

    5. Layer 2~3 –

        Same as layer 5~8.

    6. Top Layer –

        Remove components and traces directly under the sensor. There should be no ferrous material and current carrying traces directly under the sensor in any layer.

 

9. HMC5883L 是否支持手动焊接?

        HMC5883L 并不推荐手工焊接,如必须使用,需注意下述两方面:

        1)锡膏最高温度不能超过 315℃,IC不能加热时间过长;

        2)如果IC未保持在持续的干燥环境下,那么在封装之前必须进行烘烤,因为IC对湿度比较灵敏(MSL3)。

        建议使用最高温度为 260℃的Reflow流程进行焊接。

 

10. HMC5883L 能够经历几次 Reflow制作?

        HMC5883L 能够承受在高温状况下,两到三次的 Reflow(前面和背面),如果板需要进行修理,那么它只能进行三次 Reflow翻修.

 

11. 如何确定 HMC5883L 的是否满量程?

        HMC5883L 在满量程的时,将反馈出的数据固定在“-4096”;因此如果传感器的数据输出为“-4096”时,则说明传感器已经满量程.

 

12. 造成不能对 HMC5883L 可读可写寄存器写入定义的数据是什么原因? 

        1)HMC5883L焊接不良;

        2)HMC5883L所要求线路连接的电容材料不匹配,建议使用瓷制电容或者选择最低的 ESR ,<200毫欧姆;

 

13. 移动电子设备在生产过程中,装配之后是不是需要校准?

        这个问题的答案取决于以下因素:

        a.  应用的精度要求。如果移动电子设备装配完后,航向精度不满足具体应用的要求,需要校准。

        b.  在最终组装后传感器附近的环境有多“纯净”,也就是说,含铁物质有多少,与传感器的距离有多远。如果有太多的磁干扰则需要校准。

        c.  电子设备运行时传感器附近是否有任何电流所产生的磁场以及该磁场强度有多大。如果在数据读取时传感器“感觉到”了磁场,则需要校准。

 

14. 如果需要,在生产过程中,推荐哪种校准程序?

        a.  在移动电子设备的生产过程中,最常见的程序是在最后一步装上亥姆霍兹线圈。另一种选择是在洁净的环境中利用地球的磁场,这样就不需要使用亥姆霍兹线圈,但要求移动设备在三个轴的每个轴上旋转。不管哪种程序都是将传感器的读取结果与已知的磁场进行比较,从而确定必要的校准系数并且将它们存储在固定存储器中。

        b.  如果整批移动电子设备的磁场特性分布图都是相似的,可能只需要从中挑选一个典型的电子设备进行校正,然后将同样的校准系数应用于所有的个体,可以预期得到同样的结果。

 

15. 消费者拿到设备后,初次使用时是否需要校准?

        一旦移动电子设备在工厂里校准过了,消费者就不需要再进行校准,除非该移动设备的磁场特性图发生了改变,如更换电池,长期暴露在磁体附近或者强电流中等等,也就是说之前的校准系数不再适用。

 

16. 如果需要,为消费者推荐哪种校准程序?

        用户校准,一般是需要用户自己将移动电子设备绕着 3 轴的每个轴各旋转360 度。整个过程应该不超过 30秒。这个程序是从 3维上的磁场特性图中取样来确定必要的校准系数并存储在固定存储器中。这是为大多数的移动设备应用推荐的校准程序,因为它的效果最好。

 

17. 在移动设备正在使用时消费者是否需要进行再校准?

        如果移动设备自身的磁场特性图有明显的变化,才需要再校准。

 

18. 用户在使用过程中,如何设定程序让其自动提示客户进行校准的动作?

        将一个圆周分成32 份,每一份的间隔角度为 11.25° ;这样需要保存在正常使用情况下的这32 个方位角度时的磁场值大小,当其中某些方位角度的磁场大小有9%的变化时,则需要提醒客户进行校准;当磁场变化大小达到20%以上,则需要提醒客户离开该场合使用.

 

19. 程序已经正确的按照所提供的校准方法进行编写,但是设备在一些方向的读数确固定不变,这可能产生的原因是什么呢?

        其产生的原因可能是由于 HMC5883L 周边的干扰特别大,造成其中轴的数据出现满程的现象,在这样的状况下,可以通过将 Gain 的范围进行更改调试。通过“配置寄存器B” (Configuration Register B)来设置设备增益(Gain)。

 

20. 如何判定 HMC5883L校准有效完成?

        1.为检查指向的精度, 就必须有存在一个参考的(已知指向精度)来进行比较.如果是作为工厂的校准,则建议使用一个能够进行 360度旋转的平台同时它的定位符合已知良好罗盘的磁北极.准确的精度能被测量出来(而不是计算)通过被校准的和已知的罗盘.否则,“精度”只能猜测。

        其中一个方法如下:

        a.360度旋转罗盘同时采集数据, 从采集的数据计算硬磁补偿,

                Xoffset = ( Xmin + Xmax )/2

                Yoffset = ( Ymin + Ymax )/2

        b.计算X和Y的弧度作为收集从旋转的整个数据集 如下.

                R1 = sqrt ( X12 + Y12 )

                R2 = sqrt ( X22 + Y22 )

                ……….

                Rn = sqrt ( Xn2 + Yn2 )

        c.计算所要求圆的“平均半径”使用下述:

                Rmean = ( R1 + R2 + ….. + Rn )/n

        d.在旋转过程中对于每一所收集的数据点, 查找它们与 Rmean 的差和单独的弧,并命名为Delta_1, Delta_2, …., Delta_n, etc.

                Delta_1 = R1 – Rmean

                Delta_2 = R2 – Rmean

                ……..

                Delta_n= Rn – Rmean

        e.找到均方差 RMS 值, 如 RMS = sqrt ( ((Delta_1)2  + (Delta_2)2 +  …..  +(Delta_n)2)/n) )

        f. 使用校准的数据,重复相同的步骤(a 到 e) 。

        g.对比两组的结果, 一个来自于校准旋转和另个来自于校准后的旋转.如果新的(校准后) Xoffset, Yoffset, 和 RMS value 接近于0,那么校准已经可以了,如果不是,则校准不成功。

 

        2.如果校准的目的是进行“三维空间”,如:包括三轴,那么务必确保 Z轴能够出现变化。如,从小到大。然而,包括水平(水平的)方向,一个必须要么关于旋转平板 X (或 Y) 轴或平板 90 度 (以便 z 轴是水平)和水平旋转,如果不想用手进行旋转(因为它比较大)。那么可以拿着它找到合适的位置再沿着小圆圈转自己的身体。因此,可按照下述建议进行: 

                a.水平拿着平板同时转动身体(以收集 X 和Y的数据)。

                b.转动平板90度(因此 Z轴水平)人再沿着圈转一圈以收集 Z轴数据。

 

 

21. 温度变化,怎样校正增益以及零偏漂移?

        a.  温度变化,对各向异性磁阻传感器(AMR传感器)产生的影响是“接近线性化”,简单的解决方法就是在温度差异的基础上在所有的磁场读取结果上应用一个综合的比例因子。这样内部的置位/复位一般将内部偏置减少了近 4μG。考虑到 HMC5883L 的杂音底层值(noise floor)比零偏漂移要高得多,因此零偏漂移可以忽略不计,因为它只能在原始传感器上测量。

        b.  借助Self Test自测的数据进行补偿。通过把 Self Test 的输出数据与已知的工作温度下的数据比较,可以定期地用Self Test 来确定比例因子。例如,如果 Self Test 输出在常温下是715,在当前的温度下是 730,那么比例因子(715/730)可应用于所有当前磁场数据结果。用这种方法时就无须使用温度传感器。

        c.  借用其他传感器自带的温度传感器进行补偿。如果设备里的其他传感器,如加速度,陀螺仪等需要温度补偿,那么在设备放置在多种温度值的情况下同时收集磁场传感器数据是有益的。用这种方法会得到更加精确的温度补偿。

 

22. 为什么磁场范围只有±6 或±8 高斯?对在移动设备上的罗盘应用是否足够?

        罗盘应用的目的就是为了测定地球磁场,大概只有 0.6高斯。标准的移动电子设备产生的杂散场一般很少超过 3高斯。如果传感器放置位置好,每个轴上的磁场范围可能均小于 1高斯。因此,重要的是要能够在这个范围内测量小的磁场以获得高解析度输出。如果传感器预设测定较大的磁场,如±20高斯,那么传感器的解析度和测量微小变化的能力会降低,除非 ADC 的尺寸/范围得到同样大小的增长,例如,16-bit 的ADC比12-bit的ADC,但传感器的成本也可能增加。

 

23. 对于 HMC5883L,当电源 ON而装置处于睡眠模式时,去启动测量模式(单一测量模式或连续测量模式),数据可以读取的准备时间需要多久?

        大约 8.3ms。请参考以下电流图。存储电容先充好电。(这个过程大约持续3ms,即使在存储电容完全没电的情况下,比如说首次开启电源)。然后内部ASIC 启动模拟函数并发送复位脉冲。ASIC 等待500μs让传感器,放大器和ADC 都稳定下来。然后进行第一次测量(X,Y,&Z三轴)。ASIC发送置位脉冲,在第二次测量前再等 500μs。这两次测量的差然后放置在输出寄存器上。DRDY脚降至低电平大概 2μs,这样RDY 位设置完成,两次数据也就意味着准备好了。

 

        关于如何设置 HMC5883偏移量( OffsetX 、 OffsetY),请查看本博客下一篇文章,里面提到一些稀奇古怪问题的处理。


http://www.ppmy.cn/news/754273.html

相关文章

HMC5883L磁力计使用

一、器件简介 HMC5883L是一款三轴磁场传感器&#xff0c;电子指南针罗盘模块。采用IIC通讯协议。 二、工作原理 传统罗盘用一根被磁化的磁针来感应地球磁场&#xff0c;地球磁场与磁针之间的磁力时磁针转动&#xff0c;直至磁针的两端分别指向地球的磁南极与磁北极。电子罗盘也…

HMC5883L 磁力计校准

原文地址&#xff1a; http://blog.sina.com.cn/s/blog_402c071e0102v8ie.html 这里针对 HMC5883L 磁力计 的校准&#xff0c;做一个简单讲解。欢迎交流&#xff0c;新浪长沙WalkAnt。 先看看这篇文章&#xff1a;http://blog.sina.com.cn/s/blog_8240cbef0101i7gn.html 如果磁…

基于DHT网络的BT磁力链蜘蛛源码

几年前研究大文件的下载分发&#xff0c;注意到了libtorrent这个非常完善的BT下载库&#xff0c;因此对BT相关协议也有了粗浅的了解。于是我用这个库提供的接口&#xff0c;实现了一个DHT的蜘蛛。 我把这个蜘蛛放到美国的不限制UDP和BT协议的虚拟机上&#xff0c;每天大概可以…

旅游卡系统招募城市合伙人

旅游业的不断发展&#xff0c;旅游卡系统作为一种新型的旅游消费模式也逐渐被越来越多的人所认可。现在&#xff0c;许多旅游卡系统开始招募城市合伙人&#xff0c;以进一步拓展其市场。 旅游卡系统是一种可以将不同景区、景点门票进行整合&#xff0c;并提供折扣优惠的旅游…

保姆级 雅特力AT32 MCU 从SRAM启动KEIL工程配置步骤(STM/GD/APM通用)

好记性不如烂笔头&#xff0c;既然不够聪明&#xff0c;就乖乖的做笔记&#xff0c;温故而知新。 本文档用于本人对知识点的梳理和记录。 一、前言 开发工具&#xff1a;KEIL 开发板&#xff1a;AT32F415 AT-START-F415 软件工程&#xff1a;雅特力BSP flash_wirte_read 点击…

泛型使用场景和例子

泛型是Java中的一种机制&#xff0c;它允许我们在编写类或方法时使用参数化类型。通过使用泛型&#xff0c;我们可以编写更加通用和类型安全的代码。 下面是一些使用泛型的常见场景和例子&#xff1a; 集合类&#xff1a;Java的集合框架中使用了泛型来增加类型安全性。例如&am…

KnowStreaming系列教程第一篇——安装和使用

KnowStreaming介绍 Know Streaming是一套云原生的Kafka管控平台&#xff0c;脱胎于众多互联网内部多年的Kafka运营实践经验&#xff0c;专注于Kafka运维管控、监控告警、资源治理、多活容灾等核心场景。在用户体验、监控、运维管控上进行了平台化、可视化、智能化的建设&#…

Unity的AssetPostprocessor之Model:深入解析与实用案例 2

Unity AssetPostprocessor中Model相关函数的实际应用 Unity AssetPostprocessor是Unity引擎中的一个重要功能&#xff0c;它可以在导入资源时自动一些脚本&#xff0c;以便对资源进行自定义处理。其中&#xff0c;Model相关的函数可以用于对导入的3D模型进行处理&#xff0c;包…