ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:25.59KB ,
资源ID:19249557      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19249557.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(水温控制系统Word格式文档下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

水温控制系统Word格式文档下载.docx

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

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

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

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

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

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

7、、上调和下调的作用,每按上调或下调键一次,设定温度值加 1 或减 1。电路图如图所示。+5VR6110K62R63R65S1 U1S2S3S4P32P33P3412345678P10P11P12P13P14P15P16P17P00P01P02P03P04P05P06P073938373635343332C222pFC3P36Y112M HZ13121514311918INT1INT0T1T0EA/VPX1X2P20P21P22P23P24P25P26P27212223242526272822Pf91716RESETRDWRRXDTXDALE/PPSEN10113029STC89C52C1 R1

8、10K 10uFS19 D940012.2 温度采集电路本系统采用 DS18B20单总线可编程温度传感器来实现温度的采集和转换,温度以 912 位数字量读出,可以直接与单片机进行连接,无需外部器件和电源, 大大简化了电路的复杂度。 DS18B20应用广泛,测温范围为 -55+125oC,温度数字量转换快,性能可以满足题目的设计要求。 DS18B20的测温电路如图所示。U2GND 2 P35DQR572.3K DS18B203.2 温度控制电路温度控制电路采用加热器和制冷片对 1L 水实现加热和降温,具体电路如图 12-5 所示。当实测温度高于设定温度时, 单片机 P0.2脚输出低电平,光耦管导

9、通输出高电平,进入 LM393管脚比较整形,滤除高次谐波, 输出高电平, 进入 Q3和 Q4组成的推挽电路,Q3导通 Q4截止,输出低电平,晶闸管导通,驱动制冷片降温。当实测温度低于设定温度时, P0.3 脚输出低电平,驱动加热器对水温进行加热,工作原理与降温驱动相同。CON2+5V +5V +12V 2 1R21KR4R5R10KDNGS+12V 150WQ4MPS8550U3 8U1AP02 3 2R1120KM2RF470LM393R64 D1Q3MPS8050D2U4R7Q2U2A 3 R121M1R3R8R9R13Q1电热丝500WD34 2220V/50Hz +12VBRIDGE1

10、3.4 显示电路显示电路采用 LCD12864液晶模块显示系统的设定温度和实测温度。LCD12864液晶共有 20 个引脚,管脚名称及功能如表 12-1所示。本系统选用单片机 P1 口作为数据输出端与 LCD12864的数据端(DB0DB7)相连,进行水温数据传输; P20接串并行模式方式位 RS;P21 接并行的读写方式位 R/W;P22接并行使能端口 E;P23接并/ 串行接口选择位 PSB;P24接复位端口 RST。具体电路图如图所示。2.4 软件设计系统的软件设计应用 C 语言,采用模块化对单片机进行编程实现各项功能。主要包括: PID 控制程序、按键子程序、温度采集子程序、温度比较子

11、程序和液晶显示程序。3.3 主程序设计系统上电初始化后,首先进行按键扫描,若有按键按下,则读取按键值,更新设定温度。将实测温度与设定温度进行比较,若实测温度与设定温度差值大于 2o C,则对水进行全速加热或降温;若实测温度与设定温度差值小于 2o C,则调用 PID 子程序,对水温进行微调,达到设计要求。系统主程序流程图如图所示 .开始初始化键盘扫描是否有 N新参数键入Y读按键值并更新各参数显示当前温度值温控判断方式测量值与设定值差2 以上温差 N2oC以下加热/制冷子程序调用PID子程序附录:PID 控制程序PID 控制就是按设定值与测量值之间偏差的比例、偏差的积累和偏差变化的趋势进行控制。

12、 它根据采样时刻的偏差值计算输出控制量的增量, 调节控制信号的导通时间来控制加热电路和冷却电路的工作。当采样周期相当短时,可以用求和代替积分,用差商代替微分。PID 控制子程序如下:/*PID 算 法*/unsigned int PIDCalc( struct PID *pp, unsigned intNextPoint )unsigned int dError,Error;Error = pp-SetPoint - NextPoint; / 偏差pp-SumError += Error; / 积分dError = pp-LastError - pp-PrevError; / 当前微分Prev

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

14、sheding()if(k1=0)delay1(10);if(k1=0) / 按键 K1按下while(!k1);/ 按键 K1抬起write_com(0x0f);write_com(0x94);k1num+;switch(k1num)case 1:/ 液晶显示位置,十位break;case 2:write_com(0x95);/ 液晶显示位置,个位case 3:write_com(0x96);/ 液晶显示位置,小数位case 4:k1num=0;write_com(0x0c);/ 清零if(k1num!=0)/ 返回/ 温度值加处理:if(k2=0) / 按键 K2按if(k2=0)k2);

15、shi+;if(shi=10)shi=0;a=shi;/ 十位加 1,到 10 清零write_date(tableshi);ge+;if(ge=10)ge=0;b=ge;/ 个位加 1,到 10 清零;write_date(tablege);write_com(0x95);xs+;if(xs=10)xs=0;c=xs;/ 小数位加 1,到 10 清零ate(.write_date(tablexs);/ 在液晶对应位置画点/ 温度值减处理:if(k3=0)k3);shi-;if(shi=-1)shi=9;write_date(tableshi);write_com(0x94ge-;if(ge=

16、-1)ge=9;xs-;if(xs=-1)xs=9;write_date(write_date(tablexs)*/DS18B20温度采集子程序系统采用 DS18B20对 1L 水的温度进行采集。 首先根据 DS18B20的工作时序对其进行初始化,并对DS18B20内部寄存器读写操作进行定义。 系统工作时,单片机读取 DS18B20内部寄存器的二进制数值, 将其转化为十进制的真实温度值。DS18B20温度采集子程序如下:/*DS18B20温度采集子程序 */void init_DS18B20()/ 初始化uchar x=0;DS18B20 = 1; /DQ 复位delay(8); / 稍做延时

17、DS18B20= 0; / 单片机将 DQ拉低delay(80); / 精 确 延 时大于 480usDS18B20= 1; / 拉高总线delay(14);x=DS18B20; / 稍做延时后 如果 x=0 则初始化成功 x=1 则初始化失败delay(20);uchar read_onechar()/ 读一个字节uchar i=0;uchar date = 0;for (i=8;i0;i-)DS18B20 = 0;date=1; / 寄存器右移if(DS18B20)date|=0x80;delay(4);return(date);void write_onechar(uchardate)/

18、 写一个字节 i i-)DS18B20 = date&0x01;delay(5);uint read_temp()/ 读取温度 uchar a=0;uchar b=0;uint t=0;float tt=0;init_DS18B20();write_onechar(0xcc); /跳过读序号列号的操作write_onechar(0x44);启动温度转换write_onechar(0xbe);读取温度寄存器a=read_onechar();连续读两个字节数据 / 读低 8 位b=read_onechar();/ 读高 8 位t=b;ttemper)/ 是否设置的温度大于实际温度if(set_temper-temper2) / 设置的温度比实际的温度是否是大于 2 度high_time=100;如果是,则全速加热low_time=0;else / 如果是在 0.8 到2 度范围,则开始降温0.

copyright@ 2008-2022 冰豆网网站版权所有

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