基于A(yíng)RM9平臺(tái)的電子指南針的設(shè)計(jì)
摘要:針對(duì)指南針精度與顯示界面的問(wèn)題,在ARM9的開(kāi)發(fā)平臺(tái)上,設(shè)計(jì)了一款界面美觀(guān)且能夠?qū)崟r(shí)顯示方位、溫度和時(shí)間的電子指南針。該系統(tǒng)采用了靈敏度和精度高的磁力傳感器MAG3110檢測(cè)方位,采用了智能型溫度傳感器DS18B20檢測(cè)溫度,并選擇了Linux Qt作為電子指南針圖形界面的開(kāi)發(fā)平臺(tái)。實(shí)驗(yàn)結(jié)果表明,指南針方位精度達(dá)±2°,溫度精度達(dá)±0.5℃,能夠使用在普通導(dǎo)航領(lǐng)域上。
本文引用地址:http://www.ex-cimer.com/article/201610/305807.htm0 引言
指南針在我國(guó)已有悠久的歷史,作為一個(gè)重要的導(dǎo)航工具,廣泛的運(yùn)用在生活各領(lǐng)域。隨著半導(dǎo)體技術(shù)的飛速發(fā)展,如今的指南針不僅體積小,靈敏度和精確度都已得到很大的提高,而舒適清晰,簡(jiǎn)單快捷的人機(jī)交互界面更是日益追求的目標(biāo)。本文采用一款小體積、低功耗的數(shù)字磁力計(jì)MAG3110采集地磁場(chǎng),它采用標(biāo)準(zhǔn)IIC串行接口,輸出數(shù)據(jù)速率達(dá)80 Hz,并且可自我消除誤差,并使用數(shù)字溫度傳感器S18B20,它具有線(xiàn)路簡(jiǎn)單,體積小,測(cè)溫范圍為-55~+125℃,精度為±0.5℃。選擇這兩款數(shù)字芯片,可滿(mǎn)足靈敏度和精度的要求,選擇Linux Qt作為電子指南針GUI界面的設(shè)計(jì)可達(dá)到舒適清晰,美觀(guān)精巧的界面效果。
1 指南針圖形界面的選擇
現(xiàn)行比較流行的GUI有MiniGui,MicroWindows,OpenGUI,Qt/Embedded。MiniGuI是國(guó)內(nèi)開(kāi)發(fā)的圖形界面系統(tǒng),圖形設(shè)備層次過(guò)于抽象,圖形功能不夠完善。MicroWindows源碼開(kāi)放,但其許多圖形引擎算法低下,控件或構(gòu)件的實(shí)現(xiàn)還不是很完備,系統(tǒng)整體不夠完善。Open GUI比較適合X86平臺(tái),內(nèi)核采用匯編實(shí)現(xiàn),移植性不好,不支持多進(jìn)程,目前發(fā)展較緩慢。Qt/Embedded也是開(kāi)源的,其庫(kù)采用C++封裝,完全面向?qū)ο?。Qt/Embedded開(kāi)發(fā)簡(jiǎn)潔,界面美觀(guān)、色彩配比好,具有豐富的API,使用與Qt/Windows和Qt/X11完全一致的API接口,許多基于Qt的程序可以非常方便地移植到嵌入式設(shè)備上。本文選擇Qt作為指南針GUI界面的開(kāi)發(fā)平臺(tái)。
2 指南針測(cè)量原理
本文設(shè)計(jì)的是二維電子指南針,其數(shù)學(xué)模型如圖1所示。x軸與指南針向前移動(dòng)方向重合,y軸與指南針橫向方向重合,在不考慮磁傾角的情況下,地球磁場(chǎng)水平面分布,即只有圖中h磁北方向,因此z軸感測(cè)到的磁場(chǎng)為0。Hx,Hy分別為水平面兩個(gè)軸感測(cè)到的磁場(chǎng)強(qiáng)度分量。
定義指南針向前移動(dòng)的方向(x軸方向)與磁北方向的夾角為地磁航向角β,其與地理北極的夾角為地理航向角ψ,由圖1可知ψ=β±γ,γ為磁偏角,已知磁偏角,求出地磁航向角β即可求得指南針的地理航向角。利用磁傳感器檢測(cè)到的Hx,Hy按公式:
β=arctan(Hx/Hy)
可求得地磁航向角。
3 系統(tǒng)硬件設(shè)計(jì)
3.1 硬件框架設(shè)計(jì)
本設(shè)計(jì)系統(tǒng)的硬件設(shè)計(jì)框架如圖2所示,采用ARM9作為處理器,使用MINI2440作為實(shí)驗(yàn)板,外加溫度傳感器DS18B20和磁力傳感器MAG31 10模塊電路,可借助ARM9開(kāi)發(fā)平臺(tái)豐富的外圍接口資源進(jìn)行開(kāi)發(fā)與調(diào)試。如其LCD接口作為顯示模塊,JTAG接口作為調(diào)試模塊,USB接口作上傳或下載程序模塊等。
3.2 接口電路
3.2.1 磁力傳感器MAG3110接口電路
MAG3110是款數(shù)字芯片,采用標(biāo)準(zhǔn)I2C串行接口,其電路如圖3所示,SCL和SDA為I2C串行接口的時(shí)鐘和數(shù)據(jù)線(xiàn)。MAG3110內(nèi)部集成了信號(hào)處理電路,A/D轉(zhuǎn)換電路,相比其他模擬芯片,其精度更高,誤差更小。
3.2.2 溫度傳感器DS18B20接口電路
DS18B20是單線(xiàn)器件,接口電路很簡(jiǎn)單,數(shù)據(jù)輸入輸出就一根線(xiàn),其電路如圖4所示,DQ為數(shù)據(jù)輸入輸出線(xiàn)。
4 系統(tǒng)軟件設(shè)計(jì)
4.1 軟件框架
如圖5所示為系統(tǒng)的軟件框架,在底層驅(qū)動(dòng)添加了溫度傳感器DS18B20和磁傳感器MAG3110的驅(qū)動(dòng),在應(yīng)用層,分別打開(kāi)兩個(gè)驅(qū)動(dòng)的設(shè)備節(jié)點(diǎn)采集它們的數(shù)據(jù),在Qt環(huán)境下將DS18B20和MAG3110的數(shù)據(jù)處理并顯示。
4.2 軟件模塊的實(shí)現(xiàn)
4.2.1 溫度傳感器模塊實(shí)現(xiàn)
溫度傳感器底層采用字符驅(qū)動(dòng)框架實(shí)現(xiàn),其讀寫(xiě)操作在系統(tǒng)調(diào)用函數(shù)read,write中實(shí)現(xiàn)。應(yīng)用程序打開(kāi)其設(shè)備節(jié)點(diǎn),就可以讀取底層溫度傳感器的數(shù)據(jù),其實(shí)現(xiàn)流程如圖6所示。
4.2.2 磁傳感器模塊實(shí)現(xiàn)
磁傳感器底層驅(qū)動(dòng)采用I2C驅(qū)動(dòng)框架。其讀寫(xiě)操作在系統(tǒng)調(diào)用函數(shù)read,write中實(shí)現(xiàn),應(yīng)用層打開(kāi)其設(shè)備節(jié)點(diǎn)就可讀取數(shù)據(jù),其實(shí)現(xiàn)流程見(jiàn)圖6。
4.3 界面設(shè)計(jì)
4.3.1 QWT5.0.2庫(kù)移植
如圖7所示為指南針的界面。
Qt開(kāi)發(fā)環(huán)境下沒(méi)有這樣的控件,需要移植包含此控件的庫(kù)(QWT5.0.2)。本設(shè)計(jì)需要移植到X86和ARM9平臺(tái)。如圖8所示,Qwtwidgets為移植到X86平臺(tái)上的庫(kù),其中包括許多常用的儀表控件,其中QwtCompass控件就是圖7所示的控件。
評(píng)論