云中華,蘭 萍,李勇峰,劉洪春
(西藏大學(xué) 工學(xué)院,拉薩 850012)
隨著人們活動范圍越來越廣,高山地區(qū)野外的工作活動變得越來越多,在山區(qū)野外的安全保障就顯得非常重要。在山區(qū)工作除了常用的GPS來判斷位置以外,還需要即時(shí)獲知當(dāng)前所在位置的海拔高度和氣壓大小,以較為準(zhǔn)確地了解自己的活動范圍。針對上述問題,設(shè)計(jì)了一款數(shù)字型氣壓和海拔測試系統(tǒng),本設(shè)計(jì)利用先進(jìn)的STM32微處理器作為主控制器,Bosch公司的高精度BMP180數(shù)字壓力傳感器作為主傳感器進(jìn)行所在位置的大氣壓力測量,并根據(jù)所測量的氣壓計(jì)算出當(dāng)前所在位置海拔,將當(dāng)前位置大氣壓力和海拔高度顯示于TFT液晶顯示器上。本設(shè)計(jì)方案所用元件盡可能地采用了低成本、高精度、低功耗、小體積的器件,非常適合集成到便攜式設(shè)備中。
系統(tǒng)在野外工作時(shí)的多種不便就使便攜性、能耗低、響應(yīng)速度等問題顯得尤為重要,故本設(shè)計(jì)選用低功耗STM32為核心處理器、高精度BMP180為數(shù)據(jù)采集傳感器,便攜式鋰電池進(jìn)行供電。本測量系統(tǒng)總體設(shè)計(jì)結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)總體設(shè)計(jì)結(jié)構(gòu)Fig.1 Structure diagram of the system
本設(shè)計(jì)為考慮便攜性而采用鋰電池進(jìn)行供電,而系統(tǒng)主要使用3.3 V電源,故選用ASM1117-3.3 V進(jìn)行電源轉(zhuǎn)換并提供給BMP180、STM32及TFT等元件;設(shè)計(jì)選用STM32F103處理器為主控制器進(jìn)行系統(tǒng)總體控制,選用BMP180傳感器,在STM32的控制下,傳感器內(nèi)部的測量部分單元進(jìn)行當(dāng)前氣壓測量,測量所得到的數(shù)據(jù)經(jīng)過內(nèi)部ADC轉(zhuǎn)換為數(shù)字信號并加以修正,修正后的結(jié)果通過I2C數(shù)據(jù)總線和STM32進(jìn)行通信;然后系統(tǒng)軟件將所得到的壓力P和海平面處的壓力P0經(jīng)氣壓海拔計(jì)算公式計(jì)算出當(dāng)前海拔值,并將數(shù)據(jù)顯示在TFT液晶顯示器上;另外,本系統(tǒng)設(shè)計(jì)了獨(dú)立按鍵進(jìn)行系統(tǒng)控制,設(shè)計(jì)了通信接口以便系統(tǒng)與其他設(shè)備進(jìn)行數(shù)據(jù)傳輸。
BMP180是Bosch Sensortec推出的基于壓阻技術(shù)的智能數(shù)字壓力傳感器,主要應(yīng)用于大氣壓力的測量,其壓力測量范圍在300~1100 hPa,適合于海拔-500~9000 m的工作范圍,測量絕對精度達(dá)到0.03 hPa(0.25 m),測量數(shù)據(jù)可以采用 I2C進(jìn)行傳輸。采用8-PIN引腳陶瓷無引線超薄封裝,尺寸僅為3.6 mm×3.8 mm×0.93 mm,電源供電為 1.8 V~3.6 V,耗電量低至3 μA。由于其較好的魯棒性、高精度、范圍廣及長期穩(wěn)定性等特性,特別適用于山區(qū)氣壓和海拔測量并集成于嵌入設(shè)備中。BMP180芯片的內(nèi)部結(jié)構(gòu)如圖2所示。
圖2 BMP180傳感器內(nèi)部結(jié)構(gòu)Fig.2 Structure diagram of the BMP180 sensor
在圖2中,BMP180內(nèi)部包含一個(gè)壓阻傳感器單元、ADC轉(zhuǎn)換器單元、控制單元和E2PROM,外部微處理器可通過I2C總線對BMP180進(jìn)行控制,并與BMP180進(jìn)行數(shù)據(jù)傳輸,傳感器所測量的壓力和溫度數(shù)據(jù)可利用內(nèi)部E2PROM中存儲的176 bit校準(zhǔn)數(shù)據(jù)校正補(bǔ)償偏移量、溫度依賴性和傳感器的其他參數(shù)等[1]。
本設(shè)計(jì)選用3.3 V低電壓、主頻高達(dá)72 MHz的高性能STM32F103微處理器,其內(nèi)部集成16位定時(shí)器和12位ADC,集成SPI和I2C接口方便控制BMP180傳感器并進(jìn)行數(shù)據(jù)傳輸,且擁有較多的IO口以便系統(tǒng)擴(kuò)展。由于需要采用鋰電池進(jìn)行供電,而通常鋰電池電壓為3.59~4.22 V,但STM32和BMP180的供電電壓一般為3.3 V,故需要AMS1117-3.3穩(wěn)壓器進(jìn)行電源轉(zhuǎn)換,將鋰電池電壓轉(zhuǎn)換為穩(wěn)定的3.3 V電壓供給STM32微處理器和BMP180壓力傳感器以及TFT液晶顯示器等設(shè)備。電源轉(zhuǎn)換硬件基本原理如圖3所示[2-3]。
圖3 電源轉(zhuǎn)換硬件電路原理Fig.3 Schematic diagram of power conversion hardware circui
BMP180壓力傳感器通過I2C總線和STM32微處理器連接,其連接只需通過SCL時(shí)鐘線和SDA數(shù)據(jù)線2根線連接在STM32的PB6、PB7兩個(gè)引腳即可,使用I2C時(shí)還需要注意接好上拉電阻[4-6],為了節(jié)約電池能量,本設(shè)計(jì)上拉電阻采用4.7 kΩ,但犧牲了通信速度,BMP180傳感器和STM32電路原理如圖4所示。
圖4 BMP180傳感器和STM32硬件電路原理Fig.4 Schematic diagram of BMP180 sensor and STM32
圖中BMP180采用標(biāo)準(zhǔn)工作模式,其SDO和SCB均空置處理。由于STM32引腳過多,故圖中只畫出了STM32微處理器的少部分引腳,另外本系統(tǒng)設(shè)計(jì)了1個(gè)復(fù)位按鍵、1個(gè)指示燈以指示工作狀態(tài),另給出了必要的晶振電路和串口接口電路。
本設(shè)計(jì)采用常用的TFT-LCD進(jìn)行測量數(shù)據(jù)的輸出,顯示器控制芯片采用ILI9328芯片,采用16 bit并口進(jìn)行數(shù)據(jù)傳輸,其分辨率達(dá)到320×240。液晶顯示器在連接時(shí)引腳DB1~DB16為16位雙向數(shù)據(jù)傳輸端,CS為TFT液晶的片選信號,RS為寫數(shù)據(jù)和命令引腳,其為0時(shí)表示讀寫命令,為1時(shí)表示讀寫數(shù)據(jù),RD為從TFT液晶讀數(shù)據(jù)引腳,WR為向TFT液晶寫數(shù)據(jù)引腳,RST為硬件復(fù)位TFT液晶引腳等。將必要的數(shù)據(jù)通信引腳、控制引腳連接至STM32即可。TFT液晶連線較多但較為簡單,限于篇幅此處不再畫出連線圖。
由于有時(shí)系統(tǒng)需和其他設(shè)備交換測量數(shù)據(jù),故本設(shè)計(jì)預(yù)留RS232串口通信接口以和其它設(shè)備進(jìn)行通信,通信接口原理如圖5所示。
圖中采用MAX232芯片做數(shù)據(jù)轉(zhuǎn)換,STM32的PA9為TXD引腳,PA10為RXD引腳,2個(gè)引腳分別接入MAX232的T2in和R2out即可,另外本設(shè)計(jì)設(shè)置了2個(gè)LED發(fā)光二極管連接在TXD和RXD上,當(dāng)有數(shù)據(jù)傳輸?shù)臅r(shí)候用以指示。
圖5 通信接口硬件原理Fig.5 Hardware schematic diagram of communication interface
本系統(tǒng)的軟件部分設(shè)計(jì)采用C語言編程,主要包括STM32主控程序部分,TFT液晶顯示部分,BMP和STM32的I2C數(shù)據(jù)通信部分、大氣壓力測量部分和海拔計(jì)算部分等,系統(tǒng)主要流程如圖6所示。
圖6 軟件設(shè)計(jì)流程Fig.6 Flow chart of the software design
首先需要系統(tǒng)初始化并設(shè)置氣壓海拔警戒值,在系統(tǒng)初始化時(shí)系統(tǒng)需要將E2PROM中的補(bǔ)償參數(shù)讀取出來作為溫度補(bǔ)償參數(shù)。然后STM32處理器控制BMP180傳感器進(jìn)行大氣壓力數(shù)據(jù)的采集,接下來系統(tǒng)將所測量到的當(dāng)前位置的大氣壓力值根據(jù)大氣壓力海拔的關(guān)系公式計(jì)算出當(dāng)前海拔值并進(jìn)行修正后將結(jié)果顯示在TFT液晶上,此時(shí)如果氣壓海拔值超過警戒值,則進(jìn)行報(bào)警,并在此時(shí)將測量頻率進(jìn)行加倍并確認(rèn)此時(shí)的數(shù)值,若未超過警戒值則正常采集和監(jiān)控[1,3]。
控制BMP180傳感器進(jìn)行壓力測量部分較為簡單,在編寫程序時(shí)只需按照BMP180手冊所提供的時(shí)序圖編寫即可。由于大氣溫度對氣壓有一定影響,故需要知道當(dāng)前溫度,讀取BMP180氣壓傳感器所測量的溫度時(shí)分兩步,第一步向0XF4寄存器寫入數(shù)值0X2E完成測量,第二步從寄存器0XF6和0XF7讀取出溫度UT=MSB<<8+LSB;讀取系統(tǒng)所測量的壓力時(shí),第一步在0XF4寄存器寫入0X34+(oss<<6)完成測量,第二步,讀取 0XF6、0XF7、0XF8寄存器中的壓力值UP=(MSB<<16+LSB<<8+XLSB>>(8-oss)),這時(shí)讀取出來的溫度和壓力需要進(jìn)行數(shù)據(jù)校正才能得到真實(shí)的溫度和壓力[1]。在得到壓力后需要將壓力轉(zhuǎn)換為海拔高度,由傳感器所在地所測得大氣壓力計(jì)算海拔公式為
式中:P為當(dāng)前傳感器所測量到的大氣壓力;P0=1013.25 hPa為海平面平均氣壓 (約760 mm汞柱),即1個(gè)標(biāo)準(zhǔn)大氣壓[1]。大氣壓力和海拔高度的特性曲線如圖7所示,從圖中可以看出,隨著海拔的上升,大氣壓力不斷下降,特性曲線近似呈現(xiàn)線性關(guān)系,根據(jù)當(dāng)前采集到的大氣壓力值進(jìn)行上述相關(guān)公式函數(shù)運(yùn)算,并結(jié)合大氣壓力和海拔關(guān)系圖并加以修正就可以得到當(dāng)前海拔值。在本設(shè)計(jì)中事先設(shè)計(jì)一個(gè)大氣壓力和海拔的查詢表,在程序中進(jìn)行查表求得測量氣壓值所對應(yīng)的海拔值。
圖7 大氣壓力和海拔高度關(guān)系Fig.7 Relationship between atmospheric pressure and altitude
該測量系統(tǒng)的實(shí)地測量結(jié)果如圖8所示,實(shí)際測量的海拔數(shù)據(jù)如表1所示,本系統(tǒng)測試地點(diǎn)為西藏大學(xué)圖書館不同樓層、每層選擇不同的地點(diǎn)進(jìn)行2次測量。
圖8 實(shí)際測試效果Fig.8 Test results of the actual situation
由圖8可知,本測量系統(tǒng)較為準(zhǔn)確地測量出了當(dāng)前的大氣壓力并計(jì)算出了該地區(qū)的海拔數(shù)值并顯示在TFT液晶顯示器中(當(dāng)前位置位于西藏拉薩東郊,在Google地圖中查詢此處坐標(biāo)為北緯29°38′42.46″東經(jīng) 91°10′43.53″附近),從表 1 中可以看出,實(shí)地所測數(shù)據(jù)結(jié)果和所在地實(shí)際氣壓和海拔相比其誤差較小,可滿足野外山區(qū)工作需求。
表1 氣壓海拔測試數(shù)據(jù)Tab.1 Test data of atmospheric pressure and altitude
本文設(shè)計(jì)了一款基于STM32微處理器、高精度BMP180數(shù)字壓力傳感器的大氣壓力和海拔測量系統(tǒng)。經(jīng)過實(shí)驗(yàn),該系統(tǒng)較為準(zhǔn)確地測量出了當(dāng)前地區(qū)的大氣壓力,并計(jì)算出了近似海拔高度,并在TFT液晶顯示器上顯示出了測量結(jié)果,實(shí)際使用時(shí)天氣等因素對氣壓也有一定影響故其計(jì)算的海拔值會有略微變化。綜上所述該設(shè)備具有使用方便、測量準(zhǔn)確、響應(yīng)迅速的特點(diǎn),由于BMP180封裝體積較小,特別適合集成于便攜式設(shè)備中使用,具有較大的實(shí)用價(jià)值。
[1]BMP180 digital pressure sensor Data sheet.http://www.boschsensortec.com.
[2]ST公司STM32微處理器數(shù)據(jù)手冊[EB/OL].http://www.st.com.
[3]賈峰,孫曼,秦磊.基于STM32的四旋翼飛行姿態(tài)串級控制[J].科學(xué)技術(shù)與工程.2015,15(6):220-225.
[4]康華光.電子技術(shù)基礎(chǔ)模擬部分[M].5版.北京:高等教育出版社,2006.
[5]孫林軍,賀鋒濤.基于STM32控制液晶的接口實(shí)現(xiàn)[J]電視技術(shù),2013,37(1):77-79.
[6]袁西,陳棟,田湘,等.三軸數(shù)字加速度計(jì)ADXL345及其在捷聯(lián)慣導(dǎo)中的應(yīng)用[J].電子設(shè)計(jì)工程,2010,18(3):138-140.
[7]薛冰冰,吳書裕,李亞萍,等.基于STM32的微型多參數(shù)健康監(jiān)護(hù)終端的設(shè)計(jì)[J]電子技術(shù)應(yīng)用.2014,40(2):12-15.
[8]方浩,李艾華,王濤,等.基于STM32單片機(jī)的智能槍柜系統(tǒng)設(shè)計(jì)[J].電子技術(shù)應(yīng)用.2014,40(3):12-18.