封维忠,杨 丽,何君君
(南京林业大学信息与科学技术学院,江苏南京210037)
地磁场成形于地球内部的磁物质.地磁场的强度根据位置的不同而在0.4×10-4~0.6×10-4T之间变动.它的分布状态类似于棒磁铁,磁场线从地球南极指向北极.磁极与地理极不一致,磁极根据地轴旋转来定义,磁极与地轴间的角度大约为11.5°.电子指南针被广泛的运用于导航设备中,所以寻求集成度高、且在地磁场强度范围敏感的传感器一直是设计高精度、使用方便的电子指南针需要解决的问题.近年来,国际上许多公司相继推出了基于磁阻效应(MR)[1-2]和巨磁效应(GMR)[3]的磁敏传感器芯片,本文采用无锡美新公司生产的MMC212xMG双轴磁传感器设计了高精度电子指南针.由于该芯片是带有片上信号处理并集成了I2C总线的完整的传感系统,允许设备直接与微处理器相连而不需要A/D转换器或定时器.它可以测量±2×10-4T的磁场范围,用MMC212xMG双轴磁传感器设计的电子指南针具有芯片外围电路简单、功耗低、体积小的特点.
各向异性磁阻传感器[4](AMR)是一种由沉淀在硅晶片上的导磁合金薄膜制成的特殊电阻.在制造过程中,用一强磁场施加在薄膜上,使得其磁畴与外磁场在同一方向上,建立磁化矢量.当被测磁场垂直地加在薄膜的边缘上导致磁畴旋转和改变角度,这个改变又导致薄膜的电阻发生变化.该AMR传感器被包含在惠斯登电桥中,这样电阻的变化可由差动电压的变化检测,并且可以测量所加磁场的强度.然而沿晶片磁化轴大于5.5×10-4T的外磁场可能会使磁畴倒置,从而改变传感器特性.所以这时必须使用一个瞬时的强大修复磁场来恢复传感器特性.该MEMSIC磁传感器有一个片上的磁耦合线圈用来提供修复磁场.
各向异性磁阻传感器MMC212xMG是双轴磁传感器,其结构见图1[1],是带有片上信号处理并集成了I2C总线的完整的传感系统,允许设备直接与微处理器相连而不需要A/D转换器或定时器.它可以测量±2×10-4T的磁场范围,并在25℃,3 V时灵敏度为512×104计数/T.
图1 MMC212xMG结构框图
图2是地球某一点的地球磁场向量He的三维图[5](X Y平面与地球表面平行,Z轴垂直向下),电子指南针的基本任务就是测量He在X Y平面的投影Heh与HeX的夹角,即方位角α.从图2可知α=arctan(HeY/HeX),因此,用磁敏传感器分别测出HeY和HeX,就可以由上式算出方位角α,整个系统的方案设计图如图2所示.
图2 地球磁场向量
I2C是一个工业标准双向双线接口总线,总线上的每个外围设备都有一个设备地址,主I2C器件通过设备地址可以对外围设备进行读写操作.I2C总线是由数据线SDA和时钟线SCL构成的串行总线,可发送和接收数据.开始数据传送时,总线必须是空闲的,此时2条总线是一个高电平状态.I2C电路从属模式已经被植入此MEMSIC传感器,并作为标准接口被客户应用.
使用AT89C52单片机作为主控制器[6],由于此单片机本身没有I2C总线接口,所以采用I/O口P1.0和P1.1来分别虚拟I2C总线的数据线SDA和时钟线SCL.采用MMC2120M082858磁传感器芯片,对应的7位设备地址为0110000.为了避免地址冲突,在同一总线上的磁传感器设备在出厂时就有4种可编程地址(0110**0).硬件电路如图3所示.磁传感器3脚VDA为电路和传感器提供输入电压,直流电压应该在2.7~5.25 V之间;7脚VDD为I2C总线提供输入电压,通常为1.8 V并可兼容1.62~5.25 V.C2和C3为外加陶瓷电容,用于磁传感器的置位/复位操作.R1和R2为上拉电阻结构,实现与运算.注意I2C总线的频率一定要小于400 kHz.数据传送开始时有开始信号,结束时有结束信号.开始信号定义为当SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据.结束信号定义为当SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据.在I2C系统中所有传送的数据都是8位的,每个字节后必须跟上一个确认位,每个数据的传送需要9个时钟周期.数据传送开始于MSB,在开始信号后,单片机通过7位设备地址0110000调用磁传感器数据.在7位地址之后,第8位是决定数据传送方向,“1”表示主设备从所选择的磁传感器设备中读出信息,“0”则表示主设备把信息写入到所选择的磁传感器设备中.接着磁传感器需给SDA线一个低电平作为确认信号.为了读出磁传感器中的信号,单片机需要向磁传感器的8位内部寄存器(00H)中写入代码01H,表示读出磁传感器信息的唤醒操作.磁传感器收到读命令后就开始把8位数据传送到I2C总线上.收到主设备发过来的确认信号后,磁传感器就继续传送下个字节数据.重复相同的过程直至4个字节的数(MSBX轴,LSBX轴,MSB Y轴,LSBY轴)都被传送到主设备为止.
图3 指南针硬件电路图
根据磁传感器的I2C总线的时序要求编写程序.在执行开始测量指令之前,一定要给磁传感器至少50μs的时间去完成置位/复位操作.置位/复位线圈的流程图如图4所示.在置位/复位线圈的流程的第3个周期,单片机向磁传感器的内部寄存器写入02H表示是启动置位命令,或写入04H表示是启动复位命令.然后进入测量操作,读出磁传感器输出的X轴和Y轴的值.测量过程主要分为两大步:第一步是磁传感器的唤醒操作,第二步是单片机发读命令读入磁传感器发送的数据.唤醒操作过程是单片机首先向磁传感器发送写入命令60H,接着单片机向磁传感器发送写入的目标寄存器地址00H,最后发送要写入的命令01H.唤醒操作完成后单片机向磁传感器发送61H读命令进入第二步,单片机开始接收磁传感器发送过来的数据.
图4 置位/复位流程图
我们从磁传感器直接读出的X轴和Y轴的值HX和HY均是非负值.因为这个磁传感器芯片没法输出负值,所以芯片输出值是将X轴和Y轴的真实值加上一个固定偏移Offset,所以输出的X轴和Y轴的真实值等于芯片输出值减Offset,Offset理论值为2 048.由于磁传感器周围存在磁干扰(硬磁干扰、软磁干扰),使得所测的当地磁场是当地的地磁场和当地的干扰磁场的矢量和.为了提取所要测量的当地地磁场,还需要进一步校准程序.校准的方法是在测量之前水平将磁传感器旋转1圈,得到X Y轴的最大最小值HXmax,HXmin和HYmax,HYmin,从而求出以下几个参量的真实值:
Sensitivity是灵敏度,理论值是512×104T,但是实际情况中2个轴的灵敏度是有差别的.HXcal和HYcal就是校正后消除灵敏度影响的真实值.然后根据公式α=arctan(HYcal/HXcal)求出方位角,并进行角度处理,把角度扩展到0~360°,最后进行数值转换,十进制数送显示缓冲区显示相应角度.单片机程序采用Keil C[7]编程,程序流程图如图4~5所示.
图5 测量流程图
设某地地磁场强度He=0.5×10-4T,方向与地磁传感器X轴重合,α=arctan(HeY/HeX)=0,当地磁传感器X轴与地磁场方向偏转1°时,ΔHeY=HesinΔ α=8.72×10-3,MMC2120地磁传感器的分辨率为1×10-4T/512计数,最小检测量M=1.95×10-7T,考虑到测量系统的最大误差为±1个计数,故该地磁传感器的分辨角小于0.5°.以上的误差分析的条件是传感器的X-Y轴平面与水平面平行,考虑一般情况,该系统的误差应小于1°.如果要近一步提高其测量精度,必需同时测量出地磁场He的X,Y,Z分量,来计算地球磁场的HeX和HeY(水平平面中)方向的分量[5].
电子指南针电路经系统调试后,进行了实际测量.东南西北4个方向对应的角度分别为:91°,180°,270°和1°,所以结果 显示存在±1°的误差在合理范围内.结果表明本文设计达到了预定的要求.
[1] 林继鹏,王君,凌振宝,等.HMC1001型磁阻式传感器及应用[J].传感器技术,2002,21(3):51-52.
[2] 王国余,张欣,景亮.新型磁阻传感器在地磁场测量中的应用[J].传感器技术,2002,21(10):43-45.
[3] 汤玉林,李俊文,瞿光杰.利用GMR效应的电子指南针[J].数字采集与处理,2005,20(3):342-345.
[4] 裴轶,虞南方,刘奇,等.各向异性磁阻传感器的原理及应用[J].仪表技术与传感器,2004,(8):26-28.
[5] 朱学斌.基于MAX155和KMZ52的电子指南针的实现[J].鲁东大学学报,2006,22(4):300-302.
[6] 李广弟,朱月秀.单片机基础[M].北京:北京航空航天大学出版社,2001.
[7] 谢维成,杨加国.单片机原理及C51程序设计[M].北京:清华大学出版社,2006.
[8] 胡修林,余凯军,杨奇.高精度电子指南针的设计与实现[J].计算机与数字工程,2007,35(1):157-159.