单片机温度控制系统的设计与实现Word下载.docx
《单片机温度控制系统的设计与实现Word下载.docx》由会员分享,可在线阅读,更多相关《单片机温度控制系统的设计与实现Word下载.docx(32页珍藏版)》请在冰豆网上搜索。
通过扩展必要的外围接口电路,实现对烘箱温度的测量和控制。
2.1系统结构
该系统以89C51单片机为核心,由温度测量变换、测量放大、大功率运放、A/D和D/A转换器、输入光电隔离、驱动电路、键盘显示、存储器共同组成。
在系统中,温度和时间的设置、温度值及误差显示、控制参数得设置、运行、暂停及
复位等功能由键盘及显示电路完成。
图2-1单片机温度控制系统方案原理示意图
传感器把测量的烘箱温度信号转换成弱电压信号,经过信号放大电路,送入低通滤波电路,以消除噪音和干扰,滤波后的信号输入到A/D转换器(ADC0809)转换成数字信号输入主机(单片机8031)。
2.2具体设计考虑
1、由于温度测量范围为0~120℃,控制精度也不高,可选用8路8位ADC0809作A/D转换器,分辨率可达0.5℃;
为了方便操作,系统可不扩展专用键盘,温度给定输入可用2位BCD码拨盘开关置数;
温度显示可用4位LED;
为了实现通过调节蒸汽流量控温,可扩展8位DAC0832作D/A转换器。
于是,单片机基本系统应为:
8031+2764+8255+ADC0809+DAC0832+4位LED。
2、温度测量可以选用半导体集成温度传感器AD590,它的响应速度快,和单片机接口简单。
其测温范围为-55~+150℃,工作电压4~30V,输出电流和绝对温度成正比,即为1µ
A/K。
执行机构可选用ZKZP-Ⅱ型线性电动单座调节阀,用它来调节通入烘箱的蒸汽流量。
调节阀用D/A转换器输出的可调电流控制,0mA对应阀门完全关闭,10mA对应阀门全打开。
3、可采用带死区的比例积分(PI)控制算法实现对温度的控制。
烘箱温度和给定值的偏差小时,调节阀不动作,以减少阀的机械磨损;
偏差较大时,经PI算法运算后,单片机通过D/A输出控制信号控制阀门的开度,为了使控制参数现场可调,可用3个电位器产生3路可调电压经过A/D转换实现对A/D转换,实现对PI算法的3个参数(比例系数Kp、积分系数KI、控制周期Tc)在线整定。
这种方法不仅可使参数调整方便,而且具有掉电保护功能。
4、为了提高系统的抗干扰能力,D/A转换器和单片机之间进行光电隔离。
使电动阀和单片机之间不共地。
3元器件简介
3.1AT89C51单片机
3.1.1概述
AT89C51是一个低电压,高性能CMOS8位单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口。
片内含4kbytes的可反复擦写的Flash只读程序存储器和128bytes的随机存取数据存储器(RAM),可以按照常规方法进行编程,也可以在线编程。
器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机的AT89C51提供了高性价比的解决方案。
3.1.2主要特性
AT89C51的主要特性如下:
(1)寿命达1000写/擦循环
(2)数据保留时间:
10年
(3)全静态工作:
0Hz-24MHz
(4)三级程序存储器锁定
(5)128×
8位内部RAM
(6)32可编程I/O线
(7)2个16位定时器/计数器
(8)6个中断源
(9)可编程串行通道
(10)低功耗闲置和掉电模式
(11)片内振荡器和时钟电路
3.1.3引脚功能
AT89C51引脚排列如图3-1所示,引脚功能如下:
图3-1AT89C51的引脚排列
VCC(40):
+5V
GND(20):
接地
P0口(39-32):
P0口为8位漏极开路双向I/O口,每个引脚可吸收8个TTL门电流。
P1口(1-8):
P1口是从内部提供上拉电阻器的8位双向I/O口,P1口缓冲器能接收和输出4个TTL门电流。
P2口(21-28):
P2口为内部上拉电阻器的8位双向I/O口,P2口缓冲器可接收和输出4个TTL门电流。
P3口(10-17):
P3口是8个带有内部上拉电阻器的双向I/O口,可接收和输出4个TTL门电流,P3口也可作为AT89C51的特殊功能口。
RST(9):
复位输入。
当振荡器复位时,要保持RST引脚2个机器周期的高电平时间。
ALE/PROG(30):
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节,在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6,它可用作对外部输出的脉冲或用于定时目的,要注意的是,每当访问外部数据存储器时,将跳过1个ALE脉冲。
PSEN(29):
外部程序存储器的选通信号。
在由外部程序存储器取值期间,每个机器周期2次PSEN有效,但在访问外部数据存储器时,这2次有效的PSEN信号将不出现。
EA/VPP(31):
当EA保持低电平时,外部程序存储器地址为(0000H-FFFFH)不管是否有内部程序存储器。
FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1(19):
反向振荡器放大器的输入及内部时钟工作电路的输入。
XTAL2(18):
来自反向振荡器的输出。
3.2AD590温度传感器
3.2.1概述
AD590是AD公司利用PN结正向电流和温度的关系制成的电流输出型两端温度传感器。
实际上,中国也开发出了同类型的产品SG590。
这种器件在被测温度一定时,相当于一个恒流源。
该器件具有良好的线性和互换性,测量精度高,并具有消除电源波动的特性。
即使电源在5-15V之间变化,其电流只是在1µ
A以下作微小变化。
AD590是电流型温度传感器,通过对电流的测量可得到所需要的温度值。
根据特性分档,AD590后缀以I、J、K、L、M表示。
AD590L、AD590M一般用于精密温度测量电路,其电路外形如图所示,它采用金属壳3脚封装,其中1脚为电源正端V+,2脚为电流输出端I0,3脚为管壳,一般不用。
集成温度传感器的电路符号如图3-2所示。
3.2.2主要特性
图3-2AD590的外形电路图及电路符号
AD590的主要特性参数如下
•工作电压:
4~30V
•工作温度:
-55~+150℃
•保存温度:
-65~+175℃
•正向电压:
+44V
•反向电压:
-20V
•焊接温度(10秒):
300℃
•灵敏度:
1µ
A/K
3.2.3AD590工作原理
在被测温度一定时,AD590相当于一个恒流源,把它和5-30V的直流电源相连,并在输出端串接一个1KΩ的恒值电阻,此电阻上流过的电流和被测温度成正比,此时电阻两端将会有1mV/K的电压信号。
其基本电路如图3-3所示。
图3是利用ΔURE特性的集成PN结传感器的感温部分核心电路。
其中T1、T2起恒流作用,可用于使左右两支路的集电极电流I1和I2相等;
T3、T4是感温用的晶体管,两个管的材质和工艺完全相同,但T3实质上是由n个晶体管并联而成,因而其结面积是T4的n倍。
T3和T4的发射结电压URE3和URE4经反极性串联后加在电阻R上,所以R上端电压为ΔURE。
因此,电流II为:
II=ΔURE/R=(KT/q)(Inn)/R
对于AD590,n=8,这样,电路的总电流将和热力学温度T成正比,将此电流引至负载电阻RL上便可得到和T成正比的输出电压。
由于利用了恒流特性,所以输出信号不受电源电压和导线电阻的影响。
图3中的电阻R是在硅板上形成的薄膜电阻,该电阻已用激光修正了其电阻值,因而在基准温度下可得到1µ
A/K的I值。
图3-3感温部分的核心电路
3.3ADC0809模数转换器
3.3.1主要特性
•ADC0809的主要特性指标:
•分辨率:
n=8
•时钟频率:
小于640KHZ
•转换时间:
大于等于100微秒
•不可调误差:
1LSB
•电源:
单电源正5V
•模拟输入量:
8路
•模拟输入范围:
0~5V
•参考电压:
Uref(+)—Uref(-)=5V
3.3.2ADC0809工作原理
ADC0809为逐次逼近式A/D转换器,具有8个模拟量输入通道。
它能和微型计算机的大部分总线兼容,可在程序的控制下选择8个模入通道之一进行A/D转换,然后把得到的8位二进制数据送到微机的数据总线,供CPU处理。
转换器是ADC0809的核心部分,它由D/A转换、逐次逼近寄存器(SAR)、比较器等组成。
其中,D/A转换电路采用了256RT型电阻网络(即2n个电阻分压器,此处n=8),它在启动脉冲的上升沿来到时被复位,在启动脉冲的下降沿A/D开始转换。
如果在转换过程中接收到新的启动转换脉冲,则终止转换。
转换结束信号EOC在A/D转换完成时为“1”。
ADC0809的内部结构如图3-4所示。
图3-5ADC0809的内部结构
4硬件设计
4.1扩展外围接口
根据总体方案,采用8031外扩2764作程序存储器;
外扩8255用于4位LED显示温度、声光报警和扩展光电隔型DAC产生0~10mA可调电流控制电动阀;
外扩8路8位ADC0809作温度测量和通过3个电位器产生3个可调控制参数;
2位BCD码给定拨盘则和8031的P1口相连。
通过8255的PA口和PC0~PC3口扩展4位LED;
通过PB口和PC5扩展光电隔型D/A,DAC0832设置为单缓冲方式,VREF=-5V,于是经运算放大器A1后产生0~5V可调直流电压,再经运算放大器A2在复合三极管T的集电极和+12V电源之间产生0~10mA可调电流,以便控制电动阀的动作(图4-1中,RW1于调整满量程值,D1用于保护三极管T);
通过总线直接扩展ADC0809,由于仅使用4路,故选择通道的C端直接接地,由于温度传感器是输出电流信号且和绝对温度成正比,故采用电平移动电路及放大电路使运算放大器A3输出电压值和摄氏温度成正比(图4-1中RW2,RW3分别用语温度测量电路的零点调节和满量程调节);
声音报警电路中,蜂鸣器采用长鸣形式,由门电路构成1s振荡器产生的响音;
2位BCD码给定拨盘则和8031的P1口直接接口,各位又通过2kΩ电阻接地。
由于各扩展芯片用线选发产生片选信号,故他们的接口地址分别为:
2764:
0000H~1FFFH
8255:
7000H~7003H
ADC0809:
B000H~B003H
4.2温度控制电路
8031对温度的控制是通过双向可控硅实现的。
如单片机温度控制系统电路原理图所示,双向可控硅管和加热丝串接在交流220V、50Hz是电回路。
在给定周期T内,8031只要改变可控硅管的接通时间即可改变加热丝的功率,以达到调节温度的目的。
可控硅接通时间可以通过可控硅控制极上触发脉冲控制。
该触发脉冲由8031用软件在P3.1引脚上产生,在过零同步脉冲同步后经光电耦合管和驱动器输出送到可控硅的控制极上。
4.3温度检测电路设计
4.3.1设计目标
用单片机对温度进行实时检测和控制,以解决工业及日常生活中对温度的及时自动控制问题;
用十进制数码显示实际温度值,方便人工监视;
用键盘输入温度控制范围值,便于在不同使用场所设置不同温度范围值。
当实际温度值不在该范围时,系统能自动调节温度,以保持设定的温度基本不变,达到自动控制的目的。
系统的温度最小区分度为1℃。
在环境温度变化时,温度控制的静态误差小于等于0.5℃。
4.3.2设计的出发点
在达到对温度的检测和控制的基础上,达到一定的测控精度,并尽量使系统的可靠性高、稳定性好、性价比高、速度快、使用灵活、实现容易、便于扩充。
4.3.3设计原理
本设计采用89C51单片机使用系统来实现设计要求,因89C51在片内含4KB的EEPROM,不需外扩展存储器,可使系统整体结构简单。
利用89C51串行口输出工作方式,使89C51的利用率大大提高,外部电路得以简化。
89C51可直接对键盘进行扫描读数,可直接用串/并转换模块驱动LED显示温度值。
因其利用率高,负载重,后相电路只需加一块同相驱动器即可正常工作。
在串行传输数据时,频率可达到1MHz,对温度的显示完全达到测控精度要求。
4.3.4转换电路
在设计测温电路时,首先应将电流转换成电压。
由于AD590为电流输出元件,它的温度每升高1K,电流就增加1µ
A。
当AD590的电流通过一个10K的电阻时,这个电阻上的压降为10mV即转换成10mV/K,为了使此电阻精确(0.1%),可用一个9.6K的电阻和一个1K电位器串联,然后通过调节电位器来获得精确的10KΩ。
图所示是一个电流/电压和绝对/摄氏温标的转换电路,其中运算放大器A1被接成电压跟随器形式,以增加信号的输入阻抗。
而运放A2的作用是把绝对温标转换成摄氏温标,给A2的同相输入端输入一个恒定的电压(如1.235V),然后将此电压放
大到2.73V。
这样,A1和A2输出端之间的电压即为转换成的摄氏温标。
将AD590放入0℃的冰水混合溶液中,A1同相输入端的电压应为2.73V,同样使A2的输出电压也为2.73V,因此A1和A2两输出端之间的电压:
2.73-2.73=0℃即对应于0℃。
4.3.4信号处理电路
温度检测的小信号放大和绝对/摄氏温度转换采用图电路,其中RW用来完成绝对/摄氏温度转换及调零功能,运放要求采用一片集成普通四运放LM324来完成图的信号处理功能,其工作电源取单电源VCC=9V。
设计中电阻元件可参考下列取值:
R1=R2=10K、R3=R4=20K、R5=R6=20K、RG=5K、RW=10K;
高频滤波电容可取C=0.01µ
F。
图
4
4-3信号处理电路
4.3.6主电路
主电路如图4-4所示,温度检测信号输入ADC0809的IN3引脚,经过模数转换结果输入AT89C51,结果从P1口输出驱动2个LED实现数据显示功能。
图4-4温度检测主电路
4.4光电隔离电路
这部分电路是单片机和电阻丝加热器的接口。
由于电阻丝的加热电压大于单片机的工作电压,为了避免烧坏单片机系统,采用光电隔离电路如图4-5所示。
图4-5光电隔离及放大电路
4.5过零检测电路
过零检测电路在每一个电源周期开始时产生一个脉冲,作为触发器的同步信号,计数器T0对其进行计数。
其电路如图4-6所示。
220V交流电压经电阻限流后直接加到2个反相并联的光电偶器的输入端。
在交流电源的正负半周,分别导通,输出低电平,在交流电源正弦波过零的瞬间,两个光电耦合器均不导通,输出高电平。
该脉冲信号经非门整形后作为单片机的中断请求信号和可控硅的过零同步信号。
图4-6过零检测电路
4.6PID控制算法
前面提到,大多数的温度控制系统可以看作一阶纯滞后环节,由于本系统纯滞后时间较小,故可采用PID(比例、积分、微分)控制算法实施控制。
4.6.1PID控制作用
PID是比例(P)、积分(I)和微分(D)3个控制作用的组合。
连续系统PID控制器的微分方程为:
y(t)=KPP[e(t)+
](4-1)
式中y(t)为控制器的输出;
e(t)为控制器的输入;
KP比例放大系数;
TI为控制器的积分时间常数;
TD为控制器的微分时间常数。
显然,KP越大,控制器的控制作用越强;
只要e(t)不为0,积分项会因积分而使控制器的输出变化;
只要e(t)有变化的趋势,控制器就会在微分作用下,在偏差出现且偏差不大时提前给输出一个较强的控制作用。
4.6.2PID算法的微机实现
由于微机控制系统是一种时间离散控制系统,故必须把微分方程离散化为差分方程,最终写出递推公式才能直接使用。
显然:
(4-2)
(4-3)
于是,
KP{e(n)+
+
[e(n)-e(n-1)]}(4-4)
式中Δt=T,为采样周期;
e(t)为第n次采样的偏差值;
e(n-1)为第(n-1)次采样时的偏差值;
n为采样序列,n=0,1,2,…。
由式(4-4)可以看出:
计算一次Y(n),不仅需要的存储器空间大,而且计算量也很大,于是进一步写出递推公式:
由Y(n-1)=KP{e(n-1)+
+
[e(n-1)-e(n-2)]}(4-5)
由式(4)减去式(5)得:
ΔY(n)=Y(n)-Y(n-1)
=KP{[e(n)-e(n-1)]+
[e(n)-2e(n-1)+e(n-2)]}
=KP[e(n)-e(n-1)]+KIe(n)+KD[e(n)-2e(n-1)+e(n-2)](4-6)
或Y(n)=Y(n-1)+KP[e(n)-e(n-1)]+KIe(n)+KD[e(n)-2e(n-1)+e(n-2)](4-7)
式中KI=KP
,称为积分常数;
KD=KP
,称为微分常数。
4.6.3PID算法的程序设计
在本控制系统中,烘箱温度和给定值的偏差经过单片机PI算法运算后从DAC0832输出0~10mA控制电流去控制电动阀的开度,所以应采用式(7)的位置式算法(且KD=0即为PI),即:
YPI(n)=Y(n-1)+KP[e(n)-e(n-1)]+KIe(n)(4-8)
如果设KP,KI为纯小数,KP,KI,e(n),e(n-1)分别放在8031片内RAM的25H,26H,29H,2AH中,PI结果YPI(n)放在R3R4中,则PI控制程序如下:
PI:
MOVA,29H;
e(n)
CLRC
SUBBA,2AH;
e(n)-e(n-1)
MOVB,25H;
KP
LCALLMULTS;
KP[e(n)-e(n-1)]
MOVR4,A
MOVR3,B;
暂存于R3R4
MOVA,29H;
MOVA,26H;
KI
KIe(n)
ADDA,R4
MOVA,B
ADDCA,R3
MOVR3,A;
R3R4=KP[e(n)-e(n-1)]+KIe(n)
RET
MULTS:
CLRF0;
置e(n)符号标志位为正
JNBACC.7,MUL1
SETBF0;
置e(n)符号标志位为负
CPLA
INCA;
取绝对值
MUL1:
MULAB
JNBF0,MUL2
CPLA
ADDA,#1
MOVR2,A
CPLA
ADDCA,#0
MOVB,A
MOVA,R2;
还原为补码
MUL2:
RET
5软件设计
本系统的控制软件可设计为一个主程序和一个T0通道中断服务程序。
主程序的功能是完成系统初始化及温度和设定参数的显示,由于只有4位LED,而温度BCD码设定值正常工作时应在85左右,不可能太小,故可以用它设定为小值时来选择显示参数;
T0通道可定时100ms,其中,定时1s完成数据的采集、报警和显示处理,定时Tc秒完成控制算法的运算和控制输出。
5.1设计步骤
5.1.1画出系统的程序框图
如图5-1所示,为主程序框图,为T0通道中断服务程序框图。
T
图5-1温度控制系统程序框图
中断服务程序是温度控制系统的主体程序,用于启动A/D转换,读入采样数据,数字滤波,越限温度报警和越限处理,PID计算和输出可控硅的同步触发脉冲等。
P1.3引脚上输出的该同步触发脉冲宽度由T1计数器的溢出中断控制,8031利用等待T1溢出中断空隙时间完成把本次采样值转换成显示值而放入显示缓冲区和调用温度显示程序。
8031从T1中断服务程序返回后便可恢复现场和返回主程序,以等待下次T0中断。
5.1.2内存分配
为了编程方便,可以把8031的内部128BRAM先进行分配;
也可在程序中用标号代替,最后用EQU或DATA定义。
如果先对内存进行分配,本系统可分配为:
00H~07H,R0~R7 供主程序使用
08H~0FH,R′0~R′7 供T0中断服务程序使用
20H定时1s时间常数(初值为10)
21H8255A口数据暂存(显示器段码)
22H8255B口数据暂存(D/A数据)
23H8255C口数