唐原廣,賈彩惠,徐春玲
(1.中國海洋大學 工程學院,山東 青島 266100;2.上海市機械工業(yè)學校,上?!?00000)
電子羅盤校準方法的設計與實現(xiàn)
唐原廣1,賈彩惠1,徐春玲2
(1.中國海洋大學工程學院,山東青島266100;2.上海市機械工業(yè)學校,上海200000)
電子羅盤在波浪浮標中用于實時提供波浪浮標所處的方位。為解決嵌入了Matlab的電子羅盤校準系統(tǒng)可移植性差、過程繁雜、運行速度慢的問題,設計了新的校準系統(tǒng)。將由14位串行A/D轉換器Max194從波高數(shù)據采集系統(tǒng)中獲得的模擬信號轉換成的數(shù)字信號接入到微控制器中,微控制器負責控制方位數(shù)據的采樣頻率和A/D轉換芯片,再利用串口轉換芯片將輸出的電平信號轉換成RS232信號,由計算機對此進行處理。該系統(tǒng)采用了繪圖功能完備、處理速度出眾、可移植性好的ProEssentials結合VC++來處理多功能方位測試臺采集到的方位數(shù)據,并繪制成采樣數(shù)據比較圖和誤差圖,來直觀地展現(xiàn)電子羅盤的誤差情況。實驗測試表明,該電子羅盤校準系統(tǒng)具有可移植性好、功耗低、穩(wěn)定性強、運行速度快的特點。該校準系統(tǒng)已經廣泛應用于波浪浮標、3 m浮標等的生產中。
電子羅盤;校準;VC++;ProEssentials
電子羅盤是利用地磁場來測量方位的,在靜止或移動狀態(tài)下均能給出方位信息,且不受高大阻擋物的影響[1]。但是電子羅盤本身存在一些誤差,具體可以分為兩類[2]:第一類是系統(tǒng)誤差,包括制造誤差、安裝誤差;第二類是由電子羅盤周圍工作環(huán)境因素造成的誤差,主要指羅差。正是由于這些誤差的存在,在安裝使用電子羅盤前,必須先對其進行校準。
本文簡要說明電子羅盤的組成,重點介紹結合VC++和ProEssentials兩者的優(yōu)勢開發(fā)出的能夠實時采集、繪制方位采樣數(shù)據圖、無需安裝的電子羅盤校準系統(tǒng),該方法能夠更直觀、更快捷、更準確地對電子羅盤進行校準。
電子羅盤主要由HMC1002型磁阻傳感器、放大、濾波電路、A/D轉換器、微處理器等組成。如圖1所示。
圖1 電子羅盤框圖
電子羅盤的核心器件HMC1002是小型集成電路封裝(SOIC)的雙磁場傳感器。兩個傳感器的敏感方向互相垂直。傳感器A感應與外封裝長邊方向平行的磁場,傳感器B感應與外封裝長邊方向垂直且與表面平行的磁場[3]。
電子羅盤的基本工作流程如圖2所示。
圖2 電子羅盤工作流程
(1)首先電子羅盤系統(tǒng)進行初始化;
(2)初始化串口芯片之后,由定時器1控制數(shù)據采集系統(tǒng)的采樣間隔,進行數(shù)據采集;
(3)將采集到的方位數(shù)據進行濾波去掉干擾量后再放大;
(4)A/D轉換器將采集到的模擬量轉換成數(shù)字量;
(5)將得到的數(shù)字量由串口發(fā)送到計算機中。
校準實驗進行數(shù)據采集前,要先在電子羅盤的輸出上接一個四位的顯示器,然后由水平尺調整測試臺使臺面水平(注意此時應保持測試臺周圍1 m范圍內無鐵磁物質,否則會影響磁場),選定電子羅盤的輸出零點與正北方向一致,以它們的交點作為基準點,以基準點處的數(shù)據顯示為剛過0°為佳,將電子羅盤固定在方位測試臺上。
數(shù)據采集時順時針旋轉測試臺的羅盤,每旋轉1°改變MSComm控件的DSRHolding屬性,發(fā)送數(shù)據傳輸信號,程序在所在方位上進行10次采樣。計算機自動對10個數(shù)據進行分析并記錄下10個數(shù)據的平均值作為電子羅盤此位置的方位數(shù)據,測試臺旋轉每一周后,記錄下360個數(shù),并保存數(shù)組中。
本設計由界面設計良好、數(shù)據處理功能強大的VC++對采樣數(shù)據進行接收與處理;由繪圖功能完備、處理速度出眾、可移植性好的ProEssentials繪制采樣數(shù)據圖和誤差分析圖。
該系統(tǒng)主要負責接收實驗采集到的方位數(shù)據并進行存儲、計算、分析、繪圖、誤差處理,其中繪圖功能主要通過ProEssentials實現(xiàn),并將方位數(shù)據以標準格式制成匯編代碼自查表植入單片機存儲芯片內,由單片機對電子羅盤進行校準。具體的實現(xiàn)流程如圖3所示。
圖3 程序流程圖
3.1串口通信的實現(xiàn)
界面開發(fā)時,用VC++創(chuàng)建一個基于對話框的工程,串口通信采用 Visual C++2008中提供的MSComm控件來實現(xiàn),MSComm控件通過串行端口傳輸和接收數(shù)據,為程序提供串行通訊功能,在編程時非常方便,不必花時間去了解復雜的API函數(shù)[4]。
MSComm控件提供了2種處理通信問題的方法:(1)事件驅動方式;(2)查詢方式[5]。事件驅動方式相當于一般程序設計中的中斷方式,當串口發(fā)生事件或者錯誤時,MSComm控件將激發(fā)OnComm事件,而應用程序在捕獲事件后,通過檢查MSComm控件的CommEvent屬性獲得所發(fā)生的事件或者錯誤。事件驅動方式可靠性高,程序響應及時[6]。本文將采用事件驅動方式來實現(xiàn)串口通信。
3.2數(shù)據接收與保存
方位旋轉測試臺每轉動1°計算機啟動定時器1,延時100 ms后改變MSComm控件的DSRHolding屬性,發(fā)送數(shù)據傳輸信號,在該方位上進行10次采樣,采樣結束后關閉定時器1。計算機自動對10個數(shù)據進行分析,將其平均值作為電子羅盤此位置的方位數(shù)據。計算機接收方位數(shù)據的同時啟動定時器2,該定時器每400 ms觸發(fā)一次,不斷刷新數(shù)據顯示區(qū)的數(shù)據顯示。10個數(shù)據接收完成后,關閉定時器2,停止數(shù)據顯示區(qū)的數(shù)據刷新。用 MFC的CStringArray類創(chuàng)建動態(tài)數(shù)組,存儲采集到的方位數(shù)據。
3.3基于ProEssentials的圖像繪制
圖像顯示是本設計的主要功能之一,顯示的準確、可靠、快速都直接關系著實驗效率。在這一部分功能設計中,需要從準確性、高效性、美觀性入手實現(xiàn)高質量圖像繪制。
VC++可以直接通過底層代碼實現(xiàn)圖像的繪制,也可以選擇調用外部控件進行繪圖??紤]之前的嵌入了Matlab的電子羅盤校準系統(tǒng)可移植性差、安裝步驟多、過程繁雜、運行速度慢的問題,該設計的圖像繪制功能主要通過結合ProEssentials控件實現(xiàn),在ProEssentials這款軟件的基礎功能上進行二次開發(fā)。
ProEssentials對圖像繪制以及分析功能使用的數(shù)據和方法進行了封裝,提供NET(WinForm)、DLL、ActiveX、VCL等的開發(fā)接口[7]??梢苑奖愕卦贛FC應用程序中使用ProEssentials強大的圖形繪制功能和數(shù)據分析功能。
ProEssentials提供了豐富的曲線繪制功能,使用者可以根據具體的需求選擇合適的曲線顯示類型,進而選擇對應的函數(shù)來完成曲線的繪制。ProEssentials提供的程序代碼中使用了大量封裝函數(shù)以及自定義變量,每一個函數(shù)和屬性變量,都可以在ProEssentials的用戶幫助手冊中找到意義以及使用方法,就像MSDN一樣十分方便。MFC結合ProEssentials實現(xiàn)圖像繪制功能的基本步驟如下:
(1)在軟件工程中添加Pegraphi.h文件,添加PEGRAP32C.lib為附加依賴項。
(2)在ProEssentials找到需要的圖像實例,復制對應代碼到軟件需要實現(xiàn)圖形繪制功能的位置。在軟件中聲明相關變量。
(3)通過具體的算法獲得圖像中需要繪制的各個點的坐標并通過函數(shù)進行設置。
(4)根據軟件實際繪圖需求,通過代碼修改圖像屬性參數(shù),繪制圖形并更改圖像的視覺效果。
(5)軟件運行過程中,還可以通過屬性配置窗口實現(xiàn)對圖像屬性的再次修改。
為了使用ProEssentials提供的圖形繪制功能,首先將Pegraphi.h文件添加到工程中,然后在項目屬性“附加依賴項”中對應位置添加“PEGRAP32C.lib”。
利用VC++計算采集到的3組方位數(shù)據的平均值與標準值之間的差作為第4個數(shù)組。ProEssentials可以直接讀取4個數(shù)組中的數(shù)據,合理布局繪制采樣數(shù)據比較圖(如圖4所示)及誤差曲線圖(如圖5所示)。
圖4 采樣數(shù)據比較圖
圖5 原始誤差曲線圖
通過采樣比較圖和誤差圖可以直觀地看到實驗數(shù)據情況,了解實驗操作是否存在明顯錯誤,兩者卻是很重要的。如果誤差很大,超過6°;或者誤差曲線不是雙曲線,可能是電子羅盤固定時選擇的位置不佳,或者實驗操作不規(guī)范,在此情況下必須重新進行實驗。
3.4誤差的處理
為了減少誤差,進行3次采樣,得到3個數(shù)組。然后利用VC++對數(shù)據進行計算處理,得到采樣值與標準值之間的誤差。
單片機中輸入輸出的數(shù)據是二進制形式,為了植入單片機修正程序對誤差進行修正,現(xiàn)在利用VC++程序對讀取誤差表的數(shù)據,并做進一步的處理,形成可直接植入單片機的匯編代碼自查表,這樣就不再需要大量人工操作與計算,可以有效減少勞動量、降低錯誤率、提高工作效率。對誤差表處理后得到可植入單片機的匯編代碼自查表。
將上述方法得到的匯編代碼自查表植入電子羅盤的單片機存儲芯片內,由單片機對自動進行校正,理論上校正后的電子羅盤可以準確地測出方位角值。為了驗證校正測試的可靠性,按照之前的測試過程對校準后的電子羅盤重新進行測試實驗,可得出如圖6的所示的誤差曲線。通過誤差曲線來直觀地判斷校準結果的準確性。如果曲線誤差小且穩(wěn)定,沒有異常,說明校準實驗很成功,電子羅盤可以直接安裝使用;相反,如果曲線誤差仍然很大,或者在某些點處誤差依然很大,那么實驗可能出現(xiàn)了問題,必須重新進行校準。
圖6 校準后的誤差曲線
圖5為實驗室中電子羅盤校準前的誤差曲線圖,圖6則為同一傳感器實驗校準后的誤差曲線圖。通過對比可以發(fā)現(xiàn),校準前的電子羅盤的最大誤差在5°左右,顯然這個誤差范圍過大不能滿足科研要求,而校準后的電子羅盤誤差基本保持在±0.5°以內。校準實驗明顯地減少了電子羅盤的誤差。對科研來說校準后的誤差范圍是可以被允許的,已經基本能夠滿足系統(tǒng)的性能要求,可以更加精確地提供波浪浮標所處的方位,與浮標中的波浪傳感器同步測量,通過浮標中的數(shù)據處理機計算出波浪的傳播方向。
本文介紹了電子羅盤的組成和校準方法。電子羅盤的準確度、精確度、穩(wěn)定性能否符合標準,對浮標傳感器系統(tǒng)是至關重要的。新的電子羅盤校準方法中采集數(shù)據的分析、處理、繪圖、誤差計算、匯編代碼自查表的生成都是由上位機自動完成,使檢測工作更加智能化、更加快捷,校準結果更加準確,ProEssentials的使用簡化了實驗的過程,無需再生成txt文件,實驗數(shù)據直接保存在數(shù)組中,簡化了數(shù)據的保存和讀取,占用內存小、運行速度快,ProEssentials繪圖程序更加簡單,實驗結果曲線更加美觀;另外軟件可移植性好,程序使用范圍廣。該設計方案已應用于波浪浮標的生產測試中,取得了良好的效果。
[1]唐原廣,王金平.SZF型波浪浮標系統(tǒng)[J].海洋技術,2008,27(2):31-33.
[2]劉詩斌.微型智能磁航向系統(tǒng)研究[D].西安:西北工業(yè)大學,2001.
[3]凡春芳,焦國太.基于磁阻傳感器的磁探測系統(tǒng)設計[J].彈箭與制導學報,2008(02):134-135.
[4]晁永生,樊軍,申曉萍,等.淺談Visual C++串口通信編程[J].科技廣場,2007(1):71-73.
[5]吉翔,李永全.VC++下MSComm控件的串口通信方法[J].電腦開發(fā)與應用.2009(12):34-35.
[6]張筠莉,劉書智.Visual C++串口通信與工程應用篇[M]北京:中國鐵道出版社,2009.
[7]劉如九,張振山,凌朔怡,等.采用ProEssentials實現(xiàn)工業(yè)監(jiān)控軟件中的趨勢圖[J].工業(yè)控制計算機,2006,19(8):42-44.
[8]張峰,丁永剛.采用ProEssentials實現(xiàn)工業(yè)生產數(shù)據圖形化顯示[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
國家高技術研究發(fā)展計劃(“863”計劃)資助項目(2006AA09Z150)
唐原廣(1963-),男,教授,主要從事海洋監(jiān)測技術波浪浮標方向研究。E-mail:tangrenone@126.com