




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上洛陽理工學院游泳池水温控制系统设计课程答辩王明超2014/12/29班级:B110411 学号:B11041117 姓名:王明超 摘 要 随着人民生活的进步,恒温游泳池走进了我们的生活,而游泳池的保温控制器,它能自动控制游泳池的水温。从而大大的方便了人们对游泳池水温恒温的需求。本文对该测控仪系统进行了分析设计。本游泳池恒温控制系统选用AT89C51单片机作为控制器,利用PID和PWM技术实现对游泳池的水温控制。该控制系统主要由CPU主控制模块、主电源模块、键盘处理模块、温度采集模块、继电器控制模块及LED显示模块构成。 本游泳池恒温控制系统选用
2、AT89C51单片机作为控制器,利用PID和PWM技术实现对游泳池的水温控制。该控制系统主要由CPU主控制模块、主电源模块、键盘处理模块、温度采集模块、继电器控制模块及LED显示模块构成。DS18B20用来采集温度信号,其体积小,精度高,适用电压宽,抗干扰能力强。继电器控制两台电机的转动,分别对应控制热水阀和冷水阀,从而,实现水温的实时控制。最后,采用共阳极数码管LG5641A动态显示水温。关键词: AT89C51单片机, 游泳池 ,温度控制,模糊控制。 目录第1章 绪论 31.1选题的背景与意义 31.1.1自动控控系统可温度控制系统 31.2 温度控制系统的设计 3 4 2.1方案的选择
3、42.2系统总体设计 4第3章 硬件设计 53.1硬件选型 53.2硬件电路设计 5 3.2.1主电源电路 5 3.2.2温度采集模块 6 3.2.3按键输入电路 6 3.2.4继电器模块 7 3.2.5 显示模块 7第4章 软件设计 84.1系统程序设计 84.2各部分程序流程图 8 4.2.1. 计算温度子程序 9 4.2.2.按键处理子程序 9 4.2.3.计算温度子程序 10第5章 仿真结果 125.2仿真结果 125.1本系统仿真 135.2仿真结果 13结论 14参考文献 15附录 16 第1章 绪论1.1选题的背景与意义1.1.1自动控控系统可温度控制系统 电子技术的
4、发展,特别是随着大规模集成电路的产生,给人们的生活带来了根本性的变化,如果说微型计算机的出现使现代的科学研究得到了质的飞跃,那么单片机技术的出现则是给现代工业控制测控领域带来了一次新的革命。目前,单片机在工业控制系统诸多领域得到了极为广泛的应用。特别是其中的C51系列的单片机的出现,具有更好的稳定性,更快和更准确的运算精度,推动了工业生产,影响着人们的工作和学习。 自动控制系统在各个领域尤其是工业领域中有着及其广泛的应用,温度控制是控制系统中最为常见的控制类型之一。随着单片机技术的飞速发展,通过单片机对被控对象进行控制日益成为今后自动控制领域的一个重要发展方
5、向, 电流、电压、温度、压力、流量、流速和开关量都是常用的主要被控参数。例如:在冶金工业、化工生产、电力工程、造纸行业、机械制造和食品加工等诸多领域中,人们都需要对各类加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制。采用MCS-51单片机来对温度进行控制,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量。因此,单片机对温度的控制问题是一个工业生产中经常会遇到的问题。 单片机具有集成度高,处理能力强,可靠性高,系统结构简单,价格低廉的优点,因此被广泛应用。 温度控制系
6、统则是单片机在工业生产中的一个典型的应用。温度控制系统就是通过单片机的控制,使温度再设定的范围内。 在现代社会中,温度控制不仅应用在工厂生产方面,其作用也体现到了各个方面,随着人们生活质量的提高,酒店厂房及家庭生活中都会见到温度控制的影子,温度控制将更好的服务于社会。空调等家用电器随着生产技术的发展和生活水平的提高越来越普及,一个简单,稳定的温度控制系统能更好的适应市场。1.2 温度控制系统的设计 我国目前在恒温控制技术这方面总体技术水平处于20世纪80年代中后期水平,成熟产品主要以“点位”控制及常规的PID控制器为主,它只能适应一般温度系统控制,难于控制滞后
7、、复杂、时变的温度系统控制。在适应于较高控制场合的智能化、自适应控制仪表领域内,国内技术还不十分成熟,形成商品化并广泛应用的控制仪表较少。本文设计一个游泳池恒温自动控制系统,游泳池中的水温可以在一定范围内由人工设定,并能在环境温度降低时实现自动调节,以保持与设定的温度一致。利用单片机AT89C51实现水温的智能控制,采用数字温度传感器读出水温,并在此基础上将水温调节到键盘设定的温度,并通过数码管显示器实现当前温度的实时显示。 2.1方案的选择 方案一:采用运放等模拟电路搭建一个控制器,用模拟方式实现PID控制,对于纯粹的水温控制,这是足够的。但是附加显示、温度设定等功能,还要附加许多电路,稍显
8、麻烦。同样,使用逻辑电路也可实现控制功能,但总体的电路设计和制作比较烦琐。 方案二:采用FPGA实现控制功能。使用FPGA时,电路设计比较简单,通过相应的编程设计,可以很容易地实现控制和显示、键盘等功能,是一种可选的方案。但与单片机相比,价格较高,显然大材小用。 方案三:单片机为控制核心的控制系统,尤其对温度控制,它可达到核心的控制作用,并且可方便实现数码显示、键盘设定及利用PID算法来控制PWM波形的产生,进而控制继电器的通断,最终实现游泳池的恒温控制, 其所测结果精度也大大的得到了提高,利用PID算法来控制PWM波形的产生,并有效地控制数字脉冲的输出宽度,使固态继电
9、器得到有效和有序的逻辑控制,不会使固态继电器产生误动作。 论证选择方案三2.2系统总体设计 此方案是以单片机为控制核心的控制系统,尤其对温度控制,它可达到核心的控制作用,并且可方便实现数码显示、键盘设定及利用PID算法来控制PWM波形的产生,进而控制继电器的通断,最终实现游泳池的恒温控制,其所测结果精度也大大的得到了提高,利用PID算法来控制PWM波形的产生,并有效地控制数字脉冲的输出宽度,使固态继电器得到有效和有序的逻辑控制,不会使固态继电器产生误动作。 游泳池恒温自动控制系统主要由六部分组成CPU主控制模块、主电源模块、键盘处理模块、温度采集模块、继电器控制模块及LED显示模块。CPU主控
10、制模块采用AT89C51芯片,把数字温度传感器采集到的温度信号与原预先设定值进行比较,然后根据其差值通过PID调节进行整定,控制继电器的通断,进而控制冷水还是热水电机的转动,能用键盘输入数据以及温度信号的实时显示。本着简单、实用的原则,这里最后选用了一个比较典型的硬件方案: 测温电路可选用DS18B20集成数组测温电路;芯片采用常见的AT89C51显示方式采用1602字符液晶显示器1602键盘采用4独立按键次用RS-232串口与计算机通行。LED数码管显示单片机电机1键盘设定固态继电器1数据PID调整复位电路数据采集1电机2固态继电器2数据采集2电源电路图2.2.系统框图第3章 硬件
11、设计3.1硬件选型游泳池恒温自动控制系统主要由六部分组成CPU主控制模块、主电源模块、键盘处理模块、温度采集模块、继电器控制模块及LED显示模块。3.1.1 CPU主控模块等主要部分元件选型CPU主控制模块采用AT89C51单片机,把数字温度传感器采集到的温度信号与原预先设定值进行比较,然后根据其差值通过PID调节进行整定,控制继电器的通断,进而控制冷水还是热水电机的转动,能用键盘输入数据以及温度信号的实时显示。主电源模块采用整流桥进行AC-DC电源变换,电容用470uf 5v,0.1uf,100uf 5v的构成稳压谐波调节电路,稳压器采用三端稳压集成电路LM7805 。由于单片机供电电压5V
12、故继电器采用5V-SPDT OMRON继电器即可满足设计要求。温度采集采用DS18B20温度传感器。DS18B20是一种新型的“一线器件”,其体积更小、更适用于多种场合、且适用电压更宽、更经济。DALLAS 半导体公司的数字化温度传感器DS18B20是世界上第一片支持“一线总线”接口的温度传感器。温度测量范围为-55+125 摄氏度,可编程为9位12 位转换精度,测温分辨率可达0.0625摄氏度,分辨率设定参数以及用户设定的报警温度存储在EEPROM 中,掉电后依然保存。3.2硬件电路设计3.2.1主电源电路 图3.2.1 主电源电路为防止电源之间的相互
13、干扰,需对电路进行独立供电,本系统采用双电源输出,一个正常之用,一个应急备用。因此电源电路设计输出两路为+5V的稳压电源,同时主电路的开关元件为固态继电器,其直流侧的供电电源可选择为+5V。由于固态继电器内部带有光耦,其直流侧与交流侧相互隔离,因此其直流侧的供电电源可与数字电路的+5V电源共用,另外DS18B20也用+5V的稳压电源供电,另外一个+5V的稳压电源用来备用,当遇到系统断电时可以把那个备用的稳压电源来应急,这样就给系统增加了一道应急保险。本装置的直流稳压电源采用通常的桥式全波整流、电容滤波、三端固定输出的集成稳压器件进行设计。系统的供电电源电路如图2所示 3.2.2温度采集模块由于
14、在传统的模拟信号远距离温度测量系统中,需要很好的解决引线误差补偿问题、多点测量切换误差问题和放大电路零点漂移误差问题等技术问题,这样才能达到较高的测量精度。而且一般监控现场的电磁环境都非常恶劣,各种干扰信号较强,模拟温度信号容易受到干扰而产生测量误差,影响测量精度。本设计的温度测量系统采用美国Dollas半导体公司的DS18B20温度芯片对游泳池的水温进行温度数据的采集。DS18B20数字温度计是单总线器件,具有线路简单,体积小的特点。因此,用它来组成一个测温系统在一根通信线上可以挂很多个这样的数字温度计。DS18B20的测温电路如图所示 图3.2.2. DS18B20的测温电路3.2.3按键
15、输入电路在按键模块电路中有4个按键,温度设定范围是24到29,可通过温度上限加一减一按钮改变设定温度上限,温度下限加一减一按钮改变温度下限。四个键分别为: 温度上限加一键,温度上限减一键,温度下限加一键,温度下限减一键图3.2.3. 显示电路3.2.4继电器模块是一个控制电机的电路图,单片机通过P31和P34口的输出控制继电器的开合并进行通讯,其中P31口的输出控制继电器RL1的开合进而控制COLDWATER电机的转动,决定向游泳池中加入冷水来降温;P34口的输出控制继电器RL2的开合进而控制HOTWATER电机的转动,决定向游泳池中加入热水来升温系统图3.2.4. 继电器电路 3.2.5 显
16、示模块用单片机驱动LCD数码管有很多方法,按显示方式分,有静态显示和动态显示,按译码方式可分硬件译码和软件译码之分。静态显示数据稳定,使用的硬件较多本电路采用共阳极数码管LG5641A进行动态显示,用P20P27口作为位选控制,P00P07口传输要显示的数据,数据线和位选线直接接AT89C51单片机的I/O口即可,因为I/O口输出电流很小并且加上了上拉电阻,这样可以对LCD进行驱动,它的电压值足以驱动LCD。本设计就是采用动态显示电路,其电路如图3.2.5所示。图3.2.5显示电路 4.1系统程序设计系统的软件主要是采用C语言,对单片机进行变成实现各项功能。主程序对模块进行初始化,而后调用读温
17、度、处理温度、显示、键盘等模块。用的是循环查询方式,来显示和控制温度,主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值并负责调用各子程序,其程序流程如图4.1系统程序流程图。图4.1. 系统程序流程图 4.2各部分程序流程图 4.2.1. 计算温度子程序 读出温度子程序的主要功能包括初始化,判断DS18B20是否存在,若存在则进行一系列的读操,作若不存在则返回。其程序流程图如图4.2所示。图4.2. 读程序流程图4.2.2.按键处理子程序 按键处理子程序主要是负责参数的设置,主程序每循环一次都要对按键进行扫
18、描,判断是否有输入键按下则进行一系列的按键输入操作。其程序流程框图如图4.2.2所示。开 始 图4.2.2程序流转程序图4.2.3.计算温度子程序 计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图4.4所示图4.2.3计算温度子程序第5章 仿真结果5.1本系统仿真因本系统是利用单片机进行系统控制,所以需采用单片机仿真工具Proteus进行仿真。Proteus软件具有和其它EDA工具一样的原理布图、PCB自动或人工布线及电路仿真的功能外,其电路仿真是互动的,针对微处理器的应用,还可以直接在基于原理图的虚拟原型上编程,并实现软件源码级的实时调
19、试,如有显示及输出,还能看到运行后输入输出的效果Proteus为使用者建立了完备的电子设计开发环境,用户可以对基于微控制器的设计连同所有的周围电子器件一起仿真,是一款非常优秀的单片机仿真软件。可以使用Keilc51和Proteus进行联调,使调试和仿真更为方便。如果设定温度下限值为24,在水温24及以下时,发光二极管闪烁报警,继电器RL2接通,HOTWATER电机转动,向游泳池中加入热水升温。5.2仿真结果仿真图如图所示仿真1仿真2仿真3图5.2仿真图结论 本文设计的游泳池恒温自动控制系统,是以单片机为控制核心的恒温系统。该系统利用数字温度传感器,将采样到的温度信号输入到单片机,再由单片机根据
20、测量温度与设定温度的差值和PID算法生成控制信号,控制固态继电器的通断。整个系统结构紧凑、所用芯片少、控制精度高、响应速度快,体积小,成本低。在键盘、显示电路上都采用了串行方式,减小了单片机口线的使用,减小了成本开支。虽然在主电源电路未采用流行的开关稳压电源,但经济实惠,性能稳定。在这次难得的论文设计过程中我锻炼了自己的思考能力和动手能力。通过题目选择和设计电路的过程中,加强了我思考问题的完整性和实际生活联系的可行性。在方案设计选择和芯片的选择上,培养了我们综合应用单片机的能力,对单片机的各个管脚的功能也有了进一步的认识。还锻炼我们个人的查阅技术资料的能力,动手能力,发现问题,解决问题的能力。
21、并且我们熟练掌握了有关器件的性能及测试方法。 由于时间有限和本身知识水平的限制,本系统还存在一些不够完善的地方,要作为实际应用还有一些具体细节问题需要解决。如将温度更精确,和自动随着环境变化而自行调整适合温度。我感受到做论文是要真真正正用心去做的一件事情,是真正的自己学习的过程和研究的过程,没有学习就不可能有研究的能力,没有自己的研究,就不会有所突破,那也就不叫论文了。希望这次的经历能让我在以后学习中激励我继续进步。参考文献:1吴炳胜,王桂梅80C51单片机原理与应用M北京:冶金工业出版社,2汪孝国,王婉丽高精度PID温度控制器J电子与自动化,20013耿长清单片机应用技术M北京:
22、化学工业出版社,20034夏红,赏星耀PID参数自整定方法综述J浙江科技学院学报,2002 2003,(4)5催东剑多点恒温自动控制系统设计J电工技术,2003,(7)6郁有文,程继红传感器原理及工程应用M西安:西安电子科技大学 20037戴永微机控制技术M长沙:湖南大学出版社,20048陶永华新型PID控制及其应用M北京:机械工业出版社,20029刘普寅,吴孟达模糊理论及其应用M北京:国防工业出版社,199810诸静模糊控制原理与应用M北京:机械工业出版社,1995.11付家才单片机控制工程实践技术M北京:化学工业 出版社,200412肖亮,陶学恒新型的智能化液位温度测量系统J仪表技术与传感
23、器, 2005,(8)13 陈伟强.MSC-51实用子程序集M.北京:北京北京航空航天大学出版社, 1998.4:78-80,82-85 14 赵晶.PROTEL高级应用M:人发邮电出版社,2002.12:224-226 15 王福瑞.单片微机测控系统设计大全M.北京:中国电力出版社,2002: 178-179 16 于海生等.微型计算机控制系统M.清华大学出版社,1998. 17 蔡自兴.智能控制M.北京:电子工业出版社,2004 18 吴同茂.温度控制系统实验指导书M.长沙:中南大
24、学出版社,200219 王顺晃,舒迪前.智能控制系统及其应用M.北京:机械工业出版1995 20 张艳妍.一种模糊PID控制在热加工对象中的应用J.自动化技术与应用, 2003 22(9):45-48附录附录1主电路图附录2软件程序/延时 N ms /DS1820引脚定义 sbit TMDAT =P10; void DS1820_DelayCount (unsigned char Coun)
25、0; data unsigned char Count; Count=Coun; while(Count>0) Count-; Count=Coun; while(Count>0) Count-; /复位DS18B20 void
26、 DS1820_Reset(void) TMDAT=0; DS1820_DelayCount(412); TMDAT=1; DS1820_DelayCount(16); /等待DS18B20应答 unsig
27、ned char DS1820_Answer(void) data unsigned int i; data unsigned char j; i=0xc000; while(TMDAT) i-; if (i=0) return(aban_return);
28、160; i=0xffff; j=3; while(TMDAT) i-; if (i=0) if(j=0)
29、160; return(aban_return); else j-; i=0xffff;
30、160; DS1820_DelayCount(16); return(done_return); /等待DS18B20应答 /读取位 bit DS1820_Readbit(void) data int i=0;
31、 bit dat; TMDAT=0;i+;i+;i+;i+; TMDAT=1;i+;i+;i+;i+;i+;i+;i+;i+; dat = TMDAT; / DS1820_DelayCount(8); DS1820_DelayCount(32);&
32、#160; return dat; /读取字节 unsigned char DS1820_Readbyte(void) data unsigned char i,j,dat=0; for(i=1;i<=8;i+)
33、0; j=DS1820_Readbit(); dat=(j<<7)|(dat>>1); return dat; /写一个字节 void DS1820_Writebyte(unsigned char dat)
34、160;data signed char i=0; data unsigned char j; bit testb; for(j=1;j<=8;j+)
35、0;testb=dat & 0x01;dat = dat>>1; if(testb) TMDAT=0;
36、; i+;i+;i+;i+;i+;i+;i+;i+; TMDAT=1; /DS1820_DelayCount(8);
37、; DS1820_DelayCount(32); else TMD
38、AT=0; /DS1820_DelayCount(8); DS1820_DelayCount(32);
39、; TMDAT=1; i+;i+;i+;i+;i+;i+;i+;i+; /读操作开始 unsigned char DS1
40、820_StartTem(void) EA=0; DS1820_Reset(); if(DS1820_Answer()=aban_return) EA=Ea; return(ab
41、an_return); / DS1820_Delayms(1); DS1820_Delayms(4); DS1820_Writebyte(0xcc); / DS1820_Writebyte(0x55); / for(i=
42、0;i<8;i+) /DS1820_Writebyte(DS1820_tempi); DS1820_Writebyte(0x44); EA=Ea; return(done_return); /读所有传感器 int DS1820_ReadTem(void) data unsigned
43、60;char a,b; data int y3; data float y4; data unsigned char i; EA=0; DS1820_Reset(); i
44、f(DS1820_Answer()=aban_return) EA=Ea; return(0xffff); DS1820_Delayms(
45、4); DS1820_Writebyte(0xcc); /跳过匹配传感器 /DS1820_Writebyte(0x55); / for(i=0;i<8;i+) /DS1820_Writebyte(run_inf.system_inde
46、x.DS1820_tempi); DS1820_Writebyte(0xbe); /读取温度 for(i=0;i<9;i+)
47、0;run_inf.system_index.DS1820_tempi=DS1820_Readbyte(); if(CRC(9)!=0) EA=1;
48、return(0xffff); /计算CRC a = run_inf.system_index.DS1820_temp0; b = run_inf.system_index.DS1820_temp1; DS1
49、820_Reset(); y3 = (b<< 8)|a; y4=y3; y4=(y4*25)/4; EA=1; return(int)(y4);
50、160;2. DS1602驱动程序sbit rtc_sc=P34; sbit rtc_io=P35; sbit rst_1302=P36; bdata unsigned char temp; sbit temp_0 = temp0; sbit temp_7 = temp7; /* DS1302驱动程序开始 */ /功能: 往DS1302写入1Byte数据
51、void v_RTInputByte(unsigned char ucDa) unsigned char i; temp = ucDa; for(i=8; i>0; i-) rtc_io = temp_0; /*相当于汇编中的 RRC */ rtc_sc = 1; rtc_sc = 0; tem
52、p = temp >> 1; /功能: 从DS1602读取1Byte数据 unsigned char uc_RTOutputByte(void) unsigned char i; rtc_io=1; for(i=8; i>0; i-) temp =
53、;temp >>1; /*相当于汇编中的 RRC */ temp_7 = rtc_io; rtc_sc = 1; rtc_sc = 0; retur
54、n(temp); /功能: 往DS1602写入数据 void write1302(unsigned char ucAddr,unsigned char ucDa) bit ea; ea=EA; EA=0; rtc_rs_port&=(rtc_rs_bit);
55、rtc_sc = 0; rtc_rs_port|=rtc_rs_bit; v_RTInputByte(ucAddr); /* 地址,命令 */ v_RTInputByte(ucDa); /* 写1Byte数据*/ rtc_sc = 1; rtc_rs_port&=(rtc_rs_bit); EA = ea; /功能: 读取DS1602某地址的数据 unsigned&
56、#160;char read1302(unsigned char ucAddr) unsigned char ucDa; bit ea; ea=EA; EA=0; rtc_rs_port&=(rtc_rs_bit); rtc_sc = 0; rtc_rs_port|=rtc_rs_bit; v_RTInputByte(uc
57、Addr); /* 地址,命令 */ ucDa = uc_RTOutputByte(); /* 读1Byte数据 */ rtc_sc = 1; rtc_rs_port&=(rtc_rs_bit); EA = ea; return(ucDa); /功能: 设置初始时间 void Set1302(pTime_S time_temp)
58、60; unsigned char i= 0x80; write1302(0x8e,0x00); /* 控制命令,WP=0,写操作*/ write1302(i,time_temp->sec); i +=2; write1302(i,time_t
59、emp->min); i +=2; write1302(i,time_temp->hou); i +=2; write1302(i,time_temp->day); i +=2; write1302(i,
60、time_temp->mon); i +=2; write1302(i,0x02); i +=2; write1302(i,time_temp->yea); i +=2; write1302(0x8e,0x80); /* 控制命令,WP=1,写保护*/
61、; /功能: 读取DS1302当前时间 void get1302(void) unsigned char i,time_bcd_temp6; unsigned char ucAddr = 0x81; for (i=0;i<7;i+) time_bcd_tempi = read1302(ucAddr);/*格式为: 秒 分 时 日 月 星期 年 */
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论