云中华,兰 萍,李勇峰,刘洪春
(西藏大学 工学院,拉萨 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.