基于LABVIEW和单片机的温度监测系统设计
2015-10-28李世红
李世红
摘要:以虚拟仪器LabVIEW为开发平台,以单片机和单总线数字温度传感器DS18B20为核心,设计了一个温度实时监测系统。该系统通过单片机与PC机的串口通信,同时在上位机界面实时显示温度值,并且进行曲线绘制。结果表明,系统设计简单,成本低,测量精度高,显示界面直观、形象。
关键词:LABVIEW;单片机;温度监测
中图分类号:TP274+.2 文献标识码:A 文章编号:0439-8114(2015)19-4836-04
DOI:10.14088/j.cnki.issn0439-8114.2015.19.047
Abstract: A real-time temperature monitoring system was designed using the virtual instrument development of LabVIEW as the platform and using SCM and a single-bus digital temperature sensor DS18B20 as the core. By serial communication of SCM and PC, the value of the real-time temperature was displayed in the PC interface and the temperature curve was drew. The results showed that the system was simple, low cost, high accuracy, and intuitive display.
Key words: LabVIEW; SCM; temperature monitoring
在日常生活和工农业生产中,温度都是一个十分重要的物理量,如智能大棚的温度控制、空调系统的温度控制、粮仓的温度控制等,因此对温度的监测也十分重要。LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是NI公司开发的一种行业图形化编程软件,是一种利用图标来代替文本行创建应用程序的图形化编程语言,主要用于开发测试、测量与控制系统,是专门为工程师和科学家设计的直观图像化编程语言[1]。本文采用高性能、低功耗的单片机STC89C52和单总线数字温度传感器DS18B20设计了一个基于LabVIEW的温度监测系统,工作人员可以在PC上实时监测温度的变化情况,方便了生产中对温度的监测,有效地提高生产质量。
1 系统总体方案设计
系统由LabVIEW上位机和单片机下位机系统两部分组成,下位机主要以单片机为核心,由温度传感器模块、报警模块、继电器控制模块组成,上位机主要是在PC平台上运用LabVIEW软件开发的界面,主要由报警模块、显示模块和数据存储模块组成。上位机不仅可以实时显示温度值,还可以观察温度变化曲线,根据需要还可以以Excel表格的形式保存监测的历史数据,同时根据实时采集的温度数据和设定值进行比较,提示温度报警。下位机系统单片机将温度传感器监测到的温度数据通过串口传送给PC机,通过PC机上的LabVIEW编写的上位机程序对数据进行实时显示并且存储。当温度过高或是过低时,均由相应的继电器进行控制,切断或开启相应的设备。系统的总体方案如图1。
2 系统硬件设计
2.1 温度传感器模块
温度传感器模块采用美国Dallas公司生产的单总线数字温度传感器DS18B20,该温度传感器适应电压范围为3.0~5.5 V,在设计中与单片机共用5 V的电压。其测温范围-55~125 ℃,在-10~85 ℃时精度为±0.5 ℃[2],此精度可以满足本设计系统的要求。其独特的单总线接口方式,在与单片机连接时仅需要一条口线即可实现单片机与DS18B20的双向通讯。DS18B20在使用中原则上不需要任何外围元件,在本设计中为了增加传输距离,在数据线和电源之间加入4.7 k的电阻,数据线与单片机的P1.0口连接。
2.2 单片机选型
本设计采用宏晶科技公司生产的STC89C52RC单片机。STC89C52是一种低功耗、高性能CMOS 8位微控制器,具有8 k在系统可编程Flash存储器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8 k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4 kB EEPROM,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口,最高运作频率35 MHz,6T/12T可选,该单片机的指令代码完全兼容传统的8051单片机[3]。
2.3 报警模块
本设计采用压电式蜂鸣器来设计报警电路,具体电路如图2,蜂鸣器正极接VCC,负极接三极管的发射极,三极管基极经过限流电阻R1后由单片机的引脚P1.1控制,当单片机引脚输出高电平时,三极管Q1截止,没有电流流过线圈,蜂鸣器不工作;当单片机引脚输出低电平时,三极管导通,电流流入蜂鸣器的电磁线圈,驱动振动膜发出声音。由于单片机的管脚输出电流比较小,不足以驱动蜂鸣器发声,因此图2中蜂鸣器与单片机之间连接了一个8550三极管,主要是用来放大单片机输出的电流进而驱动蜂鸣器工作[4]。
2.4 继电器模块
在本设计中采用电磁式继电器,具体电路图如图3。单片机的P1.2口经过一电阻与三极管8550的基极连接,经三极管的电流放大后,可以直接驱动继电器工作。此时,继电器的开和关则由三极管的基极电平来控制,如果单片机的P1.2口输出低电平,三极管饱和导通,继电器得电闭合,同时状态指示的发光二极管D2也点亮。如果单片机的P1.2口输出高电平,三极管截止,继电器不工作,同时状态指示的发光二极管D2也熄灭。图3中的二极管D1主要是用于吸收继电器断电时候产生的感应电动势,防止干扰,同时也保护三极管不被击穿[5]。
3 系统软件设计
3.1 下位机程序设计
下位机调试开发环境使用的是Keil uvision 4,使用C语言作为编程语言。同时为了提高软件的运行效率,在下位机软件设计时采用模块化编程方法。下位机主要是接收上位机发过来的启动指令,将温度传感器采集到的温度值传到上位机系统中,具体的流程图如图4。在下位机中读取温度的子程序流程图如图5,单片机对DS18B20的访问流程是先对DS18B20复位,再进行ROM操作命令,之后对存储器执行操作命令,最后进行数据操作。在程序设计中DS18B20每一步操作都要遵循严格的工作时序和通信协议。
3.2 串口通信
串口通信电路如图6。本设计串口通信电路主要使用MAX232芯片来实现电平转换。其中T1IN和R1OUT分别接单片机的发送引脚TXD和接收引脚RXD,MAX232外接5个1uf电容为经典电路的接法,与PC机接口电路使用RS232的DB9接头,只需接其中3根线,即发送、接收和地线。串口通信程序主要包括串口的初始化、串口数据发送,其中串口的初始化主要用于设置波特率,在本设计通信中采用的串口通信波特率为9 600 bps。
3.3 上位机程序设计
本系统的上位机程序以LabVIEW为开发平台,采用模块化的编程方法,将各个功能模块设置成不同的子VI,在主程序中通过调用子VI来实现。上位机通过串口接收下位机发送的温度值,实现对温度的显示、存储、报警等功能,整体程序设计流程图如图7所示。
3.4 LabVIEW串口程序设计
在LabVIEW串口程序设计中,主要由VISA配置串口、属性节点、VISA读取和简单错误处理等几部分组成[6](图8)。在程序设计中使用条件结构来判断是否执行报警程序,将采集到的温度值与设定的温度值进行比较,如果温度值高于或者是低于设定的温度值,则条件结构判断为真,执行报警程序,否则不予执行。
4 数据的测量
在进行数据采集时只需将串口的相关参数设置好之后,再设置报警温度上限为25 ℃,数据采集时间间隔为500 ms。然后运行上位机和下位机程序,并点击上位机的开始运行按钮,就可以实现数据的采集和显示。上位机的实时数据采集界面如图9,用手触摸下位机中的温度传感器DS18B20,则实时曲线也会随着温度的改变而发生变化。
采集温度数据时还需要对采集到的温度数据进行存储,点击上位机中的数据存储路径可以选择数据存储的路径,可将温度数据以TXT或者XLS的格式存储。
5 小结
本系统利用虚拟仪器LabVIEW的图形化编程语言(G语言)编写上位机程序,通过单片机与PC机的串口通信,可以实时监测环境的温度值变化,并利用单片机的其他端口,多挂几个DS18B20,实现温度的多点监测,与其他测量系统相比,该系统设计简单、成本低、测量精度高,显示界面直观。
参考文献:
[1] 陈学军,徐明铭.基于虚拟仪器的综合实验室平台探索[J].实验室研究与探索,2014,33(10):250-253.
[2] 刘 暐,李爱宁,孙士尉,等.冬枣恒温库无线监测系统设计[J].中国农机化学报,2014,35(4):203-207.
[3] 靳玉红.基于STC89C52的防盗报警系统设计[J].数字技术与应用,2013(5):193-194.
[4] 陈 宇,王 玺.基于光电技术智能输液监控系统设计[J].核电子学与探测技术,2009(5):1150-1154.
[5] 刘华昌.基于PIC16F87X的电磁继电器控制设计[J].低压电器, 2008(15):16-18.
[6] 徐华中,黄丽萍.基于LabVIEW和DSP串口的多通道电机参数采集系统[J].电子测量技术,2011(4):66-69.