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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

游泳池水温控制系统.docx

1、游泳池水温控制系统游泳池水温控制系统-游泳池水温控制系统设计 专业: 自动化 学号: 姓名: 日期:2016/5/23游泳池水温控制系统设计摘 要本游泳池恒温控制系统选用 AT89C51 单片机作为控制器, 利用 PID 和 PWM 技术实现对游泳池的水温控制。该控制系统主要由 CPU 主控制模块、 主电源模块、键盘处理模块、温度采集模块、 继电器控制模块及 LED 显示模块构成。DS18B20 用来采集温度信号,其体积小,精度高,适用电压宽,抗干扰能力强。继电器控制两台电机的转动,分别对应控制热水阀和冷水阀,从而, 实现水温的实时控制。最后,采用共阳极数码管 LG5641A 动态显示水温。关

2、键词:AT89C51 单片机; PID; DS18B20; 恒温 第1章 绪论1.1 选题的背景与意义1.1.1温度控制系统设计的背景、发展历史及意义随着社会的发展,科技的进步,以及测温仪器在各个领域的应用,智能化已是现代温度控制系统发展的主流方向。特别是近年来,温度控制系统已应用到人们生活的各个方面,但温度控制一直是一个未开发的领域,却又是与人们息息相关的一个实际问题。针对这种实际情况,设计一个温度控制系统,具有广泛的应用前景与实际意义。单片机在电子产品中的应用已经越来越广泛,在很多的电子产品中也用到了温度检测和温度控制。随着温度控制器应用范围的日益广泛和多样,各种适用于不同场合的智能温度控

3、制器应运而生。近年来,人类的生产和生活方式发生了巨大的变化,产生这一变化的重要原因就是计算机技术的飞速发展。第一台计算机诞生至今仅仅几十年的时间,计算机的性能已经大大提高,价格不断的下降,从而使之可以迅速而广泛地应用于人类的生产和生活的各个领域。然而游泳池的温度控制的发展无疑得益于计算机技术的发展。 1.1.2本设计的应用及意义本设计以保质、节能、安全和方便为基准设计了一个游泳池保温控制器,根据需要进行相应的数据分析和处理,由此完成对游泳池水温的采样和控制。通过本设计掌握使用高级语言对单片机编程技术以及一线总线制在单片机方面的应用及用单片机进行对继电器的控制,从而控制大功率的加热设备,提高实际

4、工作技能。本设计以单片机为核心的温度采集与控制系统的研发与应用,在很大程度上提高了生产、生活中对游泳池温度的控制水平。 1.1.3游泳池保温控制系统完成的功能本文设计一个游泳池恒温自动控制系统, 游泳池中的水温可以在一定范围内由人工设定, 并能在环境温度降低时实现自动调节,以保持与设定的温度一致。利用单片机 AT89C51 实现水温的智能控制,采用数字温度传感器读出水温,并在此基础上将水温调节到键盘设定的温度,并通过数码管显示器实现当前温度的实时显示。第2章 系统总体设计2.1 方案的选择2.1.1 方案一采用运放等模拟电路搭建一个控制器,用模拟方式实现PID控制,对于纯粹的水温控制,这是足够

5、的。但是附加显示、温度设定等功能,还要附加许多电路,稍显麻烦。同样,使用逻辑电路也可实现控制功能,但总体的电路设计和制作比较烦琐。2.1.2 方案二单片机为控制核心的控制系统,尤其对温度控制,它可达到核心的控制作用,并且可方便实现数码显示、键盘设定及利用PID算法来控制PWM波形的产生,进而控制继电器的通断,最终实现游泳池的恒温控制, 其所测结果精度也大大的得到了提高,利用PID算法来控制PWM波形的产生,并有效地控制数字脉冲的输出宽度,使固态继电器得到有效和有序的逻辑控制,不会使固态继电器产生误动作。 论证选择方案三2.2 系统总体设计(要求有框图)此方案是以单片机为控制核心的控制系统,尤其

6、对温度控制,它可达到核心的控制作用,并且可方便实现数码显示、键盘设定及利用PID算法来控制 PWM波形的产生,进而控制继电器的通断,最终实现游泳池的恒温控制,其所测结果精度也大大的得到了提高,利用 PID 算法来控制 PWM 波形的产生,并有效地控制数字脉冲的输出宽度,使固态继电器得到有效和有序的逻辑控制,不会使固态继电器产生误动作。单片机可以将数字温度传感器采集到的实际水温温度值直接用数码管显示,还能用键盘输入设定值,其系统框图如图2-1所示。图2-1 PID控制系统框图第3章 硬件设计3.1 硬件选型 3.1.1 CPU主控模块的选型CPU主控制模块采用AT89C51单片机,把数字温度传感

7、器采集到的温度信号与原预先设定值进行比较,然后根据其差值通过PID调节进行整定,控制继电器的通断,进而控制冷水还是热水电机的转动,能用键盘输入数据以及温度信号的实时显示。主电源模块采用整流桥进行AC-DC电源变换,电容用470uf 5v,0.1uf,100uf 5v的构成稳压谐波调节电路,稳压器采用三端稳压集成电路LM7805 。由于单片机供电电压5V故继电器采用5V-SPDT OMRON继电器即可满足设计要求。3.1.2 温度采集元件的选型 温度采集采用DS18B20温度传感器。DS18B20是一种新型的“一线器件”,其体积更小、更适用于多种场合、且适用电压更宽、更经济。DALLAS半导体公

8、司的数字化温度传感器DS18B20是世界上第一片支持“一线总线”接口的温度传感器。温度测量范围为-55+125摄氏度,可编程为9位12位转换精度,测温分辨率可达0.0625摄氏度,分辨率设定参数以及用户设定的报警温度存储在EEPROM中,掉电后依然保存。3.2 硬件电路设计(按模块)3.2.1 主电源电路图3-1 主电源电路 为防止电源之间的相互干扰,需对电路进行独立供电,本系统采用双电源输出一个正常之用,一个应急备用。因此电源电路设计输出两路为+5V的稳压电源, 同时主电路的开关元件为固态继电器, 其直流侧的供电电源可选择为+ 5V。由于固态继电器内部带有光耦,其直流侧与交流侧相互隔离,因此

9、其直流侧的供电电源可与数字电路的 + 5V 电源共用,另外DS18B20 也用 +5V 的稳压电源供电,另外一个 + 5V的稳压电源用来备用,当遇到系统断电时可以把那个备用的稳压电源来应急,这样就给系统增加了一道应急保险。本装置的直流稳压电源采用通常的桥式全波整流、电容滤波、三端固定输出的集成稳压器件进行设计。系统的供电电源电路如图 2 所示。3.2.2 按键输入电路在按键模块电路中有 4 个按键,温度设定范围是24到 29,可通过温度上限加一减一按钮改变设定温度上限,温度下限加一减一按钮改变温度下限。电路如图3-2。图3-2 按键输入电路3.2.3 继电器模块图3-3继电器模块图3-3是一个

10、控制电机的电路图,单片机通过P31和P34 口的输出控制继电器的开合并进行通讯,其中 P31口的输出控制继电器 RL1 的开合进而控制 COLDWATER电机的转动,决定向游泳池中加入冷水来降温;P34 口的输出控制继电器 RL2 的开合进而控制 HOTWATER 电机的转动,决定向游泳池中加入热水来升温。3.2.4 显示模块 本电路采用共阳极数码管 LG5641A 进行动态显示,用 P20 P27 口作为位选控制,P00 P07 口传输要显示的数据,数据线和位选线直接接 AT89C51 单片机的 I/O 口即可,因为 I/O 口输出电流很小并且加上了上拉电阻,这样可以对 LED 进行驱动,它

11、的电压值足以驱动 LED。本设计就是采用动态显示电路,其电路如图3-4所示。 图3-4显示模块 第4章 软件设计4.1 系统流程(流程图)系统的软件主要是采用C语言,对单片机进行变成实现各项功能。主程序对模块进行初始化,而后调用读温度、处理温度、显示、键盘等模块。用的是循环查询方式,来显示和控制温度,主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值并负责调用各子程序,其程序流程如图4.1系统程序流程图。图4-1系统程序流程图4.2各部分程序流程图4.2.1计算温度子程序读出温度子程序的主要功能包括初始化,判断DS18B20是否存在,若存在则进行一系列的读操,作若

12、不存在则返回。其程序流程图如图4.2所示。图4-2读程序流程图4.2.2按键处理子程序按键处理子程序主要是负责参数的设置,主程序每循环一次都要对按键进行扫描,判断是否有输入键按下则进行一系列的按键输入操作。其程序流程框图如图4-3所示。图4-3程序流转程序图4.2.3计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图4-4所示。图4-4计算温度子程序图第5章 仿真结果5.1 仿真介绍 因本系统是利用单片机进行系统控制,所以需采用单片机仿真工具Proteus进行仿真Proteus软件具有和其它EDA工具一样的原理布图、 PCB 自动或人工

13、布线及电路仿真的功能外,其电路仿真是互动的,针对微处理器的应用,还可以直接在基于原理图的虚拟原型上编程,并实现软件源码级的实时调试,如有显示及输出,还能看到运行后输入输出的效果,Proteus 为使用者建立了完备的电子设计开发环境,用户可以对基于微控制器的设计连同所有的周围电子器件一起仿真, 是一款非常优秀的单片机仿真软件。可以使用Keil c51和Proteus进行联调,使调试和仿真更为方便。5.2 水温控制系统仿真效果5.2.1 水温低于下限值设定温度下限值为24, 在水温 24及以下时,发光二极管闪烁报警,继电器 RL2 接通, HOTWATER 电机转动,向游泳池中加入热水升温,仿真图

14、如图5-1所示。图5-1水温低于设定温度下限值5.2.2 水温处于正常值 温度介于上下限之间,发光二极管不闪烁,两个电机都停止转动,不进行任何动作,仿真图如图5-2所示。图5-2水温处于正常值5.2.3水温高于上限值 设定温度上限为29,水温为29及以上时,达到温度上限值,发光二极管闪烁,继电器 RL1 接通,COLDWATER 电机转动,向游泳池中加入冷水降温,仿真图如图5-3所示。图5-3水温高于设定温度上限值结论(心得体会)本文设计的游泳池恒温自动控制系统,是以单片机为控制核心的恒温系统。该系统利用数字温度传感器,将采样到的温度信号输入到单片机, 再由单片机根据测量温度与设定温度的差值和

15、PID算法生成控制信号,控制固态继电器的通断。整个系统结构紧凑、所用芯片少、控制精度高、响应速度快,体积小,成本低。在键盘、显示电路上都采用了串行方式,减小了单片机口线的使用,减小了成本开支。虽然在主电源电路未采用流行的开关稳压电源,但经济实惠,性能稳定。参考文献1催东剑多点恒温自动控制系统设计J电工技术,2003,(7)2吴炳胜,王桂梅80C51单片机原理与应用M北京:冶金工业出版社,3蔡自兴.智能控制M.北京:电子工业出版社,20044汪孝国,王婉丽高精度PID温度控制器J电子与自动化,20015肖亮,陶学恒新型的智能化液位温度测量系统J仪表技术与传感器,2005,(8)6诸静模糊控制原理

16、与应用M北京:机械工业出版社,1995.7耿长清单片机应用技术M北京:化学工业出版社,20028赵晶.PROTEL高级应用M:人发邮电出版社,2002.12:224-2269夏红,赏星耀PID参数自整定方法综述J浙江科技学院学报,2003,(4)10于海生等.微型计算机控制系统M.清华大学出版社,1998.附录 硬件电路总图软件程序sbitTMDAT=P10;voidDS1820_DelayCount(unsignedcharCoun) dataunsignedcharCount; Count=Coun; while(Count0)Count-; Count=Coun; while(Count

17、0)Count-;/复位DS18B20 voidDS1820_Reset(void) TMDAT=0; DS1820_DelayCount(412); TMDAT=1; DS1820_DelayCount(16);/等待DS18B20应答unsignedcharDS1820_Answer(void) dataunsignedinti; dataunsignedcharj;while(TMDAT)i-;if(i=0) return(aban_return);i=0xffff;j=3;while(TMDAT)i-;if(i=0)if(j=0)return(aban_return);elsej-;i

18、=0xffff;DS1820_DelayCount(16);return(done_return);/等待DS18B20应答/读取位bitDS1820_Readbit(void)datainti=0;bitdat;TMDAT=0;i+;i+;i+;i+;TMDAT=1;i+;i+;i+;i+;i+;i+;i+;i+;dat=TMDAT;/DS1820_DelayCount(8);DS1820_DelayCount(32);returndat;/读取字节unsignedcharDS1820_Readbyte(void)dataunsignedchari,j,dat=0;for(i=1;i=8;i

19、+)j=DS1820_Readbit();dat=(j1);returndat;/写一个字节voidDS1820_Writebyte(unsignedchardat)datasignedchari=0;dataunsignedcharj;bittestb;for(j=1;j1;if(testb)TMDAT=0;i+;i+;i+;i+;i+;i+;i+;i+; TMDAT=1;/DS1820_DelayCount(8);DS1820_DelayCount(32);elseTMDAT=0;/DS1820_DelayCount(8);DS1820_DelayCount(32);TMDAT=1;i+;

20、i+;i+;i+;i+;i+;i+;i+;/读操作开始unsignedcharDS1820_StartTem(void)EA=0;DS1820_Reset();if(DS1820_Answer()=aban_return)EA=Ea;return(aban_return);/DS1820_Delayms(1);DS1820_Delayms(4);DS1820_Writebyte(0xcc);/DS1820_Writebyte(0x55);/for(i=0;i8;i+)/DS1820_Writebyte(DS1820_tempi);DS1820_Writebyte(0x44);EA=Ea;ret

21、urn(done_return);/读所有传感器intDS1820_ReadTem(void)dataunsignedchara,b;datainty3;datafloaty4;dataunsignedchari;EA=0;DS1820_Reset();if(DS1820_Answer()=aban_return)EA=Ea;return(0xffff);DS1820_Delayms(4);DS1820_Writebyte(0xcc);/跳过匹配传感器/DS1820_Writebyte(0x55);/for(i=0;i8;i+)/DS1820_Writebyte(run_inf.system_

22、index.DS1820_tempi);DS1820_Writebyte(0xbe);/读取温度for(i=0;i9;i+)run_inf.system_index.DS1820_tempi=DS1820_Readbyte();if(CRC(9)!=0)EA=1;return(0xffff);/计算CRCa=run_inf.system_index.DS1820_temp0; b=run_inf.system_index.DS1820_temp1;DS1820_Reset();y3=(b0;i-)rtc_io=temp_0;/*相当于汇编中的RRC*/rtc_sc=1;rtc_sc=0;tem

23、p=temp1;/功能:从DS1602读取1Byte数据unsignedcharuc_RTOutputByte(void)unsignedchari;rtc_io=1;for(i=8;i0;i-)temp=temp1;/*相当于汇编中的RRC*/temp_7=rtc_io;rtc_sc=1;rtc_sc=0;return(temp);/功能:往DS1602写入数据voidwrite1302(unsignedcharucAddr,unsignedcharucDa)bitea;ea=EA;EA=0;rtc_rs_port&=(rtc_rs_bit);rtc_sc=0;rtc_rs_port|=rt

24、c_rs_bit;v_RTInputByte(ucAddr);/*地址,命令*/v_RTInputByte(ucDa);/*写1Byte数据*/rtc_sc=1;rtc_rs_port&=(rtc_rs_bit);EA=ea;/功能:读取DS1602某地址的数据unsignedcharread1302(unsignedcharucAddr)unsignedcharucDa;bitea;ea=EA;EA=0;rtc_rs_port&=(rtc_rs_bit);rtc_sc=0;rtc_rs_port|=rtc_rs_bit;v_RTInputByte(ucAddr);/*地址,命令*/ucDa=

25、uc_RTOutputByte();/*读1Byte数据*/rtc_sc=1;rtc_rs_port&=(rtc_rs_bit);EA=ea;return(ucDa);/功能:设置初始时间voidSet1302(pTime_Stime_temp)unsignedchari=0x80;write1302(0x8e,0x00);/*控制命令,WP=0,写操作*/write1302(i,time_temp-sec);i+=2;write1302(i,time_temp-min);i+=2;write1302(i,time_temp-hou);i+=2;write1302(i,time_temp-da

26、y);i+=2;write1302(i,time_temp-mon);i+=2;write1302(i,0x02);i+=2;write1302(i,time_temp-yea);i+=2;write1302(0x8e,0x80);/*控制命令,WP=1,写保护*/功能:读取DS1302当前时间voidget1302(void)unsignedchari,time_bcd_temp6;unsignedcharucAddr=0x81;for(i=0;i7;i+)time_bcd_tempi=read1302(ucAddr);/*格式为:秒分时日月星期年*/ucAddr+=2;sec=time_bcd_temp0;min=time_bcd_temp1;hou=time_bcd_temp2;day=time_bcd

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

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