引言
温度、湿度是两个非常重要的物理量,在工农业生产、气象、科学研究、仓库管理以及日常生活中都需要对温、湿度进行精确的测量和控制。传统的温、湿度测量需要耗费大量的人力、物力,很难满足对温、湿度控制的要求。在电子测量技术不断发展的今天,由于温湿度传感器的发展,温、湿度测量技术也正朝着微型化、智能化、系统化的方向发展。本温湿度检测仪通过简单的设计使检测仪具有操作简单、成本低、精度高的特点。
1 系统组成与硬件设计方案
无线温湿度检测仪主要由单片机AT89C52、无线收发模块SmartNode N608W、实时时钟芯片DS1302、液晶显示屏12864等组成。系统结构框图如图1所示。
系统的工作原理:温湿度传感器SHT11把温、湿度数据传送给AT89C52,AT89C52将温、湿度数据显示在液晶屏12864上。同时无线收发模块SmartNode N608W把温、湿度数据以一定的形式发送给协调器。然后协调器将收集的各路温、湿度数据整理和分类,通过串口RS232传送给上位机,最后显示在上位机软件主界面的各个子窗口上。
本系统的硬件主要分为以下几大模块。
图1 系统结构框图
1.1 电源电路
该系统主要使用9 V可充电电池作电压源,也可以使用9 V电源适配器为系统供电。通过2片电压转换芯片AMS1117将9 V电压转换成5 V和3.3 V,给系统提供电源。添加一个LED灯是为了检测系统是否上电,同时输出端的电容C1和C2可以滤除高频分量,使输出电压更加平稳。电源电路原理图如图2所示。
图2 电源电路原理图
1.2 实时时钟DS1302电路
实时温、湿度检测报告要求系统提供实时时钟信号,为此选择了一款比较常用的实时时钟芯片DS1302。
DS1302是Maxim公司推出的一种高性能、低功耗、带RAM的实时时钟芯片。它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为25~55 V。采用3线接口与AT89C52进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据[7]。
图3 DS1302电路原理图
DS1302电路原理图如图3所示。
1.3 无线收发模块SmartNode N608W电路
单独的温、湿度检测不可以代表大范围的温、湿度变化情况,这就需要多个温湿度检测仪针对特定的空间环境进行检测。于是就考虑到了使用无线网络,进行组网检测。选择上海逻讯公司的SmartNode N608W作为无线收发模块。
SmartNode N608W是上海逻讯公司生产的低功耗、内置天线、具有8级组网深度、功率可调的无线收发模块。它具有以下特性:
① 支持调频和固定频率两种工作模式。
② 支持Smart Node协议传输、数据透明传输。
③ 具有点对点、点对多点、多级中继的网络结构。
④ 接口支持1路UART、2路I/O口、4路I/O口或4路10位A/D转换。
⑤ 可扩展接口有RS485、RS232、USB、CF卡。
图4 无线收发模块SmartNode N608W电路原理图
⑥ 无线传输速率2.4~128 kb/s(需要软件配置)。
⑦ 供电电压为1.8~6 V,具有休眠和唤醒功能。无线收发模块SmartNode N608W电路原理图如图4所示。
无线收发模块SmartNode N608W使用Smart Node通信协议,Smart Node通信协议串口数据包格式如下:
通过串口同步、起始位定义和相应的操作指令,可以进行点对点、网络接收和发送数据的操作以实现网络通信。
1.4 键盘电路
由于AT89C52的I/O引脚满足使用,我们采用常用的4×4矩阵扫描式键盘,分配AT89C52的P2口作为键盘电路的8个输入端。16个按键分别由0、1、2、3、4、5、6、7、8、9、→、↑、↓、←、确认键、工作模式(M)键组成。
1.5 串口通信MAX232电路
该温湿度检测仪以RS232通信模式与上位机进行通信,采用MAX232接口芯片,同时在MAX232芯片的收发端添加2个LED灯,用来检验其是否正在通信。MAX232串口通信原理图如图5所示 。
图5 MAX232串口通信电路原理图
1.6 报警电路
当测定的温、湿度数据超过所设定的温、湿度上限,或者低于所设定的温、湿度下限时,报警器就会发生报警,提醒工作人员现在的温、湿度已经超过设定的温、湿度上限或者低于温、湿度下限。
图6 报警电路原理图
工作人员应立即采取适当措施,保证温、湿度在设定的范围之内。同时设有报警信号指示灯,红灯亮表示发生温度警告,蓝灯亮表示发生湿度警告。报警电路原理图如图6所示。
1.7 温湿度传感器与AT89C52的连接电路
SHT11是一款瑞士Sensirion公司生产的相对湿度和温度测量、数字信号输出、无需额外部件、超低能耗、自动休眠的温湿度复合传感器。温湿度传感器的主要特性如下:
图7 温湿度传感器SHT11与AT89C52的连接电路
① 将温湿度传感器、信号放大调理、A/D转换、I2C总线接口全部集成于一个芯片。
② 可给出全校准相对湿度及温度值输出。
③ 具有露点值计算输出功能。
④ 具有卓越的长期稳定性。
⑤ 湿度值输出分辨率为14位,温度值输出分辨率为12位,并可编程为12位和8位。
⑥ 小体积(765 mm×508 mm×23.5 mm),可表面贴装。
⑦ 具有可靠的CRC数据传输校验功能。
⑧ 片内装载的校准系数可保证100%互换性。
⑨ 电流消耗,测量时为550 μA,平均为28 μA,休眠时为3 μA[6]。
SHT11与AT89C52的连接电路如图7所示。
SHT11与AT89C52的连接采用2Wire串行接口,进行温、湿度采集时要按照传感器的读写时序与AT89C52进行通信,由于SHT11为数字式输出具有一定的非线性特性,要对输出的温、湿度值进行线性补偿和温、湿度补偿,最后得到的温、湿度值才较为准确。
相对湿度线性补偿公式为:
RHliner=C1+C2×SORH+C3×SO2RH
式中,RHliner表示线性补偿后的湿度值;SORH表示相对湿度测量值;C1、C2、C3为线性补偿系数。
SHT11的温度输出具有很好的线性,实际温度输出公式为:
Temperature=d1+d2×SOT
式中,d1、d2为待定值,d1取值与工作电压有关,SOT为温度测量值;d2与SHT11内部A/D转换器的分辨率有关。
1.8 AT89C52外围电路
本系统采用AT89C52作为微控制器,构成最小系统,在最小系统的基础上增加需要的外围电路。为了保存温、湿度信息,我们扩展了E2PROM,使用数据存储芯片AT24C256与AT89C52相连。AT89C52与液晶显示屏12864的连接采用串口方式,节约了AT89C52的端口。AT89C52外围电路如图7所示。
2 系统软件设计
2.1 AT89C52软件设计
本系统程序使用C语言编写,开发工具Keil4作为代码生成器。AT89C52系统软件采用模块化编程方法,把各功能模块分成子功能模块,方便软件系统的调试和完善升级。本软件系统主要分为主程序模块、模式选择模块、温湿度采集与无线收发模块。
主程序模块用来判断键盘输入的值、动态显示各信息调用各子程序模块,调用各功能模块和中断服务子程序,是系统能够正常运行的核心。这里简要叙述一下SHT11温、湿度数据采集子程序。
SHT11温、湿度数据采集子程序主要包括几个重要函数:读、写请求函数、带校验和的测量温湿度函数计算温湿度函数、计算露点函数等。这里主要介绍计算温湿度函数。
计算温湿度函数代码如下:
void calc_sht11(float *p_humidity ,float *p_temperature){
const float C1=-4.0; //C1线性补偿系数
const float C2=+0.0405;//C2线性补偿系数
const float C3=-0.0000028;//C3为线性补偿系数
const float T1=+0.01; //T1与工作电压有关的常数
const float T2=+0.00008;//T2与SHT11有关的常数
float rh=*p_humidity;//相对湿度值
float t=*p_temperature;//温度值
float rh_lin; //线性补偿后的湿度值
float rh_true;//温度补偿后的湿度值
float t_c;//温度值
t_c=t*0.01 - 40;//计算温度值
rh_lin=C3*rh*rh + C2*rh + C1;//计算湿度值
rh_true=(t_c-25)*(T1+T2*rh)+rh_lin; //计算湿度值
if(rh_true>100) rh_true=100;//湿度上限
if(rh_true<0.1) rh_true=0.1; //湿度下限
*p_temperature=t_c; //返回温度值
*p_humidity=rh_true;//返回湿度值
}
2.2 上位机软件设计
上位机软件使用虚拟仪器开发工具LabWindows/ CVI进行编写。该温湿度检测仪设有RS232串口,可以通过该串口与上位机通信,也可以在组网后通过协调器与上位机通信,将传送到上位机的数据进一步分析,显示在上位机主用户界面上。在上位机主界面上工作人员可以很轻松地了解到各个节点的温、湿度情况。
结语
本文对无线温湿度检测终端仪表设计方法进行了详细说明。调试结果表明,该系统使用方便、操作简单、可靠性高,适应环境范围广。但也有不足之处,在组网检测时容易受到外界的电磁干扰。