郭发东,刘世萱,郑珊珊,王晓燕,刘 野,倪 巍,管万春
(山东省海洋环境监测技术重点实验室,山东省科学院海洋仪器仪表研究所,山东青岛 266001)
基于BMP085模块的海洋气象观测气压传感器设计
郭发东,刘世萱,郑珊珊,王晓燕,刘 野,倪 巍,管万春
(山东省海洋环境监测技术重点实验室,山东省科学院海洋仪器仪表研究所,山东青岛 266001)
BMP085模块是一款高精度、超低能耗的大气压力传感模块。基于该芯片设计了一款新型智能输出的气压传感器。该传感器采用混合信号系统级芯片C8051F021作为数据采集处理器,进行新型海洋气象观测气压传感器的研制。文中对系统的硬件组成、软件设计进行了详细描述。对该气压传感器的样机标定试验表明,经校准后误差在0.3 hPa以内,已经达到国外同类传感器水平。该传感器具有性价比高、精度高、稳定性好、功耗低、安装使用简便等优点,可广泛应用于气象站、船舶气象仪器、大型海洋资料浮标等场所。
海洋气象;C8051F021;BMP085;I2C接口;气压传感器;RS232
目前在我国海洋浮标、台站上使用的成套气压传感器,大多依赖国外进口,目前使用较多的是美国R.M.YOUNG公司的61302和芬兰VAISALA公司的PTB210,设备价格昂贵,数据输出格式单一,安装使用不便。随着现代微电子技术及精密制造工艺的发展,科学仪器的小型化、集成化、自动化、低功耗的器件模块越来越多[1],近些年德国BOSCH公司推出的BMP085压力传感模块具有体积小、精度超高、功耗超低、便于设计开发的特点[2]。
文中设计的气压传感器就是基于BMP085模块的一款主要应用与海洋气象观测的传感器,该传感器的的量程为300~1 100 hPa,精度为0.3 hPa.传感器输出采用RS232接口,ASCII码输出,数据刷新频率最高1.8 Hz.灵敏度高、响应时间快,具有温度补偿功能,尺寸小,功耗低、便于海上安装固定。可广泛应用于气象站、船舶气象仪器、大型海洋资料浮标等场所。
传感器设计总体框图如图1所示。该气压传感器采用气压模块BMP085与微处理器通过SMBus(I2C)总线通信[3],直接互连,按照指定的通信协议通信,微处理器将从BMP085读回的气压数据计算处理后通过RS232串口以ASCII码的方式输出。
图1 传感器设计总体框图
1.1 气压模块BMP085及微处理器C8051F021简介
BMP085是一款高精度、超低能耗的大气压力传感模块,广泛应用在移动设备中。它的性能卓越,绝对精度最低可以达到0.03 hPa,并且耗电极低,只有3 μA.BMP085采用强大的8-pin陶瓷无引线芯片承载(LCC)超薄封装,可以通过I2C总线直接与移动设备的微处理器连接。它的封装尺寸仅有5 mm×5 mm,厚度仅有1.2 mm.
微处理器选用完全集成的混合信号系统级芯片C8051F021,该芯片具有与8051兼容的高速CIP-51内核,与MCS-51指令集完全兼容,片内集成了数据采集和控制系统中常用的模拟、数字外设及其他功能部件;内置64K程序存储器、内部4352字节的RAM,C8051F单片机具有片内调试电路,通过JTAG接口可以进行非侵入式、全速的在系统调试[4]。
1.2 C8051F021与BMP085 I2C接口设计
微处理器与BMP085接口示意图如图7所示。
气压模块与微处理器采用SMBus(I2C)总线通信,直接互连,按照指定的通信协议通信[5]。
图2 微处理器与BMP085接口示意图
传感器基本工作流程是:传感器上电后进行系统初始化,读取存储在E2PROM里的校准参数,然后开始温度采集,等待4.5 ms后读取采集的温度值,接着启动气压值采集,根据精度和功耗要求等待一定时间后读取采集的气压值,最后根据既定算法,带入采集的温度值和气压值计算出实际大气压力值。传感器系统软件设采用C51语言,采用模块化设计[6],根据传感器工作流程,绘制软件流程图如图3所示。
图3 传感器软件设计流程图
2.1 BMP085发送控制命令的方式
C8051F021对BMP085发送控制命令的方式如图4所示。
图4 C8051F021与BMP085控制指令时序图
C8051F021向BMP085发送命令的步骤如下:
(1)发送模块地址+W(表示写操作),如上图中的0xEE;
(2)发送寄存器地址(register address),如上图中的第一个0xF4;
(3)发送寄存器的值(control register data),如上图中的第二个0xF4。寄存器的值代表BMP085 要进行的测量方式。不同的值分别代表,测量温度;低精度压力测量;中精度压力测量;高精度压力测量。如表1所示。
表1 BMP085测量方式表
2.2 BMP085读取数据的方式
从BMP085 读取数据的方法如图5所示。
图5 从BMP085读取数据时序图
从BMP085 读取数据的步骤如下:
(1)发送模块地址+W(表示写操作),如图5中的0xEE;
(2)送寄存器地址(register address),如图5中的第一个0xF6;
(3)重新开始IIC 传输(Restart);
(4)发送模块地址+R(表示要进行读操作),如图5中的0xEF;
(5)读取测量值的高8 位(MSB);
(6)读取测量值的低8 位(LSB)。
不同寄存器地址的意义如表2所示。
表2 BMP085不同的寄存器
2.3 BMP085控制程序总结
从图4与图5可以清楚地看出MCU控制BMP085的方法,一是向固定的寄存器(0xF4)写特定值(表1中的control register value),二是从特定的寄存器(表2中的寄存器地址)读返回值。每次通讯时的Module address 都是一个固定的值[3],主要是为了符合))C 协议。
(1)向固定的寄存器(0xF4)写特定值(表1中的control register value)其实就是向0xF4 地址写不同的值从而完成温度测量或者不同的压力精度的测量;
(2)从特定的寄存器(表2中的寄存器地址)读返回值从E2PROM 读取Calibration 所需要的数据,共有11 个Word(双字节)。从 0xF6,0xF7,0xF8 读取UT 或者UP,具体是UP 还是UT 要由前面进行的操作决定(进行了温度转换就存有温度数据,进行了压力转换就存有压力数据)。
在常温下,按照《数字压力计检定规程 JJG 875-2005》的规范要求,将自研气压传感器与气压标定装置正确连接,确保正常无漏气现象。在800~1 100 hPa量程范围内,每隔50hPa为一个测试点,共设7个测试点,分别设定检定装置的气压为1100.00 hPa、1050.00 hPa、1000.00 hPa、950.00 hPa、900.00 hPa、850.00 hPa、800.00 hPa,使用降压测量,记录检定装置标准值与自研气压传感器的测量值如表3所示。
表3 气压传感器标定数据 hPa
通过上表可知,常温下在量程内,传感器的最小误差为0.01 hPa,最大误差为0.23 hPa,而芬兰维萨拉公司的气压传感器的精度在常温下为0.35 hPa,通过表3可知自研气压传感器的测量精度可以达到国外同类传感器水平。如果由于焊接或安装过程中造成的系统误差,可通过试验进行误差分析[7],找出误差数值,然后可以通过系统软件进行修正,最终达到设计精度要求。
文中设计的气压传感器已经在海上资料浮标及近海船只上推广使用,从应用平台发回的数据表明该传感器的输出数据准确,传感器工作稳定、可靠。该传感器目前只采用串口RS232方式输出,但在很多工业场合、海洋船只、石油平台等应用场合需要更长距离的信号传输[8],下一步可在电路设计上增加RS485信号输出,这样可提高信号传输的抗干扰能力,增大该气压传感器的应用领域。
[1] 许静,赵湛,刘泳宏.集成阻抗识别的介电泳芯片设计及其关键工艺.仪表技术与传感器.2011(11):1-3.
[2] Bosch Sensotec.BMP085 Digital pressure sensor Data sheet,2009.
[3] 于丽娜,秦丽.C8051F单片机信号采集系统.仪表技术与传感器.2011(7):53-55.
[4] 新华龙电子有限公司.C8051F020/1/2/3混合信号ISP FLASH微控制器数据手册.Rev1.4 2005.2
[5] 唐丽丽,何刚,文小森.基于89C51的信号发生器设计与实现.仪表技术与传感器.2007(2):76-78.
[6] 童长飞编著.C8051F系列单片机开发与C语言编程.北京:北京航空航天大学出版社,2005.
[7] 周静,田文鹤.压力传感器信号调理模块的设计与实现.仪表技术与传感器.2011(1):11-13.
[8] 顾凯.压力传感器的数据采集与分析系统 工业计量.2010(4):33-35.
Design of Maritime Meteorological ObservationAtmospheric Pressure Sensor Based on BMP085 Module
GUO Fa-dong,LIU Shi-xuan,ZHENG Shan-shan,WANG Xiao-yan,LIU Ye,NI Wei,GUAN Wan-chun
(Shandong Provincial Key Laboratory of Ocean Enviromental Monitoring Technology,Institute of OceanographicInstrumention ;Shandong Academy of Sciences,Qingdao 266001,China)
The BMP085 module of Germany BOCH company is a high-precision,ultra-low-energy atmospheric pressure sensor module.We designed a new type of intelligent output pressure sensor based on this chip.The sensor used the mixed-signal system level chip-C8051F021 as the data processor.For the development of this new marine meteorological barometric pressure sensor,system hardware components and software design method were described in detail.Calibration test of the pressure sensor prototype shows that the error of the sensor is less than 0.3hPa,which has reached similar foreign sensors level.The sensor has low cost,high precision,good stability,low power consumption,easy installation and use,and other advantages,which can be widely applied to weather stations,marine meteorological instruments,large ocean data buoys and other places.
maritime meteorological; C8051F021; BMP085; I2C interface; pressure sensor; RS232
国家高技术研究发展计划(863计划)资助项目(2013BAB04B00)
2013-11-06 收修改稿日期:2014-11-05
TP212
B
1002-1841(2014)01-004-03
郭发东(1976— ),高级工程师,硕士,主要研究领域为海洋仪器仪表技术及其在工程应用中的研究。 E-mail:bcd0812@126.com