基于LabVIEW的温度采集系统设计
摘要:设计了基于LabV IEW的温度采集系统。它利用DS18B20数字温度传感器和STC公司生产的STC89C52单片机采集被测环境温度,将测得的数据经串口传给计算机。计算机利用LabV IEW的V ISA读取串口数据并进行处理和显示,实现基于V ISA的串口温度采集。
关键词:温度传感器;单片机;LabV IEW;温度采集
1引言
虚拟仪器(Virtual Instrument)是基于计算机的软硬件测试平台,它可代替传统的测量仪器。LabVIEW是由美国国家仪器公司(National Instruments Co.)推出的、主要面向计算机测控领域的虚拟仪器软件开发平台,是一种基于图形开发、调试和运行的集成化环境[1]。
利用LabVIEW设计的数据采集系统,可模拟采集各种信号,但是配备NI公司的数据采集板卡比较贵,因此,可以选择单片机小系统作为前端数据采集系统,进行采集数据,然后通过RS-232串口通讯将数据送给计算机,在LabVIEW开发平台下,对数据进行各种处理、分析并对信号进行存储、显示和打印,从而实现了一种在LabVIEW环境下的单片机数据采集系统。
2 温度采集系统设计
本系统采用STC公司生产STC89C52单片机作为温度数据采集和传输的主控芯片,温度传感器采用单总线方式的集成数字温度传感器DS18B20。采集得到的数据利用单片机经串口通信的方式传输至计算机的串口。计算机上位机软件采用数据处理能力超强的LabV IEW软件编写,利用其所带的V ISA驱动进行串口的数据采集和处理,实现了基于V ISA的串口温度采集。
2.1温度采集系统的硬件设计
本系统以AT89C51为中央处理单元,利用DS18B20数字温度传感器对温度信号进行采集,采集到的信号被送到AT89C51中, 将采集到的温度值在LCD上显示并通过串口发送到上位机,其原理图如1所示(见附录1)。
2.1.1 中央处理单元——STC89C51
本设计选用的中央处理单元是STC89C52单片机,STC89C52是一种带8K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Eras-able Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除。该器件采用ATMEL高密度非易失存储器制
造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容[2]。其优点有三:
(1)低功耗、低价; (2)高速、高可靠; (3)抗静电、干扰能力强; STC89C52标识分别解释如下:
STC—表示芯片为STC公司生产的的产品。 8—表示该芯片为8051内核芯片。 9—标示内部含Falsh E2 PROM存储器。 C—标示该器件为COMS产品。 5—固定不变。
2—表示该芯片内部程序存储空间大小,1为4KB。2为8KB,3为12KB。
2.1.2 DS18B20数字温度传感器
DSI8B20是DALLAS公司的最新单线数字温度传感器,它体积小、经济。是世界上第一片支持“一线总线”接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念[3]。它的测量温度范围为-55~+125℃。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持3~5.5 V的电压范围,使系统设计更灵活、方便。而且新一代产品更便宜,体积更小。DSI8B20可以程序设定9~12位的分辨率,精度为±0.5℃。可以选择更小的封装方式,更宽的电压适用范围。分辨率设定及用户设定的报警温度存储在EPROM中,掉电后依然保存。DS18B20的性能是新一代产品中最好的,性能价格比也非常出色,继“一线总线”的早期产品后,DSI8B20开辟了温度传感器技术的新概念。DS18B20和DS18B22使电压特性及封装有更多的选择,让用户可以构建适合自己的经济的测温系统。DS18B20内部结构主要由4部分组成:64位光刻R OM,温度传感器、非挥发的温度报警触发器T H和TL,配置寄存器。本次设计智能温度报警系统的温度采集就由DSI8B20完成。将DSI8B20的GND脚接地,VDD脚接高电平,而单总线DQ脚接单片机的外部中断1脚,具体的采集电路如图2所示。
图2 温度采集电路
2.1.3 LCD1602显示模块
本设计使用的1602液晶是一种点阵液晶显示器,电压驱动为5V,带背光,每行显示16个字符,一共可以显示两行。1602是字符型液晶,即只能显示ASCII码字符,如数字、大小写字母、各种符号等,不能显示汉字。内置含128个字符的ASCII字符集字库,只有并行接口,无串行接口。工作温度一般在-10到+50度,存储温度一般在-20到+70度。
2.2温度采集系统的软件设计
下位机软件采用C语言编写,包括DS18B20的读写和串口通信[4]两个主要部分。上位机软件采用当前测试测量应用最广泛的LabV IEW编写[5]。LabV IEW (L abo ra to ry V irtua l In st rum en t Eng ineering)是一种图形化的编程语言,它广泛地被工业界、学术界和研究实验室所接受,视为一个标准的数据采集和仪器控 制软件。
2.2.1下位机软件软件设计
程序采用C语言进行编写,主要完成LCD1602初始化、DS18B20初始化从DS18B20读取数据、向DS18B20写数据及温度转化等子程序的编写。
此外,在进行程序的编写时,一定要严格保证DS18B20读写时序的正确性,否则无法读取测温结果。其初始化时序和写时序的程序分别如下: (1)DS18B20初始化时序
初始化时序包括一个主机发出的复位脉冲以及从机的应答脉冲,这一过程如图3所示,复位脉冲是一个480~960us的低电平,然后释放总线将总线拉至高电平,时间持续15~60us。之后,从机开始向总线发出一个应答脉冲,该脉冲是一个60us~240us的低电平信号,表示从机已准备好。在初始化过程中,主机接收脉冲的时间最少为480us。
void ds18B20_initial()//DS18B20初始化程序 {do {DQ=1; _nop_(); _nop_(); DQ=0; Delay(36); DQ=1; delay(3);
result_ds18b20=DQ; delay(18); }
while(result_ds18b20==1); }
(2) DS18B20的写时序
DS18B20的写时序如图4所示,分为写0和写1时序两个过程,主机把单线总线从高电平拉到低电平时,表示一个写周期的开始。当要写0时序时,单总线要被拉至至少60us,当要写1时序时,单总线被拉低以后,在15us之内就得释放单总线,将总线拉为高电平。此外,两个写周期之间至少要1us的恢复时间。
图4 DS18B20的写时序 void WriteOneChar(unsigned char dat)//写一个字节程序 {unsigned char k,m; for(k=8;k>0;k--) {DQ=0;
for(m=2;m>0;m--); DQ=dat&0x01; delay(5); DQ=1; dat>>=1;
} }
下位机软件流程图如图图5:
开 始
初始化1602液晶 和传感器DS18B20 设置温度上限值 启 动 温 度 转 换温 度 换 算 及 显 示 图5:下位机软件流程图
2.2.2 LabVIEW下的串口通讯的实现
LabVIEW的函数库中提供了串口通讯函数,可用来设计单片机与PC机的串口通讯[6]。
(1)串口初始化:
图6 串口初始化
图6中包含以下参数:
<1>flow control etc该参数包括Input XON/XOFF、Output XON/XOFF、Input HW Handshake、Input alt HW Handshake、XOFF byte、XON byte以及Parity Errorr byte主要用于设置串口通讯的握手方式和奇偶效验方式。
<2>baud size LabVIEW分配给串行通讯输入/输出缓冲器的容量,可以由用户设置。