LabVIEW湿度检测系统.docx

上传人:b****8 文档编号:9607491 上传时间:2023-02-05 格式:DOCX 页数:28 大小:525.16KB
下载 相关 举报
LabVIEW湿度检测系统.docx_第1页
第1页 / 共28页
LabVIEW湿度检测系统.docx_第2页
第2页 / 共28页
LabVIEW湿度检测系统.docx_第3页
第3页 / 共28页
LabVIEW湿度检测系统.docx_第4页
第4页 / 共28页
LabVIEW湿度检测系统.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

LabVIEW湿度检测系统.docx

《LabVIEW湿度检测系统.docx》由会员分享,可在线阅读,更多相关《LabVIEW湿度检测系统.docx(28页珍藏版)》请在冰豆网上搜索。

LabVIEW湿度检测系统.docx

LabVIEW湿度检测系统

沈阳工学院

 

毕业设计

 

题目:

基于单片机和LabVIEW的湿度

探测系统设计与实现

 

院系:

信息与控制学院

专业:

测控技术与仪器

班级学号:

********

******

******

成绩:

 

年月日

 

1方案设计

1.1设计任务的要求

本设计主要设计一个以湿度传感器,单片机和虚拟仪器为核心设计的一个小型湿度检测系统,该系统的功能如下:

现场湿度实时检测并传输,上位机湿度显示,包括实时湿度曲线,具体设计包括,硬件和软件两个部分,硬件设计包括测量电路的设计,单片机与上位机虚拟仪器接口电路的设计;软件设计包括下位机C语言程序设计和上位机LabVIEW程序设计,下位机完成数据测试,上位机完成数据的显示和分析。

1.2系统方案设计

本设计的上位机实现部分采用了LabVIEW,LabVIEW是一种开放性的通用程序开发系统,具有强大的数据采集、数据处理、数据分析和仪器控制功能。

本设计要实现的功能是构建一个小型的湿度检测系统,既然是湿度检测那自然就有数据采集部分,而在LabVIEW中数据采集的硬件部分的核心是(DataAcquisition-DAQ)卡,它和LabVIEW有很好的接口程序,用LabVIEW实现数据采集,就是在LabVIEW中控制各种DAQ卡(或设备)完成特定的功能,不过本设计中采用的湿度传感器本身就是数字信号而且传输的数据也较为简单,所以本设计中下位机和上位机的数据传输是利用单片机对数字信号进行换算处理以后再通过串口传送至PC端的LabVIEW进行实时显示的。

所以确定初步的设计思路:

湿度传感器采集到特定的湿度数字信号,再利用单片机将这些数字信号按照一定的运算转换成Ascii码形式的湿度值然后通过串口传送至PC端,在PC端的LabVIEW监控界面可以完成对串口参数的设置、平均湿度,最高湿度,最低湿度参数和实时温度曲线的显示以及数据存储等功能。

本设计的重点是串口通讯部分,是整个设计的核心部分,串口通信部分是上位机与下位机之间的联系纽带,将二者紧密联系起来,形成一个完整的设计。

本次设计中串口通讯主要通过LabVIEW自带的一些串行通信模块就行构建很完成的。

本设计实现的湿度检测系统简单实用,灵活性强,实用性高,并且操作简单,易于掌握。

1.3编程语言与调试环境选择

本设计过程编译语言采用C语言,编译调试环境采用KeiluVision4。

C语言一共有32个关键字和9种控制语句,程序书写非常形式自由,而且大小写要区分。

把低级语言的实用性与高级语言的基本结构和语句结合起来。

C语言可以像汇编语言一样对位、字节和地址进行操作,而这三者恰恰就是计算机最基本的工作单元。

同时C语言的运算符包含的范围也非常广泛,一共有34种运算符。

C语言把赋值、括号、强制类型转换等都作为了运算符处理。

这就使C语言的运算类型非常的丰富,表达式的类型也多样化了。

如果能灵活得使用各种运算符,就可以实现在其它高级语言中难以实现的运算。

C语言的数据类型有:

实型、整型、字符型、指针类型、共用体类型、数组类型、结构体类型、共用体类型等。

这些都能用来实现各种复杂的数据结构的运算。

而且C语言引入了指针概念,这就使程序的效率更高了。

C语言提供多种运算符和表达式值的方法,对问题的表达可通过多种途径获得,其程序设计更主动、灵活。

它语法限制不太严格,程序设计自由度大,如对整型量与字符型数据及逻辑型数据可以通用等[1]。

C语言描述问题比汇编语言迅速,工作量小、可读性好,易于调试、修改和移植,而代码质量与汇编语言相当。

C语言一般只比汇编程序生成的目标代码效率低10%~20%。

C语言有丰富的数据结构和运算符。

包含了各种数据结构,如整型、数组类型、指针类型和联合类型等,用来实现各种数据结构的运算。

C语言能直接访问硬件的物理地址,能进行位(bit)操作。

兼有高级语言和低级语言的许多优点。

它既可用来编写系统软件,又可用来开发应用软件,已成为一种通用程序设计语言。

2009年2月发布KeiluVision4,KeiluVision4引入了灵活的窗口管理系统,为使用者提供一个整洁,高效的环境来开发应用程序,开发人员使用KeiluVision4能够同时使用多台监视器,并且提供了视觉上的变化,新的用户界面可以让使用者更好地利用屏幕空间,从而更有效地组织多个窗口。

2011年3月ARM公司发布最新集成开发环境RealViewMDK开发工具中集成了最新版本的KeiluVision4,其编译器、调试工具实现与ARM器件的最完美匹配。

目前使用KeiluVision4的产品有KeilMDK-ARM,KeilC51,KeilC166和KeilC251。

最新的KeiluVision4IDE,旨在提高开发人员的生产力,实现更快,更有效的程序开发。

uVision4引入了窗口管理系统,使用方法更为灵活,能够拖放到视图内的任何地方,包括支持多显示器窗口。

uVision4在μVision3IDE的基础上,增加了更多大众化的功能[2]。

﹙1﹚多显示器和灵活的窗口管理系统;

﹙2﹚系统浏览器窗口的显示设备外设寄存器信息;

﹙3﹚调试还原视图创建并保存多个调试窗口布局;

﹙4﹚多项目工作区简化与众多的项目。

KeiluVision4开发界面如图1.1所示。

图1.1KeiluVision4开发界面图

2系统的硬件设计

系统的硬件部分包括测量电路的设计,单片机与上位机虚拟仪器接口电路的设计,本设计中湿度采集电路的主控芯片采用STC89C52、湿度传感器采用DHT11、单片机与上位机虚拟仪器接口电路部分采用串口通信芯片MAX3232,电源部分电路采用USB直接从PC处取电。

下面将对各部分的电路分别介绍。

2.1单片机最小系统电路设计

本设计控制系统因为较为简单,没有其他特殊的要求,只需要控制DHT11进行湿度的实时采集后通过串口将数据实时传送至上位机LabVIEW处理即可,本设计选择STC89C52单片机,STC89C52的各个参数大家都很熟悉了,再次就不一一赘述了,本小节讲一下STC89C52最小系统的连接。

VCC:

接+5V电源,供电即可。

GND:

接地即可。

XTAL1:

单片机上的时钟管脚,是独立的输入和输出反相放大器,它们可以被配置为使用石英晶振的片内振荡器,或者是器件直接由外部时钟驱动。

XTAL2:

单片机上的时钟管脚,是独立的输入和输出反相放大器,它们可以被配置为使用石英晶振的片内振荡器,或者是器件直接由外部时钟驱动。

RST:

STC89C52的复位信号输入引脚,当复位引脚RST(第9管脚)出现2个机器周期以上的高电平的时候,单片机就执行复位操作。

如果RST持续为高电平,单片机就处于循环复位状态。

复位操作使得内部特殊功能寄存器的内容均被设成已知状态。

EA:

应接高电平,访问内部ROM。

STC89C52实物图如图2.1所示。

图2.1STC89C52实物图

STC89C52最小系统的原理图如图2.2所示。

图2.2STC89C52最小系统原理图

2.2湿度采集电路的设计

2.2.1湿度传感器的选择

本系统是为建立小型的湿度采集平台,所以湿度传感器的挑选至关重要,经过多方资料的查阅和咨询大致确立了以下几种方案:

方案一:

采用CHR-01湿敏电阻。

CHR-01湿敏电阻适用于阻抗型高分子湿度传感器,它的工作电压为交流1V左右,其频率为50Hz~2kHz,测量湿度范围为20%~90%RH,测量精度±5%,工作温度范围为0~+85℃,最高使用温度120℃,阻抗在60%RH(25℃)时为30(21~40.5)KΩ。

采用555时基或RC振荡电路,将湿度传感器等效为阻抗值,测量振荡频率输出,振荡频率在1kHz左右。

方案二:

采用HF3223/HTF3223。

HF3223/HTF3223采用模块式结构,属于频率输出式集成湿度传感器,相对湿度在0%~99%RH范围内,精度为±5%,测量的指标和测量的精度比较高,不需要校准就可以达到完全互换性,可靠性和稳定性都比较高,而且响应速度相当快,可以应用于线性电压的输出和线性频率的输出的电路中,HTF3223在HF3223的基础上多了一个温度传感器。

HF3223湿度传感模块将湿度信息转化为频率信号,传输给单片机进行分析、处理和控制显示[3]。

方案三:

采用DHT11数字温湿度传感器,DHT11是一款采集数据精确且无需校准的数字信号输出的温湿度传感器,它应用了专业的数据量模块采集技术和温度和湿度的传感技术,可靠性相当高,而且数据采集稳定,且使用寿命长。

可与一个高性能8位单片机相连接,实现对温湿度数据的实时检测,该产品相当的契合我们本设计中的设计需要。

综合比较三种方案,因为本设计是将采集到的数据通过串口传输到上位机部分,所以采用集成式的数字型传感器DHT11,会提高整个系统的运行速度,而且电路设计也较为简单,所以在满足设计要求的情况下,我们选择方案三即DHT11来作为本设计的湿度传感器。

2.2.2DHT11电路的设计

本设计中采用的DHT11湿度传感器有四个引脚,包括VCC,GND,DATA,NC,就是除了接+5V电源和地以外只有一个数据口,是单总线数据控制模式的器件,所以其连接的是时候DATA口需要加5~10K的上拉电阻,其它并无特别的地方。

DHT11的主要技术参数:

供电电压:

3.3~5.5VDC

输出:

单总线数字信号

测量范围:

湿度20-90%RH,温度0~50℃

测量精度:

湿度+-5%RH,温度+-2℃

分辨率:

湿度1%RH,温度1℃

互换性:

可完全互换。

长期稳定性:

<±1%RH/年

关于对DHT11的时序控制等会在软件部分详细说明,DHT11的实物图如图2.3所示。

图2.3DHT11的实物图

DHT11的原理图如图2.4所示。

图2.4DHT11原理图

DHT11的DATA接上拉电阻后连接到STC89C52RC的P1.0口进行控制,NC口悬空即可,VCC接+5V电源,GND接地。

2.3串口通信部分电路设计

2.3.1串口芯片的选择

本设计中需要将采集到的湿度数据传送至PC端的LabVIEW中进行处理,因为电脑的串口是RS232电平的,不能和单片机的TTL电平直接通信,所以需要使用串口通信芯片将单片机的TTL电平转换为RS232电平,此处可选的芯片有MAX232和MAX3232,MAX3232是MAX232的升级版而且价格相差又不多,所以此处我们选择MAX3232作为串口通信的芯片,下面对MAX3232的参数做简要说明。

MAX3232具有二路的驱动器和二路的接收器,配置了1uA关断模式,实现了低功耗和延长的产品的使用寿命。

关断模式中,MAX3232的接收器保持运行状态,在低功耗的情况下,实现了对外部设备的实时监测。

MAX3232的引脚、和MAX242还有MAX232都是互相兼容的,理论上是可以无差别互换的。

MAX3232即使工作在高速数据的传输下,仍然能够保证RS232标准要求的正负5.0V最小发送器的输出电压[4]。

MAX3232采用专有低压差发送器输出级,利用双电荷泵在3.0V至5.5V电源供电时就能够实现良好的RS232通信,MAX3232仅需四个0.1uF的外部小尺寸瓷片电容,就可以确保在120kbps高速数据传输下,还能有效的保持RS232输出电平。

2.3.2MAX3232电路的设计

本设计中的串口通信芯片是MAX3232芯片,其利用双电荷泵在3.0V至5.5V电源供电时能够实现稳定的RS232的数据通信,电路中的电容值在MAX3232芯片手册上都为0.1uf。

MAX3232相当于串口和单片机直接的桥梁,MAX3232有两路接收器和两路驱动器,本设计中只需要利用到其中的一路即可。

下面介绍一下DB9串口的各个引脚。

DB9头各管脚定义:

﹙1﹚载波检测DCD;

﹙2﹚接收数据RXD;

﹙3﹚发送数据TXD;

﹙4﹚数据终端准备好DTR;

﹙5﹚信号地SG;

﹙6﹚数据准备好DSR;

﹙7﹚请求发送RTS;

﹙8﹚清除发送CTS;

﹙9﹚振铃提示RI。

MAX3232引脚图如图2.5所示。

图2.5MAX3232引脚图

 

MAX3232电路连接原理图如图2.6所示。

图2.6MAX3232原理图

通过原理图可知MAX3232的连接方式,其1脚和3脚直接连接104的瓷片电容,4脚和5脚直接也连接104的瓷片电容,2脚和6脚分别接104瓷片电容后接地,本设计中我们用到的是1路接收器和1路驱动器,其DOUT1连接到DB9的2脚即接收数据口,RIN1连接到DB9的3脚发送数据口,其和单片机连接口是ROUT1和DIN1分别连接到单片机的串口P3.0和P3.1。

.

2.4电源部分电路的设计

本设计中所有的元器件都是用+5V供电即可,而且需要设计需要和PC端进行实时的数据传输,所以电源部分的设计是直接利用USB母座通过USB线从笔记本的USB口取电即可,在电源和地端并上10uf的电解电容和104的磁片电容,其得到的电压刚好是+5V而且非常稳定足以满足本设计的需求,电源部分原理图如图2.7所示。

图2.7电源部分原理图

3系统的软件设计

3.1软件系统总体工作流程

本系统的整体流程是:

利用DHT11进行实时湿度的实时采集并通过串口传输给上位机通过LabVIEW进行处理,本设计中软件下位机工作流程如图3.1所示。

 

图3.1软件下位机流程图

由系统的整体流程可知,本设计的软件部分设计可分为上位机部分的软件设计和下位机的软件部分设计,下面先介绍下位机部分的软件设计。

3.2湿度采集程序的设计

本设计中采用的DHT11是典型的单总线数据通信的元器件,即只使用DATA引脚就可以完成所有的控制和数据传输,采用单总线数据格式,一次通讯时间长度在4ms左右,温度和湿度的数据分小数部分和整数部分还有校验码,DHT11的数据精度是1%,所以他读取到的小数部分是不存在的一直为零,所以我们只需要对整数部分的数据进行处理即可,操作流程如下:

一次完整的数据传输的数据长度为40bit,高位在前低位在后。

数据为,8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验数据,总共为40bit,如果前面32bit的计算总和等于后面的校验位则证明本次的数据读取是正确的,若不等于,证明数据读取错误,必须重新读数据。

DHT11的控制流程大致是:

主控芯片发送一次启动信号以后,DHT11从低功耗模式转换为高速模式,等待到主控芯片的启动信号结束以后,DHT11发送响应信号,由主机接收判断以后,DHT11开始送出40bit的数据,并触发信号采集,我们估计需要使用到的数据段对数据进行采集,但一般都是全部采集,这样才可以使用DHT11自带的数据校验功能。

DHT11每接收到一次启动信号则触发一次温湿度的数据采集,如果没有收到启动信号,则一直处于低功耗模式,不采集数据。

DHT11的DATA总线在低功耗模式时为高电平,主控芯片把DATA拉低等待DHT11响应,而且主控芯片把DATA拉低必须大于18ms,保证DHT11能稳定的检测到启动信号。

DHT11接收到主控芯片的启动信号以后,等待主控芯片的启动信号结束后,然后DHT11会发出80us低电平响应信号。

主机发送启动信号结束后,延时等待40us左右后,即可读取DHT11的响应信号,判断其为响应信号以后即可开始读取40bit的数据位。

DATA总线为低电平,说明DHT11发送响应信号,DHT11发送响应信号以后,会再把DATA总线拉高80us,准备发送40bit数据,每一bit数据都以50us低电平作为间隙,高电平的长短判断了数据位是高还是低。

当最后一bit数据传送完毕以后,DHT11会拉低DATA总线50us,以示数据传输结束,随后总线由上拉电阻拉高并且进入空闲状态,对DHT11进行数据采集需要特别注意的是,两次的采集间隔必须在1s以上,否则采集命令无效。

本设计中DATA口连接在单片机的P1.0口,根据DHT11的通信协议,首先由单片机的P1.0口主动产生要求的激发信号,然后将数据线的控制权交给传感器,接着单片机通过while语句不间断的检查P1.0口的高低电平,从而达到对时序的正确把握,解析出准确的传输数据,在通过对其数据的分析处理,即可得到当前的湿度值,DHT11的采集程序流程图如图3.2所示。

 

 

图3.2DHT11程序流程图

3.3串口通信部分程序

STC89C52单片机上有一个通用异步接收/发送器UART,通过引脚RXD[P3.0]和TXD[P3.1]可外部电路进行全双工的串行异步通信,发送数据时由TXD端送出,接收时数据由RXD端输入串行端口有4种基本工作方式,通过编程设置,可以使其工作在任一方式,本设计中实用的是工作方式1。

51单片机的串行端口主要由SCON、PCON这两个寄存器来控制的,用于设置传输的速率,是否触发中断,数据位,标志位,校验位,和接收或者发送模式的选择。

串口通信主要还用到了一个数据寄存器SBUF,SBUF为发送和接收所共用的寄存器。

当在发送模式时,只写不读;接收模式时,只读不写。

设置完成发送条件以后,向SBuF写入数据就启动了串口的发送;读SBuF就可以读取到串口接收到的数据。

在不同工作方式中,由时钟振荡频率的分频值或由定时器T1的定时溢出时间来确定串口的波特率,串口通信程序流程图如图3.3所示。

 

图3.3串口通信程序流程图

3.4LabVIEW程序设计

该设计的设计思想是:

由湿度传感器检测信号,通过单片机控制串口传送至PC,进入计算机虚拟仪器程序,对采集到的湿度进行上位机湿度显示,包括实时湿度曲线,平均湿度,最高湿度,最低湿度参数的测量与显示。

本系统的组成和其他基于虚拟仪器的系统组成一样,都由系统前面板及与之相对应的程序框图两大部分构成。

下面从前面板开始介绍整个LabVIEW的整体构架,整个上位机的检测界面的前面板如图3.4所示。

图3.4检测系统前面板图

由图3.4可以看到,前面板主要由串口配置,接受数据缓冲区和实时湿度曲线,平均湿度,最高湿度,最低湿度参数等和一些参数输入控件组成。

3.4.1实时湿度曲线模块

实时湿度曲线模块由波形图表控件组成,它用来根据所测的湿度值来绘制湿度变化的曲线,从而对湿度的走势一目了然,可以根据需要设置曲线的样式等参数,实时湿度曲线模块图如图3.5所示。

图3.5实时湿度曲线模块图

3.4.2参数设置模块

参数设置模块中可对端口选择、波特率、数据位、奇偶校验、停止位。

波特率是传输速率,默认值为9600。

数据位是输入数据的位数,数据比特值介于5和8之间,默认值为8。

奇偶校验制定要传输或接受的每一帧所使用的校验方法:

0为无校验(默认);1为奇校验;2为偶校验;3为校验位始终为1;4为校验位始终为0。

停止位指定用于表示帧结束的停止位数量[5]。

参数设置模块如图3.6所示。

图3.6参数设置模块图

3.4.3LabVIEW程序框图设计

本设计主要是利用到LabVIEW的串口通信功能,所以程序框图主要由一个while循环、一个条件结构、VISA配置串口、VISA写入、VISA读取和VISA关闭等控件组成。

其中有些控件我们在前面板中已经介绍,在此我们主要介绍串口通讯用到的的几个子VI[6]。

系统总程序框图如图3.7所示。

图3.7总程序框图

程序开始首先利用VISA配置串口模块对串行口进行初始化,然后判断开始运行按钮是否按下,若按下开始使能串口采集。

本设计中我们主要使用VISA实现串口通信,所以下面详细讲解一下VISA的使用,在labview功能面板的InstrumentI/OSerial目录下,包含串行通信所需要的集成模块。

利用这些模块,可以非常方便的设计出基于串行通信的控制系统。

需要注意的是,在使用这些模块前,需安装在光盘上的VISA驱动程序,也可从NI的网站免费下载最新VISA驱动程序,下面介绍一下最常用的串行通信模块[7]。

1、VISA配置串口

用于初始化所选择的串行口。

其中VISA资源名称用于选择所用到的串行口,PC机中常用到的串口号分别用COM1和COM2表示,流控制用于设置握手方式。

波特率、数据位、停止位、奇偶校验分别用于设置串行通信的波特率,数据位长度,停止位和校验方式[8]。

2、VISAWrite

用于将WriteBuffer中的字符写到VISA资源名称指定的串行接口中。

3、VISARead

用于从VISA资源名称指定的串行口中读取规定字节数的数据,并把这些数据传递给ReadBuffer。

其中,Bytecount用于设置要读取的字节数。

4、VISAClose

用于关闭VISA资源名称指定的串行口,让出串行口的使用权。

参考文献

[1]李广弟.单片机基础[M].北京:

北京航空航天出版社,2001.

[2]唐俊翟.单片机原理与应用[M].北京:

冶金工业出版社,2003.

[3]周航慈.单片机应用程序设计技术[M].北京:

北京航天航空大学出版社,2002.

[4]勒达.单片机应用系统开发实例导航[M].北京:

人民邮电出版社,2003.

[5]陈树学,刘萱.LabVIEW宝典[M].北京:

电子工业出版社,2011.

[6]刘君华.基于LabVIEW的虚拟仪器的设计[M].北京:

北京电子工业出版社,2003.

[7]赵茂泰.智能仪器原理及应用[M].北京:

电子工业出版社,2004.

[8]蔡建安,陈洁华.基于LabVIEW的工程软件应用[M].重庆:

重庆大学出版社,2006.

附录A硬件原理图

图A硬件原理图

附录B程序代码

#include

#include

//

typedefunsignedcharU8;/*definedforunsigned8-bitsintegervariable无符号8位整型变量*/

typedefsignedcharS8;/*definedforsigned8-bitsintegervariable有符号8位整型变量*/

typedefunsignedintU16;/*definedforunsigned16-bitsintegervariable无符号16位整型变量*/

typedefsignedintS16;/*definedforsigned16-bitsintegervariable有符号16位整型变量*/

typedefunsignedlongU32;/*definedforunsigned32-bitsintegervariable无符号32位整型变量*/

typedefsignedlongS32;/*definedforsigned32-bitsintegervariable有符号32位整型变量*/

typedeffloatF32;/*singleprecisionfloatingpointvariable(32bits)单精度浮点数(32位长度)*/

typedefdoubleF64;/*doubleprecisionfloatingpointvariable(64bits)双精度浮点数(64位长度)*/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1