APP下载

基于LabVIEW与单片机的温度采集监控系统设计

2020-01-03

计算机测量与控制 2019年12期
关键词:数据线温度传感器串口

(1.南京林业大学 机械电子工程学院,南京 210037;2.机器人学国家重点实验室(中国科学院沈阳自动化研究所),沈阳 110016;3.东南大学 仪器科学与工程学院,南京 210096)

0 引言

温度是工业生产中的重要监测参数,对保证产品加工质量和安全生产具有至关重要的作用。诸多工农业产品的生产过程都需要对温度这一物理量进行严格的监控,以保证生产的顺利进行。但很多工作环境恶劣的场合,不适合人工测量,为此设计一种能够对环境温度进行实时采集与监控的系统具有十分重要的意义[1-2]。

近年来,随着计算机技术,特别是单片机技术的高速发展,人们开始更加普遍地尝试运用单片机来对温度、湿度等工业控制中常见的参数进行测控,另一方面虚拟仪器已经渐渐地成为测控仪器发展的新方向。通过LabVIEW图形化编程实现对单片机系统采集的数据进行分析处理,就是一种结合二者优势的数据检测方法[3]。

将虚拟仪器技术引入温度监测研究领域已是一个重要趋势,例如王恒海等开发的基于LabVIEW的温度测控系统[4]、隋秀梅等设计的基于LabVIEW的八路智能温度巡检仪[5]、吴卓葵等设计的基于LabVIEW的多点报警温度监测系统[6]等。这些监测系统通常采用数据采集卡采集温度,数据采集比较方便,但缺少灵活性且价格相对较高。只能在上位机显示温度,难以在监测装置端实现温度显示,不利于现场操作人员实时观察,没有提出相应的温控方案。针对以上问题,本文提出一种基于LabVIEW和单片机的温度监控系统,采用低功耗的AT89C51单片机和数字温度传感器DS18B20作为硬件构成温度采集节点,在LabVIEW平台上通过调用VISA库函数配置设备参数实现单片机串口与PC机之间的数据传输。开发系统软件界面实现温度采集与健康。

1 温度监控系统方案

温度监控系统结构如图1所示,系统由PC机、单片机、温度传感器、串口通信电路及LabVIEW软件界面等构成。单片机检测多个分布放置的DS18B20数字温度传感器测得的温度数据,经过串口电路传输到计算机。数据进入计算机后,在LabVIEW开发平台上利用VISA库控制计算机I/0口[7-9],通过数据采集子程序、温度报警子程序,实现温度的实施监测,同时在软件前面板上显示实时温度曲线。当温度数据超出设置的上限或下限时,软件发出语音及报警。报警的同时,根据实时温度值来控制加热电路或者风扇电路, 实现温度的实时监测和控制,当温度满足要求时,停止加热或者通风。

图1 温度采集系统结构框图

2 系统硬件结构设计

2.1 基本外围电路

详细的硬件电路如图2所示,采用AT89C51作为主控芯片,它是一款低功耗,高性能的8位单片机。指令系统与传统的8051单片机完全兼容,具有很强的适用性。AT89C51在控制领域得到了广泛的使用,具有很高的性价比。AT89C51有两种低功耗工作模式可供用户选择:待机模式和掉电模式。当用户选择待机模式时,系统通过阻断向CPU提供时钟信号的通路,使CPU停止工作。可以通过中断和复位的方法退出待机模式。当用户选择掉电模式时,振荡器将停止工作但内部RAM的内容能够保存。只能通过硬件复位的方式才能退出掉电模式。

图2 温度采集系统硬件电路图

温度传感器则采用美国DALLAS半导体生产的DS18B20,这是一种可组网数字式温度传感器,它具有体积小、接口简洁、低功耗、抗干扰能力强等优点,特别适合构建温度采集系统。它的测量范围为-55~+125 ℃,最小分辨率为0.062 5 ℃,适应电压范围为3.0~5.5 V。每个DS18B20传感器都具有唯一的64位序列码,所以可以实现多个传感器在一条总线上工作。DS18B20采用单总线技术,不仅可以利用串口,还可以选用I/O口和其他硬件连接,并且能够直接输出数字量,不需要进行模数转换。DS18B20的1、3引脚接地和电源,数据引脚2与单片机相连。在引脚2和引脚3之间连接4.7 kΩ的上拉电阻,确保单片机实现较远距离读取温度数据。

利用单片机驱动DS18B20进行测温必须历经以下3个步骤:

1)每一次读写之前都必须要对DS18B20进行复位;2)复位成功后发送一条ROM指令;3)最后发送RAM指令。其工作时序分为初始化时序、写时序和读时序3部分。

2.1.1 初始化时序

1)先将数据线置高电平“1”;

2)稍作延时;

3)数据线拉到低电平“0”;

4)延时750 μs;

5)数据线拉到高电平“1”;

6)延时等待;

7)若数据线上为低,继续延时,其延时的时间从发出的高电平起要不少于480μs;

8)将数据线再次拉高。

2.1.2 写时序

1)数据线先置低电平“0”;

2)延时15 ms;

3)按从低位到高位的顺序发送字节(一次只发送一位);

4)延时时间为45 μs;

5)将数据线拉到高电平;

6)重复上1)~6)的操作直到所有的字节全部发送完为止;

7)最后将数据线拉高。

2.1.3 读时序

1)将数据线拉高“1”;

2)延时2 μs;

3)将数据线拉低“0”;

4)延时15 μs;

5)将数据线拉高“1”;

6)延时15 μs;

7)读取数据线的状态位,并处理数据;

8)延时30 μs。

单片机与计算机之间的通信采用串口通信方式,利用MAX232芯片实现单片机TTL电平与PC机232电平之间的转换,在MAX232芯片上连接1 μF电容消除电磁、电涌的影响。单片机P0口连接8位数码管,可以直接显示实时温度。

2.2 温控电路

温控电路如图3 所示,将两个固态继电器分别与单片机P1.0、P1.1连接。当系统监测温度低于设定值时,单片机P 1.1 输出高电平经过反向为低电平,接通固态继电器交流触点,使得交流接触器1 线圈得电,进而接通加热线圈加热。反之,当系统监测到温度超过设定温度值时,P1.1口输出高电平,接通固态继电器交流触点接通使得交流线圈2得电打开换气扇开始降温。

图3 温控电路

3 监测系统软件设计

3.1 软件系统总体方案

监测系统的软件设计流程如图4所示,首先进行系统初始化,实现数据采集模块与计算机数据的串口通信,然后单片机从温度传感器读取数据,同时将数据分为两种方式展示,一种通过数码管显示,另外将数据通过串口传输到上位机,利用LabVIEW开发的上位机程序进行显示存储。

图4 软件程序框图

LabVIEW给用户提供了简便直观的图形化编程方法以及众多的编程函数,使用户可以便捷地构建自己所需要的仪器系统。用图形化编程语言编写的应用程序称为虚拟仪器 VI,使用LabVIEW编写的程序都把VI作为后缀名。LabVIEW的核心是VI。每一个VI都有两个操作界面:前面板和程序框图。前面板接收来自于程序框图的指令。在前面板上,输入控件相当于传统仪器的输入设备,而显示控件则相当于传统仪器的输出设备。当在前面板上添加一个控件时,程序框图中会相应地添加一个端口,这个与输入控件或者显示控件对应的端口,仅在删除它对应的控件的时候才会消失。当使用LabVIEW进行编程时,首先选择需要用到的功能节点,放置在面板上的合适位置;然后在程序图中用线连接各节点的端口,从而实现节点之间数据传输。

LabVIEW具有资源丰富的VISA库。VISA指的是虚拟仪器的软件构架。VISA库存在于PC机系统之中,实现PC机与仪器间的连接,其作用是利用程序完成对仪器的控制,它的本质是虚拟仪器系统中的标准API。VISA自身没有编程的能力,它只是一个处在高层的API,只能使用调用底层驱动程序的方式来完成对仪器的编程。VISA是遵循VPP标准的I/O接口软件,把VISA和其它的I/O接口软件做比较,就会发现其I/O的控制功能具有以下优势:适用于各种类型的仪器;适用于多种类型的硬件接口;适用于多种网络机制;适用于分布式网络结构以及单、多处理器结构。

上位机程序分为数据采集模块、超限报警模块和数据存储模块3个部分。设置好串口,然后点击运行按钮,系统就开始进行对温度的读取,温度仪表则可以显示当前的温度,并且通过温度曲线可以直观的观察温度的变化。上下限可以自由地进行设定,当被测值高于上限或者低于下限的时候,与之对应的报警指示灯会发出报警指示,并且会在表格上显示报警记录。

3.2 串口通信设置

串口通信可以LabVIEW的Instrument I/模板的Serial实现,串口读操作函数分别为:1)VISA Configure Serial Port;2) VISA Read;3)VISA Flush I/O Buffer;4) VISA Close。串口写操作函数分别为:1) VISA Configure Serial Port;2) VISA Write;3)VISA Flush I/O Buffer;4) VISA Close。按照相应的顺序配置串口操作参数,对打开的串口进行读写操作,完成读写后清空缓冲区并关闭串口。程序框图如图6所示,其中串口号用来指定用到的串口,这是LabVIEW接收下位机发送的温度数据的前提。串口的初始化设置除串口号均选用默认值:波特率为9600,8位数据位,1位停止位,无校验位,串口号为COM3。当系统开始运行时,通过VISA接收下位机传送的温度。因为LabVIEW的串口通信仅适用于对字符串的读写,所以在对数据进行处理之前,一定要完成字符串和数值间的转换。LabVIEW通过VISA读取节点来读取单片机采集的温度数据。

3.3 温度显示和报警、数据存储模块

如图5所示,温度曲线和仪表用于显示实时的温度值。在报警部分中,温度的上下限可以自由地进行设置,并将采集到的温度会分别与设置的上下限温度做比较。当采集到的温度高于“温度上限”时,比较运算结果为“真”,“高温报警”指示灯会变亮;当采集到的温度低于"温度下限”时,比较运算结果为"真”,"低温报警”指示灯就会变亮;总之,无论当采集到的温度高于"温度上限”或者是低于"温度下限”时,比较运算的结果都为"真”时,就会有温度报警,同时表格会记录下来此时的温度值。

图5 温度采集系统程序框图

3.4 下位机程序设计

通过C#语言编程完成AT89C51单片机对温度传感器的数据读取,主要实现下面3个任务:

1)利用单片机读取温度传感器采集到的温度数据;

2)在单片机数码管上显示温度传感器采集的温度值(保留一位小数);

3)将采集到的温度值以十六进制形式发送到上位机系统中。

在初始化阶段,令单片机的定时器T1工作于方式2,用于产生串行通信所需的波特率,单片机开始读取DS18B20采集的温度数据,然后将温度数据转换为段位码送给LED数码管显示,另外还要将温度数据转换成十六进制数通过串口通信送入上位机进行分析。

4 系统运行测试与分析

4.1 下位机调试

系统的下位机调试即对系统硬件的电路连接和单片机程序的调试,利用数码管的显示和串口调试助手可以实现。具体步骤如下:

1)使用Keil编译器将C51程序编译生成HEX文件,然后采用STC-ISP软件将 HEX文件烧写到单片机中。

2)程序下载到单片机之中后,就可以给单片机开发板通电了,这时数码管上将会显示温度传感器DS18B20实时测得的温度值,如图7所示。可以调整温度传感器周围环境的温度来检验程序能否连续采集温度。

3)打开"串口调试助手”程序,首先设置串口号为COM3、波特率为9600,8位数据位,1位停止位,无校验位等,然后选择"十六进制显示”,打开串口。

4)如果PC机与单片机开发板串口正确连接,则单片机连续向PC发送检测的温度值,用2进制的十六进制数据表示,如00 F8,该数据串在发送缓冲区内显示。根据单片机返回数据,可知当前温度测量值为25.1 ℃,并与数码管显示温度对照,确认无误。

4.2 上位机调试及温度采集

由于LabVIEW采用的是的图形化的编程语言,使调试工作变的很简便,极大地提高了编程的效率。当LabVIEW程序存在语法上的错误时,运行按钮上的箭头会处于断裂的状态,这表示该程序存在错误,无法执行。此时这个按钮被称为错误列表。通过点击它,我们就可以查看错误清单,双击所列出的错误,错误对象就会变的高亮。

LabVIEW中错误的类型有很多,最常见的几种有:

1)节点之间未连线;

2)存在无效的节点;

3)程序中两节点之间的数据类型不同,导致数据不能传递;

4)存在节点无法正常运行其功能。

程序确认无误后,就可以通过串口把PC机与单片机开发板连接好,然后开始运行程序。

调整温度上限并改变DS18B20温度传感器周围的温度,使温度达到上限,此时高温报警指示灯亮,并记入报警记录。如图6所示。

图6 高温报警

图7和图8为温度检测系统在电热水壶周围进行温度检测时的界面,温度分别达到了47.5 ℃和65.3 ℃。

4.3 实验分析

通过上述实验监测结果可知,该温度监测系统能够准确监控当前环境下的温度,并且当环境温度超过设定温度的上、下限时,系统能够实时地进行高温和低温报警。报警的同时,根据实时温度值来控制加热电路或者风扇电路, 实现温度的实时监测和控制,当温度满足要求时,停止加热或者通风。实验结果表明,该系统具有较好的温度实时监测能力,能同时在温度监测装置和上位机程序显示温度,具有实时多点温度报警的优点。还可以将采集的温度数据保存到指定的数据库中, 以备随时查阅和分析。

图7 温度检测界面

图8 温度检测界面

5 结论

基于LabVIEW和单片机的虚拟温度检测系统设计利用单片机的控制能力以及LabVIEW的强大的数据处理能力,设计了一个方便灵活的测温系统。通过上位机LabVIEW能够很容易地开发测量和控制系统,同时仅使用一台计算机就能够实现多路信号的测量和控制。整个监测系统设计十分简便,对很多小型的测控系统的设计有很大的参考价值。通过简单的扩展,这一监测系统能够在工业控制、远程监控、实验测量等领域得到广泛的应用。

猜你喜欢

数据线温度传感器串口
气象用温度传感器检定结果的测量不确定度评定与应用
基于HSIC的日光温室温度传感器优化配置策略
基于API函数库实现串口数据通信的分析与设计
基于EM9000工控板高性能双串口通信模型设计与实现
第三方编织数据线材质更抗拉、更耐用
官方数据线未必靠谱:小米抗拉强度落后其他品牌近5倍!
浅谈温度传感器原理及其应用
MCS—51单片机中的多串口通讯技术的应用
会叫唤的数据线
基于VC串口通信的实现