??? 摘 要:以C8051F020單片機(jī)為控制核心、數(shù)字羅盤HMR3000為磁北傳感器,,設(shè)計(jì)了基于數(shù)字羅盤HMR3000的智能尋向系統(tǒng),。硬件部分詳述了方位信號(hào)通信電路,、步進(jìn)電機(jī)驅(qū)動(dòng)電路、鍵盤電路和LCD顯示電路等,;軟件部分重點(diǎn)研究了系統(tǒng)主程序,、方位通信子程序、數(shù)據(jù)處理子程序和步進(jìn)電機(jī)驅(qū)動(dòng)子程序等,。分析了系統(tǒng)誤差并提出了使用注意事項(xiàng),。經(jīng)過調(diào)試,該系統(tǒng)具有尋向速度可調(diào),、精度較高,、方向自動(dòng)保持等優(yōu)點(diǎn)。
??? 關(guān)鍵詞:數(shù)字羅盤HMR3000,;C8051F單片機(jī);方位
?
??? 方位測(cè)量標(biāo)定在大地測(cè)量,、導(dǎo)航尋向領(lǐng)域中有非常重要的作用,。工程實(shí)踐中常采用參考地標(biāo)法或GPS定向法來實(shí)現(xiàn),但是在某些既無地標(biāo)而又要求獨(dú)立定向的場(chǎng)合,,2種方法都有不足之處,。本設(shè)計(jì)采用數(shù)字羅盤標(biāo)定出正北方向,利用鍵盤輸入的方位期望值和正北方向的差值做控制信號(hào),,通過控制安裝有指向設(shè)備的步進(jìn)電機(jī),,可以達(dá)到獨(dú)立智能尋向定向的目標(biāo)。
1 總體方案設(shè)計(jì)
??? 系統(tǒng)原理如圖1所示,,該系統(tǒng)以C8051F020 單片機(jī)為控制核心,主要由方位信號(hào)通信電路,、步進(jìn)電機(jī)驅(qū)動(dòng)電路、鍵盤通信電路和LCD顯示電路等部分組成,。
?
??? 尋向定向系統(tǒng)需要指向設(shè)備,,即帶有方位指向功能的設(shè)備,,如激光束、經(jīng)緯儀,、雷達(dá)等,。步進(jìn)電機(jī)轉(zhuǎn)軸軸向鉛垂向下(利用三腳架和調(diào)平設(shè)備調(diào)節(jié)),將指向設(shè)備和數(shù)字羅盤安裝在步進(jìn)電機(jī)轉(zhuǎn)軸上,,這樣就能利用數(shù)字羅盤HMR3000的偏航軸來敏感水平地磁場(chǎng),,同時(shí)精確標(biāo)定出數(shù)字羅盤敏感軸向和指向設(shè)備軸向的安裝夾角θA。根據(jù)安裝夾角θA和數(shù)字羅盤敏感到的方位角計(jì)算出此時(shí)指向設(shè)備軸向的方位角,,通過鍵盤輸入最終需要的方位期望值,。此時(shí)方位角和方位期望值之間存在差信號(hào),利用差信號(hào)閉環(huán)控制步進(jìn)電機(jī)進(jìn)動(dòng),,使指向設(shè)備指向期望方位值并定向,,完成尋向定向的目的。
2 硬件電路模塊介紹
2.1 方位信號(hào)通信電路
??? 系統(tǒng)利用數(shù)字羅盤作為磁北傳感器,。數(shù)字羅盤也稱為電子羅盤,,是利用敏感地磁北極的方法來定方位的一種傳感器。本設(shè)計(jì)采用了Honeywell公司三軸數(shù)字羅盤HMR3000,,它由三軸磁阻傳感器和一個(gè)充有液體的兩軸傾斜傳感器組成,,可以測(cè)量3個(gè)角度上的角度變化;能實(shí)時(shí)準(zhǔn)確輸出被測(cè)物體的俯仰角,、滾動(dòng)角和偏航角,;數(shù)據(jù)刷新頻率為20 Hz,航向精度為0.1°,,誤差為±0.5°,,工作狀態(tài)傾斜角度為±40°;野外作業(yè)適應(yīng)能力強(qiáng),。
??? 數(shù)字羅盤HMR3000按照NMEA 格式,,通過RS232/485串口提供航向輸出(橫滾、俯仰,、偏航),。在本方案中,利用其偏航軸敏感水平磁場(chǎng),,結(jié)合單片機(jī)形成具有方位信號(hào)通信功能的電路模塊,。由于HMR3000輸出的RS-232信號(hào)電平與C8051F020單片機(jī)I/O串行端口電平不匹配,故采用電平轉(zhuǎn)換芯片MAX202來完成二者之間的電平轉(zhuǎn)換,,具體電路如圖2所示,。
?
?
2.2步進(jìn)電機(jī)驅(qū)動(dòng)電路
??? 從系統(tǒng)精度方面考慮,步進(jìn)電機(jī)自身的步距角要盡可能少地增加系統(tǒng)誤差,。鑒于HMR3000的精度為0.1°,,故選用步距角為0.09°/0.18°的五相混合式電機(jī)110BYG5200,,適配的電機(jī)驅(qū)動(dòng)器為HB505A。采用C8051F020單片機(jī)的P6口為控制驅(qū)動(dòng),各引線的具體功能如下:CP為步進(jìn)脈沖信號(hào)輸入端,;CW/CCW為方向控制信號(hào)輸入端,;F.H為步距控制控制信號(hào)輸入端;FRE為脫機(jī)控制信號(hào)輸入端,;POW為電源指示輸出,;TIM為相原點(diǎn)指示輸出;COM為信號(hào)公共端,,驅(qū)動(dòng)電路各引線連接如圖3所示,。
?
?
2.3 LCD顯示電路
??? LCD顯示電路中液晶顯示驅(qū)動(dòng)芯片采用Samsung公司的KS0713TB,為節(jié)省單片機(jī)硬件資源,,設(shè)計(jì)中該顯示驅(qū)動(dòng)芯片與C8051F020之間采用I2C總線串行通信,。KS0713TB工作在串行模式,其中各接口端子的功能為:接口端子DB6,、DB7為串行通信端子,;MI為微處理器接口選擇針腳;RESETB為復(fù)位重啟,;PS為串/并行選擇,;RW_WR、 E_RD同為讀寫控制,;RS為片上寄存器選擇,;CS1B、CS2同為片選輸入選擇,。具體連接如圖4所示,。
?
?
2.4 鍵盤電路
??? 鍵盤通信主要指按鍵的識(shí)別,實(shí)際應(yīng)用中常用行掃描法,、線翻轉(zhuǎn)法以及利用8279鍵盤接口芯片的中斷法,。其中中斷法可以節(jié)省硬件資源,提高處理速度,。本設(shè)計(jì)中考慮到單片機(jī)系統(tǒng)稍微復(fù)雜,處理器單元資源較為緊張,,故采用4×4鍵盤通過8279接口芯片中斷識(shí)別的方法,。
3 軟件設(shè)計(jì)
??? 尋向定向系統(tǒng)的軟件流程主要由端口初始化、方位信號(hào)通信程序,、數(shù)據(jù)處理程序,、步進(jìn)電機(jī)驅(qū)動(dòng)程序和LCD顯示驅(qū)動(dòng)程序等構(gòu)成。軟件部分主程序流程如圖5所示,。
?
?
??? 該程序?yàn)檠h(huán)程序,,每一次開機(jī)后執(zhí)行一個(gè)方位值的尋向定向,。一次開機(jī)運(yùn)行后,在LCD的提示下,,利用鍵盤輸入方位期望值并儲(chǔ)存在指定的寄存器中維持不變,,通過與方位信號(hào)通信,程序傳輸過來的角度值的實(shí)時(shí)比較來控制步進(jìn)電機(jī)進(jìn)動(dòng),,使指向設(shè)備在一次開機(jī)后始終指向此期望方位,。若要尋找新方位,需要重啟系統(tǒng),。
3.1 方位通信程序
??? 方位通信程序用來完成HMR3000和C8051F020的通信,。HMR3000有6種可供選擇的NMEA信息標(biāo)準(zhǔn),此處采用HPR格式,。HPR格式將HMR3000數(shù)字羅盤的3個(gè)重要的測(cè)量結(jié)果(俯仰,、滾動(dòng)、偏航)和相應(yīng)的測(cè)量狀態(tài)結(jié)合在一起,。單片機(jī)將其中的姿態(tài)字符輸出并轉(zhuǎn)化為可供系統(tǒng)處理的數(shù)值變量,。由于在本方案中通過敏感水平磁場(chǎng)就可以指向出磁北,故只需要在輸出的數(shù)據(jù)中分離出偏航數(shù)據(jù),,格式轉(zhuǎn)換后進(jìn)行后續(xù)處理,。由于HMR3000的刷新速率為20 Hz,所以在掃描端口時(shí)要根據(jù)實(shí)際需要設(shè)定掃描端口的頻率,,防止因?yàn)槌绦蜻\(yùn)行和電機(jī)進(jìn)動(dòng)時(shí)間的不匹配或環(huán)境磁場(chǎng)的變化而導(dǎo)致的步進(jìn)電機(jī)無法穩(wěn)定在允許誤差范圍之內(nèi),。考慮到在一次使用中,,期望方位值在相對(duì)較長(zhǎng)時(shí)間內(nèi)比較固定,,可以將掃描時(shí)間設(shè)置在秒級(jí)。方位信號(hào)處理程序流程圖如6所示,。
?
3.2 數(shù)據(jù)處理程序
??? 該程序用來處理方位數(shù)據(jù)之間的數(shù)量關(guān)系,,是軟件部分的重點(diǎn)。其中“方位輸出值”指HMR3000的輸出,,以磁北為起始零值,,順時(shí)針增加;“方位值”以正北為起始零值,,順時(shí)針增加,。參照?qǐng)D7,數(shù)據(jù)處理原理如下:
??? 磁偏角(磁北和正北的夾角):θ
??? 安裝角(數(shù)字羅盤偏航軸和安裝設(shè)備之間的夾角):θA
??? 數(shù)字羅盤方位輸出值:θC
??? 指向設(shè)備的方位值:θZ=θC+θA+θ
??? 期望方位值(鍵盤輸入):θK
??? 動(dòng)態(tài)差角:θD=θK-θZ
??? 期望方位值與指向設(shè)備的方位值允許誤差限:γ
??? 根據(jù)方案設(shè)計(jì)可以得到:
??? 用θD角度值的正負(fù)控制步進(jìn)電機(jī)進(jìn)動(dòng),,使得θD不斷減小,。到精度允許的范圍γ即θD<γ時(shí),完成尋向并標(biāo)定。各角度之間關(guān)系如圖7所示,。
?
?
3.3步進(jìn)電機(jī)驅(qū)動(dòng)程序
??? 根據(jù)方案設(shè)計(jì),,步進(jìn)電機(jī)驅(qū)動(dòng)程序具有根據(jù)動(dòng)態(tài)差角θD的正負(fù)控制步進(jìn)電機(jī)正反向進(jìn)動(dòng)的功能,并能根據(jù)不同場(chǎng)合對(duì)尋向時(shí)間的要求進(jìn)行程序調(diào)整,。設(shè)計(jì)用脈沖量序列驅(qū)動(dòng)電機(jī)正轉(zhuǎn)或反轉(zhuǎn),,通過對(duì)等待時(shí)間的調(diào)整實(shí)現(xiàn)變速的功能,如圖8所示,。
?
?
??? 驅(qū)動(dòng)電機(jī)的判向環(huán)節(jié)是需要重點(diǎn)考慮的部分,。由于在程序中代表角度值的變量定義為無符號(hào)數(shù),在具體的判斷時(shí)無法根據(jù)角度值的正負(fù)來判斷電機(jī)是正轉(zhuǎn)或反轉(zhuǎn),。但是在實(shí)際情況中又確實(shí)存在θD<0的情況,,故本系統(tǒng)此處采用如下的處理算法:首先將期望方位值θK先加上360°后再與指向設(shè)備方位值θZ做差,然后將此差值在程序中對(duì)360°取余數(shù),,最后利用此余數(shù)同180°進(jìn)行比較,。當(dāng)余數(shù)大于180°時(shí)正轉(zhuǎn),小于180°時(shí)反轉(zhuǎn),,達(dá)到根據(jù)不同需要控制電機(jī)轉(zhuǎn)向的目的,。讀者可以選擇不同情況下的角度值驗(yàn)證該算法。
4 系統(tǒng)誤差分析
??? 在此方案中,,尋向精度是一個(gè)重要的指標(biāo),。誤差的來源主要有以下幾個(gè)方面:
??? (1)HMR3000的誤差
??? 由于HMR3000是通過敏感地磁感線來工作的,所以外界環(huán)境對(duì)它的影響會(huì)比較明顯,。在附近有鐵磁性礦體,、大型工程車輛等可以產(chǎn)生影響地磁場(chǎng)分布的干擾磁場(chǎng)的物質(zhì)存在的情況下,HMR3000的精度會(huì)受到影響,。雖然HMR3000自身有標(biāo)校程序,,在干擾磁場(chǎng)小于指定閾值范圍值時(shí)可以通過內(nèi)置程序自動(dòng)補(bǔ)償?shù)姆椒ǘ鴾p小這種影響,但是在磁場(chǎng)較大時(shí)這種誤差補(bǔ)償?shù)木仁菬o法保證的,。
??? HMR3000本身的誤差為0.5°,,這也是誤差的重要來源;
??? (2)步進(jìn)電機(jī)的步距角
??? 步進(jìn)電機(jī)的步距角是步進(jìn)電機(jī)的固有參數(shù),,在一定程度上影響著系統(tǒng)誤差,。為提高系統(tǒng)精度,本方案采用步距角為0.09°的電機(jī),,一定程度上減小了系統(tǒng)誤差,;
??? (3)其他誤差
??? 磁偏角θ的誤差、安裝角θA的檢定誤差和誤差限γ也是系統(tǒng)誤差的來源,。
??? 因此,在使用此系統(tǒng)的過程中為獲得較高的測(cè)量精度,需要注意以下幾方面:(1)視環(huán)境使用,,避免在干擾磁場(chǎng)的強(qiáng)度超過閾值的環(huán)境中使用,;(2)根據(jù)實(shí)際精度需要選用合適的步進(jìn)電機(jī);(3)在設(shè)備定型時(shí),,精確測(cè)量出安裝角θA,;(4)選用較小的誤差限γ。采用以上措施,,可以適當(dāng)?shù)販p小系統(tǒng)誤差,。
??? 本方案設(shè)計(jì)的系統(tǒng)操作簡(jiǎn)單,實(shí)時(shí)性好,,可根據(jù)用戶需要獨(dú)立智能尋向定向,。系統(tǒng)方案的自身情況決定了系統(tǒng)最終尋向精度。在滿足精度要求的情況下可以在航海浮標(biāo)定位,、雷達(dá)天線伺服控制,、大地測(cè)量和自動(dòng)控制等需要尋向定向的領(lǐng)域發(fā)揮一定的作用。
參考文獻(xiàn)
[1]??Silicon Laboratories Inc. C8051F020 datasheet.2003.
[2]? 張培仁,孫力.基于C語言C8051F系列微控制器原理與應(yīng)用[M].北京:清華大學(xué)出版社,2007.
[3]? 求是科技.單片機(jī)典型模塊設(shè)計(jì)實(shí)例導(dǎo)航[M].北京:人民郵電出版社,2008.
[4]? Honwell Company. HMR3000 datasheet.2002.
[5]? Philips Semiconductors. PCF8575 datasheet.1997.