庞岳峰,朱巍巍,谢克佳,罗 义
(酒泉卫星发射中心,甘肃 酒泉 732750)
在测控设备远程操控建设中,设计了远程加电系统,实现在远程操控机房控制测控设备每个分系统的加断电功能[1]。随着远程操控精细化的进一步需求,需要对测控设备工作温湿度环境进行实时监测,必要时进行机房温湿度的调节。温湿度监测与控制在土壤环境、机房、车间、电梯及水电领域已有诸多应用[2-7],按照通信方式,主要分为无线监测[8-10]和有线监测[3,11,12]。温湿度监测系统所采用的关键器件有DHT11传感器[4]、DS18B20传感器[5]、MTS310传感器[8]、SHT71传感器[9,10,13]、SHT11传感器[14-16]、AT89C51[17]单片机以及FPGA器件[18]等。SHT11的优点为无需外部模拟电路,可直接被微控制器访问,精度高、长期稳定性好、反应速度快、能耗低[15-16]。本文基于测控设备远程加电硬件板[1]设计,采用SHT11传感器和X3CS200芯片进行功能拓展,实现了温湿度信息的采集、存贮、传输和计算,在监测到温湿度不满足要求时,采用远程加电、断电功能通过温湿度控制设备进行调节。
SHT1x系列采用工业CMOSens TM技术制作,温湿度传感器、信号放大调理、A/D转换、总线接口全部集成于一芯片,体积小,可表面贴装。该器件数字化输出,湿度值输出分辨率为14位,温度值输出分辨率为12位,并可编程为12位,具有可靠的CRC数据传输校验功能。
SHT1x典型应用电路如图1所示,输出接口采用具有工业标准总线,通过时钟引脚SCK和数据引脚DATA完成数据传输。SCK用于微处理器和传感器SHT之间通信的同步,DATA引脚为三态数据引脚,用于从器件中输入和输出数据。DATA在SCK的下降沿之后变化,在上升沿时有效。在数据传输过程中,当SCK是高电平时,DATA线必须保持稳定。为避免信号冲突,微处理器仅可驱动DATA为低电平。因此,需要一个额外的电阻来把信号拉高,上拉电阻一般包含在微处理器的电路中。
图1 SHT1x系列典型应用电路
温湿度监测系统结构如图2所示,温湿度采集利用SENSIRION公司的温湿度传感器SHT11实现,SHT11控制模块在FPGA开发板上实现,完成对SHT11传感器的指令发送及检测结果的读取和解码,利用VHDL硬件语言编写。SHT11控制模块获得的温度和湿度通过串口发送,并经NPort转换成网络数据格式,传输到监控主机,在监控软件上实时显示。
图2 温湿度监测系统结构设计
SHT11的主要时序包括命令时序、测量数据时序、数据输出时序和复位时序。命令时序指由微处理器向SHT11发送命令字,包含3个地址比特和5个命令比特。在发送命令时序前需要一个启动序列信号,序列信号的定义为:在SCK高电平时,DATA变成低电平并保持,当SCK信号产生一个低电平脉冲后变成高电平时,DATA变为高电平。
启动序列后,微处理器即可发送命令序列,共8 bit,SHT接收到8 bit命令后,返回微处理器一个应答信号。应答信号的定义是:在命令序列的第8个SCK时钟的下降沿后,SHT把DATA引脚拉低,在第9个SCK时钟的下降沿之后,释放DATA。
SHT正确接收命令序列后,进入测量周期,此时DATA保持高电平。测量时间大约为11 ms(8 bit)、55 ms(12 bit)和210 ms(14 bit)。测量结束后,SHT把DATA线拉低,开始进入数据输出时序。
数据输出时,先输出高位,后输出低位。例如默认状态下,测量温度使用14 bit输出,最高位默认为零,即在DATA线被SHT拉低后,第1个SCK时钟周期,SHT输出为零,第2个时钟周期开始输出温度值;同理,测量湿度使用12 bit,则前4个SCK时钟周期,SHT输出为零,从第5个周期开始输出湿度值。SHT每发送8 bit,需要微处理器返回一个应答信号,共发送3 Byte数据。数据发送完毕,在测量结果的最低位发送后,微处理器不再返回ACK信号,而是直接把ACK信号拉高。
1.4.1 湿度计算
湿度传感器是一个非线性器,首先需要进行非线性补偿,公式为RHlinear=c1+c2×SORH+c3×SORH2,其中,SORH为SHT输出值(十进制数),其他参数如表1所示。
表1 湿度计算参数表
SORH/bitC1C2C312 -40.040 5-2.8×10-68 -40.648-7.2×10-4
1.4.2 温度计算
温度传感器为一个线性器件,计算公式为:T=d1+d2×SOT,各参数取值如表2所示。
表2 温度计算参数表
VDD/Vd1/℃SOT/bitd2/℃3.5-39.66140.013-39.60120.04
1.4.3 CRC计算
生成多形式为x8+x5+x4,检测的故障类型有奇数故障、2 bit故障、8 bit以内的连续故障等。该器件输出的CRC码是命令序列并联测量值的校验和,例如测量湿度,输入命令为0x05,测量结果是0x0931,则CRC输出的结果相当于0x050931的校验值,若按照逐字节计算的方法,计算过程如图3所示。
图3 CRC计算示意图
CRC值与温湿度值的输出不同,温湿度值先输出高位,而CRC值先输出低位。因此,控制模块从SHT中读取CRC后,需要把读取的值倒置一下。
顶层模块包括4个子模块,即串口接收模块、串口发送模块、时钟产生模块和SHT控制模块。SHT控制模块完成对温湿度传感器SHT11的命令输入和测量数据读取,是核心模块。
SHT控制模块包含两部分,一为测量控制模块,是输入SHT命令序列和读取测量数据的控制模块,主要完成功能是当从串口接收到指令代码时,判断需要进行温度(或湿度)测量还是读取测量数据、CRC校验值并寄存;二为发送控制模块,是发送测量数据的控制模块,主要功能是检测到SHT11模块测量完毕后,依次输出指令代码、温度、湿度和CRC值到串口发送模块。
测量控制模块包含3部分:① Cndprocess模块用于发送启动序列和命令序列;② MeasureT_RH模块等待SHT测量完毕后,用于读取测量的温湿度值,并根据相应的时序返回ACK信号;③ ControlMachine模块当接收到相应命令代码时,触发Cndprocess模块,发送测量命令,在MeasureT_RH模块测量完毕后寄存测量值和CRC校验值,完成测量后,设置mea_end=1表示测量完毕。ControlMachine模块的输入输出接口如表3所示。
表3 ControlMachine模块输入输出接口
信号名称端口位数功能描述clkinput1时钟信号,19.2 kHzrst_ninput1复位信号,低电平有效finishinput1测量过程标示MeaCodeinput16测量命令代码MeaStartinput1串口使能信号commendoutput3SHT的命令代码序列Mea_endoutput1测量完毕指示信号,上升沿有效startoutput1发送SHT起始序列的触发信号
其主要功能是:根据串口输入的字节值,选择不同的测量命令序列,并触发开始测量信号。模块工作的流程图如图4所示。
图4 ControlMachine模块流程
Cndprocess模块的输入输出接口如表4所示。
表4 Cndprocess模块输入输出接口
信号名称端口位数功能描述clkinput1时钟信号,19.2 kHzrst_ninput1复位信号,低电平有效startinput1发送SHT起始序列的触发信号,高电平有效commendinput3SHT的命令代码序列ackoutput1ACK信号,布尔类型,true有效doutoutput1SHT器件DATA线的输出值sckxoutput1SHT器件的时钟信号SCKwenoutput1三态端口信号的使能信号
完成SHT器件的起始命令序列、温度/湿度测量命令序列以及ACK信号的传输,同时产生SHT器件的SCK时钟信号,主要采用计数器法,对命令序列进行赋值。流程图设计如图5所示,信号sck_c为一个2 bit的信号,在时钟clk的触发下,进行循环加1,而在sck_c=“01”或“02”时,令sckx=1,其他情况等于0,从而产生SHT器件的SCK信号。
图5 Cndprocess模块流程
MeasureT_RH模块的输入输出接口定义如表5所示。
表5 MeasureT_RH模块输入输出接口
信号名称端口位数功能描述clkinput1时钟信号,19.2 kHzrst_ninput1复位信号,低电平有效sckinput1SHT器件的时钟信号SCKack_cndinput1ACK信号,布尔类型,true有效crcoutput7SHT器件输出的CRC校验码dataT_RHoutput16SHT器件输出的温度/湿度测量值finishoutput1读取测量值标示信号,1表示闲,0标示忙sht_readyoutput1SHT内部测量过程的标示信号ack_moutput1ACK信号,布尔类型,true有效wenoutput1三态端口信号的使能信号
完成读取SHT器件温度/湿度测量值和CRC校验码,并完成对ACK信号的传输。首先,当命令序列发送完毕后,等待SHT返回ACK信号,检测到ACK信号后,说明SHT已经正确接收到命令序列,开始测量。其次,等待SHT的“准备完毕”信号(SHT把DATA线拉低)有效后,采用计数器法,对读取的测量值和CRC校验码进行控制,通过检测SCK时钟的上升沿,实现计数器的叠加,具体流程如图6所示。
图6 MeasureT_RH模块流程
完成向串口模块发送4 Byte的控制功能,模块外部接口定义如表6所示。
表6 发送控制模块输入输出接口
信号名称端口位数功能描述clkinput1时钟信号,19.2 kHzrst_ninput1复位信号,低电平有效Mea_endinput1SHT测量结束标识信号DATAT_RHinput16温湿度测量值的输出crcinput8CRC校验值Commendinput3SHT的命令序列Tra_startoutput1串口的发送起始信号TraSHT_finishoutput1串口发送过程的标示信号TraDataoutput8发送至串口的数据
发送的4个字节主要包括:测量命令1 Byte(0xCC或0xDD)、测量值2 Byte(温度值或湿度值)和测量值的CRC校验码1 Byte。返回测量命令的作用是:对测量结果进行识别,便于测量值的计算和校验。
如图2所示,搭建温湿度测量环境平台,测试环境为测控设备机房。根据器件说明书,采用14位数据测量温度的分辨率为0.01 ℃,量程范围为-40 ℃~123.8 ℃,温度最大测量误差为±3 ℃,在-20 ℃~40 ℃范围内,测量误差< 1.5 ℃。采用12位数据测量湿度的分辨率为0.03%,量程范围为0~100%,湿度测量在20%~80%范围内,测量误差为±3%,其他范围随测量湿度变化而现行变化,最大为±5%。
以“逸品博洋HTC-8”型温湿度计为参考,通过空调控制测控设备内温度和湿度,HTC-8温湿度计和自行设计的温湿度计同时测量并记录,获得数据如表7所示。从表中可看出,本设计的温度测量值与参考温湿度计的测量值(HTC-8)之间误差<1℃,湿度测量值之间的误差小于4%。根据测控设备日常环境温湿度要求,本设计能够满足正常的环境监控需求。
表7 温湿度测量结果比较表
序号温度/℃湿度/%SHT-11HTC-8SHT-11HTC-8126.7826.722.122225.6525.523.721324.2424.325.622423.5023.526.523522.7022.827.925
本文设计的测控设备温湿度监测系统与原远程加电系统功能融合,通过控制加热器、除湿机等电器通电和断电方式在一定程度上达到了设备环境温湿度监测及控制的目的,但是这种方式还具有一定局限性,后续将进一步研究对空调等电器设备的远程设置。