唐原广,贾彩惠,徐春玲
(1.中国海洋大学 工程学院,山东 青岛 266100;2.上海市机械工业学校,上海 200000)
电子罗盘校准方法的设计与实现
唐原广1,贾彩惠1,徐春玲2
(1.中国海洋大学工程学院,山东青岛266100;2.上海市机械工业学校,上海200000)
电子罗盘在波浪浮标中用于实时提供波浪浮标所处的方位。为解决嵌入了Matlab的电子罗盘校准系统可移植性差、过程繁杂、运行速度慢的问题,设计了新的校准系统。将由14位串行A/D转换器Max194从波高数据采集系统中获得的模拟信号转换成的数字信号接入到微控制器中,微控制器负责控制方位数据的采样频率和A/D转换芯片,再利用串口转换芯片将输出的电平信号转换成RS232信号,由计算机对此进行处理。该系统采用了绘图功能完备、处理速度出众、可移植性好的ProEssentials结合VC++来处理多功能方位测试台采集到的方位数据,并绘制成采样数据比较图和误差图,来直观地展现电子罗盘的误差情况。实验测试表明,该电子罗盘校准系统具有可移植性好、功耗低、稳定性强、运行速度快的特点。该校准系统已经广泛应用于波浪浮标、3 m浮标等的生产中。
电子罗盘;校准;VC++;ProEssentials
电子罗盘是利用地磁场来测量方位的,在静止或移动状态下均能给出方位信息,且不受高大阻挡物的影响[1]。但是电子罗盘本身存在一些误差,具体可以分为两类[2]:第一类是系统误差,包括制造误差、安装误差;第二类是由电子罗盘周围工作环境因素造成的误差,主要指罗差。正是由于这些误差的存在,在安装使用电子罗盘前,必须先对其进行校准。
本文简要说明电子罗盘的组成,重点介绍结合VC++和ProEssentials两者的优势开发出的能够实时采集、绘制方位采样数据图、无需安装的电子罗盘校准系统,该方法能够更直观、更快捷、更准确地对电子罗盘进行校准。
电子罗盘主要由HMC1002型磁阻传感器、放大、滤波电路、A/D转换器、微处理器等组成。如图1所示。
图1 电子罗盘框图
电子罗盘的核心器件HMC1002是小型集成电路封装(SOIC)的双磁场传感器。两个传感器的敏感方向互相垂直。传感器A感应与外封装长边方向平行的磁场,传感器B感应与外封装长边方向垂直且与表面平行的磁场[3]。
电子罗盘的基本工作流程如图2所示。
图2 电子罗盘工作流程
(1)首先电子罗盘系统进行初始化;
(2)初始化串口芯片之后,由定时器1控制数据采集系统的采样间隔,进行数据采集;
(3)将采集到的方位数据进行滤波去掉干扰量后再放大;
(4)A/D转换器将采集到的模拟量转换成数字量;
(5)将得到的数字量由串口发送到计算机中。
校准实验进行数据采集前,要先在电子罗盘的输出上接一个四位的显示器,然后由水平尺调整测试台使台面水平(注意此时应保持测试台周围1 m范围内无铁磁物质,否则会影响磁场),选定电子罗盘的输出零点与正北方向一致,以它们的交点作为基准点,以基准点处的数据显示为刚过0°为佳,将电子罗盘固定在方位测试台上。
数据采集时顺时针旋转测试台的罗盘,每旋转1°改变MSComm控件的DSRHolding属性,发送数据传输信号,程序在所在方位上进行10次采样。计算机自动对10个数据进行分析并记录下10个数据的平均值作为电子罗盘此位置的方位数据,测试台旋转每一周后,记录下360个数,并保存数组中。
本设计由界面设计良好、数据处理功能强大的VC++对采样数据进行接收与处理;由绘图功能完备、处理速度出众、可移植性好的ProEssentials绘制采样数据图和误差分析图。
该系统主要负责接收实验采集到的方位数据并进行存储、计算、分析、绘图、误差处理,其中绘图功能主要通过ProEssentials实现,并将方位数据以标准格式制成汇编代码自查表植入单片机存储芯片内,由单片机对电子罗盘进行校准。具体的实现流程如图3所示。
图3 程序流程图
3.1串口通信的实现
界面开发时,用VC++创建一个基于对话框的工程,串口通信采用 Visual C++2008中提供的MSComm控件来实现,MSComm控件通过串行端口传输和接收数据,为程序提供串行通讯功能,在编程时非常方便,不必花时间去了解复杂的API函数[4]。
MSComm控件提供了2种处理通信问题的方法:(1)事件驱动方式;(2)查询方式[5]。事件驱动方式相当于一般程序设计中的中断方式,当串口发生事件或者错误时,MSComm控件将激发OnComm事件,而应用程序在捕获事件后,通过检查MSComm控件的CommEvent属性获得所发生的事件或者错误。事件驱动方式可靠性高,程序响应及时[6]。本文将采用事件驱动方式来实现串口通信。
3.2数据接收与保存
方位旋转测试台每转动1°计算机启动定时器1,延时100 ms后改变MSComm控件的DSRHolding属性,发送数据传输信号,在该方位上进行10次采样,采样结束后关闭定时器1。计算机自动对10个数据进行分析,将其平均值作为电子罗盘此位置的方位数据。计算机接收方位数据的同时启动定时器2,该定时器每400 ms触发一次,不断刷新数据显示区的数据显示。10个数据接收完成后,关闭定时器2,停止数据显示区的数据刷新。用 MFC的CStringArray类创建动态数组,存储采集到的方位数据。
3.3基于ProEssentials的图像绘制
图像显示是本设计的主要功能之一,显示的准确、可靠、快速都直接关系着实验效率。在这一部分功能设计中,需要从准确性、高效性、美观性入手实现高质量图像绘制。
VC++可以直接通过底层代码实现图像的绘制,也可以选择调用外部控件进行绘图。考虑之前的嵌入了Matlab的电子罗盘校准系统可移植性差、安装步骤多、过程繁杂、运行速度慢的问题,该设计的图像绘制功能主要通过结合ProEssentials控件实现,在ProEssentials这款软件的基础功能上进行二次开发。
ProEssentials对图像绘制以及分析功能使用的数据和方法进行了封装,提供NET(WinForm)、DLL、ActiveX、VCL等的开发接口[7]。可以方便地在MFC应用程序中使用ProEssentials强大的图形绘制功能和数据分析功能。
ProEssentials提供了丰富的曲线绘制功能,使用者可以根据具体的需求选择合适的曲线显示类型,进而选择对应的函数来完成曲线的绘制。ProEssentials提供的程序代码中使用了大量封装函数以及自定义变量,每一个函数和属性变量,都可以在ProEssentials的用户帮助手册中找到意义以及使用方法,就像MSDN一样十分方便。MFC结合ProEssentials实现图像绘制功能的基本步骤如下:
(1)在软件工程中添加Pegraphi.h文件,添加PEGRAP32C.lib为附加依赖项。
(2)在ProEssentials找到需要的图像实例,复制对应代码到软件需要实现图形绘制功能的位置。在软件中声明相关变量。
(3)通过具体的算法获得图像中需要绘制的各个点的坐标并通过函数进行设置。
(4)根据软件实际绘图需求,通过代码修改图像属性参数,绘制图形并更改图像的视觉效果。
(5)软件运行过程中,还可以通过属性配置窗口实现对图像属性的再次修改。
为了使用ProEssentials提供的图形绘制功能,首先将Pegraphi.h文件添加到工程中,然后在项目属性“附加依赖项”中对应位置添加“PEGRAP32C.lib”。
利用VC++计算采集到的3组方位数据的平均值与标准值之间的差作为第4个数组。ProEssentials可以直接读取4个数组中的数据,合理布局绘制采样数据比较图(如图4所示)及误差曲线图(如图5所示)。
图4 采样数据比较图
图5 原始误差曲线图
通过采样比较图和误差图可以直观地看到实验数据情况,了解实验操作是否存在明显错误,两者却是很重要的。如果误差很大,超过6°;或者误差曲线不是双曲线,可能是电子罗盘固定时选择的位置不佳,或者实验操作不规范,在此情况下必须重新进行实验。
3.4误差的处理
为了减少误差,进行3次采样,得到3个数组。然后利用VC++对数据进行计算处理,得到采样值与标准值之间的误差。
单片机中输入输出的数据是二进制形式,为了植入单片机修正程序对误差进行修正,现在利用VC++程序对读取误差表的数据,并做进一步的处理,形成可直接植入单片机的汇编代码自查表,这样就不再需要大量人工操作与计算,可以有效减少劳动量、降低错误率、提高工作效率。对误差表处理后得到可植入单片机的汇编代码自查表。
将上述方法得到的汇编代码自查表植入电子罗盘的单片机存储芯片内,由单片机对自动进行校正,理论上校正后的电子罗盘可以准确地测出方位角值。为了验证校正测试的可靠性,按照之前的测试过程对校准后的电子罗盘重新进行测试实验,可得出如图6的所示的误差曲线。通过误差曲线来直观地判断校准结果的准确性。如果曲线误差小且稳定,没有异常,说明校准实验很成功,电子罗盘可以直接安装使用;相反,如果曲线误差仍然很大,或者在某些点处误差依然很大,那么实验可能出现了问题,必须重新进行校准。
图6 校准后的误差曲线
图5为实验室中电子罗盘校准前的误差曲线图,图6则为同一传感器实验校准后的误差曲线图。通过对比可以发现,校准前的电子罗盘的最大误差在5°左右,显然这个误差范围过大不能满足科研要求,而校准后的电子罗盘误差基本保持在±0.5°以内。校准实验明显地减少了电子罗盘的误差。对科研来说校准后的误差范围是可以被允许的,已经基本能够满足系统的性能要求,可以更加精确地提供波浪浮标所处的方位,与浮标中的波浪传感器同步测量,通过浮标中的数据处理机计算出波浪的传播方向。
本文介绍了电子罗盘的组成和校准方法。电子罗盘的准确度、精确度、稳定性能否符合标准,对浮标传感器系统是至关重要的。新的电子罗盘校准方法中采集数据的分析、处理、绘图、误差计算、汇编代码自查表的生成都是由上位机自动完成,使检测工作更加智能化、更加快捷,校准结果更加准确,ProEssentials的使用简化了实验的过程,无需再生成txt文件,实验数据直接保存在数组中,简化了数据的保存和读取,占用内存小、运行速度快,ProEssentials绘图程序更加简单,实验结果曲线更加美观;另外软件可移植性好,程序使用范围广。该设计方案已应用于波浪浮标的生产测试中,取得了良好的效果。
[1]唐原广,王金平.SZF型波浪浮标系统[J].海洋技术,2008,27(2):31-33.
[2]刘诗斌.微型智能磁航向系统研究[D].西安:西北工业大学,2001.
[3]凡春芳,焦国太.基于磁阻传感器的磁探测系统设计[J].弹箭与制导学报,2008(02):134-135.
[4]晁永生,樊军,申晓萍,等.浅谈Visual C++串口通信编程[J].科技广场,2007(1):71-73.
[5]吉翔,李永全.VC++下MSComm控件的串口通信方法[J].电脑开发与应用.2009(12):34-35.
[6]张筠莉,刘书智.Visual C++串口通信与工程应用篇[M]北京:中国铁道出版社,2009.
[7]刘如九,张振山,凌朔怡,等.采用ProEssentials实现工业监控软件中的趋势图[J].工业控制计算机,2006,19(8):42-44.
[8]张峰,丁永刚.采用ProEssentials实现工业生产数据图形化显示[J].软件导刊,2009,8(8):180-182.
Design and Implementation of Electronic Compass Calibrating Method
TANG Yuan-guang1,JIA Cai-hui1,XU Chun-ling2
1.College of Engineering,Ocean University of China,Qingdao 266100,Shandong Province,China;
2.Shanghai Machinery Industry School,Shanghai 200000,China
Electronic compass is used to provide the real-time position of the wave buoy.A new calibration system is designed to solve the problems of the electronic compass calibration system with Matlab,like poor portability,complex process and low speed.Analog signals received from the wave height data acquisition system by Max194,the 14 serial A/D converter,are converted into digital signals accessing to micro controller which is responsible for controlling the sampling frequency of azimuth data and A/D conversion chip.Then the serial conversion chip is used to convert outputting level signals into RS232 signals,which is processed by computer.The azimuth data processing is implemented by VC++which is expert in interface design and data processing.The error is showed directly by ProEssentials through drawing sampling data comparison chart and error chart.The ProEssentials is sound in graphics,superior in processing speed and favorable in portability.Experimental tests show that the electronic compass calibration system has good portability,low power consumption,high stability and fast operating speed.The electronic compass calibration method has been widely applied in the production of wave buoys and 3-m buoys.
electronic compass;calibration;VC++;ProEssentials
TP212.9
A
1003-2029(2016)01-0046-05
10.3969/j.issn.1003-2029.2016.01.007
2015-04-15
国家高技术研究发展计划(“863”计划)资助项目(2006AA09Z150)
唐原广(1963-),男,教授,主要从事海洋监测技术波浪浮标方向研究。E-mail:tangrenone@126.com