基于PID控制算法的热水器智能控制_第1页
基于PID控制算法的热水器智能控制_第2页
基于PID控制算法的热水器智能控制_第3页
基于PID控制算法的热水器智能控制_第4页
基于PID控制算法的热水器智能控制_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

绪论1.1器智能控制系统设计的研究意义与目的随着世界科技的发展,世界各国对能源问题越来越受重视,热水器已成为成为我们的生活必不可少的。储水式电热水器.以其无污染、储水量多等特点在众多替代能源中受到青睐。储水式工作时候用环保节能且功率小,对于各方面的要求也低,所以在我国大部分家庭均可使用。储水式电热水器在发达国家早已经普遍了。在我国这个情况并没有发生很大改变如今多数人在使用着太阳能热水器。可是今天随着我国经济的快速发展,储水式热水器将会在我国大面积的使用。可是由于我国各地区的水压情况的不一样,以及加热的不及时。造成了我们所使用热水器时造成的不好影响比如温度调节不及时,水温无法达到,给我们消费者带了不少麻烦因此本课题将以此为研究对象,通过使用PID控制算法的热水器智能控制系统设计,使储水式热水器这一问题得到较好的改善。1.2国内外热水器系统控制研究与现状电热水器有即热式,储水式。而我们大多数家用使用的是储水式热水器,与即热式热水器对比有以下特点:1、需预热,储水量大。2、安全性好,一般家庭线路都可负载3、内部相对于较为简单,维修时较为方便4、同样的容积,价格对比十分低廉。5、预热时间长,加热相对较为慢。热水器在国外多数是用竖式,而国内大多使用横式。而竖式则加热速度快,出水率高,其下层是冷水这样的设计能减少冷水对热水的冲击,符合国外的一个生活习惯。相比之下横式热水器储水量大,洗澡时舒适感能得到大大加强。在热水器的控制上面基于单片机的温度测控系统在检测和控制系统中的应用也越来越广泛所以在基础上国内外对对电热水器的温度有了基本的测量,自动检测和但是对于温度的把控不够精准。温度控制技术机械式:通过多种不同的的组合来实现不同功率的切换拥有显示温度和水位功能,但是不是达到温度水位的自动控制功能。,然后通过调节水的流量大小来决定控制温度,但是由于调节的时候有流量以及功率不同的相互内在的约束,造成调节温度的方法不简便,并存此方式一般为手动控制。虽然在有的热水器产品中添加电加热辅助装置,但是在功能和智能上存在了很多的缺陷,给用户体验带来不好的感觉。例如我们经常使用热水器中有设置2-3个不同功率的加热管对水进行加热,在温度控制的过程中通过对水流量的控制对其进行调整,但是流量调节及温度调节之间存在的影响以及误差,并且我们在其使用的时候无法在温度及流量上同时获得满足,并且温度无法做随流量变化做到微小调整。因此该技术存在不足。电子式:与机械式不同之处在于其有完整的控制结构,如温度传感器,流量传感器,以及在设置了几个不同大功率的加热体然后通过控制芯片及其相关软件来实现对水温的控制。并且在此方式上解决了流量调节及温度调节之间存在的影响以及误差使流量的改变不会对水温产生很大的变化,因此完成了对流量和温度的不同控制。解决了机械方式的缺点,所以在国内外市场上被认可使用。PID控制是比例,积分和微分控制,其结构简单,稳定性极佳,可靠且易于配置,通常是无法完全理解和掌握被控制对象的结构和参数,或者无法建立精确的数学模型时检测时获得的结果当时,通用控制理论及其计算难以接受,因此,目前使用PID控制技术最为简便。当今的底盘温度控制系统广泛用于化学,机械工程,机械工程,制药和其他行业。在试运行及调试过程中,化工产品符合生产工艺和生产要求,具有广阔的应用前景。另外,为了控制可行性,对当前温度值,当前温度趋势和总能量进行采样,以方便控制系统快速识别,提高响应速度并减少温度稳定时间。所以根据以上的优缺点选择使用pid温度控制系统,使水温稳定在一定的设计误差内并提供合适的热水器解决方案。本课题将重点研究储水式电热水器1.3研究内容通过对上面的描述以及对储水式热水器优缺点以及分析了国内的温度控制情况了解现有储水式热水器的一些缺陷,最大的问题就是温度控制精准性不高,稳定性一般,无法快速加热满足人们的日常需求。所以通过使用PID控制算法的热水器温控系统、控制系统及其相关影响参数,实现快速升温以及时刻保证温度的恒定。后续会通过对于材料的选择已经对于电路的分析在pid上的一些参数调整进一步的使这个温控系统更加智能化,简单化。

2热水器智能控制系统的总体方案设计2.1实时温控系统的控制原理能量守恒定律设置流量传感器及温度传感器放入在储水热水器的进水端,随后用通过单片机去获取水温度及流量的值,然后算出一个能量值是温度提升所需要的数值,通过公式将这个得出加热这个温度时候所需要的功率,在通过单片机的控制引脚将功率转换到加热器上。Q=Cm△TM=pv(式2.1)表2.1公式的定义C比热容焦/千克•摄氏度M水的质量kg△t水温变化量°Cp水的密度kg/m3根据流量的定义可知最后推出P=4200×流量X△T/60(流量单位L/min)(式2.2)系统中将水温到达所要求的温度,根据上述公式计算所需功率大小,以达到所需要的温度值,而且为了减少程序中单片机的工作量,把事先算好的记升高一摄氏度所需要的能量,然后罗列好各种数据,当工作的时候单片机检测到的流量后可以直接得系统需要的基础功率,然后提供所需的的功率PID控制原理pid控制基本原理介绍比例环节:基础比例环节缺点为较容易产生稳态的误差;积分环节:消除稳态的误差缺点就是增加了超调量微分环节:加大惯性响应的速度,减弱超调的趋势图2.1典型的闭环控制系统闭环控制系统的传递函数C(S)R在完美的情况下,R(s)和C(s)的传递函数是为1。可是过程的消息的得到的处理都需要一定的时间,这个传递函数为:c(s)RS=2.2总体方案设计图2.2结构系统原理图表2.2系统结构作用1开关阀门(流量调节及关断)2安全阀3接地导体4温度传感器5流量传感器6隔离水电阻7加热丝8加热罐9高温保护器10继电器11控制中心12电流互感器2.2.1加热控制系统加热系统由以下单位所组合:温度传感器:基于控制精确的温度以及快速响应的特点,不采取集成芯片。使用普通的电阻型塑封NTC即可且成本低廉。镍金加热丝:为了使热交换效率高得以实现。采取体积小。镣金加热丝并且其自身的储备热能很小可以无视,因此在突发断水的情况下不会发生温度过冲继电器:继电器用于接收控制中心的控制信号,决定是否对加热丝进行通断2.2.2水路系统开关阀设置在水路系统中,开关阀在此起着重要的作用。它不仅可以打开和关闭水路,还可以用作流量调节的调节器,还可以用作自动触发控制中心工作的输入端口。只要用户打开此开关,整个机器就会启动并进入工作状态,无需任何操作即可获得预先设定的水温。2.2.3安全系统隔电墙:用于出水进水进隔离水电阻,才能在工作220V降至安全电压。接地导体:当水中电压还是存在的适合,用接地导体可以保证电压为0.保证了安全。防干烧:当温度过高或者在局部高温的时候手动控制器将断开电路起到保护作用防烫伤:设置温度传感器,来检测是否达到了温度上限。若是检测温度过高停止加热,保证温度在需要的范围内。防止温度过高烫伤。2.2.4加热技术图2.3从左到右为铠装、镀膜、镍金(1)电热管加热(铠装式)工作原理:其耐高温的材质放在又合金构成的无缝管中均匀的排放这。致密分布的结晶氧化镁粉末填充了间隙。施加电流后,电流流经电阻线并产生热量,随后金属管的温度开始升高,热量通过在其表面加热,然后热量转移到水中达到预想的温度值。优点:能量传递效率高,发热均匀,生产的工艺不复杂,成本相对低;缺点:容易产生污垢,管子极易被腐蚀,(2)石英加热管(镀膜)工作原理:加热器采用乳白色石英玻璃管和经过特殊处理的耐腐蚀合成材料。由其自身的特点可以进行高效率的转换,吸收和升高管中的温度会产生纯硅-氧键的分子振动,从而使95%的可见光和近红外光转换成热能并转移到水中以实现加热。优点分析:传递能量的效率高,对于物体的增温均匀,并且生产工艺简单且成本较低;缺点:耐快速冷却和耐热性差,容易破裂,泄漏,耐压性,长期使用会衰减(3)镍金加热工作原理:自身镍含量极高是普通加热丝的无法达到的,将其放入水中进行加温,工作的环境无隔离层和绝缘层中间。优点:可以将能量几乎达到99以上的传递效率,而且不会产生杂质,适合各种不同的水环境;劣点:价格过高,且工作的适合需要添加隔电墙以防止强电。2.3本章小结本章通过对热水器的加热方式,安全技术,温控方面的研究,对热水器进行了初步的了解,对后面的实验以及设计做好铺垫,特别对于整个的系统以及智能控制做好了准备。

3温控系统硬件电路设计图3.1控制系统总体框架图温控系统控制的构成为:温度的检测模块,单片机控制系统,键盘显示电路和引擎控制单元组成。在本设计中,以AT89C52单片机为主要控制器,形成热水器水温微控制系统。在这设计中使用该传感器使用内置的单级温度敏感传感器DS18B20,该传感器用于确定水温并负责将检测到的水压转换为模拟信号。另一方面,它通过LED显示当前的温度和水位,而且它与设定的温度和水位进行比较和计算,并根据结果发送适当的加热和冷却指令。调节热水器的温度。3.1最小系统应用电路图3.2AT89C52外部管脚排列图AT89C52包括40个引脚关于对于AT89C52主要外部管脚排列介绍:VCC:能提供电压、电流的容器知,如电池,所以也叫电源。gnd:指接地一般为看作为点位为0的导线,通常来说是防止发生触电P0:其组成为锁存器,输入缓冲器,非门与门各一个,以及切换的开关。8位漏极开路型双向I/O口。p0有三个功能:作为数据总线,作为地址总线,不扩展的时候可以当作I/O端口,无法上拉电阻。当作为外部外部扩展存储器的数据地址总线时候从p0输入信号,然后这个信号会通过引脚进入缓冲器从而达到内部总线,p0端口工作的时候若是写入1,则这个时候高电阻会被当作引脚。而当作访问外部程序和数据存储器时,此时p0则具有上拉电阻P1:结构相对简单,它仅仅是作为数据输入或者输出端口作为使用,它与p0端口的主要的不同在于p1端口内部的上拉电阻可替换了p0端口的场效应管v1。并且内部的总线发出输出的信息。表3.1P1口部分引脚的第二功能表引脚号第二功能P1.0T2(定时器/计数器T2的外部计数输入),时钟输出P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)P1.5MOSI(在系统编程用)P1.6MISO(在系统编程用)P1.7SCK(在系统编程用)P2端口:一共有着8个引脚,其作用可以作为:1.输出输入引脚,2外接存储器,3地址总线高八位。其8个引脚的内部电路结构都是一样的没有差别。当使用p2作为输出时候,数据会被cpu用内部总线送到锁存器的去。并且会同步的给锁存器cl送写信号,然后通过一些列的处理从p2端口引脚输出.当作为输入端使用的时候,此时cpu首先会让p2写作1。同时关闭了p2端的输出电路,随后让cpu送一个读引脚的信号,然后三态门被打开这个数据被送到内部总线。P3端口:一共有着8个引脚,其作用可以作为:1.输出输入引脚,2。第二功能其8个引脚的内部电路结构都是一样的没有差别。当p3作为输出时候cpu开始工作首先给锁存器的送写信号,然后内部总线来的信息在通过d进入锁存器然后从q输出。当作为输入端口的时候cpu开始工作给锁储器写1,同时关闭了p3端的输出电路,随后让cpu送一个读引脚的信号,然后三态门被打开这个数据被送到内部总线。.作为第二功能的时候实际也是该端口输入或输出信号只不过是一些特殊功能的信号具体见下图。表3.2P3口引脚第二功能表引脚号第二功能P3.0RXD(串行输入)P3.1TXD(串行输出)P3.2(外部中断0)P3.3(外部中断1)P3.4T0(定时器0外部输入)P3.5T1(定时器1外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器写选通)RST:RESET信号通常用于带有CPU的电路中,这意味着复位和初始化。RESET信号用于在启动时初始化电路,而RESET信号在电路的工作状态异常消失时必须用于重启电路。ALE/PROG:当单片机需要扩展外部的随机存储的内存的时候,ale用于控制把用于控制把P0口的输出低8位地址送锁存器锁存器来PSEN:PSEN是读取外部程序存储器的门控信号。AT89S52存储器:a程序存储器程序存储器一般来说专门对于程序以及常熟来存放的时候使用的。当把这些程序以及常熟放入的时候系统只能运行并且无法重写。关闭系统电源后,程序不会丢失。因此,称之为只读存储器。b数据存储器数据存储的构成为读写存储器ram。作用为运行是的中间数据结果等,at89c52的存储器最大容量扩展到64kb。AT89S52中有6个不同的中断源:两个外部中断(和),定时器有3个用于三个分别得定时中断和一个串行中断。让中断源有效与无效的方法是可以用位置或者删除特殊寄存器中的相关中断。表3.3功能表关于中断允许控制器符号位地址功能EAIE.7中断总允许控制位。EA=0,中断总禁止;EA=1,各中断由各自的控制为设定—IE.6预留ET2IE.5定时器2中断允许控制位ESIE.4串行口中断允许控制位ET1IE.3定时器1中断允许控制位EX1IE.2外部中断1允许控制位ET0IE.1定时器0中断允许控制位EX0IE.0外部中断1允许控制位电源和复位和振荡电路以及扩展部分等部分组成最小系统。图3.3最小系统电路图复位电路:复位的功能是重新启动微控制器,它可以保证当程序出现了混乱失控或崩溃可以让整个系统进入初始化的状态,方便后面工作的展开也因此保证了系统的稳点所以在电路中,只要按下复位后整个系统将会重启,而且恢复了其本身设定好的默认值。每个晶振都存在与振荡电路中,它的作为非常大可以结合单片机电路产生单片机所需的时钟频率,当这个能提供的频率越高,那么单片机的运行速度也是越迅速。其能得到的一切指令都是由于晶振能提供时钟频率晶振存在于振荡电路单片机系统,晶体可以等效于一个电感,并在电容器内部形成一个振荡环路,能量从电感到电容缓慢,然后从电容器到电感,然后形成振荡。正半周期是电容器的充电和放电过程,负半周期是电感器的充电和放电过程。图3.4振荡电路图3.2测温电路在本次设计中使用DS18B20温度传感器,因为其在测量范围较广-55+125摄氏度之间合适并且线路简单而且体积小节约空间,可以应用不同场合的并且改变其外观。并且精度较为准确可达到0.5℃。它具有一定简化电路的作用。我们通过读取DS18B20数字传感器数据线上的数据,并通过一定的运算来实现前温度的读取。图3.5测温电路接线图3.3显示屏输出电路表3.4显示屏引脚说明引脚号功能第1脚VSS为地电源。第2脚VDD接5V正电源。第3脚VL为液晶显示器对比度调整段,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。第6脚E端为使能端,当E端由高电平跳变为低电平时,液晶模块执行命令。第7~14脚D0~D7位8位双向数据线。第15脚背光源正极第16脚背光源负极。图3.6连接显示电路3.4按键电路按键电路用来调整温度上下限,图3.7按键电路3.5蜂鸣器报警电路报警器与I/O口P3.3连与一个报警器形成报警电路,通过对I/O输入高低电平来控制报警器的响铃。P3.3位低电平时报警。蜂鸣器报警电路如图3.8(a)、(b)。图3.8蜂鸣器报警电路(a)图3.8蜂鸣器报警电路(b)3.6电机升降温电路其工作机制为当前的温度高于设定温度的峰值时,Moter1降温电机工作。当前的温度低于设定下限时,Moter2升温电机工作。电机升降温电路如图3.9所示。图3.9电机升降温电路4基于PID控制算法的温控系统软件设计4.1程序流程设计图4.1工作流程首先在编写程序上先设定好所需要的温度上下限定,在其工作的时候开始温度传感器开始获取当前的温度,随后把信息传入单片机中,此时来判断当前的温度是否满足我们所需要的温度,当不满足条件的时候分为两种情况:一超过了预想温度最高值,低于预想温度最低值,当超过最高值的时候,红灯亮起,加热的开关被断开。当温度降低到正常使用范围内结束工作。二低于设定温度的最低值,黄灯亮起,启用电机升高温度。达到所需要的温度。若当温度满足所设定的区间,则整个流程结束。 voidmain(){ Init_Display_String(); //初始化显示 Read_Temperature(); //读取温度 MOTOR_control02(); //电机控制 delay1ms(1000); //延时1秒 wr_com(0x01); //LCD清屏 Display_Temperature(); //显示温度 Timer0_init(); while(1) { Read_Temperature(); //读取温度 Display_Temperature(); //显示温度 if(Detect==0)MOTOR_control01(); //电机控制 elseMOTOR_control02(); //电机停止 if(Adjust_TH==0) //调节TH。 { if(Key_up==0) { Temperature_H+=10; if(Temperature_H>350)Temperature_H=350; while(Key_up==0)Display_Temperature(); } if(Key_dn==0) { Temperature_H-=10; if(Temperature_H<=250)Temperature_H=250; while(Key_up==0)Display_Temperature(); } } if(Adjust_TL==0) //调节TL。 { if(Key_up==0) { Temperature_L+=10; if(Temperature_L>250)Temperature_L=250; while(Key_up==0)Display_Temperature(); } if(Key_dn==0) { Temperature_L-=10; if(Temperature_L<=150)Temperature_H=150; while(Key_up==0)Display_Temperature(); } }voidTimer1()interrupt2{TCON=0X04;IE=0X84;}}4.1.1温度采集子程序开始初始化命令开始初始化命令跳过ROM命令温度转换命令初始化命令匹配ROM命令发送64位序列号读取温度值温度数据处理结束图4.2温度采集子程序流程开始对于温度的采集,因为只有一个dsb18b20,不需要进行匹配rom,若是多个dsb18b20则需要匹配,因为dsb18b20转换后的代买不是实际的温度值然后开始执行温度转化命令,随后在进行初始化,重新匹配rom发出了低字节8位产品类型标号,对于dsb18b20就是28h,接着48位是指的dsb18b20自身序列号,最后的8位是对前面56的循环冗余校验码,随后读取温度的确切值发,到达数据处整个过程结束。voidDisplay_String(u8*p) //显示//{ while(*p!='\0') { wr_dat(*p); p++; delay1ms(10); }}voidInit_Display_String() //初始化显示{ lcd_init(); wr_com(0x80); Display_String("Haveaniceday!"); wr_com(0xc0); Display_String("2020-03=6-25");}4.1.2温度处理及显示子程序DS18B20DS18B20测温子程序读取温度的低位值读取温度的高位值对温度值计算显示温度准备读取温度值返回图4.3温度处理及显示子程序流程图Ds18b2发出了低字节8位产品类型标号,对于dsb18b20就是28h,接着48位是指的dsb18b20自身序列号,最后的8位是对前面56的循环冗余校验码,随后读取温度的确切值发,到达数据处整个过程结束。voiddelay_18B20(u8i) //延时i微秒{ for(;i>0;i--);}voidds1820rst() //*ds1820复位*/{ u8x=0; DQ=1; //DQ复位 u8i=0; u8dat=0; for(i=8;i>0;i--) { DQ=0; //给脉冲信号 dat>>=1; DQ=1; //给脉冲信号 if(DQ) dat|=0x80; delay_18B20(10); } return(dat);}voidds1820wr(u8wdata) //*写数据*/{ u8i=0; for(i=8;i>0;i--) { DQ=0; DQ=wdata&0x01; delay_18B20(10); DQ=1; wdata>>=1;}}voidRead_Temperature() //*读取温度值并转换*/{ u8a,b; ds1820rst(); ds1820wr(0xcc); //*跳过读序列号*/ ds1820wr(0x44); //*启动温度转换*/ ds1820rst(); ds1820wr(0xcc); //*跳过读序列号*/ ds1820wr(0xbe); //*读取温度*/ a=ds1820rd(); b=ds1820rd(); Temperature=a+b*256; if(Temperature<=0x0fff)Temperature_flag=0; else { Temperature=~Temperature+1; Temperature_flag=1; } Temperature=Temperature*(0.625);//温度值扩大10倍,以精确到1位小数 }/*******************************************************************/voidDisplay_Temperature()//温度值显示{ disdata[0]=Temperature/1000+0x30; //百位数 disdata[1]=Temperature/100%10+0x30; //十位数 disdata[2]=Temperature/10%10+0x30; //个位数 disdata[3]=Temperature%10+0x30; //小数位 wr_com(0x80); Display_String(str1);; if(Temperature_flag==1)wr_dat(0x2d); //显示符号位 if(disdata[0]!=0x30)wr_dat(disdata[0]); //显示百位 wr_dat(disdata[1]); //显示十位 wr_dat(disdata[2]); //显示个位 wr_dat(0x2e); //显示小数点 wr_dat(disdata[3]); //显示小数位 wr_dat('C'); if(Set_Clock==0) { Display_String("CLK:"); wr_dat(Clock_Timer/10+0x30); wr_dat(Clock_Timer%10+0x30); } wr_com(0xc0); Display_String(str2); wr_dat(Temperature_H/100+0x30); wr_dat(Temperature_H/10%10+0x30); wr_dat('C'); Display_String(str3); wr_dat(Temperature_L/100+0x30); wr_dat(Temperature_L/10%10+0x30); wr_dat('C'); }4.1.3升降温程序及LED显示子程序调温及报警子程序读取温度子程序调温及报警子程序读取温度子程序灯不亮返回返回返回降温电机工作,红灯亮升温电机工作,黄灯亮在设定范围内吗?是否大于最大值YesNoNoYes首先读取了温度数,然后判定是否在我们设定的温度区间内,若在温度区间内(yes)结束若不在温度设定区间内(no)折开始判断是否大于最大值若是大于最大值的话降温电机工作,红灯亮,随后达到正常的温度。若是没有大于最大值的话,升温电机工作,黄灯亮。随后温度到达所需要的范围内。停止工作返回。4.2PID参数整定KP,KI,KP在pid算法中是最为重要的三个控制参数,在已知系统传递函数时,可以用临界比例度法整定系统PID参数。具体过程如下所示:(1)建设闭环回路,求出稳定极限。(2)根据公式计算参数。由本文开环相应曲线,我们可以求出系统的近似传递函数,其传递函数如下式所示:(式4.1)表4.1pid控制器特征数据控制器类型计算特征数据KpTiTdP0.5*KPD0.8*KPI0.45*K0.85*TPID0.6*K0.5*T0.12*T第一步先创建一个闭环系统用的是采取阶跃输入。然后不适用pid控制如下图所示:图4.5系统单闭环传递函数及响应曲线首先将积分系数和微分系数设为0,即仅进行比例控制,调整P参数,以使系统出现稳定的恒定振幅振荡,此时,可获得下图所示的响应曲线:4.6系统临界震荡响应曲线由上图可知,临界振荡增益:K=1.5;临界振荡周期T=303.1S,详细PID计算式参数如下:(式4.2)输入相应PID参数得到如下仿真输出:图4.7系统PID调节响应曲线4.2.1控制算法设计加热是非线性且随时间变化的系统,所以在本次控制系统的中选择用智能控制算法pid。该算法将给定温度与实际温度之间的比率,然后设定kpki这三个控制的。。所获得的算法结果控制了执行器的执行状态,从而可以显着改善控制系统的控制时间,超调,滞后反应和最终稳定性。4.3PID参数整定通常在pid控制算法中,启到决定性的作用的分别是KP,KI,KP这三个控制参数,在已知系统传递函数时,可以用临界比例度法整定系统PID参数。具体过程如下所示:(1)构造一个闭环并确定稳定性极限。(2)根据公式计算控制器参数。由开环相应曲线,我们可以求出系统的近似传递函数,其传递函数如下式所示:(式4.3)原始P决定这个系统的稳定性的极限的,一旦这个两个参数被确定后,使用下表确定其他参数。表4.2稳点极限计算控制器类型计算特征数据KpTiTdP0.5*KPD0.8*KPI0.45*K0.85*TPID0.6*K0.5*T0.12*T第一步是先用用步进输入建立一个不带PID控制器的闭环系统及其仿真输出,如下图所示:图4.8系统单闭环传递函数及响应曲线首先将积分系数和微分系数设为0,即仅进行比例控制,调整P参数,使系统具有稳定的恒定振幅振荡。那时,获得如下图所示的响应曲线:图4.9系统临界震荡响应曲线由上图可知,临界振荡增益:K=1.5;临界振荡周期T=303.1S,详细PID计算式参数如下:输入与之对应的PID参数得到仿真输出:图4.10系统PID调节响应曲线4.3.1PID参数微调从图4-6的输出结果可以看出,系统仍然存在一定量的过冲,所以在此基础上减小了积分系数,并进行了微调对比例系数和微分系数,最后得到曲线如下图所示。。图4.11系统最有PID响应曲线由上面仿真结果可知系统上升时间为250S,系统在600S左右达到稳定,而且超调量较小,PID调节效果较为理想。

5系统调试5.1调试过程在本次仿真中使用的是keiluVision仿真器,首先先用汇编语言keil的有的函数库和c语言编写的文件放在一起,然后创建生成文件库转换为hex的文件,再将其导入写入的cpu存储器当中。电路设计制作完成后,先用keiluVision仿真器进行调试。(1)、使用菜单“Project/NewProject”出现一个对话框,然后给将要建立的工程取一个名字,单击保存后会出现另外一个对话框选择系统所使用的单片机型号,本系统所使用的单片机型号为AT89c52。选中后回到工程窗口的页面打开“Tatget”的下一层,“SourceGroup1”单机右键选中“Addfiletogroup‘SourceGroup1’”,出现对话框,选择系统所用的源文件即可。(2)单击“Project/Target1”出现对话框选中“Target”页面修改单片机的频率项Xtal(MHz)为12.选中“Output”页面选中“CreateHEX”选项。(3)编译连接通过“Project/RebuildallTargetFiles”来实现(4)在Protues上画出电路图,并将keil所生成的Hex文件调入到电路中的单片机内,点击运行。5.2调试结果图5.1仿真温度高于设定温度连接好电路图将程序hex文件植入单片机内,单片机开始运行,此时我们在ds18b20设置温度为32在其最高最低温度设为30-20此时系统判定当温度高于设定上限时,Moter1降温电机工作红灯亮。直到温度恢复工作停止。图5.2仿真温度低于设定温度设置温度为32在其最高最低温度设为30-20此时系统判定当温度高于低于下限时,Moter1升温电机工作黄灯亮。直到温度恢复工作停止。

6总结本次的毕业设计花费了三个月,从一开始的迷茫不懂,到最后较为熟练的使用软件进行操作,这次的温控系统是一个at89c52单片机为主要的核心,搭配其他的电路以及pid的算法形成的,通过对储水式热水器实时温控系统进行研究。通过分析对当前的技术方法和软件系统内部结构,采用精确控制方法进行系统修正不仅大大简化了程序控制,而且获得了更快的系统响应速度和精度。在本次课设上没有采取式及高深的控制理论,通过用计算机语言去解决了遇到的问题以及人工下无法解决的取得了良好的效果使用ds18b20对于温度的掌控,温度的控制利用低功耗单线数字温度传感器DS18B20实现温度采样,将采样的温度值通过送入单片机处理,然后实现水温的控制,利用按键对水温的值进行设置,当温度高于上限或者低于下限后蜂鸣器报警,使之保持温度在一定范围内的稳定。报警器与I/O口连与一个报警器形成报警电路,通过对I/O输入高低电平来控制报警器的响铃。位低电平时报警。系统用led显示水温,正常来说我们所需要的水的温度不超过100因为采取两位显示温度,其范围0-99在本次的毕业设计中不仅学习到了知识,更多的是方法技巧。在之前对于调试仿真画电路图很迷惑,浪费了大量时间并且效率还不高,现在通过一系列的学校提高了效率,在这段期间内,自己还有老师的帮助解决了工程遇到的困难,提升了自己的意志力也对于这个专业有了更深的认识,这都都将会为我们在以后的道路打上坚定的基础,积累宝贵的经验。

参考文献[1]陈和娟.基于STC12C5A60S2的智能循迹小车设计[J].湖南工业职业技术学院学报,2012(04):14-16.

[2]魏丽芳.浅谈超声波测距仪设计[J].投资与创业,2012(3):2-2.

[3]姜帅琦.基于大学生方程式赛车虚拟仪表系统硬件设计[J].科技视界,2014(11):109-111.

[4]何晓兴.基于单片机的正弦信号发生器[J].电子制作,2015(04):8-10.

[5]杜德银.基于光电传感器的路灯控制系统设计电路分析[J].科技信息,2013(36):138-140.

[6]王会.节能断电报警器的设计[J].当代农机,2014(08):71-73.

[7]张博付永平.煤矸石电厂除氧器自动监测控制装置设计与应用[J].机电信息,2014(21):147-148.

[8]马玉芳.基于AT89S52语音告警电路的设计[J].电子世界,2014(18):229-229.

[9]任航.简易低频信号发生器的设计[J].机电信息,2012(06):142-144.

[10]曹嘉玮.基于单片机控制的步进电机调速系统[J].电子世界,2011(07):22-26.

[11]王瑞.基于AT89S52单片机的PWM电机控制风扇转速系统[J].延安职业技术学院学报,2012(01):107-109.

[12]朱兴喜胡新勇戚仕涛刘云李琳.抗干扰手持式输液液滴计数器的研制与开发[J].医疗卫生装备,2007(11):29-32.

[13]张粮雨方方.基于51单片机的便携式α检测仪显示电路设计[J].电子制作,2015(10):12-13.

[14]宁洪军.基于单片机实际电路板的焊接调试与Proteus仿真研究[J].科技信息,2011(17):545-545.

[15]杨国荣.GSM通信基站安防及载波监控系统设计[J].新技术新工艺,2015(06):49-52.

[16]吴汉清.常用的典型单片机资料[J].无线电,2007(11):9-9.

[17]付琛.低功耗、微型化近距离无线通信模块硬件设计[J].科技信息(学术版),2006(04):244-247.

[18]贾麟.电加热炉调温控制系统[J].才智,2010(31):35-35.

[19]周航宋诗瑶.单片机在七彩霓虹灯设计中的应用[J].辽宁经济职业技术学院(辽宁经济管理干部学院学报),2010(01):72-73.

[20]范颖.新型加温器的研制[J].科技创新与应用,2018(22):2-2.

[21]钟卫连.基于单片机的太阳能热水器控制系统设计[J].电子世界,2019(12):193-194[22]SuiZhenyou.DesignofIntelligentWaterHeaterControlSystem[J].ACADEMICPUBLISHINGHOUSE,2015,3(2).[23]XinHuiYang.DesignforaS7-200-BasedBoilerTemperatureCascadeControlSystem[J].TransTechPublicationsLtd,2014,3530.[24]WenyiWang,YaoyuLi,FengCao.Extremumseekingcontrolforefficientoperationofanair-sourceheatpumpwaterheaterwithinternalheatexchangercyclevaporinjection[J].ElsevierLtd,2019,99.[25]LiSong.TheCircuitDesignonThermostatControlofSolarWaterHeater'sWaterTemperature[J].TransTechPublicationsLtd,2014,2987.[26]张昌玉.家用智能热水器控制器的设计[J].南方农机,2019,50(23):243.[27]高超学,尹华,陈志强,陈焱,武昊天.基于“互联网+”智能热水器系统[J].机械工程与自动化,2019(06):172-174.[28]雷禄燕.基于AT89C51的太阳能热水器智能控制系统设计[J].科技与创新,2019(12):124-125+127.[29]陈培才,施文振,田敬北,赖宇虹.热水器远程智能控制系统设计[J].科技风,2018(20):88.[30]张明华.基于单片机的热水器智能控制系统的设计[J].电子制作,2015(06):8.[31]刘新.太阳能热水器自动控制系统的设计[J].电子技术与软件工程,2018(1):108.[32]曾璐琨.需求侧聚合负荷协同控制策略研究[D].华北电力大学(北京),2019.

谢辞本论文在韩导师的悉心指导下完成的。导师渊博的专业知识、严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,严于律己、宽以待人的崇高风范,朴实无法、平易近人的人格魅力对本人影响深远。不仅使本人树立了远大的学习目标、掌握了基本的研究方法,还使本人明白了许多为人处事的道理。本次论文从选题到完成,每一步都是在导师的悉心指导下完成的,倾注了导师大量的心血。在此,谨向导师表示崇高的敬意和衷心的感谢!在写论文的过程中,遇到了很多的问题,在老师的耐心指导下,问题都得以解决。所以在此,再次对老师道一声:老师,谢谢您!时光匆匆如流水,转眼便是大学毕业时节,春梦秋云,聚散真容易。离校日期已日趋渐进,毕业论文的完成也随之进入了尾声。从开始进入课题到论文的顺利完成,一直都离不开老师、同学、朋友给我热情的帮助,在这里请接受我诚挚的谢意!在此我向北京理工大学珠海学院的工业自动化的老师的感谢,谢谢你们三年的辛勤栽培,谢谢你们在教学的同时更多的是传授我们做人的道理,谢谢三年里面你们孜孜不倦的教诲!三年寒窗,所收获的不仅仅是愈加丰厚的知识,更重要的是在阅读、实践中所培养的思维方式、表达能力和广阔视野。很庆幸这三年来我遇到了如此多的良师益友,无论在学习上、生活上,还是工作上,都给予了我无私的帮助和热心的照顾,让我在一个充满温馨的环境中度过三年的大学生活。感恩之情难以用言语量度,谨以最朴实的话语致以最崇高的敬意

附录一材料编号名称型号单位数量备注1芯片AT89C52片12液晶显示器LCD160213轻触开关只34晶振12MHz只15电容33pF只36电阻只157电机200V块28三极管PNP只29三极管NPN只110喇叭1V个111二极管2V只2附录二程序

#include<AT89X51.H>

#defineu8unsignedchar

#defineu16unsignedint

#defineline010x80

#defineline020xc0

#defineDATA_BUSP0

sbitDQ=P2^7;

//ds18b20与单片机连接口

sbitEN=P2^0;

//lcd1602控制

sbitRS=P2^1;

//lcd1602与单片机控制接口

sbitRW=P2^2;

//lcd1602控制

sbitDetect=P3^2;

//检测是否有人。

sbitMOTOR1=P2^4;

//电机1控制端

sbitMOTOR2=P2^5;

//电机2控制端

sbitLED0=P1^0;

//电机慢速指示

sbitLED1=P1^1;

//电机快速指示

sbitSet_Clock=P1^5;

//调定时控制

sbitAdjust_TL=P1^6;

//调TL控制

sbitAdjust_TH=P1^7;

//调TH控制

sbitKey_up=P3^6;

//+1操作键

sbitKey_dn=P3^7;

//-1操作键

u8codestr1[]={"TR:"};

u8codestr2[]={"TH:"};

u8codestr3[]={"

TL:"};

u8disdata[5];

u16Temperature;

//检测到的温度(扩大了10倍)

u16Temperature_H=300;

//预设的高温控制温度(扩大了10倍)

u16Temperature_L=200;

//预设的低温控制温度(扩大了10倍)

u8Clock_Timer=30;

//预设定时为30分钟;

u8Temperature_flag;

//温度正负标志

/*************************lcd1602程序**************************/

voiddelay1ms(u16ms)

//非精确延时1毫秒

{

u8i,j;

for(;ms>0;ms--)

for(i=2;i>0;i--)

for(j=250;j>0;j--);

}

voidwr_com(u8com)

//LCD1602写指令//

{

delay1ms(1);

EN=0;

RS=0;

RW=0;

DATA_BUS=com;

delay1ms(1);

EN=1;

delay1ms(1);

EN=0;

}

voidwr_dat(u8dat)

//LCD1602写数据//

{

delay1ms(1);;

RS=1;

RW=0;

EN=0;

DATA_BUS=dat;

delay1ms(1);

EN=1;

delay1ms(1);

EN=0;

}

voidlcd_init()

//初始化设置//

{

delay1ms(15);

wr_com(0x38);delay1ms(5);

wr_com(0x08);delay1ms(5);

wr_com(0x01);delay1ms(5);

wr_com(0x06);delay1ms(5);

wr_com(0x0c);delay1ms(5);

}

voidDisplay_String(u8*p)

//显示//

{

while(*p!='\0')

{

wr_dat(*p);

p++;

delay1ms(10);

}

}

voidInit_Display_String()

//初始化显示

{

lcd_init();

wr_com(0x80);

Display_String("Haveaniceday!");

wr_com(0xc0);

Display_String("

2020-03-29

");

}

/******************************ds1820程序***************************************/

voiddelay_18B20(u8i)

//延时i微秒

{

for(;i>0;i--);

}

voidds1820rst()

//*ds1820复位*/

{

u8x=0;

DQ=1;

//DQ复位

delay_18B20(4);

//延时

DQ=0;

//DQ拉低

delay_18B20(100);

//精确延时大于480us

DQ=1;

//拉高

delay_18B20(40);

}

u8ds1820rd()

//*读数据*/

{

u8i=0;

u8dat=0;

for(i=8;i>0;i--)

{

DQ=0;

//给脉冲信号

dat>>=1;

DQ=1;

//给脉冲信号

if(DQ)

dat|=0x80;

delay_18B20(10);

}

return(dat);

}

voidds1820wr(u8wdata)

//*写数据*/

{

u8i=0;

for(i=8;i>0;i--)

{

DQ=0;

DQ=wdata&0x01;

delay_18B20(10);

DQ=1;

wdata>>=1;

}

}

voidRead_Temperature()

//*读取温度值并转换*/

{

u8a,b;

ds1820rst();

ds1820wr(0xcc);

//*跳过读序列号*/

ds1820wr(0x44);

//*启动温度转换*/

ds1820rst();

ds1820wr(0xcc);

//*跳过读序列号*/

ds1820wr(0xbe);

//*读取温度*/

a=ds1820rd();

b=ds1820rd();

Temperature=a+b*256;

if(Temperature<=0x0fff)Temperature_flag=0;

else

{

Temperature=~Temperature+1;

Temperature_flag=1;

}

Temperature=Temperature*(0.625);//温度值扩大10倍,以精确到1位小数

}

/*******************************************************************/

voidDisplay_Temperature()//温度值显示

{

disdata[0]=Temperature/1000+0x30;

//百位数

disdata[1]=Temperature/100%10+0x30;

//十位数

disdata[2]=Temperature/10%10+0x30;

//个位数

disdata[3]=Temperature%10+0x30;

//小数位

wr_com(0x80);

Display_String(str1);;

if(Temperature_flag==1)wr_dat(0x2d);

//显示符号位

if(disdata[0]!=0x30)wr_dat(disdata[0]);

//显示百位

wr_dat(disdata[1]);

//显示十位

wr_dat(disdata[2]);

//显示个位

wr_dat(0x2e);

//显示小数点

wr_dat(disdata[3]);

//显示小数位

wr_dat('C');

if(Set_Clock==0)

{

Display_String("

CLK:");

wr_dat(Clock_Timer/10+0x30);

wr_dat(Clock_Timer%10+0x30);

}

wr_com(0xc0);

Display_String(str2);

wr_dat(Temperature_H/100+0x30);

wr_dat(Temperature_H/10%10+0x30);

wr_dat('C');

Display_String(str3);

wr_dat(Temperature_L/100+0x30);

wr_dat(Temperature_L/10%10+0x30);

wr_dat('C');

}

voidMOTOR_control01()

{

if(Temperature>=Temperature_H)

//大于TH,电机全速

{

MOTOR1=0;

MOTOR2=1;

LED0=1;

LED1=0;

}

elseif(Temperature>=Temperature_L)

//小于TH大于TL,电机半速

{

MOTOR1=1;

MOTOR2=1;

LED0=1;

LED1=0;

}

else

//小于TL,电机关闭

{

MOTOR1=1;

MOTOR2=0;

LED0=1;

LED1=1;

}

}

voidMOTOR_control02()

//关闭电机

{

MOTOR1=1;

MOTOR2=1;

LED0=1;

LED1=1;

}

voidTimer0_init(void)

{

TMOD=0x01;

TH0=(65536-10000)/256;

//在这里,10000本应该是50000的,为了加快仿真的效果,加速了5倍。

TL0=(65536-10000)%256;

TR0=1;

ET0=1;

EA=1;

}

/********************主程序***********************************/

voidmain()

{

Init_Display_String();

//初始化显示

Read_Temperature();

//读取温度

MOTOR_control02();

//电机控制

delay1ms(1000);

//延时1秒

wr_com(0x01);

//LCD清屏

Display_Temperature();

//显示温度

Timer0_init();

while(1)

{

Read_Temperature();

//读取温度

Display_Temperature();

//显示温度

if(Detect==0)MOTOR_control01();

//电机控制

elseMOTOR_control02();

//电机停止

if(Adjust_TH==0)

//调节TH。

{

if(Key_up==0)

{

Temperature_H+=10;

if(Temperature_H>350)Temperature_H=350;

while(Key_up==0)Display_Temperature();

}

if(Key_dn==0)

{

Temperature_H-=10;

if(Temperature_H<=250)Temperature_H=250;

while(Key_up==0)Display_Temperature();

}

}

if(Adjust_TL==0)

//调节TL。

{

if(Key_up==0)

{

Temperature_L+=10;

if(Temperature_L>250)Temperature_L=250;

while(Key_up==0)Display_Temperature();

}

if(Key_dn==0)

{

Temperature_L-=10;

if(Temperature_L<=150)Temperature_H=150;

while(Key_up==0)Display_Temperature();

}

}

if(Set_Clock==0)

//调节定时。

{

if(Key_up==0)

{

EA=0;

Clock_Timer++;

if(Clock_Timer>90)Clock_Timer=90;

while(Key_up==0)Display_Temperature();

EA=1;

}

if(Key_dn==0)

{

EA=0;

Clock_Timer--;

if(Clock_Timer>90)Clock_Timer=0;

while(Key_up==0)Display_Temperature();

EA=1;

}

if(Clock_Timer==0)MOTOR_control02();

//在定时模式下,定时到则电机停止。

}

}

}

voidTimer0()interrupt1

//定时器0用于在定时模式下,控制电机工作。

{

u8i,sec;

//Clock_Timer

TH0=(65536-10000)/256;

//在这里,10000本应该是50000的,为了加快仿真的效果,加速了5倍。

TL0=(65536-10000)%256;

i++;

if(i>=20)

{

i=0;

sec++;

if(sec>=60)

{

sec=0;

Clock_Timer--;

if(Clock_Timer==0)Clock_Timer=0;

}

}

}

附录三英文文献附录四英文文献翻译加热炉温度模型的预测模糊PID控制摘要:在传统的PID控制方案中,由于自由度的限制,整体控制性能可能不理想。基于这种背景,本文提出了一种继承模糊PID控制和预测函数控制优点的新型PID控制方法,并在加热炉温度模型上进行了试验。在PFC框架的基础上,引入模糊PID控制来获得最优控制律,进而得到一种改进的PID控制策略。最后,以加热炉温度模型为例,与常规PID控制和模糊自适应PID控制相比,证明了所提出的PID控制方案的有效性。关键词:预测函数控制、模糊控制、PID控制、温度调节1简介传统的PID控制由于其结构简单、适应性强等优点,在各种工业过程中得到了广泛的应用,但由于其时变和非线性的影响,其性能可能不尽如人意。由于难以获得精确的过程模型,采用传统的PID控制很难进一步获得改进的控制效果[1-2]。PID控制的研究自提出以来从未停止过,经典的整定方法有很多[3-6]。Zhang等人。将预测函数控制(PFC)与常规PID控制相结合,提出了一种新的PID控制器,并在工业分馏塔上进行了性能测试[7]。工业加热炉的温度具有非线性、时滞、时变性等特点,控制难度大。非线性控制方法有很多,如模糊控制、时滞控制、滑模控制、神经元模型自适应PID等。模糊控制广泛应用于非线性控制中,它是基于模糊集、模糊逻辑和模糊推理的复杂系统[12]。采用模糊控制算法的自适应系统不仅使控制系统更加可靠,而且获得了良好的控制性能[13]。模糊控制具有很强的适应性,不需要精确的被控过程模型。为了克服传统PID控制的缺点,可以将模糊控制和PID控制结合起来。模型/设备失配的缺陷可以通过预测控制中可能出现的预测误差来补偿[14-15]。基于非线性系统的输出误差预测,时变预测PID控制器可以解决一般预测PID控制器在系统约束条件下的设计问题[16]。将模糊控制与预测控制相结合,利用模糊推理对预测误差进行补偿[17-19]。将模糊控制

温馨提示

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

评论

0/150

提交评论