版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于Matlab 的一种小型温度检测系统方吕, 李淑芬(北京化工大学, 北京联合大学,100029摘要:基于Matlab 环境下PC 机与单片机实时串行通信及数据处理的方法,设计了一个小型温度检测系统,由单片机和DS18B20完成数据采集,PC 机实现通信数据的分析处理及图形显示,并得到温度随时间变化的函数解析式。使用Matlab 编程,提高了开发效率,具有一定的实用性。关键字:Matlab 设备控制箱 串口通信 DS18B20中图分类号:TP274 文献标识码:BA Small Temperature-Measuring System Based on MatlabFang Lv LiShu
2、fen(Beijing University of Chemical Technology,Beijing Union University,Beijing,China,100029 Absract: Based on the principle of real-time asynchronous communication between PC and MCU in Matlab,a small temperature-measuring system was designed.The MCU and DS18B20 is used for data acquisition,PC is us
3、ed for processing and showing the result graphically,then the analytical function is worked out.The communication system was developed on Matlab,which improves the development efficiency greatly,the system is pratical.Key words: Matlab instrument-control toolbox serial communication DS18B201 前言温度是表征
4、环境的一个重要的参数。在工程领域,尤其像工程热力学等,温度检测非常普遍,对温度精确测量以便实时控制也显得尤为重要。在控制系统中,上位机与下位机之间实现通信的方法和应用平台很多。目前,以VB 和VC 开发的通信软件较多,然而,这类软件虽然功能完善,但是数据采集到计算机后要进行各种处理(例如滤波,系统辨识,曲线拟合等)就显得不方便,编程比较复杂。MATLAB 具有强大的数据处理能力及功能丰富的工具箱,被广泛的应用于信号处理、自动控制等领域1。它编程语言简单易学,利用简单的命令就可以代替复杂的代码,极大地提高了开发效率。本实验基于Matlab 环境下设计了一个小型温度检测系统,下位机使用AT89S5
5、1单片机和DS18B20完成温度数据采集,上位机在Matlab 环境下,调用设备控制箱serial 类操作232串口,用串行通信方式交换数据,进而借助Matlab 对数据进行分析和处理,得到了温度随时间变化的函数解析式,同时介绍了基于Matlab 环境下PC 机与单片机串行通信的实时数据处理的实现方法。2 系统总体设计 图1 系统结构图温度检测系统的整体结构如图1所示。PC 机串口与单片机USART 口通过MAX232电平转换芯片相连,构成一个主从式通信系统。系统工作时,单片机对串口和DS18B20初始化,在读取温度的同时等待中断。PC机通过调用Matlab 设备控制工具箱中的serial 类
6、及相关函数来创建串口设备对象,并以读写文件的方式实现对PC 机串行口的访问,PC 机通过Matlab 向串行口发送特殊指令从而触发单片机中断系统,单片机调用中断服务例程,读取即使温度并将采集的数据通过串行口回送给PC 机。此时,Matlab通过查询的方式,实时接收单片机发送的数据,并完成对数据的分析处理及图形显示。3 下位机部分下位机部分由AT89S51单片机和DS18B20温度传感器构成,主要负责温度数据的采集工作,并通过串行通信实时地将数据传送到上位机进行处理,PC 机与MUC 串口通信技术相对而言已经比较成熟。3.1串行通信协议串口通信协议SPCP (Serial Port Commun
7、ication Protocol)设计思想是基于帧传输方式, 在本实验中, 设定字符格式为1个起始位,8个数据位和一个停止位,无奇偶校验,中间8位即为有效数据,波特率设置为9600,为保证数据可靠传输, 在传送数据前通过握手建立连接, 软件握手协议规定如下:上位机发送握手信号0xff 给下位机,下位机如果接受到上位机的信号为握手信号,则回送数据包给上位机,其中第一个数据为握手信号,以二个数据为温度传感器采集到的温度数据,此时,上位机如果接受到的第一个数据不是握手信号,则丢弃该数据包,若是,则表示握手成功,直接存储第二个数据。3.2温度数据采集(DS18B20)本系统中采用DALLAS 生产的“
8、一线总线”可编程数字化温度传感器DS18B20,与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯,在使用中不需要任何外围元件,设计可用数据线供电,简化系统的硬件,同时支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点测温,使用起来非常方便。尽管如此,DS18B20是以牺牲软件资源换取硬件资源的,由于采用单总线数据出数方式,DS18B20的数据I/O均由同一根线完成,因此,对读写的操作时序要求非常严格。根据DTASHEET ,对DS18B20的编程主要注意以下几个方面:1,精确延时问题2:为了保证DS18B20的严格时序,可以将延时分为2种:10us 以
9、下的短延时和10us 以上的长延时。短延时可以使用C51提供的内部函数_nop_(来实现,一个nop(函数相当于一条DJNZ 汇编指令,约2us ;长延时主要有15us ,90us ,270us ,540us 等,这些延时均为15us 的整数倍,一次可以使用nop(函数编写一个延时15us 的函数delay15(n )。 2,基本操作:DS18B20的一线工作协议流程是:初始化ROM 操作指令存储器操作指令数据传输。对DS18B20 进行所有的读写操作都是从初始化开始的,主要分为初始化操作,读操作和写操作。基于以上分析,对DS18B20的编程源码如下:Init_DS18B20(void /初始
10、化函数DQ = 1; /DQ复位Delay15(1; /稍做延时DQ = 0; /单片机将DQ 拉低Delay15(32; /精确延时 大于 480usDQ = 1; /拉高总线Delay15(6; /延时90usx=DQ; /读存在脉冲delay15(20; /延时约270usWrite_DS18B20(unsigned char dat/写一个字节unsigned char i=0;/定义循环变量for (i=0; i=1;/右移Read_DS18B20(void/读一个字节unsigned char i=0;unsigned char dat = 0;for (i=8;i0;i-DQ =
11、 0; / 复位dat=1;DQ = 1; / 给脉冲信号if(DQdat|=0x80;/取位脉冲并存入datdelay15(1;/延时return(dat;4 上位机部分(PC )上位机通过串口向下位机发送命令实现对下位机的控制,并实时地接受下位机传送过来的数据,对其分析处理,将结果用图形显示并存储,完成人机交互过程。Matlab 并不具备直接访问硬件的能力,但是支持面向对象技术,通过调用Instrument Control Toolbox中的serial 类函数来创建串口对象,对串口对象操作就是对串口操作,使用起非常方便。同时,Matlab 封装的串口对象支持对串口的异步读写操作,使得计算
12、机在读写串口时能同时进行其他处理工作,因而能大大提高计算机执行效率。Matlab 用多线程技术实现这种异步操作,通过异步读写设置,计算机在执行读写串口函数时能立即返回不必等待串口把数据传输完毕, 当指定的数据传输结束时就触发事件,执行事件回调函数,可以在事件回调函数中编程,进行数据处理,这样就不会造成因等待串口传输数据引起的时间浪费。4.1 Matlab下串口编程MATLAB 的Instrument Control Toolbox提供了 MATLAB与仪器仪表通信的功能 , 它支持 GPIB 通用接口总线 、VISA 、TCP/ IP、UDP 、RS2232等多个协议 , 具有同步和异步读写功
13、能以及事件处理和回调操作功能, 可读写和记录二进制和ASCII 文本数据。与串口有关的主要函数如下3:(1)建立串口对象函数:obj=seril(port,property name,propertyvalue),其中主要的属性有:baudrate (波特率),databits (数据位),parity (校验方式),stopbits (终止位)等,可以在初始化时进行赋值或者使用set 函数。(2)打开串口设备对象:fopen (obj )(3) 串口读写操作:当matlab 通信数据采用二进制格式时,读写串口设备的命令为fread(和fwrite(;当通行数据采用文本(ASCII )格式时,
14、读写串口设备的命令为fscanf ()和fprintf ()。(4)关闭并清除设备对象:Fclose (obj );%关闭串口设备对象Delete (obj );%删除内存中的串口设备对象基于本系统串口通信协议,对串口对象的读写部分程序如下:Obj=serial(com1,baudrate,9600,parity,none,databits,8,stopbits,1);%初始化串口 Fopen (obj );%打开串口对象Fwrite (obj ,256);%向串口发送握手信号0xffTMP=fread(obj ,3,unit8);%从串口读取3字节数据,后2个即是16bit 温度数据 If
15、TMP(1)= =256 %判断第一个字节受否是握手信号For i = 1:3Dat (i )=TMP(i+1);%剔除第一个握手信号字节EndEndFclose (obj );%关闭串口设备对象Delete (obj );%删除内存中的串口设备对象4.2 Matlab数据分析单片机一般能处理简单的8位无符号数的四则运算,而DS18B20可以程序设定912位的分辨率,精度可达0. 5,温度以16bit 带符号位扩展的二进制补码形式读出,如果使用单片机进行快速的实时处理则比较费力,同时单片机还要与DS18B20及上位机通信,系统资源也比较紧张。因而可以将读取的16bit 温度数据直接送往PC 机
16、,由上位机来完成。Matlab 强大的计算能力和绘图功能给数据分析带来了极大的方便,这不仅可以合理利用系统资源,也使得系统的通信过程更流畅。图2所示的是用DS18B20测得的连续10个温度数据的变化曲线图。使用max ()和min ()函数可以求出温度的极大极小值,调用polyfit ()函数还可以进行最小二乘回归分析与曲线拟合,进而求出温度变化的解析式,本实验中使用二阶拟合后,得到的温度随时间变化的函数解析式为:F (T )= 0.0125*T2 - 0.0145T+27.3083. 5 结语Matlab 是一款在控制领域应用十分广泛的软件,本实验基于Matlab 环境下PC 机与单片机实时
17、通信及数据处理的方法,设计了一个小型温度检测系统,串口通信使用Matlab 编程,极大的提高了开发效率,充分利用了Matlab 的强大的数据分析能力,得到了温度随时间变化的函数解析式,取得了较好的效果,扩展了Matlab 的使用范围,具有一定实用性。本文作者创新观点:使用DS18B20传感器简化了硬件结构,采用Matlab 编程,充分利用其数据分析能力,合理利用系统资源,提高了开发效率,扩展了Matlab 的使用范围。参考文献:1 赵云鹏MATLAB 串口通信在数据采集中的应用.J微计算机信息.2006,22(1:1111122 顾振宇刘鲁源, 杜振辉.DS18B20接口的C 语言程序设计J 单片机与嵌入式系统应用.2005 .12(6:22243 向先波, 徐国华. Matlab环境下PC 机与单片机的串行通信及数据处理.J 单片机与嵌入式系统应用.2004 .12:27314 李群芳, 张士军, 黄建. 单片微型计算机与接口技术(第二版. M.电子工业出版社.2005项目基金资助:北京市教委科技发展计划项目项目编号: KM200611417008作者简介: 方 吕(1983-), 男(汉族),北京化工大学硕士研究生, 研究方向: 嵌入式系统 李淑芬(1961-), 女(汉族),教授
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年农家乐承包经营合同
- 2026年科研设施与仪器开放共享服务合同
- 2026年建筑医院古太空合同
- 干细胞研究合作协议
- 2025年社区共享经济服务项目可行性研究报告
- 2025年全自动洗衣机技术升级项目可行性研究报告
- 2025年在线医疗健康管理平台项目可行性研究报告
- 2025年AI读书机器人开发项目可行性研究报告
- 2025年水产品智能仓储物流项目可行性研究报告
- 美工制作合同范本
- 云南民族大学附属高级中学2026届高三联考卷(四)语文+答案
- 期末综合测试卷一(试卷)2025-2026学年二年级语文上册(统编版)
- 2025山东青岛上合控股发展集团有限公司社会招聘31人参考笔试试题及答案解析
- 2025年大学康复治疗学(运动疗法学)试题及答案
- 胎膜早破的诊断与处理指南
- 进出口货物报关单的填制教案
- 被压迫者的教育学
- 2025年科研伦理与学术规范期末考试试题及参考答案
- 上市公司财务舞弊问题研究-以国美通讯为例
- 2025年国家开放电大行管本科《公共政策概论》期末考试试题及答案
- 2024年广东省春季高考(学考)语文真题(试题+解析)
评论
0/150
提交评论