水温控制系统

上传人:油*** 文档编号:158208231 上传时间:2022-10-03 格式:DOCX 页数:36 大小:187.18KB
收藏 版权申诉 举报 下载
水温控制系统_第1页
第1页 / 共36页
水温控制系统_第2页
第2页 / 共36页
水温控制系统_第3页
第3页 / 共36页
资源描述:

《水温控制系统》由会员分享,可在线阅读,更多相关《水温控制系统(36页珍藏版)》请在装配图网上搜索。

1、设计报告1.设计原理水温控制系统以STC89C52单片机作为控制核心,采 用开关控制和PID控制算法相结合,通过控制单位时间内加热 时间所占的比例(即控制波形占空比)来控制水的加热速度,实 现对1L水的全量程(10C 70C )内的升温、降温功能 的自动控制。根据设计要求系统可划分为控制模块、温度测量模 块、水温调节模块、键盘输入模块、显示电路模块等。系统原理 图如图所示STC89C52首先写命令给DS18B20开始转换数 据,将转换后的温度数据送入8 9C52进行处理,处理后在液 晶屏上实时显示。并将实际测量温度值与键盘设定值进行比较, 根据比较结果进行温度调节,当温差比较大时采用开关量调节

2、, 既全速加热和制冷,当温差小时采用PID算法进行调节,最终 达到温度的稳定控制。其中,加热采用内置(水中)电加热器实 现,热量直接与水传递,加热效果好,控温方便;降温采用半导 体制冷片实现。其体积小,安装简单,易于控制,价格便宜,可 短时间内反复启动,但其制冷速率不高,所以设计中配套散热风 扇以达到快速降温的目的。2 .温度控制算法实际温度控制系统,常采用开关控制或数字PID控制方式。 开关控制的特点是可以使系统以最快的素的向平衡点靠近,但在 实际应用却很容易造成系统在平衡点附近震荡,精度不高;而数 字PID控制具有稳态误差小特点,实用性广泛的特点,但误差 较大时,系统容易出现积分饱和,从而

3、份致系统出现很大的超调 量,甚至出现失控现象。 因此,本设计将开关控制, 放积分饱和、 防参数突变积分饱和等方法溶入PID控制算法组成复式数字P ID控制方法,集各种控制策略的优点,既改善了常规控制的动 态过程又保持了常规控制的稳态特性。2.1 控制算法的确定温度控制过程为 : 当水温温差大时,采用开关控制方式迅速减 小温差,以缩短调节时间;当温差小于某一值后采用 PID 控制方 式,以使系统快速稳定并保持系统无静态误差。在这种控制方法 中, PID 控制在较小温差时开始进入,这样可有效避免数字积分 器的饱和。PID参数和被控制对象关系密切,要精确得到被控对象 模型比较困难, 为此,采用离线模

4、糊整定的方法来确定 PID 参数, 即给出一组 PID 参数的初值,测得相应的数据,按使这个量减小 的方向调节 PID 参数,用整定后的参数控制该系统,并根据输出 的调节时间、超调量及稳态误差,调节 PID参数,如此反复,求 得一组使系统性能最优的 PID参数。复合PID控制系统方框图如 图所示。2.2PID控制算法根据设计要求,系统对1L净水进行加热或降温处理,根据水 的对象特性,会出现惯性温度误差问题,原因如下:温度控制器采用发热丝对水进行加热。发热丝通电加热时, 内部温度很高。当容器内水温升高至设定温度时,温度控制器发 出信号停止加热。但这时发热丝的温度会高于设定温度,发热丝 还将继续对

5、对水进行加热,导致水的温度还会继续上升几度,然 后才开始下降。当水温下降到设定温度的下限时,温度控制器又 发出加热信号,开始加热,但发热丝要把温度传递到被加热器件 需要一定的时间,导致水温会继续下降几度。所以,为了对水温 实现精确控制,使温度测量误差在士 0.5 C内,必须采用PID模 糊控制算法,通过Pvar、Ivar、Dvar (比例、积分、微分)三方面 的结合形成一个模糊控制来解决惯性温度误差问题。利用数值逼近方法,在采样时刻t=iT(T为采样周期,i为正 整数)时,PID调节规律可通过下式近似计算。则增量式PID算法的输出量为:T T.皿=叫=+产号(丁 2 J十3I式中,ei、ei-

6、1、ei-2分别为第n次、n-1次和n-2次的偏 差值,Kp Ti、Td分别为比例系数、积分系数和微分系数, T为 采样周期。单片机每隔固定时间T将现场温度与用户设定目标温度的差 值带入增量式PID算法公式,由公式输出量决定 PWM方波的占空 比,后续加热电路根据此 PWM方波的占空比决定加热功率。现场 温度与目标温度的偏差大则占空比大,加热电路加热功率增大, 使温度的实测值与设定值的偏差迅速减少;反之,二者的偏差小 则占空比减小,加热电路加热功率减少,直至目标值与实测值相 等,达到自动控制的目的。2.3PID参数的确定PID参数的选择是设计成败的关键,它决定了温度控制的准确 度。由于温度系统

7、是一个具有较大滞后性的系统,所以本系统的 采样周期定为10秒,加热周期定为1秒钟,根据一些文献提供的 经验值,初步确定 Kp=2 Ti=2,Td=0.5,根据公式Ki= Kp*T/ TI ; Kd = Kp * TD /T ;计算得出Ki=1,Kd=1;然后,由按键对系统设定 一个温度值,在线应用工程整定法中的经验法对P,I,D各参数进行调整,经验法是一种凑试法,它通过模拟或闭环运行,观察调 节过程的响应曲线,如果曲线不够理想,则按某种程序将参数反 复凑试,直到调节质量满意为止。凑试程序通常是先比例后积分,最后加入微分。凑试法整定 PID 参数的步骤是:1)首先进行 P 整定。将参数 Kp 由

8、小而大慢慢变化,直至得 到反应快,超调小的响应曲线。若无静差或静差在允许范围内且 响应曲线满意,整定结束,否则继续下步。2)进行 PI 整定。略小于 Kp 值,将 Ti 由大而小缓慢变化, 在保持系统动态性能良好的前提下,消除静差或是静差允许范围 内。反复改变 Kp,Ti 值以求得较好效果,若效果满意,则整定结 束,否则继续下去。3)进行 PID 整定。略改变 Kp,Ti 的值,使 Td 由小而大缓慢 变化,以求得较好的响应曲线和较小的静差。逐步反复的试凑, 直至获得满意效果为止。对于一定的系统,合理的参数组并不唯一,根据一 些文献的实践经验,在具体实施 PID 参数整定时,以下几个结论 比较

9、实用:1)比例系数Kp是PID调节中最关键的一个参数,Kp增大, 系统稳定性增加,但调节灵敏度减弱,一般曲线振荡频繁时,要 增大Kp,而曲线飘浮绕大弯时,要减小 Kp.2)积分时间常数 Ti 主要起消除静差的作用,减小 Ti ,消除 静差快, 但稳定性减小,一般曲线偏离恢复慢时,减小 Ti, 而曲线 波动周期长时,再增大 Ki 。3)微分时间常数 Td 是加速过程的有力调节,在加速过渡过 程,应增加Td,Td不宜过小,也不宜太大,Td一般选Ti的四分之一为最佳根据以上调节的步骤及调节的方法及经验,经过反复的试验 做后得到最终的 P,I,D 的参数为 Kp=30,Ki=5,Kd=0.3. 硬件电

10、路设计水温控制系统的硬件电路主要包括:主控电路、温度采集电 路、温控电路和显示电路等,下面依次对各部分进行设计。 3.1 主控电路主控电路采用STC89C5单片机作为系统控制器,结合数字PID 算法完成对温度测量信号的接收、处理,控制加热器和制冷片, 使水温控制达到设计要求。主控电路包括 STC89C5最小系统和键 盘电路两部分,STC89C52最小系统在上一章中已介绍,这里不再 赘述。本设计键盘采用RF-X1开发板上的6个独立按键中的4个, 各按键经上拉电阻分别接到单片机的 P3.2、P3.3、P3.4、P3.5 口 上,起到确认、选择、上调和下调的作用,每按上调或下调键一 次,设定温度值加

11、 1 或减 1。电路图如图所示。+5VS1S2S3S4广|R61广62广|R63广10K10K10K10KP32P33P34P36C2C3卄22Pf卄22pFY112MHZ,P10POO,P11P01,P12P02.P13P03.P14P04.P15P05,P16P06,P17P07INT1P20INTOP21P22,T1P23.T0P24P25EA/VPP26P27,X1.X2 RESETRXDTXDRDALE/PWRPSENU11345678131215143119189STC89C5238373635343332212223242526272810113029+5VC110uFS19oR

12、110KD940013.2温度采集电路本系统采用DS18B20单总线可编程温度传感器来实现温度的 采集和转换,温度以912位数字量读出,可以直接与单片机进 行连接,无需外部器件和电源,大大简化了电路的复杂度。DS18B20 应用广泛,测温范围为-55+ 125OC温度数字量转换快,性能可 以满足题目的设计要求。DS18B2啲测温电路如图所示。3.3温度控制电路温度控制电路采用加热器和制冷片对 1L水实现加热和降温, 具体电路如图12-5所示。当实测温度高于设定温度时,单片机P0.2 脚输出低电平,光耦管导通输出高电平,进入LM393管脚比较整形,滤除高次谐波,输出高电平,进入Q3和Q4组成的推

13、挽电路, Q3导通Q4截止,输出低电平,晶闸管导通,驱动制冷片降温。当 实测温度低于设定温度时,P0.3脚输出低电平,驱动加热器对水 温进行加热,工作原理与降温驱动相同。3.4显示电路显示电路采用LCD12864液晶模块显示系统的设定温度和实测 温度。LCD12864液晶共有20个引脚,管脚名称及功能如表 12-1 所示。本系统选用单片机 P1 口作为数据输出端与LCD12864的数 据端(DB0- DB7相连,进行水温数据传输;P20接串并行模式方 式位RS P21接并行的读写方式位 R/W P22接并行使能端口 E; P23接并/串行接口选择位PSB P24接复位端口 RST具体电路图 如

14、图所示。LCD12864Q CWA SASQrMBA: V r y n - f- I- f-4.软件设计系统的软件设计应用c语言,采用模块化对单片机进行编程 实现各项功能。主要包括:PID控制程序、按键子程序、温度采集 子程序、温度比较子程序和液晶显示程序。4.1主程序设计系统上电初始化后,首先进行按键扫描,若有按键按下,则 读取按键值,更新设定温度。将实测温度与设定温度进行比较, 若实测温度与设定温度差值大于 2o C,则对水进行全速加热或降 温;若实测温度与设定温度差值小于 2o C,则调用PID子程序, 对水温进行微调,达到设计要求。系统主程序流程图如图所示.附录:PID 控制程序PID

15、 控制就是按设定值与测量值之间偏差的比例、偏差的 积累和偏差变化的趋势进行控制。 它根据采样时刻的偏差值计 算输出控制量的增量, 调节控制信号的导通时间来控制加热电 路和冷却电路的工作。当采样周期相当短时,可以用求和代替 积分,用差商代替微分。PID控制子程序如下:/*PID算法*unsigned int PIDCalc( struct PID *pp, unsigned int NextPoint )unsigned int dError,Error;Error = pp-SetPoint - NextPoint; /偏差pp-SumError += Error; / 积分dError =

16、pp-LastError - pp-PrevError; /当前微分pp-PrevError = pp-LastError;比例pp-LastError = Error;return (pp-Proportion * Error/+ pp-Integral * pp-SumError / 积分项+ pp-Derivative * dError); / 微分项 /*/按键子程序 本系统采用四个按键, 完成温度的设定。当选择键K1每按下一次,K1num加1,根据K1num 值选择对温度值的百位(预留) 、十位、个位进行数值调节。每按一次按键K2,对应位数值加1,每按一次按键K1,对应位 数值减 1

17、,并将设定温度值写到液晶显示器的相应位置。按键子程序如下:/*按键子程序*void sheding()if(k1=0)delay1(10);if(k1=0) / 按键 K1 按while(!k1);/ 按键 K1write_com(0x0f);write_com(0x94);k1num+;switch(k1num)case 1:write_com(0x0f);write_com(0x94);/液晶显示位置,十位2:3:break; case write_com(0x95);/ 液晶显示位置,个位break;casewrite_com(0x96);/ 液晶显示位置,小数位 break;case

18、4: k1num=0;write_com(0x0c);/ 清零 break;if(k1num!=0)/ 返回shi+;if(shi=10)shi=0;a=shi;/ate(tableshi);write_com(0x94);ge+;if(ge=10)ge=0;b=ge;/if(k2=0) / 按键 K2 按delay1(10); if(k2=0) while(!k2);switch(k1num)case 1: 十位加 1,到 10 清零 write_com(0x94);write_dbreak;case 2:个位加 1,到 10 清零write_com(0x95);write_date(tab

19、lege);write_com(0x95);break;case3:xs+;if(xs=10)xs=0;c=xs;/ 小数位加 1,到 10 清零 write_com(0x96);write_d ate(.);write_date(tablexs);write_com(0x96);/ 在 液 晶对应位置画点break;/ 温度值减处理:if(k3=0)delay1(10);if(k3=0)while(!k3);switch(k1num)case 1:shi-;if(shi=-1)shi=9;a=shi;write_com(0x94);write_date(tableshi);write_com

20、(0x94 );break; case 2: ge-;if(ge=-1)ge=9;b=ge;write_com(0x95); write_date(tablege);write_com(0x95);break; case 3: xs-;if(xs=-1)xs=9;c=xs;write_com(0x96);write_date(.);write_date(tablexs) ;write_com(0x96);break;/*/DS18B20温度采集子程序系统采用 DS18B20对1L水的温度进行采集。首先根据DS18B20勺工作时序对其进行初始 化,并对DS18B2C内部寄存器读写操作进行定义。系

21、统工作时, 单片机读取DS18B2C内部寄存器的二进制数值,将其转化为十 进制的真实温度值。DS18B2C温度采集子程序如下:*void init_DS18B20()/ 初始化uchar x=0;DS18B20 = 1; /DQ复位delay(8); / 稍做延时DS18B20= 0; / 单片机将DQ拉低delay(80); / 精 确 延 时DS18B2C温度采集子程序*大于 480usDS18B20= 1; / 拉高总delay(14);x=DS18B20; / 稍做延时后 如果 x=0 则初始化成功 x=1 则初始化失败delay(20);一个字节uchar read_onechar(

22、)/ 读uchar i=0;uchar date = 0;for (i=8;i0;i-)DS18B20 = 0;date=1; / 寄存器右DS18B20 = 1;if(DS18B20)date|=0x80;delay(4);return(date);void write_onechar(uchardate)/ 写一个字节uchar i=0;for (i=8; i0; i-)DS18B20 = 0;DS18B20 = date&0x01;delay(5);DS18B20 = 1;date=1;uint read_temp()/ 读取温 uchar a=0;uchar b=0;uint t=0;

23、float tt=0;init_DS18B20();write_onechar(0xcc);/write_onechar(0x44); / 启动温度转换init_DS18B20();write_onechar(0xcc); / 跳过读序号列号的操作write_onechar(0xbe);/读取温度寄存器a=read_onechar();/连续读两个字节数据 / 读低 8 位b=read_onechar();/ 读高 8 位t=b;ttemper)/ 是否设置的温度大于实际温度if(set_temper-temper2) / 设置的温度比实际的温度是否是大于 2 度high_time=100;

24、/如果是,则全速加热low_time=0;else / 如果是在 0.8 到8)于 0.8 度,运行 PID 计算if(set_temper-temper0.high_time=0;low_time=100;else / 如果温差小for(i=0;i10;i+)s=read_temp();rin = s; /Read InputroutPIDCalc ( &spid,rin ); / Perform PID Interation if(high_time=100)high_time=(unsigned char)(rout/1000); elsehigh_time=100;low_time=(

25、100-high_time);elseif(set_temper=temper) /是否设置的温度小于实际温度if(set_temper-temper0)high_time=0; low_time=100; / 全速降温else / 实际温度大于 设定温度,马上开启 PID 计算 for(i=0;i10;i+) s=read_temp();rin = s; / Read Inputrout = PIDCalc( &spid,rin ); / Perform PID Interationif(high_time100)high_time=(unsigned char)(rout/10000);

26、else high_time=0; low_time= (100-high_time);/*液晶显示程序 液晶显示器用于显示水温的实际温度和设定温度。首先对 LCD12864进行初始化,并读 取控制器当前状态,判断是否准备好(空闲) 。然后向液晶模 块写入指令代码,进行显示准备,将要水温以十六进制代码的 形式送入液晶显示缓冲区, 最后利用读显示数据指令控制液晶 模块在相应位置显示水温数据。液晶显示程序如下:/*LCD12864 初始化*void init_lcd()/lcd_psb=1;write_com(0x34);/扩充指令集delay1(2);write_com(0x30);/基本指令集

27、delay1(2);write_com(0x02);/显示归位delay1(2);write_com(0x01);/清屏显示delay1(2);write_com(0x0c);/显示状态开关delay1(2);write_com(0x06);/显示光标移动设置delay1(2);*写数据 */void write_date(uchardate)read_busy(); lcd_rs=1; delay(5); lcd_rw=0; delay(5); lcd_date=date; lcd_en=0; delay(5); lcd_en=1; delay(5); lcd_en=0; delay(5);

28、/*写指令 */void write_com(ucharcom)read_busy(); lcd_rs=0; delay(5); lcd_rw=0; delay(5); lcd_date=com; lcd_en=0; delay(5); lcd_en=1; delay(5); lcd_en=0; delay(5);*/*判断忙闲状态 *uchar read_busy() lcd_date=0xff; lcd_rs=0; delay(5); lcd_rw=1;delay(5);lcd_en=1;delay(5); while(lcd_date&busy); lcd_en=0;delay(5);

29、return(lcd_date);/*清除液晶GDRA中的随机数据*/void clear_GDRAM()uchar i,j,k;write_com(0x34);/ 打开扩展指令集i = 0x80; for(j = 0;j 32;j+) write_com(i+);write_com(0x80);for(k0;k 16;k+)write_date(0x00);i = 0x80;for(j = 0;j 32;j+) write_com(i+);write_com(0x88);for(k= 0;k 16;k+)write_date(0x00);write_com(0x30);/ 回到基本指令集定位

30、置显示一串字符( X- 列; Y- 行) */void display_listchar(uchar X, uchar Y, uchar code *date)uchar ListLength,X2;ListLength = 0;X2=X;if(Y4)Y=4;X &= 0x0F; / 限制 X 不能 大于 16,Y 在 1-4 之内switch(Y)case 1:X2|=0X80;break; / 根据行数来选择相应地址case 2:X2|=0X90;break;case3:X2|=0X88;break;case4:X2|=0X98;break;址码write_com(X2); / 发送地若到达字串尾则退出while(dateListLength=0x20) /if (X = 0x0F) /X 坐标应小于 0xF write_date(dateListLength);ListLength+;X+;delay1(2);/*

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!