本测温网络应用在磁致伸缩液位传感器上,利用附在不锈钢管内壁的不同位置上的三个DS18B20,测量不同液位层的温度 。
1硬件设计
整个系统由上位机和下位机组成。上位机用PC机,下位机用PIC16C63(原理框图见图1)。系统硬件部分主要有PIC16C63、AT24C01、DS18B20、显示电路、电源电路、时钟电路和通信电路。用户需要时可通过上位机下达测量命令,下位机进行测量并把结果送给上位机或显示在液晶显示模块上。三个温度点任何一路发生故障,都会传给上位机一个默认值,用户可以据此在线更换新的温度传感器,系统能够自动找到并启用它。用户每次开机都通过上位机给下位机下达命令,对通信、AT24C01、DS18B20进行自检,自检失败会给上位机返回警告信号。系统具有掉电保护功能,当掉电时,参数的设定值可以保存在AT24C01中。上下位机之间采用RS-485串行总线进行通信。
1.1微处理器电路
PIC16C63A单片机有可编程编码(加密)保护功能,采用宽字单周期指令、哈佛双总线和RISC结构,其数据吞吐率最高可达6MIPS。数据输入线允许有25mA的倒灌电流,可以直接驱动LED。片内有可直接寻址的4K个字的程序存贮器、192个8位数据寄存器、3个8位I/O口、2个8位和1个16位的定时器/计数器、2个捕捉/比较/脉宽调制(CCP)部件、同步串行口(SSP)部件、串行通信接口(SCI)部件。可选择振荡器类别:RC型、XT型、HS型和LP型。有多级中断功能,可编程ID标识码,在线串行编程。
PIC单片机主要完成掉电保护电路、温度测量电路的操作控制,并对信号进行加工处理和最终输出。
1.2温度测量电路
DS18B20是可组网数字式温度传感器,测量范围为-55℃~125℃,精度达到0.0625℃。DS18B20有3个引脚分别接地、电源和信号。每个DS18B20包括一个唯一的64位长的ROM编码(表1),因此多个DS18B20和一个主控单元可以组成1-WIRE网络。图2为DS18B20内部存储器结构,它包括一个暂存RAM和一个非易失性电可擦除EERAM。暂存存储器作用是在单线通信时确保数据的完整性,它包括9个字节,头两个字节表示测得的温度数,温度/数据对应关系为+125℃→7D0H,0℃→000H,-55℃→FC90H。用户可自设定非易失性温度报警上下限值TH和TL(掉电后依然存在),DS18B20在完成温度变换后,所测温度值将自动与贮存在TH和TL内的报警值相比较,如果高于TH或低于TL,DS18B20内部的告警标志就会被置位。DS18B20内部暂存存储器的第5个字节是结构寄存器,它的第5位R0和第6位R1主要用于确定温度值的数字转换分辨率。
1.3掉电保护电路
AT24C01是电可擦除的串口存储器,其内部组合为128*8位,并有多种工作电压可供不同用户选择。只要把它的地线、电源线、数据线和时钟线分别接主控单元的地、电源和两个I/O引脚,主控单元就可以通过两条I/O线采用I2C总线的操作时序来操作它。
2软件设计
2.11-WIRE的操作时序及软件实现
1-WIRE网络是一种具有一个总线主机和一个或若干个从机的系统。从机采用类似集电极开路的形式输出,因此要求上拉电阻。1-WARE网络的通讯协议有三种类型:初始化、读时间片和写时间片。
初始化时序:主机向总线发一复位脉冲(至少480μs的低电平),然后释放总线并进入接收状态,这时总线被上拉电阻拉高,从机在检测到信号线上的上升沿之后,等待15~60μs,然后发出存在脉冲(60~240μs的低电平)(图3)。
写时序:主机将数据线从高电平拉至低电平,在15μs之内将所需写的位送到数据线上,从机在15~60μs之间对数据线进行采样,整个过程持续60~120μs,再延时至少1μs之后,开始一轮新的过程(图4)。
读时序:主机把数据线从高电平拉至低电平时,必须保持在低电平至少1μs,然后释放总线,从机将在15μs之内输出数据,整个过程最短持续期限为60μs,再延时至少1μs之后,开始一轮新的过程(图4)。
1-WIRE网络可保证在100米内数据通信正常,可挂接150个从机。为了更远距离传输或重载,可以利用一段网络作为主干,其余为网络分支,根据需要用耦合器DS2409添加或去除分支,同时可以利用其他耦合器来作为接点控制,以在分支上添加或去除其他网络。
2.2I2C总线操作时序及软件实现
I2C是两线制(只用串行时钟线SCK和串行数据线SDA)串行通信接口。为了实现总线的“线与”功能,SDA(数据)线在输出时采用开漏极,所以一般需要加上拉电阻,以保证总线在没有器件把其拉成低电平时为高电平。由总线时序知,当SCL保持高而SDA由高变低时,为启动信号:当SCL保持高而SDA由低变高时,为停止信号。数据传输过程中,数据线SDA只能在SCL为低电平时产生高低电平的变化。I2C总线的操作由四个基本的时间片组成:写时间片、读时间片、开始和停止。
2.3DS18B20工作过程的软件实现
系统对DS18B20的操作以ROM命令和存储器命令形式出现,DS18B20的工作遵循严格的单总线协议:
(1)主机首先发一复位脉冲,使信号线上所有的DS18B20芯片复位,并等待接收存在脉冲。
(2)接着发送ROM操作命令,包括读取(33H)、匹配(55H)、搜索(F0H)、跳过(CCH)序列号操作等工作,使序列号匹配的DS18B20被激活。
(3)准备接收下面的存储器操作命令;存储器操作命令控制被激活的DS18B20的工作状态,包括写报警值、写结构寄存器、温度转换、读取温度等工作。
本系统对DS18B20进行的操作主要包括三个子过程:1.自动搜索3个DS18B20的序列号(程序流程略),主机首先发一复位脉冲,等收到返回的存在脉冲后,发出搜索器件的序列号命令(F0H),读取DS18B20的序列号;2.写暂存存储器(程序流程如图5),主机在收到返回的存在脉冲后,发出匹配器件的序列号命令(55H),跟着发送一DS18B20的序列号,再发送写暂存器命令(4EH),写数据;3.启动DS18B20作温度转换并读取温度值(程序流程如图6),主机在收到返回的存在脉冲后,发出跳过器件的序列号命令(CCH),跟着发出温度转换命令(44H),再次复位并收到返回的存在脉冲后,发出匹配器件的序列号命令(55H),跟着发送一DS18B20的序列号,再发送读暂存器命令(BEH),读出数据。
2.4AT24C01工作过程的软件实现
AT24C01的读写操作过程都由上面介绍的I2C总线的四种操作时间片组成。AT24C01的写操作分为写字节和写页面两种方式。在本系统中采用了写字节的方式,写字节操作分为5个阶段:
(1)主机启动开始。
(2)主机通过SDA输入一个写器件命令(10100000B)。如果写入成功,AT24C01在第9个周期输出“0”表示确认((3)、(4)同)。
(3)主机通过SDA输入8位数据地址。
(4)主机通过SDA输入8位数据。
(5)停止信号。
AT24C01的读操作分为立即读取、随机寻址读取和顺序读取3种方式。在本系统中采用了随机寻址读取的方式,具体读取过程分为7个阶段:
(1)主机启动开始。
(2)主机通过SDA输入一个写器件命令(10100000B)。如果写入成功,AT24C01在第9个周期输出“0”表示确认((3)、(5)同)。
(3)主机通过SDA输入8位数据地址。
(4)主机启动开始。
(5)主机通过SDA输入一个读器件命令(10100001B)。
(6)AT24C01通过SDA输出8位数据。
(7)停止信号。
3硬件和软件调试
硬件调试上需要注意接口问题。DS18B20的工作电流高达1mA,当温度变换时信号线上必须提供足够的功率,因此选用了4.7k的上拉电阻。AT24C01数据线上的上拉电阻不能太大,否则AT24C01输出数据时不能获得足够的电流;也不能太小,否则AT24C01工作不稳定,必须经过调试选择一定阻值的上拉电阻。
本系统的主要调试任务集中在软件调试上,需要注意时间的把握,因为DS18B20和AT24C01的操作时序对时间要求比较严格。PIC单片机除分支指令是双周期外,其他所有指令都是单周期指令,本系统选用的晶振为4MHz,执行一条单周期指令需要250ns,执行一条分支指令需要500ns。
4总结
本套系统为广东康宇测控仪器仪表工程有限公司设计,已经进入试运行阶段。从目前的情况来看,它能够精确、及时地反映所测液体及周围环境的温度,而且现场调整方便灵活,反映良好。
参考文献:
[1]吕瑜,等.基于单片机和TDC的磁尺数字化技术研究[J].仪表技术,2003,(4).
[2]DS18B20 Programmable Resolution One-Wire Digital Thermometer[Z].Dallas Corp.