基于USB的LabvieW温度监测系统设计

2020-07-04 02:13刘玉玲
电脑知识与技术 2020年13期
关键词:单片机

刘玉玲

摘要:以Labview、单片机和DSl8820为核心,设计了一款温度监测系统。该系统通过DSl8820温度传感器采集温度信号,经单片机的串口转USB,再由USB接口将信号发送Labview,可以实现温度的实时采集、处理、显示及报警,同时在Lab-view中可设置温度的上下限,查看温度曲线以及调出历史数据等功能。该系统的下位机采用的是单片机最小系统,外加温度传感器,串口转USB模块,上位机采用的是NI公司的一款图形化编程软件Labview,整体简单易行,却很好地实现了温度的监测功能。设计中,可更换传感器实现不同参数的监测,如湿度监测、粉尘监测、烟雾监测等,使得该系统可以应用到各种不同的场合。

关键词:Labview;单片机;USB

中图分类号:TP391 文献标识码:A

文章编号:1009-3044(2020)13-0007-04

在很多场合,温度的变化对生产或生活都会产生极大的影响,比如智能温室大棚、多个机台设备的生产车间、名贵鱼的鱼缸等,温度恒定是保证产品质量的重要前提,因此温度数据的采集和监测意义重大。

本监测系统可以对监测场所的温度数据实时采集,绘制温度曲线,当温度高于上限或低于下限均可实现报警,并可以查看相关的历史数据。整个系统成本较低,非常适合学生在实验室中设计开发。

1系统的硬件部分

系统的硬件由温度传感器DS18820、51单片机AT89S51、USB转接芯片CH340组成,其硬件框图如图1所示。数字温度传感器可将温度值直接转换成数字量发送至单片机,单片机对该温度信号进行处理后,通过串口转USB的转接芯片将数据送至计算机,计算机的Labview软件处理后以人机界面的窗口形式,直观地展示数据曲线。

1.1温度传感器DSl8820

DSl8820是一款常用的温度传感器,它的优势是低功耗、抗干扰能力强的单总线数字温度传感器,该传感器在使用过程中无需外加AD。从DS18820到主控芯片仅连接一条线,硬件电路简单,而且每个DS18820有唯一的系列号,因此多个可以存在于同一条单线总线上,有利于系统后续拓展成多路的温度监测。

DS18820提供9位温度读数,测量范围是-55°C至125°C,增量值位0.5℃。

1.2单片机AT89S51

系统的主控芯片选用了AT89S51,此单片机功能简单、价格低廉,单片机有4K的片内程序存储器,可以外扩至64K,128B片内数据存储器,64K片外数据存储器,AT89S51支持在线编程下载,极大地方便了调试。

1.3串口转USB接口模块

由于目前大部分笔记本电脑未配置串口,故需要将串口信号转换成更为通用的USB接口信号,选用的芯片是CH340。CH340是USB总线转接芯片,可以实现USB转串口、IrDA红外或打印口。芯片内置了USB上拉电阻、复位电路,内置了独立的收发缓冲区,支持单工、半双工或者全双工异步串行通讯。

2系统的软件部分

2.1下位机软件

系统软件的编写是在Keil uVision4的集成开发环境下,用C语言编写的,整个软件实现了硬件初始化、温度采集、数据转换、上下位机通信4个模块。系统的主程序流程图如图2所示。

2.2上位机软件

上位机使用虚拟仪器完成温度数据的读取、转换和处理,温度上下限的设置,实时曲线图的绘制,历史曲线的查看。Labview虚拟仪器程序由前面板和程序框图构成,前面板是人机交互界面,用来输入输出,程序框图是用户以框图的形式编制的代码。

1)上位机的前面板

系统上位机前面板如图3所示,包括三个数据输入控件,用来输入VISA资源端口名称以及上下限温度;两个布尔量的圆形指示灯,当温度超过上下限时,相应指示灯点亮;一个温度值显示的仪表控件,可以更加直观读取当前温度值;三个数值显示控件,分别显示接收数据的字符型、数值型和接收数据的长度;两个布尔量的开关按钮,一个控制采集数据的启停,一个退出整个监测界面;一个波形图表的图形显示控件,显示當前采集温度的实时曲线。

2)串口通信模块

上位机框图中所采用的串口是NI_VISA串口Serial函数来访问和控制串口的,VISA(Virtual Instrument Software Architec-ture,简称为“Visa”)为虚拟仪器软件结构。函数的打开如图4所示,程序框图面板a仪器I/Oa串口。串口函数常用的四个子函数分别为:VISA配置串口、VISA写入、VISA读取、VISA关闭。VISA配置串口是完成串口参数的初始化设置,包括串口资源的名称、波特率、数据比特、奇偶校验、停止位等,停止位的典型值是1、1.5、2位,但在初始化时停止位的输人应配置成10、15、20。

VISA读取子函数是每次从串口读取一定字节数的数据,VISA关闭子函数是当程序停止前,把使用的串口设备关闭,若不关闭,该串口就一直被占用。

在设计串口时,应最先安装VISA驱动,该驱动并不在软件安装程序中,若不安装,前面板运行时,串口资源名称无法从下拉框获取,程序无法运行。安装成功后,下拉框就可以看到相应的COM口。

3)数据采集处理模块

该模块将单片机的数据进行采集和处理,以便实时显示。VISA读取子函数中左边输入有个VISA的字节总数,如图5所示,因此在读取前必须指定这个个数。VISA读取函数的“读取字节数”的输入端口设置十分必要,在串口通信中,如果当前缓冲区的数据量小于指定的字节数,程序会一直停在VISA读取上,在超时的时间(默认是10秒)内无法满足数据量时,程序会“Time out”如果超时时间设置过长,有可能导致程序停止在VISA读取这个节点上。

使用“Bytes at Port”串口的属性节点,可以很好地解决以上问题。在仪器I/O子面板下,如图6所示,程序框图面板a仪器I/O&VISA&高级VISA&VISA属性节点5Serial Setting&Number ofBytes atSerialPort。

也可以在资源线上右键a创建aInstr类的属性aSerial Set-tings&Number ofBytes atSerialPort,如图7所示。

此属性节点可以很好地把当前缓冲区字节数匹配到vI—sA读取的“读取字节数”这个输入端上,缓冲数即为读取字节数,无任何等待。

目前串口的收发大致有两种类型:一种是主动型的,即上下位机相互通信,上位机发指令,下位机响应,并返回数据给上位机;另一种是被动型,即下位机一直往上位机发送数。本系统采用的是被动接收,定时器设置每ls接收一次数据。

单片机发送的温度值为6字节,首字节表示正负,后五个字节表示最大三位数,精度小数点后一位的温度值,如+103.5。为了保证接收的数据帧不错乱、不丢包,当且仅当接收数据为6个字节的数据包,系统才会保存和显示。

4)显示、报警和存储模块

实时显示包括数值显示、曲线显示。为了使曲线的横坐标与系统时间相同,需要修改波形图表的横坐标属性。程序框图如图8所示,获取系统的时间标识,按名称解除捆绑,分别得到时、分、秒,计算((60*时)+分)*60+秒,得到曲线横坐标的off-set,XScale.Offset最后链接至波形图表。运行程序,波形图的坐标轴显示如图9所示。

从VISA读取子函数接收到的是字符型数据,为了直观显示和画图,将其用十进制数字符至数值转换,转换成十进制数值,此数据在前面板有三种显示方式:数值控件显示、仪表盘显示、曲线显示。前面板设定温度的上下限,比较器比较后输出至上下限指示灯。程序框圖如图10所示。

系统还可以查询历史温度数据,点击图形控件,右键导出数据至Excel,可查看历史记录。图11是记录的是10:51-10:52的后半分钟内的温度值。与此对应的前面板监测界面图,如图3所示。系统可保留一天的数据。更改坐标轴的offset,可以保留不同时间的数据。总体的上位机软件程序框图如图12所示。

3总结

该课题简单易行,成本较低,适合学生在实验室中设计开发。课题本身灵活性高,可进行相关拓展,如需检测湿度、烟雾等信号,只需要将温度传感器对应的更换为湿度传感器或烟雾传感器;若通信距离较远或者想摆脱线缆的束缚,可将通信方式由串口的有线传输改为无线通信,例如采用zigbee模块CC2430或无线收发模块NRF24L01。

猜你喜欢
单片机
基于单片机的SPWM控制逆变器的设计与实现
基于单片机的层次渐变暖灯的研究
基于单片机的多功能智能插排
基于单片机的便捷式LCF测量仪
小议PLC与单片机之间的串行通信及应用
MSP430单片机在仿真中要注意的几点问题
基于单片机的平衡控制系统设计
基于单片机的三维LED点阵设计
Microchip推出两个全新PIC单片机系列
基于Proteus的单片机控制系统的仿真设计