采用SHT11数字式温湿度传感器实现环境温湿度测量系统的设计
2023-05-30 来源:elecfans
引言
为了有效地开展现代混凝土结构耐久性的基础研究,揭示混凝土结构生命全过程的损伤演变规律,从根本上改善混凝土工程的耐久性,保证其应有的使用寿命,对混凝土使用环境进行温湿度检测显得尤为重要
通常使用热敏电阻和湿敏电容来分别测量温度和湿度,A/D转换后送入计算机,但这种测量方法一般都要设计相应的信号调理电路,还要经过复杂的标定过程,其测量精度很难保证。这种测量温湿度的系统在测量点数较少,而且精度要求不高的场合还可以胜任,而需要多点测量且精度要求较高时,其缺点就显露无疑了。而且,当涉及到两个参数的监测时,每一个测量点都必须使用两个独立的传感器和独立的信号调理电路,这不仅使得测量系统的成本和体积大为提高,也在一定程度上增加了系统设计的复杂性。本文将采用SHT11芯片,实现更为优化的设计方案。
SHT11内部结构和工作原理
SHT11数字式温湿度传感器采用CMOSens(Ce-mo-Sens)专利技术(CMOS和传感器技术的融合)制造,它的特点为:全量程标定,二线数字输出;湿度测量范围为0~100%RH,温度测量范围为-40℃~+123.8℃,湿度测量精度为±3.0% RH,温度测量精度为±0.4℃,响应时间《4s;低功耗 ( 30mW),可完全浸没。其外形尺寸仅为7.5mm×5mm×2.5mm,体积与大火柴头相近。芯片能输出经过完全校准的相对湿度和温度数字信号,便于实现系统的集成。
SHT11内部结构
其内部结构如图1所示。主要包括:相对湿度传感器、温度传感器、放大器、14位ADC、校准存储器E2PROM、RAM、CRC(循环冗余校验码)寄存器、二线制串行接口和低压监测电路等。
图1 SHT11内部结构
该芯片的DATA引脚在SCK时钟的下降沿之后改变状态,并仅在SCK时钟上升沿之后有效,所以,微控制器可以在SCK高电平时读出数据,而当其向SHT11发送数据时,则必须保证DATA上的电平状态在SCK高电平段稳定。在需要输出高电平时,微控制器将置为高阻态,由外部的上拉电阻将信号拉至高电平,从而实现高电平输出。
工作原理
首先由两个传感器分别产生相对湿度和温度信号,经过放大后分别送到14位的ADC进行A/D转换、标准和纠错,最后通过二线制的串行接口,将相对湿度和温度的数据送至微控制器,再利用微控制器完成非线性补偿和温度补偿。
温湿度测量系统
硬件电路的设计
本系统以PIC16F73单片机作为微控制器。PIC16F73为8位28引脚微处理器,具有4KB的FLASH程序存储器;22条双向可编程I/O口线;192字节数据存储器;3个定时器;5路8位A/D通道。
该系统由测量、显示和通信三部分组成。由于PIC16F73具备I2C总线接口,所以不需要进行虚拟。分别在DATA端接入1个4.7KW的上拉电阻,在VDD和GND端接入一个0.1mF的去耦电容。硬件连线图如图2所示。
图2 系统硬件电路图
SHT11采用二线制的数据传输方式,为节省有限的I/O口资源,采用如下连接方式:将每个SHT11的SCK线都接到微控制器的同一个I/O口线上,而DATA线则分别挂接到不同I/O端口。同时,这样的接线方式还有一个优点:由于多个SHT11共用一条SCK线,因此,在每次测量中可以同时发出测量指令,这样,各个传感器同时进行测量,只需一次等待时间就可以完成整体数据的采集。缩短了数据的采集时间,从而为控制系统的快速响应提供了条件。
显示部分电路采用带有高速串行接口的4位LED控制驱动器ZLG7219实现,接口采用同步串行外设接口SPI,编程简单而且节省I/O口。温度和湿度显示各用4位,通过改变连接电源与ISET端口的电阻值,可以调节数码管的显示亮度。
与上位机的数据通信部分采用接口芯片MAX232实现的RS-232的通信方式。
为提高系统的可靠性,由MAX813LEUA组成看门狗电路,以防止程序跑飞而使系统失控。如果在1.6s内PIC16F73不给WDI输入端发送触发信号,说明程序跑飞,MAX813LEUA将发出复位信号,使系统复位重新进行。
温湿度测量系统软件的设计
在单片机内部写有数据的采集和显示等程序,能使当前的温湿度值实时显示在现场,另外,该温湿度值通过RS-232总线接口送至PC,运行VB程序使温湿度值在监控界面上显示。单片机软件的流程如图3所示。
图3 软件流程图
为实现温湿度测量,使用VB编写了上位机显示画面,能实时显示出当前现场每个点位的温湿度值,下面是对温湿度进行转化的部分程序:
Select Case
MSComm1.CommEvent
Case comEvReceive
Label11.Visible = True
Label12.Visible = True
buffer = MSComm1.Input
arr = buffer
For i = 1 To 11
w_1(i) = arr(i - 1)
Text1.Text = Text1.Text +
“ ” + w_1(i)
Next i
Humidity = Str$((Val(w_1(4)) * 256 + Val(w_1(5))) / 100)
Temperature = Str$(((Val(w_1(6)) * 256 + Val(w_1(7))) - 27315) / 100)
Label2.Caption = Humidity
Label10.Caption = Temperature
End Select
图4是对其中的一个点进行采集的画面,在图中有串口号、波特率、检验位、数据位和停止位等设置,被测量点的当前温湿度一目了然。
图4 温湿度显示界面
这里显示的只是一个点,当然,也可以把所要显示的多个点一起显示,也可以切换到每一个点的历史温湿度值曲线,只要在程序上做一些修改就可以了。
结语
本文采用PIC16F73单片机和SHT11温湿度传感器及相关外围芯片构成了高性能温湿度采集系统,并使用VB实现了数据现场和上位机的实时通信,从而很方便地知晓现场每个点位的温湿度状况,为混凝土结构的使用提供了强有力的依据。