《电阻炉微型计算机温度控制系统设计说明书.doc》由会员分享,可在线阅读,更多相关《电阻炉微型计算机温度控制系统设计说明书.doc(16页珍藏版)》请在课桌文档上搜索。
1、目录1 控制对象11.1控制对象介绍11.2 控制性能要求12方案的比较和确定13统软硬件设计23.1总体设计23.2温度检测电路33.3 控制信号输出通道33.4 LED显示电路44 系统软件设计54.1 程序流程图54.2控制算法65基MATLAB仿真被控对象86.心得体会10参考文献11附录一电路图12附录二程序代码1314 / 16摘要当今社会.随着产品的精细化.温度对产品的影响原来越受到人们的关注.于是.温度控制成为了工业生产中重要的控制参数之一。这样.一个能够精确控制温度的系统成为人们迫切的需要.它将能够广泛的被使用于的各种加热炉、精密器件制造、甚至于食品行业等。本次试验便以电阻炉
2、的温度控制为例.试图探求一个具有良好稳定性的温度控制系统。本次试验以C51单片机为核心.采用温度变送器桥路和固态继电器控温电路.该控制系统具有硬件成本低、控温精度较高、可靠性好、抗干扰能力强等特点。基本的想法是:C51单片机能够按要求对电阻炉进行实时监测和控制算法的确定.发出准确的控制命令;A/D转换芯片将得到的模拟量转化为数字量;单片机对数字量进行处理.得到应有的控制量.去控制加热功率.从而实现对温度的控制。关键词:单片机、电阻炉、温度测量、控制系统电阻炉微型计算机温度控制系统的设计1 控制对象1.1控制对象介绍电阻炉是利用电流通过电热体元件将电能转化为热能来加热或者熔化工件和物料的热加工设
3、备。电阻炉由炉体、电气控制系统和辅助系统组成。炉体由炉壳、加热器、炉衬包括隔热屏等部件组成。电气控制系统包括电子线路、微机控制、仪表显示及电气部件等。辅助系统通常指传动系统、真空系统、冷却系统等.虽炉种的不同而已。电阻炉的主要参数由额定电压、额定功率、额定温度、工作空间尺寸。生产率、空炉损耗功率、空炉升温时间、炉温控制精度及炉温均匀性等1.2 控制性能要求本设计要求控制一个电阻炉.它是一个具有很大滞后性的系统.惯性也很大.其传递函数的形式可以写为.温度控制要求为500.温度控制精度为 1.电阻炉的温度还要通过LED 实时显示出来。2方案的比较和确定方案一系统采用8084芯片作为系统的微处理器。
4、温度信号由热电偶检测后转换为电信号经过预处理放大送到A/D转换器.转换后的数字信号再送到8084芯片内部进行判断或计算。从而输出的控制信号来控制锅炉是否加热。但对于8084芯片来说.其内部只有128个字节的RAM.没有程序存储器.并且系统的程序很多.要完成键盘、显示等功能就必须对8084芯片进行存储器扩展和I/O口扩展.并且需要容量较大的程序存储器.外扩时占用的I/O口较多.使系统的设计复杂化。方案二系统采用AT89C51作为系统的微处理器来完成对炉温的控制和键盘显示功能。C51单片机片内除了128KB的RAM外.片内又集成了4KB的ROM作为程序存储器.是一个程序不超过4K字节的小系统。系统
5、程序较多时.只需要外扩一个容量较小的程序存储器.占用的I/O口减少.同时也为键盘、显示等功能的设计提供了硬件资源.简化了设计.降低了成本。因此89C51可以完成设计要求。综上所述的二种方案.该设计选用方案二比较合适。3统软硬件设计3.1总体设计系统的硬件包括微控制器部分主机、温度检测、温度控制、人机对话键盘/显示4个主要部分.系统的结构框图如图3-1所示。系统程序采用模块化设计方法.程序有主程序、中断服务子程序和各功能模块程序组成.各功能模块可直接调用。图3-1系统结构框图3.2温度检测电路温度检测电路包括温度检测电路、放大器和A/D转换三部分。原理图如图3-2所示图3-2温度检测电路Pt10
6、0温度传感器的测量范围为:.符合题目中的温度测量。它是利用金属铂在温度变化时自身电阻值也随之改变的特性来测量温度的.显示仪表将会指示出铂电阻的电阻值所对应的温度值。当被测介质中存在温度梯度时.测得的温度是感温元件所在范围内介质层中的平均温度。铂电阻的阻值随温度的变化而变化的计算公式:-200t0 Rt=R01+At+Bt+Ct 3-10t850 Rt=R01+At+Bt23-2Rt为t时的电阻值.R0为0时的阻值。公式中的A,B,系数为实验测定。这里给出标准的系数:A=3.90802*10-3;B=-5.802*10-7; C=-4.27350*10-12。3.3 控制信号输出通道该电路用到了
7、芯片MOC3021.它是过零触发双硅输出光耦。过零触发是在设定时间间隔内.改变晶闸管导通的周波数来实现电压或功率的控制。 实际上它就相当于一个用于交流电路中的电子开关.这个电子开关的接通、断开动作是在交流电流过0点完成的。这样的电路.对用电负荷不会造成电流冲击。电路的工作状况是断续的.适用于本系统热惯性较大的电阻炉负载。控制信号输出通道的电路图如图10所示.考虑到加热系统具有较大的热惯性.即一阶惯性纯滞后特性.本系统采用脉冲宽度调制PWM的控制方法.单片机输出控温信号。单片机输出低电平时.使双向可控硅导通.电热丝通电;输出高电平时.双向可控硅截止.电热丝断电。其中.7407用于驱动.提供更大的
8、电流驱动发光二极管。可控硅门极回路与220V电源相通.光电耦合器有效地把单片机系统与220V强电隔离.确保了单片机系统的安全性。原理图如3-3所示图3-3控制信号输出通道3.4 LED显示电路由于温度控制精度为1.设计中选取型号为7SEG-MPX4-CC的数码管显示器.其为共阴极数码管。工作方式为动态显示方式。动态显示.就是微型机定时地对显示器件扫描.在这种方法中.显示器件分时工作.每次只能一个器件显示。但由于人视觉的暂留现象.所以.仍感觉所有的器件都在显示。图3-4LED显示电路4 系统软件设计4.1 程序流程图该控制系统的流程图如图4-1所示.首先对单片机的各个控制端口以及各个参数初始化.
9、然后就启动A/D转换.读取转换后的数据。对转换后的数据进行滤波等操作.使数据的准确性提高.然后进行标度变换.得到实际的测量温度。把测量温度进行处理后送到数码管显示.把测量温度与规定温度作比较.判断是否动作。同时计算测量温度与标准值之间的偏差.根据偏差判断是进行PID计算还是积分项改进分离的PD计算.得到PWM脉冲控制执行机构.然后程序重复执行。图4-1电阻炉系统控制流程图4.2控制算法4.2.1控制算法的确定PID调节是连续系统中技术最成熟的、应用最广泛的一种控制算方法。它结构灵活.不仅可以用常规的PID调节.而且可以根据系统的要求进行改进.适时的采用各种PID的变型.如PI、PD控制等.本次
10、试验便是使用改进的PID控制算法.它具有许多特点.如不需要求出数学模型、控制效果好、能够避免积分饱和、能够消除积分不灵敏区等.特别是在温度调节系统中.由于被控量变化较为缓慢且有惯性和滞后情况.积分项往往会产生很大的积累.导致系统产生很大超调.甚至发生震荡.使用改进PID控制算法可以将积分项进行分离.提高系统稳定性。改进PID控制系统的结构框图如图4-2所示:图4-2 系统结构框图具有一阶惯性纯滞后特性的电阻炉系统.其数学模型可表示为:4-1在改进PID调节中.需要根据多次测试确定积分分离阈值.当时.采用PD控制.当时.采用PID控制。阈值一定要选取合适.若选取过大.达不到积分分离的目的.若选取
11、过小.被控量无法跳出积分分离区.一直处于PD控制.将会出现残差。确定时.可以先假设一个值.然后测试若干个不同的PI、PD参数.得出一组较好的控制参数。积分分离控制算法可表示为:4-2式中:T为采样时间.a为积分项开关系数.当时.a=0;时.a=1。为积分系数;为微分系数;为比例系数。因此.炉温控制系统的输出量为:a=0.a=1.其中.为输出量;、分别为第t次、第t-1次和第t-2次采样时刻的偏差值。由式可知:a=1时.比例系数和微分系数同时起作用.温度快速接近设定值。a=0时.比例系数和微分系数同时起作用.使系统更加稳定接近设定值.避免超调和过冲。与PID控制算法相比.改进PID控制算法有如下
12、优点:(1) 单纯的PID控制算法无法发挥计算机运算速度快、逻辑判断能力强、编程灵活等优势.从而很难获得更好的效果。而改进PID控制算法则能够更加灵活的根据输入量的变化与特点进行算法调整.使输出更加准确。2对于温度这种变化缓慢的过程.PID算法的积分项会使系统产生很大超调量和很长的调整时间.如果在较大时取消积分作用.在较小时才投入积分项.就可以很灵活的避免这种情况.获得更加准确的调整。正因为具有上述优点.在实际控制中.改进PID控制算法比标准PID控制算法应用更加广泛。5基MATLAB仿真被控对象由于在硬件电路中.我们看到的只是PID整定的结果.而对于其工作过程却不清楚.因此为了更清楚的了解P
13、ID的调节过程.我们使用MATLAB的SIMULINK功能对PID调节进行仿真.得出其整定的工作波形.从而更直观的看到PID调节过程。采用SIMULINK仿真.通过SIMULINK模块实现积分分离PID控制算示。设采样时间Ts=10s.被控对象为:SIMULINK仿真图如图5-1所示。图5-1 Simulink仿真图选择合适的Kp.Ki.Kd是系统的仿真效果趋于理想状态。MATLAB编写程序如下:clear all;close all;ts=10sys=tf;dsys=c2d;num,den=tfdata;kp=5.2ki=0.1;kd=0.1MATLAB仿真波形如图5-2所示。图5-2 MA
14、TLAB仿真波形6.心得体会本次课程设计之初.通过老师的给的资料.对报告的要求和所设计的内容有了一定的了解。由于对电阻炉.温度传感器等不是太了解.于是在我查询了相关的资料.了解了电阻炉.温度传感器.根据题目的要求选择了热电阻中的铂电阻。同时本次课程设计中运用到了51单片机、TLC2543等较多的芯片.为此查询了相关芯片的引脚图.对这些芯片有了大致的了解.在学会使用这些芯片的过程.我也学到了许多的知识。本次课程设计让protues.Diagram Designer.word.Keil等软件的使用.增强了我的电脑操作能力.对单片机的使用让我重新回顾了C语言的使用.对以前的知识有了复习的机会。而本次
15、课程设计主要的难点也是在于程序的设计。本次课程设计中也遇到了些问题.如刚开始时题目的理解错误.程序运行出错.仿真出问题等.在同学的指导和帮助下.这些问题得到了一定的解决。在今后的学习生活中也是如此.除了自己的努力外.还需请教他人.学习他人的经验.让今后的路更加的平坦。参考文献1 陈立周、陈宇.单片机原理及其应用.北京:机械工业出版社.20062 于海生编著.计算机控制技术.机械工业出版社.20033 谭浩强.C程序设计.北京:清华大学出版社.20054 于海生.计算机控制技术.北京:机械工业出版社.2007.5 刘红丽、张菊秀. 传感与检测技术. 国防工业出版社.2007.6 康华光编著.电子
16、技术基础模拟部分.高等教育出版社.2000附录一 电路图附录二 程序代码#include #include #define uint unsigned int#define uchar unsigned charsbit D_OUT=P30;sbit D_IN=P31;sbit _CS=P32;sbit CLOCK=P33; /单片机与TLC2543连接的端口定义sbit C1=P21;sbit C0=P20;sbit C2=P22;sbit C3=P23; /单片机与数码管位选连接的端口定义sbit dip=P07; /数码管小数点的定义sbit green=P34;sbit red=P35
17、; /报警灯的定义uint KP=10; /比例系数uint KI=5; /积分系数uint KD=3; /微分系数uint KC=5; /速度调整sbit HEAT=P27;/执行装置端口定义float PWM; /脉冲调制宽度uint temp; /温度值uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71; /数码管显示表/*精确延时模块*/void delayuchar i;fori=0;i_nop_; /*毫秒级延时模块*/void delaym
18、suint x,y;for0;x-for0;y-;/*TLC2543驱动模块*/uint read2543uint ad=0,i;CLOCK=0;_CS=0;port=4;fori=0;iif ad|=0x01;D_IN=;CLOCK=1;delay;CLOCK=0;delay;port=1;ad=1;return; /* 温度显示函数*/void displayP0=tableqian;C0=0;delayms;C0=1;P0=tablebai; C1=0;delayms;C1=1;P0=tableshi;dip=1; C2=0;delayms; C2=1;P0=tablege;C3=0;d
19、elayms;C3=1;/*PID程序判断计算模块*/void PID uint diff19=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0; uint um_diff=0; / uint urr_=0; float p_out,i_out,d_out,temp_pid; float pwm_0; temp_pid=diffcurr_; if=19curr_=0; sum_diff-=diffcurr_; diffcurr_=abskey-; sum_diff+=diffcurr_; p_out=KP*diffcurr_; /比例项输出 i_out=KI*sum_
20、diff; /积分项输出 d_out=KD*; /微分项输出 pwm_0=KC*key; /维持功率项 if100i_out=100; /积分分离 ifi_outi_out=-100; PWM=p_out+i_out+d_out+pwm_0; /总输出量 ifPWMPWM=0;/积分改进PID控制 else if=100PWM=100;/*执行程序模块*/void PWM_OUT_HEAT uchar i; uchar limit; /pid_value输出百分比 limit=PWM; ift1HEAT=0; /加热 else HEAT=1; /停止加热 fori=0;i delay;/视具体
21、而定 data_to_display; t1+; if100t1=1; /*主函数*/void mainuint ad;float temp1;uchar m1,m2,m3,m4;green=1;red=1;whilead=read2543; /读取温度数字量temp=6/4.0*ad;m1=temp/1000;m2=temp/100%10;m3=temp/10%10;m4=temp%10; /标度变换display; temp1=temp/10;if501|temp1/灯光显示green=1; red=0;else red=1; green=0; if/不等于设定温度时调温PID;PWM_OUT_HEAT;/小于等于设定温度升温