基于DS18B20的多通道温度测试仪

2013-05-11 03:09王丽娟
制造业自动化 2013年2期
关键词:PC机数据线温度传感器

王丽娟,王 艳

(郑州升达经贸管理学院 资讯管理系,郑州 451191)

基于DS18B20的多通道温度测试仪

王丽娟,王 艳

(郑州升达经贸管理学院 资讯管理系,郑州 451191)

0 引言

在控制和监测系统中,许多场合都需要环境温度参数。例如楼宇温度监测系统、粮仓温度控制系统以及蔬菜大棚温度监测系统等。测量多点环境温度数据可采用美国DALLAS公司的DS18B20单总线式数字温度传感器,传感器的控制和设置利用单片机STC89C52实现。同时各点温度数据可经由串行总线RS232传送至通用PC机,由PC机作为监控系统的上位机,实现对整个系统的设置、监测和报警。PC机控制界面和通信程序采用VB6.0编写。其开发过程具有简单、界面友好的特点,同时还可将多点环境温度存储至PC机,对历史温度进行统计和分析,并可将数据绘制成图像方式显示。

1 系统整体设计

该系统设计了四通道测温系统,单片机与温度传感器的数据传输采用1-Wire总线即单总线结构,该结构是Dallas Semiconductor公司推出的非常简单实用的总线协议。实用1-Wire结构可将引脚减少到最少,因此特别适合应用于单片机系统中[1]。

Dallas Semiconductor公司推出DS18B20即为1-W i r e总线结构,其温度测量范围为-55℃~125℃,测温分辨率可达0.0625℃。多个DS18B20可以并联到3根或者2根线上,CPU只需要一根端口线就能与多个DS18B20通信,占用MCU端口较少,可节省大量的口线和硬件电路。因此,DS18B20非常适合与远距离多点温度检测系统中[2]。

2 下位机软硬件设计

下位机以单片机为核心,其外围器件有4个数字温度传感器DS18B20,液晶显示器LCD1602,与RS232的接口芯片MAX202。单片机的编程采用C51语言,该语言接近C语言,程序更易移植和模块化。

2.1 下位机系统框图

系统的连接框图如图1所示。系统的核心元件是单片机,采用STC89C52。系统中的测温传感器采用DALLAS公司的DS18B20单线式温度传感器,可有效节省单片机的I/O接口,简化系统连线。系统设计4通道采集温度传感器,各通道传感器收集到的温度可由1-wire总线送至单片机,单片机通过轮询机制采集4通道温度数据,并将数据经由RS232总线同时传送至PC机和LCD1602液晶显示器。PC机可存储各通道历史温度,显示各通道当前温度。考虑到PC机担任任务较多,并非温度监测控制专用机,系统中四路温度的当前值也同时送至LCD1602液晶显示。弥补PC机担任其他任务时不能显示当前温度数据的不足。

2.2 单片机与DS18B20的硬件连接和软件流程

2.2.1 测温电路详图

温度传感器DS18B20只有三个引脚,其中VDD为外部供电电源引脚,GND为接地引脚,DQ为1-Wire总线的数据输入/输出引脚。多个DS18B20的DQ引脚可以直接接在一起接入单片机的一个I/O引脚上,本系统接入单片机的P1.1引脚。考虑到系统中有多个DS18B20,在实际的应用中分部在不同的位置,其供电方式采用外部电源供电方式,方便系统接线。DS18B20与单片机的接线示意图如图2所示。

图2 温度传感器和单片机的接线示意图

2.2.2 1-wire总线的时序及编程

单片机与DS18B20通过1-wire信号线连接,单片机要实现各类操作命令以及温度的读取与设置,必须要严格按照单总线及DS18B20的通信协议进行通信。DS18B20的1-wire工作协议是:初始化→ROM操作指令→存储器操作指令→数据传输。其工作时序包括初始化时序、写时序和读时序。在实际的编程过程中,可将各个时序编写成子函数,以方便调用。1-wire初始化时序、写时序和读时序如图3所示[3]。

1)1-wire的初始化时序及编程

分析图3(a)初始化时序图,1-wire初始化即复位时序的步骤如下:首先将数据线DQ拉低并保持一段时间来实现1-wire总线上的所有器件的复位。接着主机等待DS18B20返回的存在脉冲,并返回存在信号。如果返回0,则表示器件存在,返回1,则表示器件不存在。根据初始化时序,采用C51编写单片机模拟1-wire的初始化协议函数initial(),其代码如下:

2)1-wire写时序及编程

分析图3(b)写数据时序图,主机要将一位数据写入DS18B20,首先应将数据线DQ置低电平,开始写时间间隙,然后按照数据位从低到高发送数据(一次只发送1位),如果写入1则数据线DQ置1,如果写入0则数据线DQ置0。根据以上1-wire总线的写时序流程,采用C51语言分别编写位写入函数BitWrite()和字节写入函数ByteWrite

图3 1-wire总线的时序图

3)1-wire读时序及编程

分析图3中的(c)读时序图,主机要读入DS18B20的数据,首先拉低数据线DQ开始读时间间隙,然后将DQ置1。延时一段时间,读取并返回数据总线DQ上的1位数据,重复以上步骤,直到8位数据读完。根据以上1-wire总线的读时序流程,采用C51语言分别编写位读入函数BitRead()和字节读入函数ByteRead()。程序代码如下:

2.3 下位机软件流程

单片机作为PC机和DS18B20的联络器件,主要负责接收PC机发送的指令,并将指令以特定的形式和时序传送给相应的DS18B20,同时,读取多个DS18B20的温度数据,并将数据送至LCD显示,同时将数据送至PC及进行显示、存储和分析。单片机控制控制DS18B20的流程图如图4所示。

单片机接收到PC机的复位指令,或者单片机本身的复位按钮被按下,单片机首先进行系统初始化,定义有关数据线的位地址。接着调用复位函数,发送复位时隙复位所有的1-wire总线上的DS18B20。由于所有的DS18B20都要检测温度,此时可以忽略每个DS18B20的64位ROM序列号,由单片机发送跳过ROM的命令CCH,紧接着发送温度转换命令44H,之后延时1s,以便各个温度传感器进行温度转换。

单片机要读入每个DS18B20D 温度数据,因此要建立每个DS18B20的64位ROM和测量位置点之间的对应关系。单片机读入DS18B20的命令是33H,但该命令只能读出1-wire总线上的单个1-wire器件的序列号,因此,在当主机需要对众多在线的DS18B20中的某一个进行操作时,首先应该讲单片机逐个与DS18B20进行挂接,发送33H命令读入其序列号,并将该序列号和测温点的对应关系存储在单片机的CODE区。

系统中多个DS18B20,单片机要逐个读入其温度数据,首先发送匹配ROM的指令55H,紧接着发送测温点的DS18B20的64位序列号,读入单个测温点的数据,该数据送到LCD的与测温点相对应的区域显示,同时该数据送至PC机进行显示和存储。主程序中该处共有4个DS18B20,因此读入温度的循环次数是4次。

2.4 LCD显示电路详图

考虑到系统要显示4通道测温点温度数据,采用点阵字符LCD液晶模块,液晶体积小、功耗低、显示操作简单。本系统选用市面上较为流行的并行接口通用LCD1602,该液晶可以显示2行,每行显示16个字符。每个通道的温度数据可占用8个字符。

图4 下位机程序流程图

单片机和LCD1602的连接如图5所示,液晶显示模块的端口引脚7~14为并行数据线D0~D7与单片机的P0.0~P0.7连接,液晶的引脚6为使能信号LCDEN接单片机的P1.1,液晶的端口4为数据/命令选择端接P1.2,液晶的端口5为“读/写选择端”,在本系统中只用于写入命令和数据,因此始终选择为写状态,即低电平接地。

单片机对LCD1602的读写,在较多的资料中都有介绍,在此不再赘述。

2.5 串行接口电路图

单片机采集到4通道温度数据后,一方面送入LCD1602显示,一方面送入PC机,单片机和PC机之间的通信采用RS232总线连接。由于RS232的逻辑电平和单片机所用的TTL电平不匹配,因此需要接入电平转换芯片MAX202,其所配电容只需0.1μ即可。采用RS232可实现全双工通信,故单片机可每隔10秒主动向PC机发送一次测量的温度数据(每隔10s测量一次温度,测后即发),单片机与MAX202的电路连接如图5所示。

3 上位机软件设计

PC机采用VB6.0编写用户界面,上位机的主要任务是通过串口和单片机进行通信,显示4通道的当前温度,并可以输入各个通道的温度的上下限。上位机软件流程图如图6所示。通过初始化命令按钮将各通道的温度上下限的值通过单片机送至各个DS18B20,然后通知单片机开始进行温度转换,延迟10s后即可接收数据,由于环境温度时刻变化,因此程序中每个10s接收一次温度数据,并同时将当前温度数据显示在PC机界面的文本框内,在PC机中用软件检测温度是否超限,如果超限,可弹出提示窗口进行提醒。VB6.0的串口通信主要是通过调用MSComm控件实现,通过设置MSComm控件的属性可以设置系统的波特率,传送字符的格式,串口标号等信息。上位机运行界面如图7所示[4]。

4 结束语

该系统实现了4通道温度的测量和显示,上位机以通用的PC机作为主机,用VB6.0编写人机交互界面,通过调用VB6.0的MSComm1控件实现与下位机的串行通信。同时可以通过界面设定温度的上下限。下位机以单片机STC89C52为核心器件,采用4路DS18B20数字温度传感器进行多点温度采样,其上下限温度数据来自PC机的设定,多点温度数据可同时送至LCD1602显示,弥补PC机担任其他任务时不能实时看到温度的不足。

读者也可在该系统的基础上进行扩展,例如,由PC机检测到温度超限时通知单片机报警,PC机接收的数据可以做历史保存,并对数据采样进行图像的绘制和分析。

图5 单片机与并行LCD1602液晶和MAX202的接口电路

图7 上位机运行界面

[1]赵建领,薛园园,等. 51单片机开发与应用技术详解[M].北京:电子工业出版社,2009.

[2]张维君,等.基于PC机串口与DS18B20的单线多点温度测量[J].仪表技术与传感器,2009(4):52-54.

[3]马云峰.单片机与数字温度传感器DS18B20的接口设计[J].计算机测量与控制,2002(10):279-280.

[4]郭天祥.51单片机C语言教程—入门、提高、开发、拓展全攻略[M].北京:电子工业出版社,2009.

The multi-channel temperature tester based on DS18B20

WANG Li-juan,WANG Yan

本文设计了4路温度测试显示系统。下位机以STC89C52单片机为主控芯片,温度传感器采用DALLAS公司的数字温度传感器DS18B20,采集4路温度数据,并将温度数据传送至单片机,同时由单片传经由串口送至PC机和LCD1602液晶进行显示。PC机采用VB编写控制界面和通信程序,可设定各通道温度的上下限,并检测和显示当前温度,同时对于超限温度进行提示。

单片机;温度传感器DS18B20;RS232

王丽娟(1979-),女,河南长葛人,讲师,硕士,研究方向为计算机通信及自动控制。

TP273.1

A

1009-0134(2013)01(下)-0123-05

10.3969/j.issn.1009-0134.2013.01(下).36

2012-09-05

基于DS18B20的网络型温度测试系统(2011YJ07)

猜你喜欢
PC机数据线温度传感器
气象用温度传感器检定结果的测量不确定度评定与应用
使用冗余测量修正动态温场测量结果
温度传感器DS18B20在温度计设计中的应用
XTR105电流变送器在温度传感器中的应用
第三方编织数据线材质更抗拉、更耐用
官方数据线未必靠谱:小米抗拉强度落后其他品牌近5倍!
基于三菱FXPLC的感应淬火机床与PC机的串行通信实现
VC.NET下实现dsPIC单片机与PC机的通信
基于单片机与PC机的电气量采集系统设计
会叫唤的数据线