《计算机控制技术》
课程设计
学生姓名:
学号:
专业班级:电气工程及其自动化(1)班
指导教师:
二○一二年十月二十九日
目录
1.课程设计目的 (3)
2.课程设计题目和要求 (3)
3.设计内容 (3)
4.设计总结 (10)
4.参考书目 (11)
5.附录
1.课程设计目的
通过本课程设计, 主要训练和培养学生的以下能力:
(1).查阅资料:搜集与本设计有关部门的资料(包括从已发表的文献中和从生产现场中搜集)的能力;
(2).方案的选择:树立既考虑技术上的先进性与可行性,又考虑经济上的合理性,并注意提高分析和解决实际问题的能力;
(3).迅速准确的进行工程计算的能力,计算机应用能力;
(4).用简洁的文字,清晰的图表来表达自己设计思想的能力。
2.课程设计题目和要求
题目:PWM温度自动控制系统的设计
要求:
1.要求设计温度控制系统,设定温度为230度,采用电阻丝作为加热器件,要求无余差,超调小,加热速度快。
2.硬件采用51系列单片机,采用固态继电器作为控制元件。
3采用keil c作为编程语言,采用结构化的设计方法。
4.要求用protel设计出硬件电路图。
5画出系统控制框图。
6 画出软件流程图。
3.设计内容
3.1 PID控制原理
将偏差的比例,积分和微分通过线性组合构成控制量,用这一控制对被控对象进行控制,这一样的控制器称PID控制器
3.1.1.模拟PID控制原理
在模拟控制系统中,控制器最常用的控制规律是PID控制。
为了说明控制器
(t)与实际输出信号n(t)进行比的原理,以图1.1的例子说明。
给定输入信号n
(t)-n(t),经过PID控制器调整输出控制信号u(t),u(t)对目较,其差值e(t)=n
标进行作用,使其按照期望运行。
常规的模拟PID控制系统原理框图如同1.2所示。
该系统有模拟PID和被控对象组成。
图中r(t)是给定的期望值,y(t)是系统的实际输出值,给定值与实际输出值,给定值与实际值构成控制偏差e(t):
e(t)作为PID控制的输入,u(t)作为PID控制的输出和被控对象的输入。
构成PID和被控对象的输入。
构成PID控制的规律为:
其中:Kp为控制器的比例系数
Ti为控制器的积分时间,也称积分系数
Td为控制器的未分时间,也称微分系数
3.1.2 带死区PID 的算法
带死区的PID 控制
作用:消除由于频繁动作所引起的振荡
计算机中带死区的PID :
3.2系统控制框图程序模块
3.3程序模块
1、主程序
2、AD转换程序
3、pid计算程序
4、延时程序
5、定时器中断服务程序3.4 Protel硬件电路图
3.5软件设计
3.5.1设计流程图:
主要程序流程说明:
主程序首先进行初始化,包括pid参数设定,定时器设置,中断设置及赋初值。
然后循环做四件事:通过AD转换对反馈值采样,根据设定值减反馈值计算偏差进而计算输出值,根据输出值算出定时器初值,扫描给定按键刷新给定值。
通过不断循环改变定时器初值以改变占空比,实现PWM控制。
3.5.2程序
#include <reg51.h>
sbit A=P2^0;//模拟通道选择位
sbit BB=P2^1;
sbit C=P2^2;
sbit ST=P2^4;
sbit EOC=P2^5;
sbit OE=P2^6;
sbit P27=P2^7;//PWM脉冲输出
sbit P10=P1^0;
sbit P17=P1^7;
void ad();//模数转换
void pid();//pid计算
int a=0,b=0,out=0;
double p=0.4,i=0.1,d=0;//系数设定double s=0,e0=0,elast=0,in=200;
void delay(long i)//延时
{
int j=255;
while(i--)
{
for(;j>0;j--);
}
}
main()
{
A=BB=C=0;
OE=1;
TMOD=0x11;
TH0=0xD8;
TL0=0xF0;
EA=1
ET0=1;ET1=1;
TR0=1;
while(1)
{
ad();//模数转换
pid();
a=(65535-out*39)/0x100;
b=(65535-out*39)%0x100;//T1低8位
if(P10==0)
{ in++;delay(100);}
if(P17==0)
{ in--;delay(100);}
}
}
//模数转换
void ad()
{
ST=0;
ST=1;
ST=0;//启动转换
while(EOC==0); //等待转换结束
}
//pid计算
void pid()
{
e0=in-P0;//偏差值
out=p*(e0+i*s+d*(e0-elast));//由公式计算输出值
s=s+e0;//累计偏差
elast=e0;
}
void int0() interrupt 1 using 0//定时器0服务子程序 (interrupt 1 定时器0)
{
TH0=0xD8;
TL0=0xF0;//定时器0初值
P27=1;//输出高电平
TR1=1;//开定时器1
TH1=a;//定时器1初值
TL1=b;
}
void int3() interrupt 3 using 0//定时器1服务子程序
{
TR1=0;//关定时器1
P27=0;//输出低电平
}
4.设计总结
经过一周的课程设计,使我深刻的感受到所学知识的综合使用,像PID的运用,单片机的运用,C语言编程,protel画原理图,检测与转换技术的传感器等,一开始设计时还真有点迷茫,只能重新翻开以前的书本,才一点一点的理解过来,有了思路。
而且以前不是特别明白或根本就不懂的地方,通过重新学习和实践弄懂了不少,对它们的原理有了更深的认识。
也使我感受到了理论与实践相结合的重要性,不但使我对所掌握的知识有了更深刻的认识,还提高了我独立思考能力。
遇到不懂的地方要的动手查阅资料或问同学、老师。
这次设计为以后的学习、生活打下良好的基础,同时也暴露了自己的一些不足之处,基础知识不够扎实,不太懂得知识的综合利用,在以后的时间里要多加注重,以提高自己综合能力。
5参考书目
[1] 于海生.计算机控制技术.北京:机械工业出版社,2007.5
[2] 李群芳.单片机原理、接口及应用(第二版) .北京:清华大学出版社,2010.9
[3]叶东毅.C语言程序设计教程.厦门:厦门大学出版社.2009.5
[4]徐兵.过程控制.北京:机械工业出版社.2004.8
[5] 王春鸣,陈刚,张素贞. 专家PID控制器. 石油化工自动化,2002,(5):25-27 附录:硬件电路原理图
11。