• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 测试测量 > 技术文章 > 基于PIC单片机的测温网络的开发

基于PIC单片机的测温网络的开发

录入:edatop.com    点击:

  本测温网络应用在磁致伸缩液位传感器上,利用附在不锈钢管内壁的不同位置上的三个DS18B20,测量不同液位层的温度[1]。

  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.1 1-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)。

  主机从DS18B20读出一位数据

  clrf 7bH    /*清空寄存器7bH*/

  bsf portc,1 /*将数据线置高电平*/

  bcf portc,1 /*将数据线置低电平*/

  bsf status,5 /*选中寄存器体Bankl*/

  bsf trisc,1 /*释放数据线控制权*/

  bcf status,5 /*选中寄存器体Bank0*/

  btfsc portc,1 /*数据线上为高电平向下执行,若为低电平跳过一行执行*/

  goto is1 /*跳转到is1*/

  bcf status,0 /*置状态寄存器status进位位为0*/

  goto is0 /*跳转到is0*/

  is1 bsf status,0 /*置状态寄存器status进位位为1*/

  is0 rlf 7b,1 /*带进位位寄存器7bH内容循环左移一位*/

  主机向DS18B20写入一位数据

  bsf status,5 /*选中寄存器体Bankl*/

  bcf trisc,1 /*获得数据线控制权*/

  bcf status,5 /*选中寄存器体Bank0*/

  bcf portc,1 /*将数据线置低电平*/

  btfsc status,6 /*状态寄存器status位6为高电平向下执行,若为低电平跳过一行执行*/

  goto write1 /*跳转到write1*/

  bcf portc,1 /*将数据线置低电平*/

  goto write /*跳转到write*/

  write1 bsf portc,1 /*将数据线置高电平*/

  write nop /*空指令*/

  DS18B20初始化

  rest bsf status,5 /*选中寄存器体Bank1*/

  bcf trisc,1 /*获得数据线控制权*/

  bcf status,5 /*选中寄存器体Bank0*/

  bsf portc,1 /*将数据线置高电平*/

  bcf portc,1 /*将数据线置低电平*/

  bsf status,5 /*选中寄存器体Bank1*/

  bsf trisc,1 /*释放数据线*/

  bcf status,5 /*选中寄存器体Bank0*/

  bcf status,7 /*置状态寄存器status位7为低电平*/

  btfss portc,1 /*检查数据线上是否有存在脉冲*/

  bsf status,7 /*置状态寄存器status位7为高电平*/

  1-WIRE网络可保证在100米内数据通信正常,可挂接150个从机。为了更远距离传输或重载,可以利用一段网络作为主干,其余为网络分支,根据需要用耦合器DS2409添加或去除分支,同时可以利用其他耦合器来作为接点控制,以在分支上添加或去除其他网络。

  2.2 I2C总线操作时序及软件实现

  I2C是两线制(只用串行时钟线SCK和串行数据线SDA)串行通信接口。为了实现总线的“线与”功能,SDA(数据)线在输出时采用开漏极,所以一般需要加上拉电阻,以保证总线在没有器件把其拉成低电平时为高电平。由总线时序知,当SCL保持高而SDA由高变低时,为启动信号:当SCL保持高而SDA由低变高时,为停止信号。数据传输过程中,数据线SDA只能在SCL为低电平时产生高低电平的变化。I2C总线的操作由四个基本的时间片组成:写时间片、读时间片、开始和停止。

  向AT24C01写一位数据

  bcf portc,3   /*时钟线置为低电平*/

  rlf 71h,1 /*带进位位寄存器71H内容循环左移1位*/

  btfss status,0 /*状态寄存器status位0为0向下执行,若为1

  跳过一行执行*/

  goto zero /*跳转到zero*/

  bsf portc,4 /*置数据线为高电平*/

  goto all /*跳转到all*/

  zero bcf portc,4 /*置数据线为低电平*/

  all bsf portc,3 /*时钟线置为高电平*/

  从AT24C01读一位数据

  clrf 7fH /*清空寄存器7fH*/

  bsf status,5 /*选中寄存器体Bank1*/

  bsf trisc,4 /*释放数据线*/

  bcf status,5 /*选中寄存器体Bank0*/

  bsf portc,3 /*时钟线置为高电平*/

  btfss portc,4 /*数据线上为低电平向下执行,若为高电平跳过一行执行*/

  goto zero7 /*跳转到zero7*/

  bsf status,0 /*置状态寄存器status进位位为1*/

  goto all5 /*跳转到all5*/

  zero7 bcf status,0 /*置状态寄存器status进位位为0*/

  all5 rlf 7fh,1 /*带进位位寄存器71H内容循环左移1位*/

  bcf portc,3 /*时钟线置为低电平*/

  2.3 DS18B20工作过程的软件实现

  系统对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.4 AT24C01工作过程的软件实现

  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.

  作者简介:宋书锋(1977—),男,硕士研究生,主要从事智能仪表、机器人控制技术的研究;徐国华,男,副教授,研究光、电测量,通信技术,智能机械与控制等。

  收稿日期:2003-09

点击浏览:矢量网络分析仪、频谱仪、示波器,使用操作培训教程

上一篇:LTB-1皮带秤校准装置的设计和应用
下一篇:自动称重系统开发与应用

微波射频测量操作培训课程详情>>
射频和天线工程师培训课程详情>>

  网站地图