多路温湿度传感器采集及显示系统设计*

2014-09-26 08:58刘清惓
电子器件 2014年2期
关键词:铂电阻温湿度串口

杨 龙,刘清惓

(南京信息工程大学电子与信息工程学院,信号与信息处理系,南京210044)

多路温湿度传感器采集及显示系统设计*

杨 龙,刘清惓*

(南京信息工程大学电子与信息工程学院,信号与信息处理系,南京210044)

针对地面气象站多点观测以及气象探测飞机机载拖拽式测量场合,提出一种基于铂电阻和HIH-5031的温、湿度采集电路,通过FPGA实现多路数据汇总至嵌入式显示终端,终端拥有基于Qt/E的实时波形显示软件,并使用SQLite3数据库存储温、湿度数据。经过与光学冷镜式露点传感器的对比测试,验证了其湿度误差小于1%,温度误差远小于0.2℃,且传感器电路响应速度快,实时波形显示界面准确、稳定,可用于地面气象站多点观测和机载拖拽式的测量场合。

湿度传感器;温度传感器;FPGA;ARM-LINUX;Qt/Embedded;

在气象探测领域,获取温度和湿度数据对于气象灾害预警、精确数值预报、人工影响天气和气候变化监测都是极其重要的。在某些应用场合,测量现场需要查看温、湿度数据走势并存储下来,这些场合需要使用便携式的显示终端。在地面气象站的多点观测,以及在气象探测飞机机载拖拽式测量中,使用PC观测和存储实时数据,仪器体积、重量和功耗都难以满足不断提高的需求。本文提出了一种基于HIH-5031湿度传感器和铂电阻温度传感器的前端采集方案,通过FPGA汇总多路前端传来的温度和湿度数据,经FPGA处理后发送至基于ARM11处理器的显示终端,ARM11处理器终端运行嵌入式Linux系统,通过运行Qt/E程序来实现实时数据波形的显示,便于及时观测温、湿度的变化趋势,该系统中安装有SQLite3数据库,用于存储接收到的传感器数据。

1 系统的总体构成

整个系统主要由3部分组成:多路温湿度采集前端、多路传输汇总电路和便携式显示终端。温湿度采集前端基于STM32微处理器,采用模数转换器采集HIH-5031湿度传感器和铂电阻温度传感器的电压值,转换成对应温度和湿度,通过RS232协议将数据发送至FPGA;FPGA实现对多路数据的收集并处理,将处理后的数据以RS232协议发送至便携式显示终端;显示终端采用的是ARM11处理器,搭载嵌入式Linux操作系统,运行Qt/E应用程序,实现温度和湿度数据的实时波形显示,并将原始数据存储成数据库文件,软件支持将数据库文件导出成文本文件。所有文件均存储在存储卡上,以便在PC等终端上查看。系统总体框图如图1所示。

图1 系统总体框图

2 系统的硬件设计

温湿度采集前端采用了32位基于ARM Cortex -M3内核的STM32f103微处理器,多路传输汇总电路中使用的FPGA芯片是Altera公司的Cyclone II芯片,便携式显示终端使用了三星公司的ARM11架构的S3C6410处理器芯片。

2.1 温湿度采集电路设计

户外气象站和高空气象探测需要传感器长期稳定且在-50℃到+50℃环境下拥有良好性能。HIH-5031是带外壳、防冷凝的集成电路湿度传感器,对灰尘、污物、油类和一般的化学环境拥有出色的抵抗性能。相较于热敏电阻、热电偶和集成温度传感器,选用稳定性较好的铂(Pt100)电阻作为感温元件。

为获取高精度的温湿度数据,本系统采用高分辨率、高采样速率、低噪声的24位模数转换芯片AD7193进行数据采集。AD7193内部的Σ-Δ调制器以高速的采样频率对输入模拟信号进行采样。AD7193拥有4个独立通道,满足本设计对通道数、速度、精度的需求。温湿度采集前端电路原理框图如图2所示。

图2 前端采集电路原理框图

采用AD7193的通道1测量ADR443的输出电压值,通道2测量HIH-5031的输出电压值Vout。在25℃环境下,HIH-5031的输出电压为式(1),其中Vin的电压值来自于ADR443基准电压源芯片,RHraw为相对湿度值。

式(1)是环境温度在25℃时使用的,实际应用中应考虑温度的变化,对环境温度补偿后的实际湿度为式(2)

式中:T为温度值(℃),RHcompensated为真实湿度值[1]。

温度测量采用铂电阻(Pt100)温度传感器,利用AD7193的高精度特性,通道三测量铂电阻的电压值,通道四测量100 Ω精密电阻的电压值,STM32处理器依据上述电压测量值计算出铂电阻的阻值,根据铂电阻阻值分度表,换算出温度值[2]。该电路方案可以减小由于ADR443长期使用所带来的漂移影响。

2.2 多路传输汇总电路设计

多路采集的方案有利于准确反应所测环境参数的实际分布情况,并可提出个别传感器的偶然误差数据。FPGA采用CycloneII EP2C8芯片,采用50 MHz时钟源,拥有8 256个逻辑单元,最多182个用户管脚,FPGA芯片具有模块化编程和数据处理能力,满足本设计对RS232串口数量和数据处理速度的需求。

2.3 便携式显示终端硬件电路设计

便携式显示终端硬件部分主要为:ARM11内核架构的S3C6410微处理器,CPU最高工作频率为667 MHz,两片128 M的DDR RAM,256 M的Nand Flash,7.0英寸的电阻触摸显示屏,RS232串口等电路模块。便携式显示终端使用存储卡存储数据,方便数据的存储、拷贝。

3 STM32和FPGA程序设计

3.1 温湿度采集前端软件实现

使用MDK集成开发环境编写STM32程序,程序主要包括AD7193采集温湿度数据和向FPGA发送数据两部分。

STM32初始化主要包括时钟、端口、串口和中断等模块的初始化,AD7193初始化主要包括设置AD7193为连续采样模式、增益倍数、满量程校准,零垫片校准等。AD7193初始化的设置是为了竟可能小的降低ADC测量误差[3]。HIH-5031的电压输出是通过和ADR443输出的3 V经ADC内部转化的数据输出编码比例计算得出。ADR443输出串联铂电阻和100 Ω精密电阻,铂电阻两端电压是通过和100Ω精密电阻电压经ADC内转化的数据输出编码的比例计算,通过这种方式间接测量出铂电阻的阻值。将所测得的数据经计算得出温度和湿度数值,通过RS232接口发送到FPGA,数据帧包含帧头、地址、数据、帧尾等信息。

3.2 FPGA多通道处理部分软件实现

FPGA汇集来自多个传感器前端的数据,多路数据经过整合处理后,通过RS232接口发送至便携式显示终端。FPGA采用Verilog HDL语言进行编程,软件主要分为3个模块,一是数据接收模块,用于提取8位有效数据;二是数据发送模块,发送数据内容为一位起始位,8位数据位,1位停止位,无校验位[4];三是顶层汇总模块,用于汇总数据和协调各模块的工作。数据传输波特率为9 600 bit/s,FPGA程序模块图框图如图3所示[5]。

图3 FPGA程序模块图

4 Qt/Embedded显示、存储软件的设计

由于Qt天然的跨平台、简洁的开发方式以及原生支持扩展组态,本设计采用Qt/E开发嵌入式软件[6]。嵌入式软件主要实现了温度和湿度实时波形显示,数据的存储、回调,数据库文件导出为文本文件,数据库文件和文本文件存储在SD卡中。

4.1 实时曲线显示界面设计方案

显示界面包括曲线显示部分、实时数据显示、波特率选择和按键部分。按键功能包括温湿度切换、暂停、清除数据、查看数据库和退出。软件将最近30 s内接收自FPGA的数据显示为波形。PC端开发软件为arm-qtopia-2.2.0,程序的编写调试在Fedora14系统中完成。图4为温度波形显示界面,点击湿度图标可切换至湿度波形的显示。

图4 实时波形显示界面

4.2 实时曲线的绘制

以前的工具开发包使用的回调和消息映射机制易崩溃、不够稳定,而Qt所支持的信号与槽的机制增强了对象间通信的稳定性,使GUI对用户的动作能做出迅速的响应。本设计通过串口实现数据的接收,首先需要打开串口设备,建立监听机制[7]。建立串口信号与槽函数的连接,代码如下[8]:

Qt/Embedded中使用 QPainter类创建用户图形,使用QPainter创建用户图形时需要将代码放入paintEvent()的画图事件函数中,QPainter类提供了低级的画图函数,例如画线,画矩形等。

通常绘制实时波形的方法是直接用QPainter类在画图区域画出所需图形,在下一时刻擦除上次的图形并绘制所需的图形,但是,这样做会带来屏幕的闪烁。为了消除闪烁带来的影响,采用了双缓冲的设计方案。双缓冲技术就是在内存中开辟一块缓冲区,这块缓冲区可看做一幅位图,先将需要绘制的图形绘制到缓冲区的位图上,然后将绘制好的位图显示到窗口中[9]。源代码如下:

Qt/E不同于PC端的软件,其并未提供用于实时波形显示的坐标轴控件,为获得满足需求的显示效果和精度,需要时间轴具备较高精度的滚动功能,竖轴具备自动调节显示范围的能力。

时间轴滚动显示实现方法是,定义长度为60的二维数组,分别存放数字0~59和数字所对应的横向像素值,像素值用于确定数字应该显示的位置,显示波形时,重新计算出0~59所对应的像素数值,以实现时间轴滚动显示。时间轴时基采用操作系统时间,用QTime::currentTime()获得,可精确到毫秒。竖轴的自动调节功能实现方法是,选取需要显示为波形的数据中的最大值和最小值,通过选取的最值确定竖轴合理的范围。

曲线的绘制采用QPoint类,将需要显示的数据表示为像素点,通过drawPolyline()函数将像素点绘成曲线。经过多次实验对比,实时显示波形的误差小于1 s/h,满足应用需求。

4.3 数据的存储和查看

本设计使用SQLite3数据库对数据进行存储,SQLite3数据库是根据嵌入式设备的特点专门开发的一款小型嵌入式数据库系统。点击实时波形显示界面中的“查看数据库”按钮,即可进入数据查询界面,图5为数据查询系统界面。

图5 数据查询系统界面

使用SQLite3数据库前需要在Fedora14系统中安装数据库。首先解压源码包,执行configure文件,生成Makefile文件,执行make命令(系统中需要安装armlinuxgcc交叉编译工具),生成sqlite3可执行文件,将其拷贝到ARMLinux系统的/bin或者/ usr/bin目录下,并添加可执行权限。将./lib目录下的libsqlite3.a、libsqlite3.so.0.8.6拷贝到ARMLinux系统的/lib目录下。编写程序时,需要添加sqlite3.h文件的路径[10]。

数据库文件用日期和时间来命名,Qt中用QDateTime::currentDataeTime()获得系统的当前日期,用QTime::currentTime()获得系统的当前时间。

显示数据库数据使用了QTable类,该类提供了表格的功能,如图5中所示。点击“选择文件”按钮,可以选择打开已存储的数据库文件,由于嵌入式Qt不提供QFileDialog类,编写程序时需要编写一个文件对话框的类。使用QTextStream类将数据库文件数据导入到文本文件中,部分源代码如下[11]:

5 实验结果与分析

在常温环境下,本设计传感器所测数据与计量级光电式露点传感器的测量数据作对比,选用了Michell公司的OPTIDEW VISION光电原理的冷镜式露点传感器。经过多次实验,将两种仪器的测量结果进行对比,温、湿度对比图如图6、图7所示。将光电式露点传感器所测得的数据记为“实际湿度”,将本设计传感器测得数据记为“测量湿度”[12]。

图6 温度对比图

图7 湿度对比图

根据图6、图7所示,温度传感器误差小于0.2℃,湿度传感器误差小于1%,由于冷镜式露点传感器响应速度慢于本设计温湿度传感器的响应速度,且温度只保留小数点后一位有效数字,所以实际温度误差远小于0.2℃。湿度误差小于1%。

本文所设计的多通道便携式温湿度传感器系统指标性能方面达到应用要求。

6 结束语

本文提出了一种基于铂电阻、HIH-5031、FPGA和Qt/E的多通道温湿度采集、显示和存储系统,由HIH-5031湿度传感器、PT100电阻温度传感器、STM32、AD7193、FPGA和ARM11处理器等主要器件组成。可实现多路快速测量大气温度和湿度数据,运行Qt/E程序,可在ARM-LINUX设备上实时显示波形曲线,并使用SQLite3数据库将数据存储在SD存储卡上。与传统的地面及气象探测飞机机载系统相比,该方案不但实现多通道高精度传感器测量,而且体积、重量、功耗、便携性均有显著提升,可用于地面气象站的多点观测,以及气象探测飞机机载拖拽式测量中。

[1] 李安玲,何强,陈宝军,等.HIH-4000湿度传感器在粮情监控中的应用[J].粮油食品科技,2008,16(5):25-27.

[2] 陈雷,郑德忠,陈爽.基于Pt100的多功能无线测温方案[J].制造业自动化,2012,34(10):23-26.

[3] 王勇军,李翔.VRS51L3074和AD7193的高分辨率数据采集系统[J].单片机与嵌入式系统应用,2012,(9):46-48.

[4] 郭树涛,靖永志.基于FPGA的串口通信设计[J].北京电子科技学院学报,2006,14(4):74-78.

[5] 张羽,胡玉贵,殷圭喜,等.基于FPGA的多串口扩展实现[J].电子器件,2009,32(1):233-236.

[6] 李斌,陈富林,李森,等.基于ARMLinux的可编程自动化控制器的设计[J].科学技术与工程,2011,11(36):9067-9070.

[7] 安吉宇,于涛,李拥军,等.基于Qt的Linux组态软件研究与开发[J].电子器件,2006,29(2):532-535.

[8] 李招峰,刘建设,金华标.基于QT/E的串口通信故障及其解决方案[J].计算机技术与发展,2012,22(6):254-257

[9] 葛琦.嵌入式Linux的Qt/Embedded无闪烁绘图[J].电脑知识与技术,2009,5(16):4291-4293.

[10]尧有平,薛小波.基于ARMLinux的SQLite嵌入式数据库的研究[J].微计算机信息,2008,24(2-2):64-66.

[11]狄辉辉,李京华,刘景桑,等.基于Qt/E的嵌入式实时曲线显示界面设计与实现[J].电子测量技术,2011,34(12):76-79.

[12]谢军,刘清惓.基于MEMS和数字信号处理器的露点传感器设计[J].制造业自动化,2013,35(2):133-138.

杨 龙(1989- ),男,硕士生,主要研究方向为传感器外围电路设计、嵌入式系 统 软 件 设 计,yanglongvc@ 163.com;

刘清惓(1979- ),男,博士,2002年获东南大学硕士学位,2006年获加州大学戴维斯分校博士学位。目前任南京信息工程大学教授、博士生导师。主要研究方向为MEMS传感器技术、气象探测,q.liu@ieee.org。

Design of Multi-Channel Temperature and Humidity Sensors Acquisition and Display System*

YANG Long,LIU Qingquan*
(School of Electronic and Information Engineering,Nanjing University of Information Science and Technology,Nanjing 210044,China)

According to the measurement ocassion of Ground Stations multi-point observations and meteorological observation aircraft airborne towed,a temperature and humidity acquisition circuit based on platinum resistance and HIH-5030 is proposed.In this system,Embedded software which has real-time waveform display software based on Qt/E can firstly be taken to collect multiple data by FPGA,and then,SQLite3 datebase is used to storage temperature and humidity data.Humidity error of this new system is less than 1%and temperature error is less than 0.2℃compared with optical chilled mirror dew point sensor.Moreover,this sensor circuit can get fast response speed,as well as accurate and stable real-time waveform interface,so that it can be used in the measurement ocassion of Ground Stations multi-point observations and airborne towed.

humidity sensor;temperature sensor;FPGA;ARM-LINUX;Qt/Embedded

10.3969/j.issn.1005-9490.2014.02.028

TP212.9

A

1005-9490(2014)02-0297-05

项目来源:国家公益性行业(气象)科研专项重点项目(GYHY200906037,GYHY201106048);国家自然科学基金项目(41075026,412475042);江苏高校优势学科建设工程项目;江苏省科技支撑计划重点项目(BE2011006)

2014-01-09修改日期:2014-02-20

EEACC:7230;7320

猜你喜欢
铂电阻温湿度串口
浅谈AB PLC串口跟RFID传感器的通讯应用
基于AT89C51的数字型蚕用温湿度计的设计
基于DSP的多路温湿度监测系统
基于温湿度控制的天气预测装置
铂电阻温度传感器现场检定的干扰故障及处理方法
刍议工业铂电阻温度计检定用辅助工具的设计
蒸发冷却温湿度独立控制空调系统的应用
高精度铂电阻温度测量新方法探讨
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索