基于Matlab的小型温度检测系统设计

发布者:学思者最新更新时间:2013-10-10 来源: eefocus关键字:Matlab  温度检测系统  AT89S51 手机看文章 扫描二维码
随时随地手机看文章
1 前言

温度是表征环境的一个重要的参数。在工程领域,尤其像工程热力学等,温度检测非常普遍,对温度精确测量以便实时控制也显得尤为重要。

在控制系统中,上位机与下位机之间实现通信的方法和应用平台很多。目前,以VB和VC开发的通信软件较多,然而,这类软件虽然功能完善,但是数据采集到计算机后要进行各种处理(例如滤波,系统辨识,曲线拟合等)就显得不方便,编程比较复杂。Matlab具有强大的数据处理能力及功能丰富的工具箱,被广泛的应用于信号处理、自动控制等领域[1]。它编程语言简单易学,利用简单的命令就可以代替复杂的代码,极大地提高了开发效率。

本实验基于Matlab环境下设计了一个小型温度检测系统,下位机使用AT89S51单片机和DS18B20完成温度数据采集,上位机在Matlab环境下,调用设备控制箱serial类操作RS-232串口,用串行通信方式交换数据,进而借助Matlab对数据进行分析和处理,得到了温度随时间变化的函数解析式,同时介绍了基于Matlab环境下PC机与单片机串行通信的实时数据处理的实现方法。

2 系统总体设计

 

 


图1 系统结构图

温度检测系统的整体结构如图1所示。PC机串口与单片机USART口通过MAX232电平转换芯片相连,构成一个主从式通信系统。系统工作时,单片机对串口和DS18B20初始化,在读取温度的同时等待中断。PC机通过调用Matlab设备控制工具箱中的serial类及相关函数来创建串口设备对象,并以读写文件的方式实现对PC机串行口的访问,PC机通过Matlab向串行口发送特殊指令从而触发单片机中断系统,单片机调用中断服务例程,读取即使温度并将采集的数据通过串行口回送给PC机。此时,Matlab通过查询的方式,实时接收单片机发送的数据,并完成对数据的分析处理及图形显示。

3 下位机部分

下位机部分由AT89S51单片机和DS18B20温度传感器构成,主要负责温度数据的采集工作,并通过串行通信实时地将数据传送到上位机进行处理,PC机与MUC串口通信技术相对而言已经比较成熟。

3.1串行通信协议

串口通信协议SPCP(Serial Port Communication Protocol)设计思想是基于帧传输方式,在本实验中,设定字符格式为1个起始位,8个数据位和一个停止位,无奇偶校验,中间8位即为有效数据,波特率设置为9600,为保证数据可靠传输,在传送数据前通过握手建立连接,软件握手协议规定如下:

上位机发送握手信号0xff给下位机,下位机如果接受到上位机的信号为握手信号,则回送数据包给上位机,其中第一个数据为握手信号,以二个数据为温度传感器采集到的温度数据,此时,上位机如果接受到的第一个数据不是握手信号,则丢弃该数据包,若是,则表示握手成功,直接存储第二个数据。

3.2温度数据采集(DS18B20)

本系统中采用DALLAS生产的“一线总线”可编程数字化温度传感器DS18B20,与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯,在使用中不需要任何外围元件,设计可用数据线供电,简化系统的硬件,同时支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点测温,使用起来非常方便。尽管如此,DS18B20是以牺牲软件资源换取硬件资源的,由于采用单总线数据出数方式,DS18B20的数据I/O均由同一根线完成,因此,对读写的操作时序要求非常严格。

根据DTASHEET,对DS18B20的编程主要注意以下几个方面:

1,精确延时问题[2]:为了保证DS18B20的严格时序,可以将延时分为2种:10us以下的短延时和10us以上的长延时。短延时可以使用C51提供的内部函数_nop_()来实现,一个nop()函数相当于一条DJNZ汇编指令,约2us;长延时主要有15us,90us,270us,540us等,这些延时均为15us的整数倍,一次可以使用nop()函数编写一个延时15us的函数delay15(n)。

2,基本操作:DS18B20的一线工作协议流程是:初始化→ROM操作指令→存储器操作指令→数据传输。对DS18B20 进行所有的读写操作都是从初始化开始的,主要分为初始化操作,读操作和写操作。[page]

基于以上分析,对DS18B20的编程源码如下:
Init_DS18B20(void) //初始化函数
{DQ = 1; //DQ复位
Delay15(1); //稍做延时
DQ = 0; //单片机将DQ拉低
Delay15(32); //精确延时 大于 480us
DQ = 1; //拉高总线
Delay15(6); //延时90us
x=DQ; //读存在脉冲
delay15(20); //延时约270us
}
Write_DS18B20(unsigned char dat)//写一个字节
{
unsigned char i="0";//定义循环变量
for (i=0; i<8; i++)
{
DQ = 0; //复位
DQ = dat&0x01;//取数据的第i位并送出
Delay15(1);//延时
DQ = 1; //停止
dat>>=1;//右移
}
}
Read_DS18B20(void)//读一个字节
{
unsigned char i="0";
unsigned char dat = 0;
for (i=8;i>0;i--)
{
DQ = 0; // 复位
dat>>=1;
DQ = 1; // 给脉冲信号
if(DQ)
dat|=0x80;//取位脉冲并存入dat
delay15(1);//延时
}
return(dat);
}

4 上位机部分(PC)

上位机通过串口向下位机发送命令实现对下位机的控制,并实时地接受下位机传送过来的数据,对其分析处理,将结果用图形显示并存储,完成人机交互过程。

Matlab并不具备直接访问硬件的能力,但是支持面向对象技术,通过调用Instrument Control Toolbox中的serial类函数来创建串口对象,对串口对象操作就是对串口操作,使用起非常方便。同时,Matlab封装的串口对象支持对串口的异步读写操作,使得计算机在读写串口时能同时进行其他处理工作,因而能大大提高计算机执行效率。Matlab用多线程技术实现这种异步操作,通过异步读写设置,计算机在执行读写串口函数时能立即返回不必等待串口把数据传输完毕,当指定的数据传输结束时就触发事件,执行事件回调函数,可以在事件回调函数中编程,进行数据处理,这样就不会造成因等待串口传输数据引起的时间浪费。

4.1 Matlab下串口编程

MATLAB的Instrument Control Toolbox提供了 MATLAB与仪器仪表通信的功能 ,它支持 GPIB 通用接口总线 、VISA、TCP/ IP、UDP、RS2232等多个协议 ,具有同步和异步读写功能以及事件处理和回调操作功能,可读写和记录二进制和ASCII文本数据。与串口有关的主要函数如下[3]:

(1)建立串口对象函数:obj=seril(’port’,’property name’,propertyvalue……),其中主要的属性有:baudrate(波特率),databits(数据位),parity(校验方式),stopbits(终止位)等,可以在初始化时进行赋值或者使用set函数。

(2)打开串口设备对象:fopen(obj)

(3) 串口读写操作:当matlab通信数据采用二进制格式时,读写串口设备的命令为fread()和fwrite();当通行数据采用文本(ASCII)格式时,读写串口设备的命令为fscanf()和fprintf()。

(4)关闭并清除设备对象:
Fclose(obj);%关闭串口设备对象
Delete(obj);%删除内存中的串口设备对象

基于本系统串口通信协议,对串口对象的读写部分程序如下:
Obj=serial(’com1’,’baudrate’,9600,’parity’,’none’,’databits’,8,’stopbits’,1);%初始化串口
Fopen(obj);%打开串口对象
Fwrite(obj,256);%向串口发送握手信号0xff
TMP=fread(obj,3,’unit8’);%从串口读取3字节数据,后2个即是16bit温度数据
If TMP(1)= =256 %判断第一个字节受否是握手信号
For i = 1:3
Dat(i)=TMP(i+1);%剔除第一个握手信号字节
End
End
Fclose(obj);%关闭串口设备对象
Delete(obj);%删除内存中的串口设备对象

4.2 Matlab数据分析

单片机一般能处理简单的8位无符号数的四则运算,而DS18B20可以程序设定9~12位的分辨率,精度可达±0.5℃,温度以16bit带符号位扩展的二进制补码形式读出,如果使用单片机进行快速的实时处理则比较费力,同时单片机还要与DS18B20及上位机通信,系统资源也比较紧张。因而可以将读取的16bit温度数据直接送往PC机,由上位机来完成。Matlab强大的计算能力和绘图功能给数据分析带来了极大的方便,这不仅可以合理利用系统资源,也使得系统的通信过程更流畅。

图2所示的是用DS18B20测得的连续10个温度数据的变化曲线图。使用max()和min()函数可以求出温度的极大极小值,调用polyfit()函数还可以进行最小二乘回归分析与曲线拟合,进而求出温度变化的解析式,本实验中使用二阶拟合后,得到的温度随时间变化的函数解析式为:F(T)= 0.0125*T2 - 0.0145T+27.3083.

5 结语

Matlab是一款在控制领域应用十分广泛的软件,本实验基于Matlab环境下PC机与单片机实时通信及数据处理的方法,设计了一个小型温度检测系统,串口通信使用Matlab编程,极大的提高了开发效率,充分利用了Matlab的强大的数据分析能力,得到了温度随时间变化的函数解析式,取得了较好的效果,扩展了Matlab的使用范围,具有一定实用性。

本文作者创新观点:使用DS18B20传感器简化了硬件结构,采用Matlab编程,充分利用其数据分析能力,合理利用系统资源,提高了开发效率,扩展了Matlab的使用范围。

关键字:Matlab  温度检测系统  AT89S51 引用地址:基于Matlab的小型温度检测系统设计

上一篇:基于RTX51的用户专用键盘软件设计
下一篇:基于单总线的中央空调温湿度检测系统设计

推荐阅读最新更新时间:2024-03-16 13:28

基于MATLAB的车牌识别系统的研究
  1 引言   车辆牌照是机动车唯一的管理标识符号,在交通管理中具有不可替代的作用,因此车辆牌照识别系统应具有很高的识别率,对环境光照条件、拍摄位置和车辆行驶速度等因素的影响应有较大的容阈,并应满足实时性要求。牌照自动识别是一项利用车辆的动态视频或静态图像进行牌照号码、牌照颜色自动识别的模式识别技术,其硬件一般包括触发、摄像、照明、图像采集等设备,其软件核心包括车牌定位、车牌字符分割和字符识别等算法。    2 系统的实现   2.1 系统简述   一个完整的牌照识别系统应包括车辆检测、图像采集、图像预处理、车牌定位、字符分割、字符识别等单元。当车辆到达触发图像采集单元时,系统采集当前的视频图像,牌照识别单元对图像进行
[嵌入式]
基于DSP2812的带式输送机多路温度检测系统设计
0 引言 带式输送机是煤矿最理想的高效连续运输设备,与其他运输设备(如机车类)相比,具有输送距离长、运量大、连续输送等优点,而且运行可靠,易于实现自动化和集中化控制,尤其对高产高效矿井,带式输送机已成为煤炭开采机电一体化技术与装备的关键设备。由于煤矿井下环境恶劣,带式输送机设备易损坏,一旦输送带与滚筒之间发生打滑及输送带温度升高会严重威胁井下人员生命安全,目前国内对输送带温度精确检测问题一直没有得到很好解决。 随着DSP芯片技术与新型非接触式红外温度传感器技术的不断发展以及总线控制系统(FCS)逐渐取代传统集散控制系统(DCS)为设计一种新型井下带式输送机温度检测系统提供了可能。本系统采用TMS320F2812作为信号
[嵌入式]
“嘀、嘀、……”报警声电路设计(产生频率为1KHz)
“嘀、嘀、……”报警声 1. 实验任务 用AT89S51单片机产生“嘀、嘀、…”报警声从P1.0端口输出,产生频率为1KHz,根据上面图可知:1KHZ方波从P1.0输出0.2秒,接着0.2秒从P1.0输出电平信号,如此循环下去,就形成我们所需的报警声了。 2. 电路原理图 图4.18.1 3. 系统板硬件连线 (1. 把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区域中的SPK IN端口上, (2. 在“音频放大模块”区域中的SPK OUT端口上接上一个8欧或者是16欧的喇叭; 4. 程序设计方法 (1.生活中我们常常到各种各样的报警声,例如“嘀、嘀、…”就是常见的一种声音报警声,但对于这种报警声,嘀0.2秒钟
[单片机]
“嘀、嘀、……”报警声电路设计(产生频率为1KHz)
MathWorks 发布2019b MATLAB 和 Simulink,助力AI,汽车发展
MathWorks宣布推出了 Release 2019b,其中包含一系列的 MATLAB 和 Simulink 新功能,包括对人工智能、深度学习和汽车行业的支持。另外,R2019b 引入了支持机器人技术的新产品、基于事件建模的新培训资源,以及对 MATLAB 和 Simulink 产品系列的更新和 Bug 修复。版本亮点包括: MATLAB R2019b 中的 MATLAB 亮点包括引入了Live Editor(实时编辑器)任务,让用户能够交互式地浏览参数、预处理数据,并生成 MATLAB 代码,成为Live Script(实时脚本)的一部分。现在,MATLAB 用户能够专注于任务本身,而不是语法或复杂的代码,还能够自动
[物联网]
基于Matlab GUI的模拟带通滤波器的设计
0 引 言 模拟带通滤波器在信号的检测和传输过程中起着很重要的作用,但在传统模拟带通滤波器的设计过程中需要大量繁琐的数值计算,如果手工计算则费时费力。也有许多公司开发了相关的滤波器设计软件,如AnsoftDesigner,Filterlab等,但是它们大多数使用起来不容易上手,而且价格比较昂贵。Matlab中的图形界面编程环境GUIDE为用户开发软件界面提供了强有力的工具。在图形界面编程环境GUIDE下,设计好滤波器的设计工具界面后,对界面上各个控件的回调函数进行编写就能设计出交互式滤波器的分析设计软件。 本文在Matlab GUI基础上设计了针对Chebyshev型模拟带通滤波器的设计分析软件。用户在使用时只需输入要
[模拟电子]
MATLAB GUI的数字信号处理仿真平台的设计
1.引言 数字信号处理,是现今应用成效最显着、应用领域最广的新科学之一,国内外各高校均开设了数字信号处理课程。这门课程相应的特点是:公式特别多、性质的推导复杂繁琐、概念性的东西比较多,还需要以信号与系统等诸多课程为基础,被很多同学认为大学最难的课程之一,学生因跟不上老师的进度和本身对学习内容的理解不到位而对这门课程失去兴趣。传统的教学模式已经远远满足不了新时代教学的需求,在计算机技术快速发展的今天,计算机辅助教学己经逐步成为教师授课的主要方式。 MATLAB 为数字信号处理课程的教学提供了很大的实验帮助。很早之前,国外就开始把交互式软件 MATLAB 用于数字信号处理的教学中,并采用功能强大的系统开发平台。本文利用MATLA
[电源管理]
<font color='red'>MATLAB</font> GUI的数字信号处理仿真平台的设计
r语言和matlab有什么区别
MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。 MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fort
[嵌入式]
分析低功耗轴承温度无线检测系统的设计与应用
  滚动轴承一般由内圈、外圈、滚动体和保持架四部分组组成内圈的作用是与轴相配合并与轴一起旋转;外圈作用是与轴承座相配合,起支撑作用;滚动体是借助于保持架均匀的将滚动体分布在内圈和外圈之间,其形状大小和数量直接影响着滚动轴承的使用性能和寿命;保持架能使滚动体均匀分布,防止滚动体脱落,引导滚动体旋转起润滑作用。滚动轴承使用维护方便,工作可靠,起动性能好,在中等速度下承载能力较高。与滑动轴承比较,滚动轴承的径向尺寸较大,减振能力较差,高速时寿命低,声响较大。   目前,检测和诊断轴承运行状态比较可行的方法有3种:测温、噪声和振动参数测试技术。测温技术由于其简单易行能综合反映包括轴承润滑状态在内的诸因素,并且各种轴承失效均反映为轴承的
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved