基于单片机的智能温度巡检仪设计.docx
《基于单片机的智能温度巡检仪设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的智能温度巡检仪设计.docx(98页珍藏版)》请在冰豆网上搜索。
基于单片机的智能温度巡检仪设计
第2章基于单片机的智能温度巡检仪设计
对于工业过程小型测控设备或者专用的智能化仪表,自动化工作者一般是采用以单片微型计算机为核心,配以相应接口电路的模式来实现。
单片机本身只是一个微控制器芯片,只有当它和外围电路有机地组合在一起,并配置适当的工作程序后,才能构成为一个单片机智能应用系统。
本章以工业生产过程中最基本的温度参数测量为例,说明一台智能温度巡检仪的设计思路、硬件配置、软件编程、系统结构及调试考核过程。
2.1设计任务
2.1.1主要功能
为了满足工业生产过程监控的要求,设计的智能温度巡检仪应当具有如下功能:
能与常用温度传感器配合检测多路温度,本例是与温度传感器Pt100型铂热电阻配合,巡回检测8路温度;可选择定点显示方式,也可选择巡回显示方式;在全量程内,可设定超限报警值,当实测温度超过设定值时,发出报警信号且有常开接点输出;将检测的每路温度转变为与之线性对应的4~20mA电流输出;支持RS-485通信方式,方便组成局域监控网络,使实测温度、温度超限设定值等参数在网络中共享。
2.1.2技术指标
•测量范围:
-200℃~850℃。
•测量精度:
优于0.5级。
•温度巡检周期:
1s。
•巡回显示周期:
以秒为单位,可选定。
•工作环境温度:
0℃~50℃。
•相对湿度:
小于85%。
•供电电源:
220VAC,±10%,50Hz。
•结构形式:
盘装式。
•外形尺寸:
160mm(长)×80mm(宽)×160mm(深)。
开孔尺寸:
152mm×76mm。
2.2总体设计
首先要确定实现主要功能与技术指标的硬件、软件的总体设计方案。
必须遵守以下三个设计理念。
①智能温度巡检仪是以单片机为核心的嵌入式系统,有些功能既可以通过软件编程实现,也可以通过硬件配置实现,应当遵守“能软不硬”的理念,即凡是能够用软件方案实现的功能就不用硬件方案实现,其目的是降低制造成本。
软件方案只需在软件开发设计中一次性投入,一旦开发成功,在制造过程中将降低材料成本和安装成本,同时能够提高整机的可靠性。
任何电子元器件都有老化失效的问题,整机的可靠性与采用元器件的数量成反比,减少使用的元器件数量,就相当于提高了整机的可靠性。
②设计过程应当兼顾技术指标与经济指标,技术指标再高的仪表设备,如果制造成本高、售价高,将不会有市场前景。
③在设计过程中,选用的元器件与材料的市场供应渠道必须畅通。
电子元器件、电子材料的发展日新月异,必须选用目前市场敞开供应的元器件与材料,否则将给日后的制造与维护带来很多麻烦。
如果设计中选用了一些早已淘汰的元器件,将无法实现样机的研发。
即便样机开发成功,以后生产制造中的材料采购也十分困难。
1.硬件总体方案
主机电路采用以8位单片机为核心的方案,片内要有足够多的资源,尽量减少扩展外部功能芯片,减小体积,降低造价。
单片机要有如下资源:
1.足够的片内程序存储器,容量不小于20KB
2.足够的片内数据存储器,容量不小于256B
3.定时器/计数器不少于3个。
(通讯和A/D转换要求)。
4.中断源不少于3个
5.有串行通讯接口
6.有通用I/O接口
为保证测量精度,前向通道A/D分辨率不低于12位。
为了降低造价,8路温度通道通过多路开关技术,公用一个放大器、一个A/D转换器。
后向通道的多路模拟量输出,采用一个D/A转换器,8路保持器,利用软件定时刷新的方法实现多路模拟量输出。
人机接口的显示器采用LED数码管,其亮度高,有效观测距离远,成本低。
按键采用薄膜按键,手感好,寿命长。
通讯接口采用RS-485传输技术,方便按照总线式网络拓扑组成局域测量网络,而且RS-485传输技术成熟,成本低。
2.软件总体方案
软件任务比较简单,不需要嵌入操作系统,主要包括监控程序、人机服务程序、数据采集处理程序、通信服务程序几部分。
为了保证实时性要求,提高运行效率,采用ASM51汇编语言编制。
3.外形结构方案
按盘装仪表结构设计,其外形结构尺寸、安装尺寸、安装方式、接线方式与常规测试仪表保持一致,便于替代传统测试仪表。
2.3硬件系统及驱动程序设计
8路温度巡检仪的硬件由主机电路、前向通道、后向通道、人机接口电路、通信接口及供电电源几部分组成,如图所示。
其中,主机电路由CPU、数据存储器、程序存储器、EEPROM存储器、定时器/计数器、通用异步串行收发器、中断控制器、WDT定时器及通用并行接口等部件组成;前向通道电路由Pt100转换电路、滤波电路、多路模拟开关电路、放大电路、A/D转换电路组成;后向通道电路由D/A转换电路、多路模拟开关电路、V/I转换电路、继电器驱动电路组成;人机接口电路由按键和LED数码管组成;通信接口电路由RS-485接口电路组成;供电电源电路分别向系统数字电路提供逻辑5V电源,向模拟电路提供±12V与±5V模拟电源。
2.3.1主机电路设计
主机电路设计的核心是选择一款恰当的嵌入式处理器,其处理速度、内含的存储器容量、内含的功能部件尽可能满足系统要求,同时,市场售价满足整机硬件成本要求。
系统对处理速度的要求:
根据设计任务中关于温度巡检周期为1s,巡检8路的要求,处理器应当在1/8s,即125ms内完成1路温度的数据采集、标度变换、线性化处理、显示等各项任务。
在一般情况下,以上所列任务在8位微处理器中可以通过执行2000条指令实现,以执行每条指令需要2us来计算,共需要4000us,即4ms。
比起系统要求的125ms来说明相差甚远。
所以,对8路温度巡检仪这样一个系统来讲,一般8位微处理器的处理器的处理速度完全可以满足需要。
系统对程序存储器的要求:
就设计任务中规定的功能及技术指标而言,软件任务的复杂程度一般,当采用汇编语言编程实现时,一般5000条指令可以完成全部编程任务。
以MCS51指令代码效率推算,每条指令平均占有2B,共需10000B即10KB的程序存储器容量。
系统对数据存储器的要求:
数据存储器主要作为计算缓冲区、堆栈区、实时数据存储区、中间数据存储区使用,对本设计任务而言,一般200~300B可以满足需要。
系统对EEPROM存储器的要求:
EEPROM存储器的使用性能是指,程序运行时可以向其中写入数据或擦除数据,当系统关机或掉电时,写入的数据能够可靠长久的保留。
它主要用来存储使用者存储的数据,如巡回检测的路数(8路温度巡检仪在使用中可以根据需要设定巡检路数)、超限报警值、巡回显示周期。
也可以存储系统标定数据,如各路温度A/D转换的零点值与满度值、零点迁移值等,这些数据都是以微处理器为核心的智能仪表基本的系统数据。
对本设计任务而言,一般200~300B能够满足要求。
系统对定时器/计数器的要求:
8路温度巡检仪属于实时性很强的嵌入式系统,实现实时性操作的硬件基础是定时器。
对本设计任务来讲,需要1路定时器来产生时钟节拍,实现实时操作;需要1路定时器来作为串行通信的波特率产生器;需要1路定时器来实现A/D转换操作,因此至少需要3路定时器/计数器。
系统对中断控制的要求:
根据设计任务要求,软件任务主要有:
通信服务、每路A/D转换完成时的数据采集与打开下一输入通道、温度计算、人机接口服务共4项任务。
其中,通信服务、A/D转换服务的实时性很强,需要通过2个中断源,2级中断管理实现。
系统时钟需要通过中断提供实时操作。
因此,必须有不少于3个中断源、2级中断的中断控制机制,以便根据各项任务的实时性要求进行抢占式调度。
系统对通用异步串行收发器(UART)的要求:
为了支持RS-485通信,必须有1路UART。
系统对硬件抗干扰的要求:
迄今为止,看门狗定时器(WDT,WatchdogTimer)是微机系统唯一完全有效的硬件抗干扰措施,因此系统必须采用WDT。
系统对通用并行接口(GPIO)的要求:
为了实现主机电路与前向通道、后向通道、人机接口部分的硬件接口,主机电路应当具备20~30个GPIO。
综合上述各项要求,采用以MCS-51为内核的美国ATMEL公司生产的AT89C55WD单片机比较适宜。
1.AT89C55WD单片机的片内资源及性能
与MCS-51系列单片机指令系统兼容,引脚兼容。
内部具有可重复编程的20KB的Flash型程序存储器,重复编程次数达1000次。
工作电压范围:
4~5.5V。
时钟频率:
静态到33MHz,当时钟频率选择33MHz时,以每条指令执行时间平均为2个机器周期进行计算,CPU处理速度达1.375MIPS,即每秒可执行137.5万条指令,处理速度非快。
256B数据存储器。
32根可编程I/O口线。
3个16位定时器/计数器。
6个中断源,2级中断优先级。
1个可编程的UART。
具有闲置方式与掉电方式两种省电工作方式。
1个WDT硬件定时器。
2个数据指针。
2.X5045性能简介
由于选定的单片机AT89C55WD内部没有EEPROM存储器,而单片机上电时必须有自动复位电路,因此主机电路中除了单片机外,必须扩展EEPROM存储器和上电复位电路。
美国XICOR公司生产的X5045集成芯片,集4项功能于一身,除了内部具有EEPROM存储器外,还有上电复位功能、WDT功能、电源电压监控功能。
具体指标如下:
①内部具有WDT电路,可以编程选择WDT超时周期。
②具有低电压监测和强制复位功能。
③具有上电复位控制功能。
图2-2X5045的引脚布置
④内含4Kbit的EEPROM存储器,可以编程选定进行分块保护,保证重要数据存储的可靠性
⑤支持高达33MHz的时钟频率。
⑥功耗低,工作电流小于50mA,便于电池供电。
(1)引脚描述
X5045的引脚布置图如上图所示,由于X5045采用SPI接口,因此使用有限几条I/O口线,就能实现与单片机的接口。
各引脚功能说明如下。
串行输出(SO):
SO是串行数据输出引脚。
在读周期内,数据在此引脚上移出,数据由串行时钟的下降沿同步输出。
串行输入(SI):
SI是串行数据输入引脚。
所有操作码、字节地址及写入存储器的数据均在此引脚上输入。
数据由串行时钟上升沿锁存。
串行时钟(SCK):
串行时钟用于数据输入和输出的串行总线定时。
操作码、地址或出现在SI引脚上的数据在时钟输入的上升沿锁存,而SO引脚上的数据在时钟输入的下降沿之后发生改变。
片选信号(
):
当
为高电平时,X5045不被选择,SO输出引脚处于高阻状态。
写保护(
):
当
为低电平时,向X5045的写操作被禁止,但是器件的其他功能仍正常。
当
保持高电平时,所有的功能,包括写操作,都正常。
复位(RESET):
X5045的RESET高电平有效。
漏极开路的输出端,只要Vcc下降至低于最小Vcc检测电平,RESET变为高电平。
它将保持高电平直至Vcc上升到最小Vcc检测电平200ms为止。
如果允许看门狗定时器工作且
保持低电平的时间大于看门狗超时周期,那么RESET也变为高电平。
的上升沿将复位看门狗定时器。
Vcc、Vss为x5045的电源引脚和地引脚。
(2)指令集
X5045的各种操作,包括写使能锁存器的置位与复位、读/写状态寄存器、读/写EEPROM,都是通过向X5045发出有关指令进行的。
指令集如表2-1所示。
指令名
指令格式
操作
WREN
00000110
设置写使能锁存器(允许写操作)
WRDI
00000100
复位写使能锁存器(禁止写操作)
RDSR
00000101
读状态寄存器
WRSR
00000001
写状态寄存器(块锁定位)
READ
0000A8011
从开始于所选地址的存储器阵列中读出数据
WRITE
0000A8010
把数据写入开始于所选地址的存储器阵列(1~4B)
表2-1 X5045指令集
(3)写使能锁存器
X5045包含一个写使能锁存器。
在内部完成写操作之前,此锁存器必须被设置(SET)。
WREN指令可设置锁存器而WRDI指令将复位锁存器。
在上电情况下和字节、页或状态寄存器写周期完成之后,该锁存器自动复位。
如果变为低电平,则锁存器也被复位。
(4)状态寄存器
RDSR指令提供对状态寄存器的访问。
在任何时候都可以读状态寄存器,即使在写周期也如此,状态寄存器的格式如表2-2所示。
表2-2状态寄存器的格式
7
6
5
4
3
2
1
0
X
X
WD1
WD0
BL1
BL0
WEL
WIP
WD1
WD0
超时周期
0
0
1.4s
0
1
600ms
1
0
200ms
1
1
禁止
状态寄存器各位的意义说明如下
WIP(Write_In_Process):
该位表示“正在写”状态。
当该位为“l”时,写操作正在进行;当该位为“0”时,没有写操作在进行。
在写期间,所有其他位全置为“l”。
WIP位是只读的。
WEL(Write_Enable_Latch):
该位表示“写使能锁存”状态。
当该位为“1”时,锁存器置位;当该位为“0”时,锁存器复位。
WEL位是只读的,它由WREN指令置位,由WRDI指令复位,或者在成功地完成了写周期后复位。
BL1
BL0
被保护的阵列地址
0
0
无
0
1
180H~1FFH
1
0
100H~1FFH
1
1
000H~1FFH
BL0、BL1:
块保护位,用于选择EEPROM被保护的范围。
这两位由发出WRSR指令来设置,允许用户选择4种保护方式之一。
被选择保护的部分只允许读,不允许写。
EEPROM的保护范围如表2-3所示。
WD0、WD1:
这两位用于选择看门狗定时器(WatchdogTimer)的超时周期,选择范围如表2-4所示。
通过发出WRSR指令来设置WD0、WD1。
3.主机电路硬件原理
主机电路中主要包括
AT89C55WD单片机和X5045芯片,
就可以满足系统对硬件资源的
需求,硬件电路原理如图2-3所
示。
上电复位:
若图2-3中电阻R1取10
,当系统上电时,将在X5045的引脚7产生一个高电平有效的复位信号,该信号接到单片机的复位引脚RST,实现单片机的上电复位。
电源电压监测:
X5045工作时,监视Vcc跌落到一个确定的数值时,x5045的复位引脚7将发出一个高电平有效的复位信号,使单片机复位。
只要Vcc跌落到一个确定的数值以下,并保持在1V以上时,X5045能够发出单片机需要的5V高电平的复位信号,保证单片机可靠复位。
这就保证在Vcc一旦跌落到单片机允许的工作电压以下时,单片机处于复位状态,否则单片机此时可能执行某些错误的指令,产生不可预料的结果。
选定Vcc跌落到多大数值时,产生复位信号,可以通过对X5045编程决定,一般采用X5045出厂时默认的数值即可。
WDT超时周期选择:
X5045内部的WDT超时周期有3个数值可以编程选定,即200ms、600ms、1.4s。
WDT的超时周期决定了单片机从“死机”状态恢复为重新运行所需的时间。
理论上讲,这个时间越短越好,但对于慢速系统来讲,太短的时间不是很有实际意义。
时间选得越短,单片机正常运行时,访问X5045的时间间隔也越短,会增加CPU的负担。
4.驱动程序
(1)WDT驱动程序
X5045中WDT的驱动程序有两个,一个用于在单片机正常工作时访问WDT,使WDT不产生复位信号,注意,这个程序应当每隔一个确定的时间间隔运行一次,该时间间隔应当小于WDT超时周期;另一个驱动程序设定WDT的超时周期。
访问WDT驱动程序:
根据X5045的使用规则,只要其引脚发生从高电平到低电平的跳变,就实现对内部WDT定时器的复位,因此,根据图2-3所示,只要在连接X5045引脚的P1.4输出一个低电平脉冲即可,即做一次输出低再变高的操作。
程序如下:
CSBITP1.4
RST_WDT:
CLRCS
SETBCS
RET
设定WDT超时周期的驱动程序:
根据X5045的使用要求,通过设定X5045的状态寄存器实现超时周期的设置。
本系统选定WDT的超时周期为600ms,X5045的状态寄存器中WD1、WD0两位分别设置为0、1。
不考虑保护EEPROM时,状态寄存器内容可以设置为10H(参见X5045状态寄存器的格式)。
在设置状态寄存器之前,需要先完成两个操作:
设置写使能寄存器和发送写状态寄存器命令。
设置流程如图2-4所示。
驱动程序:
WREN_INSTEQU06H;状态存储器写使能命令为06H
WRSR_INSTEQU01H;写状态寄存器命令为01H
CSBITP1.4;连接5045之
引脚的I/O口线为P1.4
SCKBITP1.5;连接5045之SCK引脚的I/O口线为P1.5
SIBITP1.6;连接5045之SI引脚的I/O口线为P1.6
SOBITP1.7;连接5045之SO引脚的I/O口线为P1.7
SET_WDT:
LCALLWREN_CMD;设置写使能寄存器
CLRSCK;准备发送写状态寄存器命令
CLRCS
MOVA,#WRSR_INST;发送写状态寄存器命令
LCALLOUTBYT
MOVA,#10H;发送状态寄存器内容
LCALLOUTBYT
CLRSCK;退出设置WDT
SETBCS
RET
以上设置WDT的子程序“SET_WDT”,用到了两个底层的子程序“WREN_CMD”和“OUTBYT”。
“WREN_CMD”是一个设置写使能寄存器的子程序,“OUTBYT”是一个发送1B内容子程序。
这两个子程序是根据X5045“写使能锁存时序”和“写状态寄存器操作时序”编写的。
由于篇幅所限,X5045的相关操作时序不在这里介绍,请读者参阅有关的技术手册。
两个子程序如下:
WREN_CMD:
CLRSCK;准备发送写使能寄存器命令
CLRCS
MOVA,#WREN_INST;将写使能寄存器命令送A
LCALLOUTBYT;将1B命令发送出去
CLRSCK;退出发送
SETBCS
RET
OUTBYT:
MOVR0,#8;1B,需要发送8个BIT位
OUTBYT1:
CLRSCK;在SCK的上升沿,通过SI将内容送入X5045
RLCA
MOVSI,C
SETBSCK
DJNZR0,OUTBYT1;循环发送
CLRSI;退出发送
RET
图2-5EEPROM写入流程
2)EEPROM写入程序
根据X5045的使用规则,向EEPROM内写入内容,按图2-5所示的流程进行。
;******************************************************************
;子程序名:
PAGE_WRITE
;功能:
将R1中的内容为首地址的单片机内部RAM的不超过1页的内容写入以DPTR内容为首地址的EEPROM中
;底层子程序调用:
OUTBYT、WREN_CMD
;入口条件:
(R1)=待写入到EEPROM中的内部RAM中内容的首地址
;(DPTR)=待写入的EEPROM的首地址
;(R2)=要写入的字节数,不大于1页(4B)
;使用的寄存器:
A、DPTR、R1、R2
;******************************************************************
WRITE_INSTEQU02H;写数据命令为02H
PAGE_WRITE:
LCALLWREN_CMD;设置写使能寄存器
CLRSCR;准备发送写数据命令
CLRCS
MOVA,DPH;将EEPROM地址的最高位连同写数据命令一起发送
MOVC,ACC.0
MOVA,#WRITE_INST
MOVACC.3,C
LCALLOUTBYT
MOVA,DPL;发送EEPROM的低8位地址
LCALLOUTBYT
PAGE_WRITE1:
MOVA,@R1;发送1B内容
INCR1
LCALLOUTBYT
DJNZR2,PAGE_WRITE1;循环发送
CLRSCK;退出发送
RET
(3)EEPROM读出程序
;******************************************************************
;子程序名:
SEQU_READ
;功能:
将DPTR中内容为首地址的EEPROM中的内容读出到以R1中内容为首地
;址的单片机内部RAM中
;底层子程序调用:
OUTBYT、INBYT
;入口条件:
(R1)=单片机内部RAM的首地址
;(DPTR)=EEPROM的首地址
;(R2)=要读出的字节数
;使用的寄存器:
A、DPTR
;******************************************************************
READ_INSTEQU03H;读数据命令为03H
SEQU_READ:
CLRSCK;准备读数据
CLRCS
MOVA,DPH;将EEPROM地址的最高位连同读数据命令一起发送
MOVC,ACC.0
MOVA,#READ_INST
MOVACC.3,C
LCALLOUTBYT
MOVA,DPL;发送EEPROM的低8位地址
LCALLOUTBYT
SEQU_READ1:
LCALLINBYT;读出1B内容
MOV@R1,A;将读出的1B数据存入单片机RAM中
INCR1
DJNZR2,SEQU_READ1;循环读数据
CLRSCK;推出读数据
SETBCS
RET
“SEQU_READ”子程序用到了一个底层子程序“INBYT”,该子程序用于从EEPROM中读出1B内容,程序如下:
INBYT:
MOVR0,#8;1B,8个BIT位
INBYT1:
SETBSCK;准备读出
CLRSCK
MOVC,SO;读出内容存于C中
RLCA;将C中内容存于A中
DJNZR0,INBYT1;循环读出
RET
2.3.2前向通道电路设计
前向通道的任务是接收温度传感器Pt100铂电阻的信号,将其转变为单片机能够进行处理的数字信号,由信号转换电路、动态稳零电路、多路模拟开关、阻抗匹配电路、放大电路、A/D转换电路等几部分组成。
原理框图如图所示,硬件电路如图2-7所示。
1.信号转换电路
信号转换电路由图2-7中的9个惠斯登电桥组成(由于图面所限,图中仅绘出第1个、第2个和第9个),实现将8路Pt100温度传感器输出的电阻信号转换为电压信号。
其中,第1个惠斯登电桥没有外接Pt100传感器,设置它的目的是为动态稳零电路提供零信号(详见5.动态稳零电路)。
余下8个惠斯登电桥的工作原理完全一致,这里以第2个电桥为例,它由R5、R6、R7、C3、C4组成。
来自Pt100温度传感器发出的电阻信号以3线形式接到a1、b1、c1处,a1接Pt100的一端,b1、c1接Pt100的另一端,于是由Pt100、R5、R6、R7构成一个惠斯登电桥,如图2-8所示。
当检测到温度变化时,Pt100的阻值发生变化,在A、B点