云中華,蘭 萍,李勇峰,劉洪春
(西藏大學 工學院,拉薩 850012)
隨著人們活動范圍越來越廣,高山地區野外的工作活動變得越來越多,在山區野外的安全保障就顯得非常重要。在山區工作除了常用的GPS來判斷位置以外,還需要即時獲知當前所在位置的海拔高度和氣壓大小,以較為準確地了解自己的活動范圍。針對上述問題,設計了一款數字型氣壓和海拔測試系統,本設計利用先進的STM32微處理器作為主控制器,Bosch公司的高精度BMP180數字壓力傳感器作為主傳感器進行所在位置的大氣壓力測量,并根據所測量的氣壓計算出當前所在位置海拔,將當前位置大氣壓力和海拔高度顯示于TFT液晶顯示器上。本設計方案所用元件盡可能地采用了低成本、高精度、低功耗、小體積的器件,非常適合集成到便攜式設備中。
系統在野外工作時的多種不便就使便攜性、能耗低、響應速度等問題顯得尤為重要,故本設計選用低功耗STM32為核心處理器、高精度BMP180為數據采集傳感器,便攜式鋰電池進行供電。本測量系統總體設計結構如圖1所示。

圖1 系統總體設計結構Fig.1 Structure diagram of the system
本設計為考慮便攜性而采用鋰電池進行供電,而系統主要使用3.3 V電源,故選用ASM1117-3.3 V進行電源轉換并提供給BMP180、STM32及TFT等元件;設計選用STM32F103處理器為主控制器進行系統總體控制,選用BMP180傳感器,在STM32的控制下,傳感器內部的測量部分單元進行當前氣壓測量,測量所得到的數據經過內部ADC轉換為數字信號并加以修正,修正后的結果通過I2C數據總線和STM32進行通信;然后系統軟件將所得到的壓力P和海平面處的壓力P0經氣壓海拔計算公式計算出當前海拔值,并將數據顯示在TFT液晶顯示器上;另外,本系統設計了獨立按鍵進行系統控制,設計了通信接口以便系統與其他設備進行數據傳輸。
BMP180是Bosch Sensortec推出的基于壓阻技術的智能數字壓力傳感器,主要應用于大氣壓力的測量,其壓力測量范圍在300~1100 hPa,適合于海拔-500~9000 m的工作范圍,測量絕對精度達到0.03 hPa(0.25 m),測量數據可以采用 I2C進行傳輸。采用8-PIN引腳陶瓷無引線超薄封裝,尺寸僅為3.6 mm×3.8 mm×0.93 mm,電源供電為 1.8 V~3.6 V,耗電量低至3 μA。由于其較好的魯棒性、高精度、范圍廣及長期穩定性等特性,特別適用于山區氣壓和海拔測量并集成于嵌入設備中。BMP180芯片的內部結構如圖2所示。

圖2 BMP180傳感器內部結構Fig.2 Structure diagram of the BMP180 sensor
在圖2中,BMP180內部包含一個壓阻傳感器單元、ADC轉換器單元、控制單元和E2PROM,外部微處理器可通過I2C總線對BMP180進行控制,并與BMP180進行數據傳輸,傳感器所測量的壓力和溫度數據可利用內部E2PROM中存儲的176 bit校準數據校正補償偏移量、溫度依賴性和傳感器的其他參數等[1]。
本設計選用3.3 V低電壓、主頻高達72 MHz的高性能STM32F103微處理器,其內部集成16位定時器和12位ADC,集成SPI和I2C接口方便控制BMP180傳感器并進行數據傳輸,且擁有較多的IO口以便系統擴展。由于需要采用鋰電池進行供電,而通常鋰電池電壓為3.59~4.22 V,但STM32和BMP180的供電電壓一般為3.3 V,故需要AMS1117-3.3穩壓器進行電源轉換,將鋰電池電壓轉換為穩定的3.3 V電壓供給STM32微處理器和BMP180壓力傳感器以及TFT液晶顯示器等設備。電源轉換硬件基本原理如圖3所示[2-3]。

圖3 電源轉換硬件電路原理Fig.3 Schematic diagram of power conversion hardware circui
BMP180壓力傳感器通過I2C總線和STM32微處理器連接,其連接只需通過SCL時鐘線和SDA數據線2根線連接在STM32的PB6、PB7兩個引腳即可,使用I2C時還需要注意接好上拉電阻[4-6],為了節約電池能量,本設計上拉電阻采用4.7 kΩ,但犧牲了通信速度,BMP180傳感器和STM32電路原理如圖4所示。

圖4 BMP180傳感器和STM32硬件電路原理Fig.4 Schematic diagram of BMP180 sensor and STM32
圖中BMP180采用標準工作模式,其SDO和SCB均空置處理。由于STM32引腳過多,故圖中只畫出了STM32微處理器的少部分引腳,另外本系統設計了1個復位按鍵、1個指示燈以指示工作狀態,另給出了必要的晶振電路和串口接口電路。
本設計采用常用的TFT-LCD進行測量數據的輸出,顯示器控制芯片采用ILI9328芯片,采用16 bit并口進行數據傳輸,其分辨率達到320×240。液晶顯示器在連接時引腳DB1~DB16為16位雙向數據傳輸端,CS為TFT液晶的片選信號,RS為寫數據和命令引腳,其為0時表示讀寫命令,為1時表示讀寫數據,RD為從TFT液晶讀數據引腳,WR為向TFT液晶寫數據引腳,RST為硬件復位TFT液晶引腳等。將必要的數據通信引腳、控制引腳連接至STM32即可。TFT液晶連線較多但較為簡單,限于篇幅此處不再畫出連線圖。
由于有時系統需和其他設備交換測量數據,故本設計預留RS232串口通信接口以和其它設備進行通信,通信接口原理如圖5所示。
圖中采用MAX232芯片做數據轉換,STM32的PA9為TXD引腳,PA10為RXD引腳,2個引腳分別接入MAX232的T2in和R2out即可,另外本設計設置了2個LED發光二極管連接在TXD和RXD上,當有數據傳輸的時候用以指示。

圖5 通信接口硬件原理Fig.5 Hardware schematic diagram of communication interface
本系統的軟件部分設計采用C語言編程,主要包括STM32主控程序部分,TFT液晶顯示部分,BMP和STM32的I2C數據通信部分、大氣壓力測量部分和海拔計算部分等,系統主要流程如圖6所示。

圖6 軟件設計流程Fig.6 Flow chart of the software design
首先需要系統初始化并設置氣壓海拔警戒值,在系統初始化時系統需要將E2PROM中的補償參數讀取出來作為溫度補償參數。然后STM32處理器控制BMP180傳感器進行大氣壓力數據的采集,接下來系統將所測量到的當前位置的大氣壓力值根據大氣壓力海拔的關系公式計算出當前海拔值并進行修正后將結果顯示在TFT液晶上,此時如果氣壓海拔值超過警戒值,則進行報警,并在此時將測量頻率進行加倍并確認此時的數值,若未超過警戒值則正常采集和監控[1,3]。
控制BMP180傳感器進行壓力測量部分較為簡單,在編寫程序時只需按照BMP180手冊所提供的時序圖編寫即可。由于大氣溫度對氣壓有一定影響,故需要知道當前溫度,讀取BMP180氣壓傳感器所測量的溫度時分兩步,第一步向0XF4寄存器寫入數值0X2E完成測量,第二步從寄存器0XF6和0XF7讀取出溫度UT=MSB<<8+LSB;讀取系統所測量的壓力時,第一步在0XF4寄存器寫入0X34+(oss<<6)完成測量,第二步,讀取 0XF6、0XF7、0XF8寄存器中的壓力值UP=(MSB<<16+LSB<<8+XLSB>>(8-oss)),這時讀取出來的溫度和壓力需要進行數據校正才能得到真實的溫度和壓力[1]。在得到壓力后需要將壓力轉換為海拔高度,由傳感器所在地所測得大氣壓力計算海拔公式為

式中:P為當前傳感器所測量到的大氣壓力;P0=1013.25 hPa為海平面平均氣壓 (約760 mm汞柱),即1個標準大氣壓[1]。大氣壓力和海拔高度的特性曲線如圖7所示,從圖中可以看出,隨著海拔的上升,大氣壓力不斷下降,特性曲線近似呈現線性關系,根據當前采集到的大氣壓力值進行上述相關公式函數運算,并結合大氣壓力和海拔關系圖并加以修正就可以得到當前海拔值。在本設計中事先設計一個大氣壓力和海拔的查詢表,在程序中進行查表求得測量氣壓值所對應的海拔值。

圖7 大氣壓力和海拔高度關系Fig.7 Relationship between atmospheric pressure and altitude
該測量系統的實地測量結果如圖8所示,實際測量的海拔數據如表1所示,本系統測試地點為西藏大學圖書館不同樓層、每層選擇不同的地點進行2次測量。

圖8 實際測試效果Fig.8 Test results of the actual situation
由圖8可知,本測量系統較為準確地測量出了當前的大氣壓力并計算出了該地區的海拔數值并顯示在TFT液晶顯示器中(當前位置位于西藏拉薩東郊,在Google地圖中查詢此處坐標為北緯29°38′42.46″東經 91°10′43.53″附近),從表 1 中可以看出,實地所測數據結果和所在地實際氣壓和海拔相比其誤差較小,可滿足野外山區工作需求。

表1 氣壓海拔測試數據Tab.1 Test data of atmospheric pressure and altitude
本文設計了一款基于STM32微處理器、高精度BMP180數字壓力傳感器的大氣壓力和海拔測量系統。經過實驗,該系統較為準確地測量出了當前地區的大氣壓力,并計算出了近似海拔高度,并在TFT液晶顯示器上顯示出了測量結果,實際使用時天氣等因素對氣壓也有一定影響故其計算的海拔值會有略微變化。綜上所述該設備具有使用方便、測量準確、響應迅速的特點,由于BMP180封裝體積較小,特別適合集成于便攜式設備中使用,具有較大的實用價值。
[1]BMP180 digital pressure sensor Data sheet.http://www.boschsensortec.com.
[2]ST公司STM32微處理器數據手冊[EB/OL].http://www.st.com.
[3]賈峰,孫曼,秦磊.基于STM32的四旋翼飛行姿態串級控制[J].科學技術與工程.2015,15(6):220-225.
[4]康華光.電子技術基礎模擬部分[M].5版.北京:高等教育出版社,2006.
[5]孫林軍,賀鋒濤.基于STM32控制液晶的接口實現[J]電視技術,2013,37(1):77-79.
[6]袁西,陳棟,田湘,等.三軸數字加速度計ADXL345及其在捷聯慣導中的應用[J].電子設計工程,2010,18(3):138-140.
[7]薛冰冰,吳書裕,李亞萍,等.基于STM32的微型多參數健康監護終端的設計[J]電子技術應用.2014,40(2):12-15.
[8]方浩,李艾華,王濤,等.基于STM32單片機的智能槍柜系統設計[J].電子技術應用.2014,40(3):12-18.