1 系统总体组成
系统硬件部分主要用于温度的测量和存储。PC端则用于测温事件的建立与存储、测量参数的设置、温度数据的存储及温度数据的分析。整体而言,系统核心部分分为温度监测模块、温度存储模块和温度分析模块3部分。
温度监测模块用于温度的监测及采样,首先利用PC端程序进行测温事件的建立及采样开始时间(时分秒)、采样结束时间(时分秒)、采样间隔(秒)和传输方式8个采样相关参数的设置,传输方式包括直接传输和间接传输,对应温度的永久存储和临时存储,相关参数通过串口传给单片机。然后利用80C51单片机和DS18B20温度传感器来获取当前温度,并按要求对温度进行采样,同时利用其他器件将温度及当前时间显示到LED屏上。
温度存储模块分为临时存储模块和永久存储模块,临时存储模块用于将所测量的温度数据通过I2C总线临时存储于AT24C02芯片中,永久存储模块则将AT24C02芯片中的数据或当前测量的温度数据通过串行口传给PC端,然后PC端程序将其存储于SQL Server数据库中。
温度分析模块利用Matlab对所获数据进行处理。通过将数据库中的数据导入Excel表,然后调用Matlab的m文件读取Excel表中的数据,并对其分析,完成数据处理。
系统的总体设计如图1所示。
2 系统硬件设计
系统硬件原理如图2所示,硬件电路图如图3所示。整个系统通过STC89C52RC单片机进行控制,8051系列单片机为1980年Intel公司推出的MCS-51系列8为高档单片机微机,而该型号单片机为8051内核芯片,内含Flash E2PROM存储器,内部程序存储空间的大小为4 kB,内部RAM为512 Byte,价格较低,能较好地满足系统要求。DS18B20温度传感器通过单总线与单片机P1.7连接,单总线数字温度传感器将地址线、数据线、控制线合为1根信号线,硬件开销小,为保证系统稳定性,将DS18B20的VCC端与外部电源相连。1602液晶为5 V电压驱动,可显示两行,每行16个字符,内置含128个字符的ASCII字符集字库,可满足系统信息输出的要求,1602占用单片机的P0及P2.3、P2.4、P2.5。AT24C02为E2PROM存储器,使用了快速、高效、精准的I2C接口设计技术与单片机进行通信,时钟线与单片机P2.0相连,信号线与P2.1相连。DS1302为时间芯片,能自动产生年、月、日、时、分、秒等时间信息,可实现系统温度与测量时间的对应传输,并方便系统控制。MAX232为RS232/TTL电平转换芯片,实现下位机与PC端上位机的串口通信,其与单片机的RXD(P3.0)和TxD(P3.1)相连。
3 系统软件设计
3.1 单片机程序设计
图3为程序的程序总体设计图,application为整个单片机程序的全局变量,用以区分系统核心部分和应用部分,当按下与P3.2相连的按键时,触发外部中断0,application自加1。
系统核心部分又分为空闲模式和工作模式。系统处于空闲模式时,读取DS1302的时间信息和DS18B20的温度信息,在液晶显示屏上显示当前的日期、时间和温度,同时利用按键可校准日期和时间;处于工作模式时,硬件电路与PC端配合工作,完成温度的采样、存储和传输。
应用部分,单片机通过串口获得温度阈值和函数式,利用下文将叙述的公式完成相应功能。另外,单片机进行温度采样的时间由定时器0进行精确控制。定时器1用于波特率的产生。当PC端传递数据给单片机时,将导致串口中断,参数数据传送至单片机的SBUF寄存器,然后再将数据存储于char型二维数组Parameter中,因为所需传输的参数数据共有8个,且每个参数的位数均为2位,故包括‘\0’在内共需3个char。型存储空间,从而完成采样参数设置。当单片机向PC端传递温度数据时,先传递温度的整数部分传给SBUF寄存器,再将温度的小数部分传给SBUF,从而传给PC端,此时先用强制转换将float型的温度数据转换为int型变量,传递其整数部分,然后将float型变量乘以100并减去其整数部分,得到小数部分。
3.2 PC端程序设计
图4为数据库设计的E—R图。系统数据库中包括事件表、数据表和处理结果表。事件表存储各种事件信息,数据表存储对应时间的温度数据及时间数据,处理结果表存储处理结果。
Matlab分析模块的主要步骤为:从Excel表中获取时间;利用datenum()函数将三维的时分秒转换成一维的实数;利用polyfit()函数拟合时间温度的一阶函数式;利用polyv al()函数计算已知各点拟合曲线的温度值;利用plot画出原始各点和拟合曲线。
PC端可是化程序主要使用Visual C++6.0编写而成,通过串口与单片机进行数据交换,并于数据库和Matlab进行通信,完成测温事件的建立、采样参数的设置以及数据的存储与分析。
PC端可视化程序使用到了Microsoft CommunicationsControl控件(MSComm控件)实现了串口通信和数据接收,利用微软提供的一种面向对象、与语言无关的数据访问应用编程接口 ADO组件实现与SQL Server数据库的通信,通过Matlab引擎调用Matlab的m文件,实现数据的分析,Matlab引擎是一组Matlab提供的接口函数(ICngine API函数),其采用客户机/服务器计算模式,此时C++作为客户端出现,负责用户接口和提出数据请求,Matlab则属于服务器端,向客户端提供数据服务。通过以上接口及MFC函数库完成PC端的可视化程序设计。
4 系统测试及应用
系统测试采用额定功率为1 500 W的电热壶烧水进行实验测试。利用系统对1 200 ml的自来水在电热壶中的温度进行采样,获得相关数据并进行分析,从而得到温度与时间的函数式,然后用该函数式来计算到达某一温度阈值的所需时间,完成应用。
由于电热壶的功率恒定且过大,故加热时因各种原因散失的温度可忽略不计,故水所吸收的热量在单位时间内是恒定的,通过比热容公式Q=Cm△T(其中Q为热量的变化,C为比热容,m为质量,△T为温度变化)及Q=p△t(p为功率,△t为所用时间)可得
由于水的比热容为4.2×103J/(kg·℃),电热壶功率为1 500 W,水的质量约为1.2kg,代入数据可得△T=0.297△t。
可见水温与时间应该是线性的,其系数约为0.297,即T=at+T0,其中a=0.297,T0为初始温度。
通过以上分析,可得式(2),该公式用于应用部分计算水到达某一温度剩余时间的函数式
t=(T-T1)&pide;a (2)
其中,t为所需的时间;T1为阈值温度;T为当前温度;a为分析所得函数的一次项系数。
系统测试结果如图6与图7所示,由图6可知,温度与时间呈较好的线性,与上述分析结果一致,由图7可知,拟合曲线的系数为0.264.53,与理论值的相对误差为-10.9%,这可能与电热壶的老化等因素有关。但由实验结果可知,系统可较好地对温度进行采样、存储和分析。
图8为针对系统分析的数据进行的一个应用测试,通过式(2)可知电热壶水温至100℃还需要的时间,从图8中可看出,当前水温为23℃,距水烧开还需380 s。
5 结束语
经过实验测试,本系统可完成温度的采集、存储和分析功能。通过该系统,可测得某一时段内固定时间间隔的温度值,并可将其存储于PC端的数据库中,当测得规定时间内的数据后,通过系统的分析模块,可对所测的温度数据进行一定程度的分析,获得温度变化的走势曲线图,在热功率恒定的条件下,通过Q=Cm△t函数可获得温度与时间的一次函数,从而对其他时段相同环境下的数据进行提前分析。同时,该系统功能较强,操作简便,系统较稳定,有一定的实际应用价值。