基于PID电加热炉温度控制系统设计1汇总.docx
- 文档编号:15076899
- 上传时间:2023-06-30
- 格式:DOCX
- 页数:28
- 大小:578.25KB
基于PID电加热炉温度控制系统设计1汇总.docx
《基于PID电加热炉温度控制系统设计1汇总.docx》由会员分享,可在线阅读,更多相关《基于PID电加热炉温度控制系统设计1汇总.docx(28页珍藏版)》请在冰点文库上搜索。
基于PID电加热炉温度控制系统设计1汇总
基于PID电加热炉温度控制系统设计
摘要电加热炉随着科学技术的发展和工业生产水平的提高,已经在冶金、化工、机械等各类工业控制中得到了广泛应用,并且在国民经济中占有举足轻重的地位。
对于这样一个具有非线性、大滞后、大惯性、时变性、升温单向性等特点的控制对象,很难用数学方法建立精确的数学模型,因此用传统的控制理论和方法很难达到好的控制效果。
单片机以其高可靠性、高性能价格比、控制方便简单和灵活性大等优点,在工业控制系统、智能化仪器仪表等诸多领域得到广泛应用。
采用单片机进行炉温控制,可以提高控制质量和自动化水平。
一、绪论
在本控制对象电阻加热炉功率为8可W,由220V交流电供电,采用双向可控硅进行控制。
本设计针对一个温度区进行温度控制,要求控制温度范围50~350C,保温阶段温度控制精度为正负1度。
选择合适的传感器,计算机输出信号经转换后通过双向可控硅控制器控制加热电阻两端的电压。
其对象问温控数学模型为:
其中:
时间常数Td=350秒,放大系数Kd=50,滞后时间
=10秒,
控制算法选用改PID控制
图1.1系统总体结构图
二、控制系统的建模和数字控制器设计
图2PID算法流程图
数字PID控制算法
PID控制器是通过计算机PID控制算法程序实现的。
计算机直接数字控制系统大多数是采样-数据控制系统。
进入计算机的连续-时间信号,必须经过采样和整量化后,变成数字量,方能进入计算机的存贮器和寄存器,而在数字计算机中的计算和处理,不论是积分还是微分,只能用数值计算去逼近。
图2.1位置PID控制算法简化示意图
在数字计算机中,PID控制规律的实现,也必须用数值逼近的方法。
当采样周期相当短时,用求和代替积分,用差商代替微商,使PID算法离散化,将描述连续时间PID算法的微分方程,变为描述离散-时间PID算法的差分方程。
用矩形积分时,有
(1)
用差分代替微分
(2)
由上式得
(3)
式中u0——控制量的基值,即k=0时的控制;u(k)——第k个采样时刻的控制;KP——比例放大系数;KI——积分放大系数;
KD——微分放大系数;
TS——采样周期。
式(3)是数字PID算法的非递推形式,称全量算法。
算法中,为了求和,必须将系统偏差的全部过去值e(j)(j=1,2,3,...,k)都存储起来。
这种算法得出控制量的全量输出u(k),是控制量的绝对数值。
在控制系统中,这种控制量确定了执行机构的位置。
当执行机构需要的不是控制量的绝对值,而是控制量的增量(例如去驱动步进电动机)时,需要用PID的“增量算法”。
由位置算法求出
再求出
两式相减,得出控制量的增量算法
(4)
式(4)称为增量式PID算法。
对增量式PID算法(4)归并后,得
(5)
从式(5)看出,数字增量式PID算法,只要贮存最近的三个误差采样值e(k),e(k-1),e(k-2)就足够了。
如果计算机系统采用恒定的采样周期T,一旦确定q
,q
q
只要使用前后测量三次的偏差值,就可以由上式求出控制量。
typedef struct PID
{
Int SetPoint;//设定目标Desired Value
Long SumError;//误差累计
double propotion;//比例常数 Propotion Const
Double integral;//积分常数 Integral Const
Double derivative;//微分常数 Derivative Const
int LastError;// Error[-1]
Int PrevError;// Error[-2]
} PID;
ststic PIDsPID;
/*Initialize PID Structure PID参数初始化*/
void IncPIDInit(void)
{
sptr->SumError=0;
sptr->LastError=0;// Error[-1]
sptr->PrevError=0;// Error[-2]
sptr->Propotion=0;//比例常数 Propotional Const
sptr->integral=0;//积分常数Integral Const
sptr->derivative=0;//微分常数Derivative Const
sptr->SetPoint=0; }
/*增量式PID计算部分*/
int IncPIDCalc(int NextPoint)
{register int ierror,iIncpid;//当前误差
ierror=sptr->SetPoint-NextPoint;//增量计算}
三硬件的设计和实现
3.1AT89C51系列基本组成及特性
AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
图3.1AT89C51管脚
管脚说明:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为低八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚备选功能:
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
3.2键盘模块
在本次设计当中,输入设备采用4*4矩阵键盘。
当“设定”键按下时触发键盘中断服务程序,由程序程控扫描法确定那个键按下并执行相应的动作。
程控扫描的任务是:
(1)首先判断是否有键按下。
方法:
使所有的行输出均为低电平,然后从端口A读入列值。
如果没有键按下,则读人值为FFH.如果有链按下.则不为FFH。
(2)去除键抖动。
方法:
延时10—20ms,再一次判断有无键按下,如果此时仍有键按下,则认为键盘上确实有键处于稳定闭合期。
(3)若有键闭合,则求出闭合键的键值。
方法:
对键盘逐行扫描。
程序中需等闭合键释放后才对其进行处理。
3.3设计输入输出通道
输入通道:
因为所控的实际温度在50~350℃,即(350-50)=300所以选用8位A/D转换器,其分辨率约为1.5℃/字,再加放大器偏置措施实现。
(通过调整放大器的零点来实现偏置)这里采用一般中速芯片ADC0809。
ADC0809是带有8位A/D转换器,8路多路开关以及微型计算机兼容的控制逻辑的CMOS组件,其转换方法为逐次逼近型。
8路的模拟开关由地址锁存器和译码器控制,可以在8个通道中任意访问一个通道的模拟信号。
这种器件无需进行零位和满量程调整。
由于多路开关的地址输入部分能够进行锁存和译码,而且其三态TTL输出也可以锁存,所以它易于与微型计算机接口。
其具有较高的转换速度和精度,受温度影响较小,能较长时间保证精度,重现性好,功耗较低,故用于过程控制是比较理想的器件。
ADC0809应用接线图
输出通道:
据其实际情况,D/A转换器的位数可低于A/D转换器的位数,因为一般控制系统对输出通道分辨率的要求比输入通道的低,所以这里采用常用的DAC0832芯片。
DAC0832是8位D/A转换器,与微处理器完全兼容。
期间采用先进的CMOS工艺,因此功耗低,输出漏电流误差较小。
它的内部具有两级输入数据缓冲器和一个R-2RT型电阻网络,因DAC0832电流输出型D/A转换芯片,为了取得电压输出,需在电流输出端接运算放大器,Rf为为运算放大器的反馈电阻端。
双极性电压输出的D/A转换电路通常采用偏移二进制码、补码二进制码和符号一数值编码。
只要在单极性电压输出的基础上再加一级电压放大器,并配以相关电阻网络就可以构成双极性电压输出。
在上图中,运算放大器A2的作用是把运算放大器A1的单向输出电压转变为双向输出。
3.4电源部分
本系统所需电源有220V交流市电、直流5V电压和低压交流电,故需要变压器、整流装置和稳压芯片等组成电源电路。
电源变压器是将交流电网220V的电压变为所需要的电压值,然后通过整流电路将交流电压变为脉动的直流电压。
由于此脉动的直流电压还含有较大的纹波,必须通过滤波电路加以滤除,从而得到平滑的直流电压。
但这样的电压还随电网电压波动(一般有+-10%左右的波动)、负载和温度的变化而变化。
因而在整流、滤波电路之后,还需要接稳压电路。
稳压电路的作用是当电网电压波动、负载和温度变化时,维持输出直流电压稳定。
整流装置采用二极管桥式整流,稳压芯片采用78L05,配合电容将电压稳定在5V,供控制电路、测量电路和驱动执行电路中弱电部分使用。
除此之外,220V交流市电还是加热电阻两端的电压,通过控制双向可控硅的导通与截止来控制加热电阻的功率。
低压交流电即变压器二次侧的电压,通过过零检测电路检测交流电的过零点,送入单片机后,由控制程序决定双向可控硅的导通角,以达到控制加热电阻功率的目的。
四、软件设计
4.1系统主程序
本系统的应用程序主要由主程序、中断服务程序和子程序组成。
主程序的任务是对系统进行初始化,实现参数输入,并控制电加热炉的正常运行。
主程序主要由系统初始化、数据采集及处理、智能推理等部分组成。
系统初始化包括设置栈底、工作寄存器组、控制量的初始值、采样周期、中断方式和状态、定时器的工作方式以及8255的初始化、MAX1232的初始化等。
数据采集及处理主要包括实时采集电加热炉的炉温信号,计算出实际炉温与理想值的差值以及温差的变化率,并对炉温信号进行滤波和限幅处理。
图4.1系统主程序
4.2模数转换模块
ADC0809是一个典型的逐次逼近型8位A/D转换器。
它由8路模拟开关、8位A/D转换器、三态输出锁存器及地址锁存译码器等组成。
它允许8路模拟量分时输入,转换后的数字量输出是三态的(总线型输出),可以直接与单片机数据总线连接。
ADC0809采用+5V电源供电,外接工作时钟。
当典型工作时钟为500KHz时,转换时间约为128us.
(1)时钟信号:
由于ADC0809无片选端,因此电路增加了或非门74LS02,以便对ADC0809进行读/写控制。
单片机采用6MHz/s的晶振,ALE输出66MHz/s时钟信号,经74LS74触发器2分频,得到500KHz的时钟信号,与ADC0809的时钟端CLK相连。
(2)通道选择:
三位通道选择端ADDA、ADDB、ADDC与数据线P1口的低三位P1.0、P1.1、P1.2相连,用数据线进行通道选择,由P1.0、P1.1、P1.2三位决定选择那一通道。
(3)ADC0809启动:
ADC0809的启动端START、地址所存端ALE均为高电平有效。
将START和ALE连在一起,与74LS02的输出端相连。
或非门74LS02的两个输入端/WR和P3.5均为低电平时,其输出为高电平,执行外部I/O口的写操。
图4.2.1A/D转换结束中断服务程序流程图
按键检测与处理流程图如图4.2.2所示
N
Y
N
Y
N
Y
图4.2.2按键检测与处理流程图
编写D/A转换控制程序:
DAC0832实现D/A转换,可以采用下面程序段。
设定要转换的数据放在1000H单元中。
MOV BX,1000H
MOV AL,[BX] 取转换资料
MOV DX,PORTA PORTA为D/A转换端口地址 OUT DX,AL
4.3LED显示模块
图4.3显示子程序
4.4数字控制算法子程序流程图
4.5报警模块
根据设计要求,在保温阶段,温度控制精度为正负1度,故当温度下降或上升2度时为故障状态,需要报警提醒。
所以在电路设计上应用了蜂鸣器和发光二极管,系统正常运行时绿色发光二极管点亮,当出现故障时红色发光二极管点亮并且蜂鸣器鸣叫,提醒操作人员注意。
报警状态可通过按键复位和系统恢复正常后自动复位
图4.4报警子程序
4.6程序清单
4.5.1主程序
ORG0000H
AJMPMAIN
ORG0003H
AJMPKEYS
ORG000BH
AJMPPIT0
ORG001BH
AJMPPIT1;中断入口及优先级
MAIN:
MOVSP,#00H
CLR5FH:
清上下限越限标志
MOVA,#00H
MOVR7,#09H
MOVR0,#28H
LP1:
MOV@R0,A
INCR0
DJNZR7,LP1
MOVR7,#06H
MOVR0,#39H
LP2:
MOV@R0,A
INCR0
DJNZR7,LP2
MOVR7,#06H
MOVRO,#50H
LP3:
MOV@R0,A
INCR0
DINZR7,LP3;清显示缓冲区
MOV33H,#00H
MOV34H,#00H;赋KP高低字节
MOV35H,#00H
MOV36H,#00H;赋KI高低字节
MOV37H,#00H
MOV38H,#00H;赋KD高低字节
MOV42H,#00H
MOV43H,#00H;赋K高低字节
MOVTMOD,#56H;T0方式2,T1方式1计数
MOVTLO,#06H
MOVTHO,#06H
MOV25H,#163H;设定值默认值350
SETBTR0;键盘高优先级
SETBET0
SETBEX0
SETBEA;开键盘T0。
T1中断
LOOP:
MOVR0,#56H
MOVR1,#55H
LCALLSCACOV;标度转化
MOVR0,#53H
LCALLDIR
NOP
LCALLDLY10MS
NOP
LCALLDLY10MS
AJMPLOOP;等中断
4.5.2键盘子程序
KEYS:
CLREX0
CLREA
PUSHPSW
PUSHACC;关中断
LCALLDLY10MS;消抖
CC:
JBP3.2AA
SETB5DH;置“显示设定值温度值标志”
MOVA,25H;取运算位的值
MOVB,#10H;BCD码转化
DIVAB
MOV52H,A
MOVA,B
MOV51H,A
MOVR0,#50H
LCALLDIR;显示设定温度
NOP
LCALLDLY10MS
NOP
LCALLDLY10MS
JBP1.7,BB
MOVR1,#25H
LCALLDAAD1
NOP
LCALLDLY10MS
AJMPCC
BB:
JBP1.6CC
MOVR1,#25H
LCALLDEEC1
NOP
LCALLDLY10MS
AJMPCC
AA:
POPACC
POPPSW
SETBEX0
SETBEA;出栈
RETI
4.5.3显示子程序
DIR:
MOVSCON,#00H;置串行口移位寄存器状态
SETBP1.4;开显示
JB5DH,DL1;显示设定温度
DL2:
MOVDPTR,#SEGT
DL0:
MOVA,@R0
MOVCA,@A+DPTR
MOVSBUF,A
LOOP1:
JNBTI,LOOP1
CLRTI
INCR0
MOVA,@R0
MOVCA,@A+DPTR
ANLA,#7FH;使数带小数点
MOVSBUF,A
LOOP2:
JNBTI,LOOP2
CLRTI
INCR0
MOVA,@R0
MOVCA,@A+DPTR
MOVSBUF,A
LOOP3:
JNBTI,LOOP3
CLRTI
CLRP1.4
CLR5DH
RET
DL1:
MOV50H,#0AH;小数位黑屏
AJMPDL2
SEGT:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH
4.5.4T0中断子程序
PTT0:
CLREA
PUSHACC
PUSHPSW
PUAHDPL
PUSHDPH
SETBEA;压栈后开中断响应键盘
PPP:
LCALLSMAP;采样数据
LCALLFILTER;数字滤波
MOVA,2AH;取采样值
CJNEA,#07H,AAA;下限48比较
AJMPBBB
AAA:
JCCCC;小于48度转
CJNEA,#0FEH,DDD;上限355比较
AJMPBBB;转至48~355正常范围处理
DDD:
JCBB
CLRP1.2;大于355黄灯亮
SETB5EH
CLRP1.1;置标志启动风扇
AJMPPPP
CCC:
CLRP1.3;小于48红灯亮
SETB5FH
BBB:
CLRP1.0;置标志启动电炉
AJMPPPP
SETBP1.0
SETBP1.1
SETBP1.2
SETBP1.3
CLR5EH
CLR5FH;50~350之间正常
LCALLPID
JNB20H,EEF;设定温度小于实际值转到风扇
MOVA,29H
LCALLFFF
CLRP1.0
LOOP10:
MOVR0,#56H;存放相乘结果的首址
MOVR1,#55H;赋显示缓冲区最高位地址
LCALLSCACOV;标度转化
MOVR0,#53H;;赋显示首址
CLRDIR
JBD5H,LOOP10;等待T1中断
CLREA
POPDPH
POPDPL
POPPSW
SETBEA
POPACC
RETI
EEE:
MOVA,28H;风扇处理
LCALLFFF
CLRP1.1
AJMPLOOP10
FFF:
CRLA;根据PID结果计算T1初值
INCA
MOVTL1,A
MOVTH1,#0FFH
SETBPI1
SETBTR1
SETBET1
RET
4.5.5采样子程序
SWAP:
MOVR0,#20H
MOVR1,#03H
SAW1:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 PID 加热炉 温度 控制系统 设计 汇总