5.总结与展望
5.1主要工作内容
论文主要研究的是基于C51的温度控制系统,在设计过程中研究了以下几个问题。 C51单片机
掌握C51的结构,功能以及最小系统,了解C51的I/O口 及中断的用法。以C51为核心搭建系统平台,并通过keil 用C语言编写单片机程序。并且在Protues下完成了硬件电路的仿真。 DS18B20
本次设计运用了DS18B20数字温度传感器作为温度采集部件,DS18B20比传统的模拟温度感应器的精度更高,由于它能够直接读出温度所以 使用起来更方便,适用范围更广。 PID控制算法
在一般的自动控制中应用得最广的应该就是PID算法了,PID算法的适应性强,控制对象的变化不会大幅的影响其控制品质,尤其对于温度这种滞后性较强的控制对象。同时PID算法的抗干扰性也很强,能适应各种工作环境。 PID算法的参数可以自由选定,本次设计就针对这个温度控制系统建立了一个数学模型并在Matlab中完成了系统仿真。并阐述了PID参数对心系统控制结果的影响。
5.2工作小结
这次的实际开发使我感触很深:
这次毕业设计可以说是对我大学四年来所有所学知识的一次检验,是一项综合性的考核。从大二开始就接触单片机与c语言,但是没有完整的利用单片机来解决一个实际性的问题,所以这次毕设刚开始时我觉得不知所措,但经过一段时间的学习和思考,我决定把以前学的知识在再复习一遍,在这个过程中我对控制理论,单片机技术,C语言以及PID算法有了更深的了解。
43
5.3 待解决的问题及未来研究方向
设计将PID控制方法引入恒温箱的控制中,在仿真中能得到令人满意的效果。但是,对具体的生产和实际应用的研究还不是特别深入,我所完成的只不过是一个雏形,以下的几点是今后需进一步研究和改进的:
1.完成对外围电路的设计及测试由于对大功率加热电器的了解还不够所以这次没有对加热电路设计。
2.对实物的工作情况进行测试,找出最优的PID参数以及温度采样周期和系统工作功率。完成对事物的功能的验证。
展望:
当今的工业发展速度越来越快 生产技术和工艺日益复杂,这必然会导致对控制系统的需求更加精密和智能化。目前智能控制理论与应用还有许多需要完善和实践部分,我们应该将多种控制技术相互结合,多平台的兼容是今后计算机控制系统理论与应用研究的主要方向。
44
参考文献
[1] 李群芳等编. 单片微型计算机与接口技术(第3版). 北京:电子工业出版社,2002
[2] 郭天祥 新概念51单片机c语言教程. 北京:电子工业出版社,2003 [3] 何力民编. 单片机高级教程. 北京:北京航空大学出版社,2000 [4] 金发庆等编. 传感器技术与应用.北京机械工业出版社,2002
[5] 王锦标,方崇智.过程计算机控制.北京:清华大学出版社,2007;36-40
[6] 邵惠鹤.工业过程高级控制.上海:上海交通大学出版社,2007;58—
62,78-101
[7] K J Astrom T HaggLund The future of PID control .Control Engineering Practice November 2001, Pages 1163–1175 [8] 刘伯春.智能PID调节器的设计及应用.电子自动化,2007;(3):20-25 [9] Kiam Heong Ang . PID control system analysis, design, and technology IEEE Control System Society 559 - 576 July 2005.
[10] 王忠飞,胥芳.MCS-51 单片机原理及嵌入式系统应用[M].西安:西
安电子科技大学出版社,2007.P268-273
[11] 赵娜,赵刚,于珍珠等.基于51 单片机的温度测量系统[J]. 微计算机信
息,2007,1-2:146-148。 [12] 傅承义,陈运泰,祁贵中.地球物理学基础.北京:科学出版社,2005,
447
[13] K. Skadron, M. R. Stan, W. Huang, S. Velusamy, K. Sankaranarayanan,and
D. Tarjan. Temperature-aware microarchitecture. In Proc. ISCA-30, June 2003. [14] J. Jayapandian. Current Science, Vol 90. No.6. 25th March 2006. p.765-770. [15] National Instrument’s LabVIEW user manual
45
#include
#define uchar unsigned char #define uint unsigned int #include
sbit ds=P2^2; //温度传感器信号线 sbit dula=P2^6; //数码管段选线 sbit wela=P2^7; //数码管位选线 sbit plus=P3^0; sbit subs=P3^1; sbit stop=P3^6; sbit output=P2^5; sbit set=P3^2; sbit rd=P3^7;
unsigned char flag,flag_1=0;
unsigned char high_time,low_time,count=0;//占空比调节参数 unsigned int set_temper; unsigned char i; unsigned char j=0; unsigned int s;
uint flagg; uint temp; float f_temp; struct PID {
uint SetPoint; // 设定目标Desired Value uint Proportion; // 比例常数Proportional Const uint Integral; // 积分常数Integral Const uint Derivative; // 微分常数Derivative Const uint LastError; // Error[-1] uint PrevError; // Error[-2] uint SumError; // Sums of Errors
46
};
struct PID spid; // PID Control Structure uint rout; // PID Response (Output) uint rin; // PID Feedback (Input)
unsigned char code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0xbf,0x86, 0xdb,0xcf,0xe6,0xed,
0xfd,0x87,0xff,0xef}; //不带小数点的编码
void delay(uint z)//延时函数 { }
void dsreset(void) //18B20复位,初始化函数 { uint i; ds=0; i=103;
while(i>0)i--; ds=1; i=4;
while(i>0)i--; }
bit tempreadbit(void) //读位函数 {
uint i;
47
uint x,y; for(x=z;x>0;x--)
for(y=110;y>0;y--);