欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    基于PID控制算法的电阻加热炉温度控制系统设计-本科毕业设计论文.doc

    • 资源ID:26315290       资源大小:1.95MB        全文页数:31页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于PID控制算法的电阻加热炉温度控制系统设计-本科毕业设计论文.doc

    1、计算机控制系统课程设计报告基于PID控制算法的电阻加热炉温度控制系统设计摘要:温度控制是人们日常生活中经常遇到的问题,传统的控制方法都存在控制慢,精度低等问题,而计算机控制系统能够利用微型处理器加上科学的控制算法使温度控制实现控制快而且精度高。在本设计中,控制对象为电阻加热炉,通过控制加在电阻丝两端电压的工作时间,从而可控制输入电阻加热炉的功率,继而达到控制其温度的目的。此系统以单片机为核心,采用固态继电器为执行电路,实现对电炉的自动控制。算法采用增量型PID控制。另外本文还阐述了PID控制器的设计,硬件结构和软件设计,实现了一套温度采集和控制的方案。该系统具有硬件成本低,控温精度较高,可靠性

    2、好,抗干扰能力强等特点。 关键词:电加热炉;单片机;温度控制;PID算法1、单片机温度控制系统方案简介单片机温度控制系统是数控系统的一个简单应用。在冶金、化工、建材、机械、食品、石油等各类工业中,广泛使用着加热炉、热处理炉、反应炉等,因此,温度是工业对象中一个主要的被控参数。由于炉子的种类不同,因而所使用的燃料和加热方法也不同,例如煤气、天然气、油、电等;由于工业不同,所需要的温度高低不同,因而所采用的测温原件和测温方法也不同;产品工业不同,控制温度的精度也不同,因而对数据采集的精度和所采用的控制算法也不同。本系统所使用的加热炉为电加热路,炉丝功率为2kw,系统要求测试水杯恒温,误差为,超调量

    3、尽可能小,温度上升较快且有良好的稳定性。单片机温度控制系统是以STC89C52RC单片机为控制核心,辅以采样反馈电路,驱动芯片,固态继电器对电炉进行控制的微机控制系统。其系统结构框图可表示为:系统采用单闭环形式,其基本控制原理为:将温度设定值(即输入控制量)和温度反馈值同时送入控制电路部分,然后经过单片机运算得到输出控制量,输出控制量控制I/O得到一定占空比的PWM波控制固态继电器,固态继电器接通220V市电给电炉,调节PWM占空比使电炉达到一定的温度。其控制系统框图如图1-1所示。图1-1 系统框图2、单片机简介STC89C52是STC公司生产的一种低功耗、高性能CMOS 8位微控制器,具有

    4、8K在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,有512字节RAM,32位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外STC89C52还可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。其直插式芯片

    5、引脚图及内部结构如图2-1图所示。图 2-1STC89C52单片机具体信息如下:1. 增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051;2. 工作电压:5.5V3.3V(5V单片机)/3.8V2.0V(3V单片机);3.工作频率范围:040MHz,相当于普通8051的080MHz,实际工作频率可达48MHz4. 用户应用程序空间为8K字节;5. 片上集成512 字节RAM;6. 通用I/O口(32个),复位后为:P0/P1/P2/P3是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。7

    6、. ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程 序,数秒即可完成一片;8. 具有EEPROM 功能;9. 共3个16位定时器/计数器,即定时器T0、T1、T2;10.外部中断4路,下降沿中断或低电平触发电路,Power Down 模式可由外部中断低电平触发中断方式唤醒;11. 通用异步串行口(UART),还可用定时器软件实现多个UART;12. 工作温度范围:-40+85(工业级)/075(商业级);13. PDIP封装。STC89C52芯片实物图如下图所示:3 硬件电路设计3.1测温电路采用D

    7、S18B20数字式温度传感器。DS18B20是美国DALLAS半导体公司推出的第一片支持“一线总线”接口的温度传感器,它具有微型化,低功耗,高性能,抗干扰能力强,易配微处理器等优点,可直接将温度转化成数字信号处理器处理。测量的温度范围是55125,测温误差0.5。可编程分辨率912位,对应的可分辨温度分别为0.5,0.25,0.125和0.0625。相较热电偶传感器而言可实现高精度测温3.2矩阵键盘采用的按键是独立的立式4引脚按键。3.3显示电路采用的是共阴极7段数码管。由于一般的数码管每一段亮至少需要10个毫安的电流,而单片机的I/O口送不出如此大的电流,所以我们需要加数码管的驱动电路,可以

    8、用上拉电阻的方法,也可以使用专门的驱动芯片。由于我们使用的开发板使用的是74HC573,其输出电流较大,足够点亮数码管。3.4执行电路SSR-40 DA固态继电器4系统软件设计4.1软件程序设计整个温度控制系统的软件程序由主程序、中断服务程序和子程序三部分组成。其中主程序主要是对系统的运行进行初始化,包括实现各种参数的初始化,使显示,键盘,报警装置等部分开始工作,最后是控制电加热炉的正常运行。而系统初始化包括设置控制量的初始值、采样周期、中断方式和状态、定时器的工作状态,中断的开关等。主程序中也要实现数据采集的任务,通过调用数据采集的子函数,检测出电加热炉的炉温信号,讲采集到的温度值显示到数码

    9、管上,同时调用键盘设置的子函数,获取设置的温度,显示在数码管的另外三位,最后根据采集到的温度,与设定温度值,调用PID算法子函数,进行PID计算,输出的结果进入到中断函数中,以影响、产生的PWM波的占空比,从而就可利用PWM波对炉温进行控制。主程序流程图如下图所示。开始系统控制参数的初始化化电阻加热炉的实时温度采集和设置温度的获取实际温度与设置温度的显示以及报警装置的工作与否实际温度与设定温度差值是否大于5? Y调用PID算法全功率加热开定时器中断显示子程序:开始数据转换为七段码译码选择显示位子程序返回PWM波子程序:进入中断程序timer=0Timer=PID结果? NYIO口输出0IO口输

    10、出1Timer+,Timer=100? N返回采样温度4.2算法设计电阻加热炉是一个非线性、时变系统,所以在本控制系统中采用的是智能控制算法,即PID控制算法,通过对于设定温度与实际温度的差值的比例,微分,积分三者结合得到的算法结果来控制执行机构的执行状态,从而可以让控制系统中的控制时间,超调量,滞后反应以及最后的稳定程度都能有较明显的改善。4.2.1 PID算法参数整定在PID算法中,最重要的就是对于三个控制参数即KP,KI,KP的整定,以下是PID的整定过程。整定方法:临界比例度法1. 构建闭环回路,确定稳定极限。2. 根据公式计算控制器参数。稳定极限是由P原件决定的。当出现稳态振荡时就达

    11、到这个极限。产生临界振荡增益K和临界振荡周期T。确定两个参数之后通过下表来确定其他参数。首先建立闭环系统,采用阶跃输入,不加PID控制器及其仿真输出,如下图所示:先使积分和微分系数为0,即只有比例控制,调节P参数,使系统出现稳态振荡,当时,等到下图所示曲线:由上图可知,临界振荡增益:K=1.5;临界振荡周期T=750.35-447.25=303.1,计算PID参数如下:输入相应PID参数得到如下输出:由上面输出结果可知,还有一定的超调量,所以将积分系数适当减小,比例和微分系数进行微调,最后当时曲线如下图所示。5、控制系统测试过程5.1开环测试5.1.1 开环测试1设定温度T:60进入2时间t:

    12、860 S最大超调量:测试曲线图如下图所示:5.1.2 开环测试2设定温度T:60进入2时间t:840 S最大超调量:测试曲线图如下图所示:5.2 PID参数调节5.2.1最终PID参数及测试曲线设定温度T:60进入2时间t:600 SPID参数:P=0.9,I=0.005,D=33最大超调量:测试曲线图如下图所示:设定温度T:60进入2时间t:640 SPID参数:P=0.9,I=0.005,D=33最大超调量:测试曲线图如下图所示:5.2.2最终PID参数测试其他温度设定温度T:80进入2时间t:320 SPID参数:P=0.9,I=0.005,D=33最大超调量:测试曲线图如下图所示:5

    13、.2.3 进入PID温度调节的测试55时进入PID调节设定温度T:60进入2时间t:860 SPID参数:P=0.9,I=0.005,D=33最大超调量:测试曲线图如下图所示:50时进入PID调节设定温度T:60进入2时间t:680 SPID参数:P=0.9,I=0.005,D=33最大超调量:测试曲线图如下图所示:57时进入PID调节设定温度T:60进入2时间t:700 SPID参数:P=0.9,I=0.005,D=33最大超调量:测试曲线图如下图所示:5.2.4 其他PID温度调节的测试设定温度T:60进入2时间t:940 SPID参数:P=1.2,I=0.005,D=33最大超调量:测试

    14、曲线图如下图所示:设定温度T:60进入2时间t:820 SPID参数:P=1.7,I=0.015,D=650最大超调量:测试曲线图如下图所示:设定温度T:60进入2时间t:980 SPID参数:P=2.2,I=0.015,D=650最大超调量:测试曲线图如下图所示:设定温度T:60进入2时间t:400 SPID参数:P=2.5,I=0.015,D=650最大超调量:测试曲线图如下图所示:设定温度T:60进入2时间t:620 SPID参数:P=2.5,I=0.015,D=650最大超调量:测试曲线图如下图所示:6、单片机程序清单:#include#include #include #includ

    15、e #define uchar unsigned char#define uint unsigned intsbit PWM=P21; /控制产生PWM波sbit DS=P22; /连接DS18B20传感器sbit beep=P23; /控制蜂鸣器接口sbit dula=P26; /段选控制接口sbit wela=P27; /位选控制接口unsigned int temp,shangxian,xiaxian,max_temp=1000,min_temp=0; unsigned char adval; / sign of the result positive or negativeunsign

    16、ed int i=100;unsigned int j,k,temp,key1,key2,key3,key11,set_temper,timer1,num1;double PID;unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/0-f 不带小数点编码unsigned char code table1=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd, 0x87,0xff,0xef; / 带小数点编码。unsig

    17、ned int rout; / PID 输出 unsigned int rin; / PID 输入(实际温度)unsigned int realtemp; unsigned int Proportion; / 比例常数unsigned int Integral; / 积分常数unsigned int Derivative; / 微分常数 unsigned int TError; / 温度误差unsigned int TDerror; /温度误差的误差unsigned int Tout; /温度输出值/* 函 数 名 : PIDInit()* 函数功能 : PID参数初始化* 输 入 : 无*

    18、输 出 : 无*/void PIDInit ( void ) realtemp=rin;TError=0;TDerror=0;Proportion = 1.2; / 设置PID参数 Integral =0.005; Derivative =33; Tout = 0 ; / 设置PID定点 Set PID Setpoint /* 函 数 名 : PIDCalc()* 函数功能 : PID计算* 输 入 : rin:实际温度* 输 出 : Tout*/unsigned int PIDCalc( unsigned int rin ) /NextPoint=rin,监测到的温度 unsigned in

    19、t ddError,dError,Error;realtemp= rin; Error = set_temper - realtemp; / 温度的偏差dError= Error-TError; /温度偏差的偏差ddError=dError-TDerror; /温度偏差的偏差的偏差TError=Error;TDerror=dError;Tout=Tout+(Proportion*dError+Integral*Error+Derivative*ddError);if (Toutmax_temp-1)Tout=max_temp;if (Tout0;j-) for(k=125;k0;k-);voi

    20、d dsreset(void) /发送初始化及复位信号 uint i; /DS18B20 初始化 DS=0; i=103; while(i0)i-; DS=1; i=4; while(i0)i-;bit tmpreadbit(void) /read a bit读一位 uint i; bit dat; DS=0;i+; /i+ for delay 小延时一下 DS=1;i+;i+; dat=DS; i=8;while(i0)i-; return (dat);uchar tmpread(void) /read a byte date 读一个字节 uchar i,j,dat; dat=0; for(

    21、i=1;i=8;i+) j=tmpreadbit(); dat=(j1); /读出的数据最低位在最前面,这样刚好一个字节在DAT里 return(dat); /将一个字节数据返回void tmpwritebyte(uchar dat) /写一个字节到 DS18B20 里 uint i; uchar j; bit testb; for(j=1;j1; if(testb) /write 1 写1部分 DS=0; i+;i+; DS=1; i=8;while(i0)i-; else DS=0; /write 0 写0部分 i=8;while(i0)i-; DS=1; i+;i+; void tmpc

    22、hange( ) /DS18B20 begin change 发送温度转换命令 dsreset(); /初始化 DS18B20 delay(2); /延时 tmpwritebyte(0xcc); /跳过序列号命令 tmpwritebyte(0x44); /发送温度转换命令/* 函 数 名 : tmp()* 函数功能 : 返回温度函数* 输 入 : 无* 输 出 : temp:当前温度*/uint tmp() /get the temperature 获得温度 float tt; uchar a,b; dsreset(); delay(1); tmpwritebyte(0xcc); tmpwri

    23、tebyte(0xbe);/发送读取数据命令 a=tmpread(); /连续读两个字节数据 b=tmpread(); temp=b; temp=8; /two byte compose a int variable temp=temp|a; /两字节合成一个整型变量。 tt=temp*0.0625;/得到真实十进制温度值,因为 DS18B20可以精确到 0.0625 度,所以读回数据的最低位代表的是0.0625 度。 temp=tt*10+0.5; /放大十倍,这样做的目的将小数点后第一位也转换为可显示数字,同时进行一个四舍五入操作。 return temp;/返回温度值/* 函 数 名 :

    24、 display()* 函数功能 : 数码管显示* 输 入 : num:设置温度,temp:实际温度* 输 出 : 无*/void display(unsigned int num,unsigned int temp) /num和temp都是一个三位数,如392,则实际温度为39.2度unsigned int A1,A2,A3,A2t ;unsigned int B1,B2,B3,B2t ; A1=num/100; A2t=num%100; A2=A2t/10; A3=A2t%10; B1=temp/100; B2t=temp%100; B2=B2t/10; B3=B2t%10;/*/温度显示 dula=0; P0=tableB1;/显示十位 dula=1; dula=0; wela=0; P0=0x7e; wela=1; wela=0; delay(1); dul


    注意事项

    本文(基于PID控制算法的电阻加热炉温度控制系统设计-本科毕业设计论文.doc)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开