多路温湿度传感器采集及显示系统设计杨龙;刘清惓【摘要】针对地面气象站多点观测以及气象探测飞机机载拖拽式测量场合,提出一种基于铂电阻和HIH-5031的温、湿度采集电路,通过FPGA实现多路数据汇总至嵌入式显示终端,终端拥有基于Qt/E的实时波形显示软件,并使用SQLite3数据库存储温、湿度数据。
经过与光学冷镜式露点传感器的对比测试,验证了其湿度误差小于1%,温度误差远小于0.2℃,且传感器电路响应速度快,实时波形显示界面准确、稳定,可用于地面气象站多点观测和机载拖拽式的测量场合。
%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.【期刊名称】《电子器件》【年(卷),期】2014(000)002【总页数】5页(P297-301)【关键词】湿度传感器;温度传感器;FPGA;ARM-LINUX;Qt/Embedded【作者】杨龙;刘清惓【作者单位】南京信息工程大学电子与信息工程学院,信号与信息处理系,南京210044;南京信息工程大学电子与信息工程学院,信号与信息处理系,南京210044【正文语种】中文【中图分类】TP212.9在气象探测领域,获取温度和湿度数据对于气象灾害预警、精确数值预报、人工影响天气和气候变化监测都是极其重要的。
在某些应用场合,测量现场需要查看温、湿度数据走势并存储下来,这些场合需要使用便携式的显示终端。
在地面气象站的多点观测,以及在气象探测飞机机载拖拽式测量中,使用PC观测和存储实时数据,仪器体积、重量和功耗都难以满足不断提高的需求。
本文提出了一种基于HIH-5031湿度传感器和铂电阻温度传感器的前端采集方案,通过FPGA汇总多路前端传来的温度和湿度数据,经FPGA处理后发送至基于ARM11处理器的显示终端,ARM11处理器终端运行嵌入式Linux系统,通过运行Qt/E程序来实现实时数据波形的显示,便于及时观测温、湿度的变化趋势,该系统中安装有SQLite3数据库,用于存储接收到的传感器数据。
整个系统主要由3部分组成:多路温湿度采集前端、多路传输汇总电路和便携式显示终端。
温湿度采集前端基于STM32微处理器,采用模数转换器采集HIH-5031湿度传感器和铂电阻温度传感器的电压值,转换成对应温度和湿度,通过RS232协议将数据发送至FPGA;FPGA实现对多路数据的收集并处理,将处理后的数据以RS232协议发送至便携式显示终端;显示终端采用的是ARM11处理器,搭载嵌入式Linux操作系统,运行Qt/E应用程序,实现温度和湿度数据的实时波形显示,并将原始数据存储成数据库文件,软件支持将数据库文件导出成文本文件。
所有文件均存储在存储卡上,以便在PC等终端上查看。
系统总体框图如图1所示。
温湿度采集前端采用了32位基于ARM Cortex -M3内核的STM32f103微处理器,多路传输汇总电路中使用的FPGA芯片是Altera公司的Cyclone II芯片,便携式显示终端使用了三星公司的ARM11架构的S3C6410处理器芯片。
2.1 温湿度采集电路设计户外气象站和高空气象探测需要传感器长期稳定且在-50℃到+50℃环境下拥有良好性能。
HIH-5031是带外壳、防冷凝的集成电路湿度传感器,对灰尘、污物、油类和一般的化学环境拥有出色的抵抗性能。
相较于热敏电阻、热电偶和集成温度传感器,选用稳定性较好的铂(Pt100)电阻作为感温元件。
为获取高精度的温湿度数据,本系统采用高分辨率、高采样速率、低噪声的24位模数转换芯片AD7193进行数据采集。
AD7193内部的Σ-Δ调制器以高速的采样频率对输入模拟信号进行采样。
AD7193拥有4个独立通道,满足本设计对通道数、速度、精度的需求。
温湿度采集前端电路原理框图如图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.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]。
由于Qt天然的跨平台、简洁的开发方式以及原生支持扩展组态,本设计采用Qt/E开发嵌入式软件[6]。
嵌入式软件主要实现了温度和湿度实时波形显示,数据的存储、回调,数据库文件导出为文本文件,数据库文件和文本文件存储在SD卡中。
4.1 实时曲线显示界面设计方案显示界面包括曲线显示部分、实时数据显示、波特率选择和按键部分。
按键功能包括温湿度切换、暂停、清除数据、查看数据库和退出。
软件将最近30 s内接收自FPGA的数据显示为波形。
PC端开发软件为arm-qtopia-2.2.0,程序的编写调试在Fedora14系统中完成。
图4为温度波形显示界面,点击湿度图标可切换至湿度波形的显示。
4.2 实时曲线的绘制以前的工具开发包使用的回调和消息映射机制易崩溃、不够稳定,而Qt所支持的信号与槽的机制增强了对象间通信的稳定性,使GUI对用户的动作能做出迅速的响应。
本设计通过串口实现数据的接收,首先需要打开串口设备,建立监听机制[7]。
建立串口信号与槽函数的连接,代码如下[8]:Qt/Embedded中使用 QPainter类创建用户图形,使用QPainter创建用户图形时需要将代码放入paintEvent()的画图事件函数中,QPainter类提供了低级的画图函数,例如画线,画矩形等。
通常绘制实时波形的方法是直接用QPainter类在画图区域画出所需图形,在下一时刻擦除上次的图形并绘制所需的图形,但是,这样做会带来屏幕的闪烁。
为了消除闪烁带来的影响,采用了双缓冲的设计方案。
双缓冲技术就是在内存中开辟一块缓冲区,这块缓冲区可看做一幅位图,先将需要绘制的图形绘制到缓冲区的位图上,然后将绘制好的位图显示到窗口中[9]。
源代码如下:Qt/E不同于PC端的软件,其并未提供用于实时波形显示的坐标轴控件,为获得满足需求的显示效果和精度,需要时间轴具备较高精度的滚动功能,竖轴具备自动调节显示范围的能力。