文档库 最新最全的文档下载
当前位置:文档库 › 基于matlab的温度采集

基于matlab的温度采集

基于matlab的温度采集
基于matlab的温度采集

摘要:基于Matlab环境下PC机与单片机实时串行通信及数据处理的方法,设计了一个小型温度检测系统,由单片机和DS18B20完成数据采集,PC机实现通信数据的分析处理及图形显示,并得到温度随时间变化的函数解析式。使用Matlab编程,提高了开发效率,具有一定的实用性。

关键字:Matlab 设备控制箱串口通信 DS18B20

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 进行所有的读写操作都是从初始化开始的,主要分为初始化操作,读操作和写操作。

基于以上分析,对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绘制温度场

通过在室内的某些位置布置适当的节点,采集回来室内的温湿度以及空气质量等实际参数。首先对室内空间建模,用一个无限细化的三维矩阵来模拟出室内的温度分布情况,针对采集回来的数据,采用插值法和适当次数的拟合函数的拟合,得出三维矩阵的实际值的分布,最后结合matlab软件绘制出计算出的温度场的三维图像。 一.数据的采集与处理 因为影响人的舒适感的温度层只是室内的某一高度范围内的温度,而温度传感器虽然是布置在一个平面内,但是采用插值法和拟合函数法是可以大致再现出影响人的舒适感的温度层的温度变化的。同时,在构建出的三维模型中,用第三维表示传感器层面的温度。 在传感器层面,传感器分布矩阵如下: X=【7.5 36.5 65.5】(模型内单位为cm) Y=【5.5 32.5 59.5】 Z=【z1 z2 z3; z4 z5 z6; z7 z8 z9;】(传感器采集到的实时参数) 采用meshgrid(xi,yi,zi,…)产生网格矩阵; 首先按照人的最小温度分辨值,将室内的分布矩阵按照同样的比例细化,均分,使取值点在坐标一定程度上也是接近于连续变化的,从而才能最大程度上使处理数据得来的分布值按最小分辨值连续变化! 根据人体散热量计算公式:C=hc(tb-Ta) 其中hc为对流交换系数; 结合Gagge教授提出的TSENS热感觉指标可以计算出不同环境下人的对环境温度变化时人体温度感知分辨率,作为插值法的一个参考量,能使绘制出的温度场更加的符合人体的温度变化模式。 例如按照10cm的均差产生网格矩阵(实际上人对温度的分辨率是远远10cm大于这个值的,但是那样产生的网格矩阵也是异常庞大的,例如以0.5cm为例,那么就可以获得116*108=12528个元素,为方便说明现已10cm为例): [xi yi]=meshgrid(7.5:10:65.5,5.5:10:59.5) xi = 7.5000 17.5000 27.5000 37.5000 47.5000 57.5000 7.5000 17.5000 27.5000 37.5000 47.5000 57.5000 7.5000 17.5000 27.5000 37.5000 47.5000 57.5000 7.5000 17.5000 27.5000 37.5000 47.5000 57.5000 7.5000 17.5000 27.5000 37.5000 47.5000 57.5000 7.5000 17.5000 27.5000 37.5000 47.5000 57.5000

西安交通大学——温度场数值模拟(matlab)

温度场模拟matlab代码: clear,clc,clf L1=8;L2=8;N=9;M=9;% 边长为8cm的正方形划分为8*8的格子 T0=500;Tw=100; % 初始和稳态温度 a=0.05; % 导温系数 tmax=600;dt=0.2; % 时间限10min和时间步长0.2s dx=L1/(M-1);dy=L2/(N-1); M1=a*dt/(dx^2);M2=a*dt/(dy^2); T=T0*ones(M,N); T1=T0*ones(M,N); t=0;l=0;k=0; Tc=zeros(1,600);% 中心点温度,每一秒采集一个点 for i=1:9 for j=1:9 if(i==1|i==9|j==1|j==9) T(i,j)=Tw;% 边界点温度为100℃ else T(i,j)=T0; end end end if(2*M1+2*M2<=1) % 判断是否满足稳定性条件 while(t

end i=1:9;j=1:9; [x,y]=meshgrid(i); figure(1); subplot(1,2,1); mesh(x,y,T(i,j))% 画出10min 后的温度场 axis tight; xlabel('x','FontSize',14);ylabel('y','FontSize',14);zlabel('T/℃','FontSize',14) title('1min 后二维温度场模拟图','FontSize',18) subplot(1,2,2); [C,H]=contour(x,y,T(i,j)); clabel(C,H);axis square; xlabel('x','FontSize',14);ylabel('y','FontSize',14); title('1min 后模拟等温线图','FontSize',18) figure(2); xx=1:600; plot(xx,Tc,'k-','linewidth',2) xlabel('时间/s','FontSize',14);ylabel('温度/℃','FontSize',14);title('中心点的冷却曲线','FontSize',18) else disp('Error!') % 如果不满足稳定性条件,显示“Error !” end 实验结果: 时间/s 温度/℃ 中心点的冷却曲线

MATLAB 画等温线

测量到不同坐标点的高度值,如何用matlab画三维图 附上部分数据: A=[-210.6627 -33391.1192 5.0273 -221.3052 -33387.7415 4.5969 -210.9391 -33393.0068 5.5647 -221.8901 -33390.7396 5.0077 -211.384 -33394.7093 5.6505 -222.6117 -33392.778 5.0554 -212.7074 -33397.5459 5.7381 -225.8973 -33397.5869 5.5587]; 解:代码在matlab2009a版以上均可运行。 A=[-210.6627 -33391.1192 5.0273 -221.3052 -33387.7415 4.5969 -210.9391 -33393.0068 5.5647 -221.8901 -33390.7396 5.0077 -211.384 -33394.7093 5.6505 -222.6117 -33392.778 5.0554 -212.7074 -33397.5459 5.7381 -225.8973 -33397.5869 5.5587]; xData = A(:,1); yData = A(:,2); zData = A(:,3); fitresult = fit( [xData, yData], zData, 'linearinterp'); figure( 'Name', '三维图' ); plot( fitresult, [xData, yData], zData ); xlabel( 'x' ); ylabel( 'y' ); zlabel( 'z' ); grid on view( -53, 50 );

matlab绘制温度场复习过程

m a t l a b绘制温度场

通过在室内的某些位置布置适当的节点,采集回来室内的温湿度以及空气质量等实际参数。首先对室内空间建模,用一个无限细化的三维矩阵来模拟出室内的温度分布情况,针对采集回来的数据,采用插值法和适当次数的拟合函数的拟合,得出三维矩阵的实际值的分布,最后结合matlab软件绘制出计算出的温度场的三维图像。 一.数据的采集与处理 因为影响人的舒适感的温度层只是室内的某一高度范围内的温度,而温度传感器虽然是布置在一个平面内,但是采用插值法和拟合函数法是可以大致再现出影响人的舒适感的温度层的温度变化的。同时,在构建出的三维模型中,用第三维表示传感器层面的温度。 在传感器层面,传感器分布矩阵如下: X=【7.5 36.5 65.5】(模型内单位为cm) Y=【5.5 32.5 59.5】 Z=【z1 z2 z3; z4 z5 z6; z7 z8 z9;】(传感器采集到的实时参数) 采用meshgrid(xi,yi,zi,…)产生网格矩阵; 首先按照人的最小温度分辨值,将室内的分布矩阵按照同样的比例细化,均分,使取值点在坐标一定程度上也是接近于连续变化的,从而才能最大程度上使处理数据得来的分布值按最小分辨值连续变化! 根据人体散热量计算公式:C=hc(tb-Ta) 其中hc为对流交换系数;

结合Gagge教授提出的TSENS热感觉指标可以计算出不同环境下人的对环境温度变化时人体温度感知分辨率,作为插值法的一个参考量,能使绘制出的温度场更加的符合人体的温度变化模式。 例如按照10cm的均差产生网格矩阵(实际上人对温度的分辨率是远远10cm 大于这个值的,但是那样产生的网格矩阵也是异常庞大的,例如以0.5cm为例,那么就可以获得116*108=12528个元素,为方便说明现已10cm为例): [xi yi]=meshgrid(7.5:10:65.5,5.5:10:59.5) xi = 7.5000 17.5000 27.5000 37.5000 47.5000 57.5000 7.5000 17.5000 27.5000 37.5000 47.5000 57.5000 7.5000 17.5000 27.5000 37.5000 47.5000 57.5000 7.5000 17.5000 27.5000 37.5000 47.5000 57.5000 7.5000 17.5000 27.5000 37.5000 47.5000 57.5000 7.5000 17.5000 27.5000 37.5000 47.5000 57.5000 yi = 5.5000 5.5000 5.5000 5.5000 5.5000 5.5000 15.5000 15.5000 15.5000 15.5000 15.5000 15.5000 25.5000 25.5000 25.5000 25.5000 25.5000 25.5000 35.5000 35.5000 35.5000 35.5000 35.5000 35.5000 45.5000 45.5000 45.5000 45.5000 45.5000 45.5000 55.5000 55.5000 55.5000 55.5000 55.5000 55.5000 产生网格矩阵之后,就可以在测得的实时数据的基础上,通过相关的温度场的专业的估算函数,以及相关的数值处理函数来估计整个分布面(有最小的分辨率)上的温度了。即在这些函数的基础之上,对参数进行一些必要的处理。

实验2 Matlab绘图操作

实验2 Matlab 绘图操作 实验目的: 1、 掌握绘制二维图形的常用函数; 2、 掌握绘制三维图形的常用函数; 3、 掌握绘制图形的辅助操作。 实验内容: 1. 设sin .cos x y x x ?? =+ ??+?? 23051,在x=0~2π区间取101点,绘制函数的曲线。 2. 已知: y x =21,cos()y x =22,y y y =?312,完成下列操作: (1) 在同一坐标系下用不同的颜色和线性绘制三条曲线; (2) 以子图形式绘制三条曲线; (3) 分别用条形图、阶梯图、杆图和填充图绘制三条曲线。 3. 已知:ln(x x e y x x ?+≤??=??+>??2 0102 ,在x -≤≤55区间绘制函数曲线。 4. 绘制极坐标曲线sin()a b n ρθ=+,并分析参数a 、b 、n 对曲线形状的影响。 5.在xy 平面内选择区域[][],,-?-8888, 绘制函数z =的三种三维曲面图。 6. 用plot 函数绘制下面分段函数的曲线。 ,(),,x x f x x x x ?+>? ==??+

(1).y x =-205 (2)sin()cos ,sin()sin x t t t y t t π=?≤≤? =?303 详细实验内容: 1.设sin .cos x y x x ?? =+ ??+?? 23051,在x=0~2π区间取101点,绘制函数的曲线。 >> x=(0:2*pi/100:2*pi); >> y=(0.5+3*sin(x)/(1+x.^2))*cos(x); >> plot(x,y) 2.已知: y x =2 1,cos()y x =22,y y y =?312,完成下列操作: (1)在同一坐标系下用不同的颜色和线性绘制三条曲线; >> x= linspace(0, 2*pi, 101); >> y1=x.*x; >> y2=cos(2x); >> y3=y1.*y2; plot(x,y1,'r:',x,y2,'b',x,y3, 'ko')

基于MATLAB的焊接温度场数值计算

C W T 中国水运 2019·02 75 基于MATLAB 的焊接温度场数值计算 DOI 编码:10.13646/https://www.wendangku.net/doc/f819169788.html,ki.42-1395/u.2019.02.027 于有生 (广东南方职业学院,广东 江门 529040) 摘 要:本文利用高斯数值积分原理得到厚大焊件点状连续移动热源温度场高斯数值积分表达式,在MATLAB 平台的基础上编写了该温度场的数值计算程序,并通过Q235钢的焊接实例进行数值计算,计算结果说明,利用高斯积分法求解焊接温度场的数值解可以在焊接工程实践中应用。关键词:焊接温度场;高斯数值积分;MATLAB 中图分类号:TG44 文献标识码:A 文章编号:1006—7973(2019)02-0075-02 1前言 焊接温度场特性对提高焊接质量具有重要意义。焊接温度场的计算属于非线性瞬态热传导问题,焊接过程温度场的急剧变化造成温度分布的不均匀,分析计算比一般的热过程要困难。焊接温度场研究始于20世纪40年代,近年来随着焊接温度场研究的逐渐深入, 有限元法逐渐应用于焊接温度场的数值模拟过程,研究方向逐渐转向三维焊接模拟,并实现温度、相变及热应力进行多场耦合计算。但解析法在焊接传热计算中仍然发挥重要的作用。本文在MATLAB 平台下,通过编程对厚大焊件点状连续移动热源温度场的解析表达式,利用高斯积分法进行数值分析计算。 2点状连续移动热源温度场的高斯积分 厚大焊件点状连续移动热源温度场的解析表达式为: 式中: ; '"t t t ?=; C:比热容(J/g ?°C);Cρ:容积比热容(J/cm ?°C);a:热扩散率(cm 2/s);v:焊接速度(cm/s)。 式(1)的积分要利用高斯数值积分公式进行变换得到式(2): 式中:p 为高斯积分总步数;n=3——二次三点高斯积分;Δt 为高斯积分步长;t=p*Δt——高斯积分总时间;Ζi 为高斯求积节点;H i 为高斯求积节点处的高斯积分系数。 3 MATLAB 程序和算例 利用高斯积分公式(2)通过MATLAB 平台编程计算焊接温度场,程序由主程序和整体坐标和局部坐标变换子程序,高斯积分和迭代子程序等组成。计算时取被焊材料为Q235,则其热物理常数为热扩散率a=0.1(cm 2/s)、导热系数λ=0.42(W/cm.oC)、比热容C=0.68(J/g. oC)、密度ρ=7.8(g/cm 3)。高斯计分时间步长取Δt=6(s)、积分总步数N=40,取三节点二次单元的高斯计分算法,则高斯求积节点和求积系数如表1所示。 表1 ζi , H i 的取值 ξi H i -0.77459666920.55555555560.00000000000.88888888890.7745966692 0.5555555556 焊接工艺参数取焊接电流I=350A、电弧电压U=25V、焊接热效率η=0.82(焊条电弧焊)。焊件尺寸设定为焊件长度L=30cm、焊件宽度B=14cm,为了减少计算时间采用间距为0.1cm 空间网格划分,计算焊件上表面的温度场分布,则z=0。计算结果由MATLAB 程序输出如图1所示。 (1) (2)

用有限差分法和Matlab计算二维热加工温度场分析

用有限差分法和Matlab 计算二维热加工温度场分析 Eg1 薄板焊接过程温度场分析。 取焊件的一半为模型进行离散化,起始点为o 点,以后以v 速度沿x 轴运动。 根据题意为二维不稳态导热,二维不稳态导热方程为: k Q y T x T T 122 22- +??+??=??τα y x 左边界 下边界 图 二维焊接离散化 题目可化为以下微分方程组:(以y 轴正方向为上,x 轴正方向为右) 0(,,0)0,(),(),(),e e e T C k Q T x y T T k x T k T T x T k T T y T k T T x ρτβββ??=?+??? =???=???? ??=-??? ??=-??? ??=-???左边界(y 轴)右边界下边界(x 轴) 上边界

需要的参数(均已cm,cal,g 为单位,所以不必换算): 用PDE Tool 解题步骤如下: 1. 区域设置 单击 工具,在窗口拉出一个矩形,双击矩形区域,在Object Dialog 对话框输入Left 为0,Bottom 为0,Width 为2,Height 为2。 与默认的坐标相比,图形小的看不见,所以要调整坐标显示比例。方法:选择Options->Axes Limits,把X ,Y 轴的自动选项打开。 设置Options->Application 为Heat Transfer (设置程序应用热传输模型) 2. 设置边界条件 单击 ,使边界变红色,然后分别双击每段边界,打开Boundary Conditions 对话框, 3. 设置方程类型 单击 ,打开PDE Specification 对话框,设置方程类型为Parabolic (抛物型), rho(密度)为7.82,C (比热)为0.16,k (导热系数)为0.1,Q (热源)为 4000*exp(-3*(x.^2+(y-0.4*t).^2)/0.49),其他参数为0 4. 网格划分 单击 ,或者加密网格,单击 。 5. 初值和误差的设置 22 2223 40000exp(3())/exp() 13(())/exp(.) 0.49 44000m Q h r cal cm cm r x y cal c m τ= ?-=?--+-=?则:

基于matlab的温度采集

摘要:基于Matlab环境下PC机与单片机实时串行通信及数据处理的方法,设计了一个小型温度检测系统,由单片机和DS18B20完成数据采集,PC机实现通信数据的分析处理及图形显示,并得到温度随时间变化的函数解析式。使用Matlab编程,提高了开发效率,具有一定的实用性。 关键字:Matlab 设备控制箱串口通信 DS18B20 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温度传感器构成,主要负责温度数据的采集工

相关文档