APP下载

基于单片机和DS18B20的温度采集和分析系统

2016-01-12宋全,谢颂华,王超

电子科技 2015年9期
关键词:温度传感器单片机

基于单片机和DS18B20的温度采集和分析系统

宋全,谢颂华,王超,苗新龙,童一帆

(武汉理工大学 理学院,湖北 武汉430070)

摘要介绍了一种温度采集、分析系统,实现了对所测温度采样,存储于数据库并进行相关分析的功能。通过80C51单片机和DS18B20温度传感器,以PC端的SQL Server 2008作为数据库,Matlab作为分析工具,利用串口、ADO组件、MATALB引擎完成相关功能。经测试,该系统可完成从温度采集到分析的一系列活动,可用于一般场合对温度的采集、分析工作。

关键词单片机;温度传感器;温度采集;温度分析

收稿日期:2015-03-06

基金项目:武汉理工大学自主创新基金资助项目(146814007)

作者简介:宋全(1993—),男,本科。研究方向:应用软件程序设计,单片机程序设计。E-mail:121941710@qq.com。谢颂华(1977—),女,博士,副教授。研究方向:图像处理,模式识别。

doi:10.16180/j.cnki.issn1007-7820.2015.09.027

中图分类号TP212.11

A Temperature Collection and Analysis System Based on the MCU and DS18B20

SONG Quan,XIE Songhua,WANG Chao,MIAO Xinlong,TONG Yifan

(School of Science,Wuhan University of Technology,Wuhan 430070,China)

AbstractA system for both temperature collection and analysis is designed.The functions of sampling of the measured temperature,storage and analysis are achieved.Based on the 80C51,DS18B20 with SQL Server 2008 as the database and Matlab as the analysis tool,the system uses the serial port,ADO component,MATALB engine to complete relevant functions.According to the testing,the system is capable of a series of tasks from temperature collection to analysis,suitable for temperature sampling and analysis.

Keywordssingle chip microcomputer;temperature sensor;temperature collection;temperature analysis

传统的温度检测大多以热敏电阻为温度传感器,但热敏电阻的可靠性较差、测量温度准确率低,且还必须经专门的接口电路转换为数字信号后才能由单片机进行处理[1]。不仅如此,大部分温度系统都缺少对温度的采样存储,无法对温度进一步分析。本文介绍了一套以个人电脑及80C51单片机为核心,使用DS18B20温度传感器进行温度采样,数据库进行温度存储,Matlab进行温度分析的系统。该系统可对其所处环境的温度进行实时监控,同时进行温度的采样、存储和分析,实现对特定环境下温度的了解。

1系统总体组成

系统硬件部分主要用于温度的测量和存储。PC端则用于测温事件的建立与存储、测量参数的设置、温度数据的存储及温度数据的分析。整体而言,系统核心部分分为温度监测模块、温度存储模块和温度分析模块3部分。

温度监测模块用于温度的监测及采样,首先利用PC端程序进行测温事件的建立及采样开始时间(时分秒)、采样结束时间(时分秒)、采样间隔(秒)和传输方式8个采样相关参数的设置,传输方式包括直接传输和间接传输,对应温度的永久存储和临时存储,相关参数通过串口传给单片机。然后利用80C51单片机和DS18B20温度传感器来获取当前温度,并按要求对温度进行采样,同时利用其他器件将温度及当前时间显示到LED屏上。

温度存储模块分为临时存储模块和永久存储模块,临时存储模块用于将所测量的温度数据通过I2C总线临时存储于AT24C02芯片中,永久存储模块则将AT24C02芯片中的数据或当前测量的温度数据通过串行口传给PC端,然后PC端程序将其存储于SQL Server数据库中。

温度分析模块利用Matlab对所获数据进行处理。通过将数据库中的数据导入Excel表,然后调用Matlab的m文件读取Excel表中的数据,并对其分析,完成数据处理。

系统的总体设计如图1所示。

图1 系统总体设计图

2系统硬件设计

系统硬件原理如图2所示,硬件电路图如图3所示。整个系统通过STC89C52RC单片机进行控制,8051系列单片机为1980年Intel公司推出的MCS-51系列8为高档单片机微机[2],而该型号单片机为8051内核芯片,内含Flash E2PROM存储器,内部程序存储空间的大小为4 kB,内部RAM为512 Byte[3],价格较低,能较好地满足系统要求。DS18B20温度传感器通过单总线与单片机P1.7连接,单总线数字温度传感器将地址线、数据线、控制线合为1根信号线[4],硬件开销小,为保证系统稳定性,将DS18B20的VCC端与外部电源相连。1602液晶为5 V电压驱动,可显示两行,每行16个字符,内置含128个字符的ASCII字符集字库,可满足系统信息输出的要求,1602占用单片机的P0及P2.3、P2.4、P2.5。AT24C02为E2PROM存储器,使用了快速、高效、精准的I2C接口设计技术[5]与单片机进行通信,时钟线与单片机P2.0相连,信号线与P2.1相连。DS1302为时间芯片,能自动产生年、月、日、时、分、秒等时间信息,可实现系统温度与测量时间的对应传输,并方便系统控制。MAX232为RS232/TTL电平转换[6]芯片,实现下位机与PC端上位机的串口通信,其与单片机的RXD(P3.0)和TXD(P3.1)相连。

图2 硬件原理图

3系统软件设计

3.1 单片机程序设计

图3为程序的程序总体设计图,application为整个单片机程序的全局变量,用以区分系统核心部分和应用部分,当按下与P3.2相连的按键时,触发外部中断0,application自加1。

系统核心部分又分为空闲模式和工作模式。系统处于空闲模式时,读取DS1302的时间信息和DS18B20的温度信息,在液晶显示屏上显示当前的日期、时间和温度,同时利用按键可校准日期和时间;处于工作模式时,硬件电路与PC端配合工作,完成温度的采样、存储和传输。

应用部分,单片机通过串口获得温度阈值和函数式,利用下文将叙述的公式完成相应功能。另外,单片机进行温度采样的时间由定时器0进行精确控制。定时器1用于波特率的产生。当PC端传递数据给单片机时,将导致串口中断,参数数据传送至单片机的SBUF寄存器,然后再将数据存储于char型二维数组Parameter[8][3]中,因为所需传输的参数数据共有8个,且每个参数的位数均为2位,故包括‘’在内共需3个char型存储空间,从而完成采样参数设置。当单片机向PC端传递温度数据时,先传递温度的整数部分传给SBUF寄存器,再将温度的小数部分传给SBUF,从而传给PC端,此时先用强制转换将float型的温度数据转换为int型变量,传递其整数部分,然后将float型变量乘以100并减去其整数部分,得到小数部分。

图3 单片机程序总体设计流程图

3.2 PC端程序设计

图4为数据库设计的E-R图。系统数据库中包括事件表、数据表和处理结果表。事件表存储各种事件信息,数据表存储对应时间的温度数据及时间数据,处理结果表存储处理结果。

Matlab分析模块的主要步骤为:从Excel表中获取时间;利用datenum()函数将三维的时分秒转换成一维的实数;利用polyfit()函数拟合时间温度的一阶函数式;利用polyval()函数计算已知各点拟合曲线的温度值;利用plot画出原始各点和拟合曲线。

PC端可是化程序主要使用Visual C++6.0编写而成,通过串口与单片机进行数据交换,并于数据库和Matlab进行通信,完成测温事件的建立、采样参数的设置以及数据的存储与分析。

图4 系统数据库设计的E-R图

PC端可视化程序使用到了Microsoft Communications Control控件(MSComm控件)实现了串口通信和数据接收[7],利用微软提供的一种面向对象、与语言无关的数据访问应用编程接口[8]ADO组件实现与SQL Server数据库的通信,通过Matlab引擎调用Matlab的m文件,实现数据的分析,Matlab引擎是一组Matlab提供的接口函数(Engine API函数),其采用客户机/服务器计算模式,此时C++作为客户端出现,负责用户接口和提出数据请求,Matlab则属于服务器端,向客户端提供数据服务[9]。通过以上接口及MFC函数库完成PC端的可视化程序设计。

4系统测试及应用

系统测试采用额定功率为1 500 W的电热壶烧水进行实验测试。利用系统对1 200 ml的自来水在电热壶中的温度进行采样,获得相关数据并进行分析,从而得到温度与时间的函数式,然后用该函数式来计算到达某一温度阈值的所需时间,完成应用。

由于电热壶的功率恒定且过大,故加热时因各种原因散失的温度可忽略不计,故水所吸收的热量在单位时间内是恒定的,通过比热容公式Q=CmΔT(其中Q为热量的变化,C为比热容,m为质量,ΔT为温度变化)及Q=pΔt(p为功率,Δt为所用时间)可得

(1)

由于水的比热容为4.2×103J/(kg·℃),电热壶功率为1 500 W,水的质量约为1.2 kg,代入数据可得ΔT=0.297Δt。

可见水温与时间应该是线性的,其系数约为0.297,即T=at+T0,其中a=0.297,T0为初始温度。

通过以上分析,可得式(2),该公式用于应用部分计算水到达某一温度剩余时间的函数式

t=(T-T1)÷a

(2)

其中,t为所需的时间;T1为阈值温度;T为当前温度;a为分析所得函数的一次项系数。

系统测试结果如图6与图7所示,由图6可知,温度与时间呈较好的线性,与上述分析结果一致,由图7可知,拟合曲线的系数为0.264 53,与理论值的相对误差为-10.9%,这可能与电热壶的老化等因素有关。但由实验结果可知,系统可较好地对温度进行采样、存储和分析。

图8为针对系统分析的数据进行的一个应用测试,通过式(2)可知电热壶水温至100 ℃还需要的时间,从图8中可看出,当前水温为23 ℃,距水烧开还需380 s。

图5 实际电路图

图6 温度趋势图

图7 数据分析

图8 数据分析

5结束语

经过实验测试,本系统可完成温度的采集、存储和分析功能。通过该系统,可测得某一时段内固定时间间隔的温度值,并可将其存储于PC端的数据库中,当测得规定时间内的数据后,通过系统的分析模块,可对所测的温度数据进行一定程度的分析,获得温度变化的走势曲线图,在热功率恒定的条件下,通过Q=CmΔt函数可获得温度与时间的一次函数,从而对其他时段相同环境

下的数据进行提前分析。同时,该系统功能较强,操作简便,系统较稳定,有一定的实际应用价值。

参考文献

[1]张越,张炎,赵延军.基于DS18B20温度传感器的数字温度计[J].微电子学,2007(5):709-711.

[2]郭天祥.51单片机C语言教程—入门、提高、开发、拓展全攻略[M].北京:电子工业出版社,2013.

[3]高锋.单片微型计算机原理与接口技术[M].北京:科学出版社,2007.

[4]陈生翰,刘其洪,丁柱.单总线数字温度传感器DS18B20自动识别的设计与实现[J].仪表技术与传感器,2010(5):16-18.

[5]Li Kangshun,Chen Yan,Liu Hezuan.A new method of evolving hardware design based on I2C bus and AT24C02[C].Beijing:10th World Congress on Intelligent Control and Automation (WCICA),2010.

[6]罗维国,吴微.RS232/TTL电平转换芯片MAX232的原理及其应用[J].电子与电脑,1993(5):46-47.

[7]李晓磊.MSComm和Modbus协议的分布式数据监测系统[D].大连:大连理工大学,2012.

[8]郭强.ADO技术在VC编程中的研究及应用[J].电子科技,2013(26):37-40.

[9]谢佩军,计时鸣,张利.VC++与Matlab混合编程的探讨[J].计算机应用与软件,2006(2):128-130.

猜你喜欢

温度传感器单片机
气象用温度传感器检定结果的测量不确定度评定与应用
基于单片机的SPWM控制逆变器的设计与实现
基于单片机的层次渐变暖灯的研究
温度传感器DS18B20在温度计设计中的应用
基于单片机的多功能智能插排
基于单片机的便捷式LCF测量仪
一种高性能CMOS温度传感器
小议PLC与单片机之间的串行通信及应用
XTR105电流变送器在温度传感器中的应用
基于单片机的平衡控制系统设计