摘要研究了基于SHT11温湿度传感器和单片机技术的智能温湿度测量系统。系统使用SHT11温湿度传感器实时采集温湿度数据;同时采用AT 89s52单片机进行数据的存储和计算等处理;并通过扩展外围电路设计了一个集多种应用功能于一体的温湿度值检测系统。该系统具有测量精度高、可靠性强、体积小、成本低,且使用操作方便等优点。
随着新技术被应用到温湿度测量领域中,高集成度、智能化、高精度、高可靠性的温湿度一体化检测传感器开始得到应用。SHT11作为新一代的高性能智能传感器,具有广泛的应用前景。本设计介绍了SHT11温湿度传感器的工作原理,并论述了如何利用单片机进行温湿度数据处理以及结合外围电路完成温湿度监视和控制功能。
1 传感器工作原理
SHT11智能温湿度传感器的结构如图1所示,该传感器由一片检测相对湿度和温度的混合传感器模块及一个经校准的数字输出组成,两线串行接口和内部电压自动调节,使其具有方便、快速的系统集成。
SHT11系列传感器的优点为:无需外部模拟电子电路,可直接被微控制器访问;温度、供电、电容偏差及剩余电流等变化均不影响精度,即使被浸湿也不会失灵或出现误差。同时具有长期稳定性,无需再校准,且反应速度快、能量消耗低,适用于电池供电。
2 硬件设计
设计系统框图如图2所示,采用SHT11传感器采集温湿度数据,利用非自锁按钮式开关组成的键盘向控制部分发出人为的控制信号,再使用DS1302时钟芯片产生实时时间数据。而控制部分采用AT89s52单片机进行各类数据接收、处理和输出。输出部分则采用报警发生电路来报警,并通过液晶显示模块对温湿度和时间等结果信息进行显示。
2.1 传感器硬件接口电路设计
SHT11通过两线串行接口电路与单片机连接,具体电路如图3所示。其中,串行时钟输入线SCK用于单片机控制器与SHT11之间的通信同步。串行数据线DATA用于内部数据的输出与外部数据的输入。DATA在SCK时钟下降沿之后改变状态,并仅在SCK时钟上升沿后有效。因此,单片机可在SCK高电平时读取数据,而当其向SHT11发送数据时,在SCK时钟下降沿后改变状态,同时保证DATA线上的电平状态在SCK高电平段稳定。
设计中在数据线DATA上加入10 kΩ的上拉电阻。此外,在VDD和GND之间跨接一个100 nF的电容用于去耦滤波。
2.2 单片机系统外围电路设计
系统采用的AT89s52是一个低功耗,高性能CMOS 8位单片机,片内含8kB的Flash程序存储器,256 Byte的RAM,40个引脚,32个I/O口,3个16位可编程定时/计数器,5个中断源,2个优先级,1个全双工串行通信口,兼容标准MCS-51指令系统及80C51引脚结构。应用中单片机的最小系统通常包含电源开关、复位电路、晶振电路等相关外围电路,设计中单片机系统部分电路如图4所示。
2.3 显示电路设计
系统采用带ST7920汉字液晶控制驱动器的OCMJ4×8C液晶显示模块,该液晶提供8位微处理器接口,带有显示RAM及字型产生器,只需一个最小的微处理系统,便可方便地操作模块。该显示模块内置2 MB中文字型ROM(CGROM)总共提供8 192个中文字型(16×16点阵),16 kB半宽字型ROM(HCGROM)总共提供128个符号字型(16×8点阵),并可与文字画面混和显示。
使用单片机的P0口作为并行数据传输接口,在P0口接入8个1 kΩ的电阻用于提高带负载能力,使其可正常驱动单片机,电路如图5所示。
2.4 其他功能电路设计
如图6所示,系统采用非自锁按钮式开关组成的简单键盘,向单片机发出人为的功能选择和设定控制信号,利用带3 V纽扣电池供电的DS1302时钟芯片产生实时时间数据。同时采用三极管放大电路和蜂鸣器组成的简单报警发生电路报警,而报警电路可通过拔出跨接器P_SP来进行隔离。整个系统采用5 V电源直接供电。
3 软件设计
编程主要涉及SHT11传感器的温湿度数据测量和采集、时间数据采集、液晶显示界面、键盘扫描设定及温湿度限值数据比较等读写程序与算法程序的编写。
3.1 温湿度测量程序设计
SHT11传感器的工作时序如图7所示,传感器工作时首先对数据传输进行初始化来启动SHT11测量时序,即在第一个SCK时钟高电平时,DA TA翻转为低电平,并在第二个SCK时钟高电平时,DATA翻转为高电平。SHT11测量命令包含3个地址位和5个命令位。单片机发布一组8 bit测量命令后,DATA在第8个SCK时钟的下降沿被置为低电平。再发送第9个SCK时钟作为命令确认,DA2TA在其下降沿后,恢复为高电平。同时,单片机可暂时停止发送时钟序列以进入空闲模式,准备读取测量数据。SHT11在转换结束后,将DATA置为低电平,单片机继续发出时钟序列,来读取2个8 bit的测量数据和1个8 bit的CRC奇偶校验。所有数据从MSB开始,右值有效。其中,在每个字节传输结束后,均需要发出一个时钟高电子ACK,并将DATA置为低电平,以确认读取成功。在测量和传输结束后,SHT11自动转入休眠模式。
3.2 键盘设定算法程序设计
键盘采用K1、K2、K3、K4,4个非自锁开关设计,当开关按下后会给单片机相应I/O口一个高电平。键盘主要实现对显示界面的切换、温湿度报警上下限设定及时间设定3大功能。这4个开关的功能为:K1为界面切换键;K2为逻辑“+”,上翻页,光标上移;K3为逻辑“-”,下翻页,光标下移;K4选择键。
3.3 液晶显示程序设计
液晶显示模块的编程方式主要由该模块使用的控制/驱动器所决定。设计采用ST7920汉字液晶控制/驱动器,其拥有8位并行微控制器接口,通过单片机编程,并使用了显示字母、数字符号和中文字型的功能。另外,对于液晶屏的编程,一般只需向其中写数据即可。显示程序设计流程如图9所示。
3.4 报警程序设计
温湿度越限报警功能通过报警函数实现,当温湿度高于设定的报警上限或低于设定的报警下限时,便会在单片机的P2.1管脚输出高电平,并通过三极管放大电路驱动蜂鸣器报警。
在报警函数中,通过算法比较温湿度显示的限值和湿度设定限值的大小来判断当前湿度是否越限。而温度与湿度的比较类似,仅是算法上仍需对综合温度的正负值进行考虑。
3.5 DS1302时钟程序设计
DS1302时钟芯片在系统中起计时及时间显示、设定的功能。DS1302的读写操作时序如图10所示,在控制指令字输入后的下一个SCLK时钟上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据。
3.6 主函数程序设计
主函数程序将上述各功能单元子函数程序综合到一个函数中循环运行,其流程如图11所示。
4 结束语
SHT11作为新一代高性能智能传感器,具有较高的应用前景。本文所设计的智能电子温湿度测量系统,经实验验证可对温度和相对湿度进行精确测量,并实时显示测量结果,此外,该装置还具有时间显示、历史温湿度数据查询、温湿度上下限越限报警和相关显示切换及设定等功能。该装置成果具有体积小、测量精度高、测量速度快、范围广、使用操作方便、成本低以及功能强等优点,适用于家居、旅行、温室农业、食物储存、档案保管等多种应用场合,并具有较大的实际应用与经济利用价值。