您的位置首页生活百科

关于地磁传感器的一点看法

关于地磁传感器的一点看法

的有关信息介绍如下:

关于地磁传感器的一点看法

地磁传感器(HMC5883) 在一些运动系统中,有时需要进行精确的方向控制,虽然测量方向的方法 有多种,但最便利、通用性最强的还是测量地球的磁场。利用地磁作为参考, 通过传感器测量出与地磁线之间的夹角就可以得到方位角的数据,从而实现精确的方向控制。这里就来讨论一下地磁传感器(又称为数字罗盘或电子罗盘) 及其使用方法。 常用的地磁传感器主要有FreeScale(飞思卡尔)的MAG 系列和 Honeywell(霍尼韦尔)的HMC 系列,下面就以市场上常见的Honeywell 的 HMC5883 的地磁传感器来进行讨论。 HMC5883 是一种表面贴装的高集成度、带有IIC 数字接口的弱磁传感器芯 片。它内含有最先进的高分辨率HMC118X 系列磁阻传感器,并附带霍尼韦尔 专利的集成电路(包括有放大器、自动消磁驱动器和偏差校准等),具有12 位 模数转换器能使罗盘精度控制在1°~2°之间。霍尼韦尔的磁传感器在低磁场 传感器行业中是灵敏度最高和可靠性最好的传感器。其测量范围能从毫高斯到 8 高斯(gauss)。HMC5883 的工作电压在2.16V~3.6V 之间,典型为3.3V。虽然工作电压为 低电压方式,但数据端口的电压可通过VDDIO 口来指定,因此它与单片机的 接口有两种方式,一种是单片机为5V 方式,一种是单片机为3.3V 方式,。 对于HMC5883 的电气参数及特性请参看其管方的数据手册,这里只讨论如何应用HMC5883 来获取地磁数据。由于对模块的控制一般都是通过写相应的寄存器来实现的,所以先来了解一下HMC5883 的寄存器情况。在HMC5883 的内部一共有12 组寄存器,其中用于存放X、Y 、Z三轴数据的寄存器有6 个,余下的6 个是控制类寄存器。 和所有的IIC 总线器件一样,HMC5883 也有一个器件的固定地址,根据其数据手册,出厂时默认HMC5883 的从机地址为 0x3C(写入方向),或0x3D(读出方向)。 同时,为了尽量减少与单片机之间的通信,HMC5883 可在无主机干预下自动更新其地址指针。指针更新有两条原则,一是若访问的地址是12(即识别寄存器C)或以上的地址时,指针会更新至地址00(即自动返回到开头),二是若访问的地址达到8(即Y 的LSB 寄存器)时,指针会回滚到地址03(即X 的MSB 寄存器)。这要做的好处显而易见,因为地址03~0 8 存放的是要反复读取的数据测量值,所以读取时地址指针自动在此循环,就可减小大量的重新设定地址的代码,提高访问效率。 同其它IIC 器件一样,要让地址指针移动到一个指定的寄存器地址,首先要对该寄存器地址发出写的指令,之后再跟一个地址位。例如要让地址指针指向寄存器10,发出的指令为0 x3C(写入方向)0 x0A(即地址10 )。 配置寄存器A(地址 00)主要是用来设置输出采样平均数、输出速率和测量配置位等相关参数,对于常规应用可取其默认值(采样平均数8,输出速率15Hz,正常测量配置),不用去改动它。若实在要改,可详细参阅管方的数据手册。 配置寄存器B(地址01 )主要是用来设置增益的,对于常规应用也可取其默认值,不用去改动它。若实在要改,可详细参阅管方的数据手册。 模式寄存器(地址0 2)是用来选择HMC5883 的工作模式的,它一共有三种工作模式,即连续测量模式(最后两位为00)、单次测量模式(最后两位为01)和空闲模式(最后两位为1 0 或11)。默认是单次测量模式,一般需要把它改为连续测量模式。更改时只需要把该寄存器的最后两位改为 00 即可。 状态寄存器(地址0 9)主要是用来提供器件当前的状态。它只有最后两位有效,最后一位是准备就绪位,只有在准备就绪置位后才能对器件进行操作。倒数第二位是数据输出寄存器锁存位,当该位被置位时,任何的测量数据都不会被更新,直到测量数据被读取。一般常规应用可通过适当的延时来进行读取, 而不必读取该寄存器的状态,除非在读取的频率很高时才考虑读取此寄存器的状态。 识别寄存器A(地址 10)到识别寄存器C(地址12)这里用不到,就不讨论了,需要的请自行阅读数据手册。 其时HMC5883 还有其它一些实用的功能,比如能够进行自我检测,它自身配备了自测功能模块,利用激励传感器偏移带产生一个待测的标称磁场强度来进行自我检测,以证明其好坏。此外还有比例因数的校准功能,它可以补偿周围磁场产生的干扰,以得到精确的地磁测量值。 下面就以一个例子来看一下HMC5883 的具体应用。 例子:利用单片机读取来自HMC5883 的地磁数据,并把它转换为与正南方的夹角数据,通过LCD16 02 显示出来。 单片机用ATMega16,与HMC5883 的接法采用5V 的方式。HMC5883 的SDA、SCL端分别接到ATMega16 的 TWI 端(PC1、PC0),LCD1602 的接法与前面的一致。