《《计算机控制技术》课程设计PWM温度自动控制系统的设计.doc》由会员分享,可在线阅读,更多相关《《计算机控制技术》课程设计PWM温度自动控制系统的设计.doc(8页珍藏版)》请在三一办公上搜索。
1、 计算机控制技术课程设计题 目:PWM温度自动控制系统的设计学生姓名: 学 号: 专业班级: 指导教师: 二一年十二月二十五日目 录1.设 计 目 的12.设 计 要 求13.PID控制原理14. 带死区的PID算法25.系统框图26.程序流程图以及程序代码47.心得体会58.参考目录5一.设计的目的1. 通过课程设计,来加深对过程控制中自动化控制系统框架的理解2. 通过课程设计,来加深对PID控制系统的理解3. 利用所学的理论知识,设计一个工业常用中的温度控制系统,达到对一个系统的初步设计二设计要求1. 要求设计温度控制系统,设定温度为230度,才用电阻丝做为加热器件,采用PID算法,无余差
2、,超调小,加热速度快。2. 硬件采用51系列单片机,采用固态继电器作为控制元件3. 采用keil c作为编程语言,采用结构化的设计方法三PID控制原理将偏差的比例,积分和微分通过线性组合构成控制量,用这一控制对被控对象进行控制,这一样的控制器称PID控制器1模拟PID控制原理在模拟控制系统中,控制器最常用的控制规律是PID控制。为了说明控制器的原理,以图1.1的例子说明。给定输入信号n0(t)与实际输出信号n(t)进行比较,其差值e(t)=n0(t)-n(t),经过PID控制器调整输出控制信号u(t),u(t)对目标进行作用,使其按照期望运行。常规的模拟PID控制系统原理框图如同1.2所示。该
3、系统有模拟PID和被控对象组成。图中r(t)是给定的期望值,y(t)是系统的实际输出值,给定值与实际输出值,给定值与实际值构成控制偏差e(t): e(t)作为PID控制的输入,u(t)作为PID控制的输出和被控对象的输入。构成PID和被控对象的输入。构成PID控制的规律为: 其中:Kp为控制器的比例系数 Ti为控制器的积分时间,也称积分系数 Td为控制器的未分时间,也称微分系数四带死区PID的算法带死区的PID控制 作用:消除由于频繁动作所引起的振荡计算机中带死区的PID:五 系统框图(1)系统框图带死区的PIDPWM波电阻丝 温度 温度传感器AD转化(2) 系统工作过程:温度传感器检测容器内
4、部的温度,把温度信号传送给D/A转换芯片进行模/数转化,转化完的数字信号送入51单片机,再与设定值进行比较,比较完的差值进行带死区的PID算法运算,PID后的U(k)经过PWM波比较,输出占空比随U(k)调整的脉冲波形,再通过光电耦合器控制固态继电器的通断时间,达到对容器内温度加热的控制,从而能较精确地控制器内温度。六 程序流程图以及程序代码 开始(1) .程序流程图设定值初始化 AD转化设定值与转化数值相减e(k)死区PID运算U(k) PWM()P3_0输出脉冲波电阻丝对容器加热(2)程序代码#include #include /用“include”即可使用其中定义的宏来访问绝对地址#in
5、clude sbit P3_0=P30;#define kp 10 /假设的比例系数设定值 #define ki 20 /假设的积分系数设定值#define kd 30 /假设的微分系数设定值#define set 90 /容器内温度的设定值#define k1 5 /误差在死区内时,系数的设定值#define x 3 /死区范围的设定值#define AD_adr XBYTE0x7ff8 /AD芯片的地址int ek,ek_1,uk,sum,b;int PID( ); /死区PID算法函数调用的声明void AD( ); /进行AD转换函数调用的声明PWM(); /产生对应占空比的波形的函数
6、声明main( ) int a; ek_1=0;sum=0;b=0; while(1) AD( ); /先进行温度的AD转化 a=P0; /读取AD转化完的值 ek=set-a; /转化数值与设定值进行比较 uk=PID( ); /比较的差值进行PID运算 PWM( ); /PID算出的值进行D/A转化输出 void AD( ) AD_adr=1; /启动转化芯片 while(P3_0=1) /等待转化 ; /转化结束,数值送入P0 P0=AD_adr; PWM()ET0=1; /开T0定时器中断EA=1; /开总中断TMOD=0X01; /使用T0计时器,模式1TH0=0X3C;TL0=0X
7、B0; /定时100ms,计数器赋初值TR0=1; /开启计时 USE() interrupt 1 /T0定时器中断b+;If(b10) b=0; /10假设的三角波的峰值else if(ukb) P3_0=0; else P3_0=1; int PID( ) /死区PID算法函数 int s1,s2,s3,k; sum=sum+ek; s1=kp*ek; s2=ki*sum; s3=kd*(ek-ek_1); ek_1=ek; if(abs(ek)x) /abs()为计算绝对值 k=s1+s2+s3; else k=k1*(s1+s2+s3) return k; 七. 心得体会在这次课设上由
8、于很多知识都是以前学过的不过由于没有去巩固所以导致很多地方很生疏,在些不该出问题的小细节上出来问题。不过在老师的带领下,与同学的讨论下,用实践的方法把以前学到的知识巩固了一遍,我相信这样的巩固不是背书能得到的,是对单片机的理解更加的深入。这次课设中也对这学期所学的知识进一步的提高,在查阅资料的工程中也学习到了许多课本相关的知识,这次课设让我对实践与课本有了新的认识。八参考书录:1网络资源2 袁任光可编程序控制器选用手册M北京:机械工业出版社,2002.73 何友华可编程序控制器及常用控制电器M北京:冶金工业出版社4 万光毅,严义,邢春香.单片机实验与实践教程M.北京:北京航空航天大学出版社,2006.4