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

发布者:CelestialSoul最新更新时间:2010-01-02 来源: 微计算机信息关键字:Matlab  温度检测系统 手机看文章 扫描二维码
随时随地手机看文章

  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)。[page]

  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);

  }[page]

  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强大的计算能力和绘图功能给数据分析带来了极大的方便,这不仅可以合理利用系统资源,也使得系统的通信过程更流畅。[page]

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

DS18B20测得的变化曲线图

  5 结语

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

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

  参考文献:

  [1] 赵云鹏.MATLAB串口通信在数据采集中的应用.[J]微计算机信息.2006,22(1):111~112

  [2] 顾振宇.刘鲁源,杜振辉.DS18B20接口的C语言程序设计.[J] 单片机与嵌入式系统应用.2005 .12(6):22~24

  [3] 向先波,徐国华. Matlab环境下PC机与单片机的串行通信及数据处理.[J] 单片机与嵌入式系统应用.2004 .12:27~31

  [4] 李群芳, 张士军,黄建. 单片微型计算机与接口技术(第二版). [M].电子工业出版社.2005

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

上一篇:应用于教学方案的USB 模块化仪器的研究
下一篇:首款专业级高速数据采集存储卡问世

推荐阅读最新更新时间:2024-03-30 22:09

SUES在全院范围实施MATLAB和SIMULINK
广泛部署 MathWorks 工具,为学校贯彻国家教育部“卓越工程师教育培养计划”提供后盾 中国北京 – 2011 年 7 月 1 日 – MathWorks 日前宣布,上海工程技术大学 (SUES) 为其汽车工程学院部署了 MATLAB、Simulink 和 30 多种其他 MathWorks 产品,用于分析、设计、仿真、代码生成和验证。该项举措将让全院师生和实验室人员都从中受益。这些产品因为在汽车行业的广泛应用而得到学校的青睐,计划被安装到汽车工程学院的所有教学场所内,包括新成立的 SUES-MathWorks 汽车仿真技术中心。 上海工程技术大学是入选中国国家教育部“卓越工程师教育培养计划”(PETOE) 的 61
[半导体设计/制造]
基于热敏电阻的温度检测系统(上篇):设计挑战和电路配置
简介 本系列文章分为上下两篇。上篇首先讨论基于热敏电阻的温度测量系统的历史和设计挑战,以及它与基于电阻温度检测器(RTD)的温度测量系统的比较。文中还会简要介绍热敏电阻选择、配置权衡,以及Σ-Δ型模数转换器(ADC)在该应用领域中的重要作用。下篇将详细介绍如何优化和评估基于热敏电阻的最终测量系统。 热敏电阻与RTD 正如文章“如何选择并设计理想RTD温度检测系统”中所讨论的,RTD是一种电阻值随温度变化的电阻器。热敏电阻的工作方式与RTD类似。RTD仅有正温度系数,热敏电阻则不同,既可以有正温度系数,也可以有负温度系数。负温度系数(NTC)热敏电阻的阻值会随着温度升高而减小,而正温度系数(PTC)热敏电阻的阻值会随着
[模拟电子]
基于热敏电阻的<font color='red'>温度</font><font color='red'>检测系统</font>(上篇):设计挑战和电路配置
采用MATLAB对SPWM进行辅助设计
1概述 传统的SPWM采用频率数倍于正弦波的三角波调制正弦波,可得到近似于正弦波的输出。三角波的频率越高,即载波比越高,谐波的频率就越高,输出端滤波器就更容易去除谐波。在输出频率固定的场合,如正弦波逆变电源,其输出频率固定在50Hz左右,这种场合采用软件设计可降低系统的成本,一般将数据存入存储器,通过CPU的定时器中断调用可完成SPWM控制。在变频场合,如三相交流异步电机的驱动,由于需要输出三相变频的SPWM信号,一般采用8254可编程定时器,以减少CPU的工作量。 SPWM设计采用传统方法得到的正弦波较理想,由于三角波是超越方程,正弦信号用单片机产生也较困难,因此,传统方法较难实现。现在有许多新方法产生,这些方法实现简单
[电源管理]
采用<font color='red'>MATLAB</font>对SPWM进行辅助设计
MathWorks 联手NVIDIA 深度学习学院,发布MATLAB全新课程
MathWorks 今日宣布推出与 NVIDIA 深度学习学院合作开发的《MATLAB 深度学习》综合课程。该课程为期两天,包含以教师引导的在线课程和自定进度的点播课程两种形式,在 2020 年余下的时间里全程提供。学完该课程后,工程师、科学家和研究人员便可以将 MATLAB 中的 GPU 加速深度学习技巧运用于图像分类、自主系统、语音识别和目标检测等常见应用场景。 基于数十年来的复杂工程项目支持经验,MathWorks 为构建 AI 驱动系统提供了一个综合平台。GPU Coder 从 MATLAB 代码生成优化的 CUDA 代码,用于深度学习、嵌入式视觉和自主系统,使开发人员能够构建在 NVIDIA GPU 上高效运行的解决
[物联网]
MATHWORKS 新添功能,加速了使用 MATLAB 和 SIMULINK 进行的无线通信和雷达设计
中国北京,2013 年 4 月22 日——MathWorks宣布,显著加强了通过 MATLAB 和 Simulink 进行的无线通讯和雷达设计的支持。Release 2013a (R2013a) Phased Array System Toolbox 和 SimRF两个产品的新功能将使无线通讯和雷达设计人员能够更快地在 MATLAB 和 Simulink 类似环境中的建模和仿真。 Phased Array System Toolbox 的极化、阵列扰动和宽带阵列等新功能可帮助用户对端到端相控阵列系统进行建模或处理采集到的雷达数据。SimRF 推出一个新型电路包络分析解算器,可加速系统仿真和缩短模型加载时间;SimRF还扩展了用于
[测试测量]
SIMULINK示波器参数设置_matlab中对示波器进行设置
在SIMULINK中,示波器常用来作为输出工具,将模型的运行结果展现在人们面前。它把信号按照时间的顺序在二维坐标轴上显示出来。示波器的横坐标表示时间轴,纵坐标表示信号的强度。仿真过程中我们可以按照需要改变坐标轴的设置。 1、右击显示界面,点选AXESPROPERTIES弹出的设置菜单 该菜单主要用来设置Y轴的数值范围和标题。 2、点击PARAMETERS图表,进入的参数设置菜单 GENERAL下的设置如下: TImerange(时间显示范围):单位是秒,它决定了示波器时窗(即X轴)的宽度。信号的频率越高,所要的时窗越短。当设置为auto时,时间轴的显示范围就等于整个仿真段。 Sampling(采样方式):当选取
[测试测量]
SIMULINK示波器参数设置_<font color='red'>matlab</font>中对示波器进行设置
五种常用的随机数发生器-matlab实现
五种常用的随机数发生器包括平方取中发生器、乘积取中发生器、线性同余发生器、常数乘子发生器和斐波那契发生器。原理可问度娘,这里不再介绍,只总结代码实现。 平方取中发生器 clc clear all close all % 调用函数---参数可修改 = Square_mid_rand(156, 2, 20); % 定义函数 function = Square_mid_rand(x0, k, maxIter) x = ; % 初始化空矩阵 u = ; x(1) = x0; % 赋值操作,即: x0 放到向量x的第一个分量中 u(1) = x(1) / 10^(2*k); for i = 2 :
[测试测量]
分析低功耗轴承温度无线检测系统的设计与应用
  滚动轴承一般由内圈、外圈、滚动体和保持架四部分组组成内圈的作用是与轴相配合并与轴一起旋转;外圈作用是与轴承座相配合,起支撑作用;滚动体是借助于保持架均匀的将滚动体分布在内圈和外圈之间,其形状大小和数量直接影响着滚动轴承的使用性能和寿命;保持架能使滚动体均匀分布,防止滚动体脱落,引导滚动体旋转起润滑作用。滚动轴承使用维护方便,工作可靠,起动性能好,在中等速度下承载能力较高。与滑动轴承比较,滚动轴承的径向尺寸较大,减振能力较差,高速时寿命低,声响较大。   目前,检测和诊断轴承运行状态比较可行的方法有3种:测温、噪声和振动参数测试技术。测温技术由于其简单易行能综合反映包括轴承润滑状态在内的诸因素,并且各种轴承失效均反映为轴承的
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新测试测量文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved