水温控制系统.doc_第1页
水温控制系统.doc_第2页
水温控制系统.doc_第3页
水温控制系统.doc_第4页
水温控制系统.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

长安大学2011电子竞赛训练题目 设计 题目:水温控制系统 学院:电子与控制工程学院 专业:电气工程及其自动化 姓名:孟川 马继强 王宇 指导老师:巫春玲 时间:2011年07月15号-07月25号目录1、 要求 . 32、 摘要 . 43、 前言 . 54、 方案分析. 65、 实现 . 11六、结论 . 11七、附录 . 1 一、要求 水温控制系统一、任务设计并制作一个水温自动控制系统,控制对象为1升水,容器为搪瓷器皿。水温可以在一定范围内设定,并能实现在1070量程范围内对每一点温度的自动控制,以保持设定的温度基本保持不变。二、要求1、基本要求(1)可键盘设定控制温度值,设定最小分辨率为0.1;(2)实时测量并显示实际温度。温度测量误差在0.5 内;(3)水温控制系统应具有全量程(2080)内的升温功能;(4)任意设定一个温度值,控制系统可以实现该给定温度的恒值自动控制。控制的最大动态误差4,静态误差1。2、发挥部分(1)分段温度控制:50恒温3分钟,然后升温至70恒温。(2)恒速温度控制:以每分钟升温2的速度,由35升温至40,然后保持。(3)显示水温随时间变化的实时曲线(4)其他。2、 摘要 本次设计的主要目的是实现对温度的控制,其主要思路是通过温度传感器感应物体温度,通过LCD显示出来,进而控制水温。本次设计分3个模式进行,模式1为键盘设定温度,然后水温通过加热棒升温,达到设定温度,并通过PID算法和控制最终维持在设定温度左右。模式2为将水温通过加热棒升温到摄氏度,然后启动定时分钟程序,使其维持在摄氏度约分钟,之后退出定时,继续升温,将其加热到摄氏度,继续通过和PWM控制将其维持在70摄氏度左右。模式3为水温自动升温到35摄氏度,然后控制PWM参数,使其速度维持在2摄氏度/每分钟,持续升温到40摄氏度,然后通过控制将其维持在摄氏度左右。本次设计用到的方法有算法、PWM控制方法等。 三、前言随着社会的发展和科技的进步以及测温仪器在各个领域的应用,智能化是现代温控系统发展的主流方向,特别是今年来,温度控制系统已应用到生活的各个方面,但是温度控制一直是一个未开发的领域,是与人们息息相关的一个问题。针对这种实际情况,设计一个温度控制系统,具有广泛的应用前景和实际意义。温度是科学技术中最基本的物理量之一。物理、化学、生物等学科都离不开温度,在工业生产等许多领域,温度常常是表征对象和过渡状态的重要物理量。各行各业对温度的要求越来越高,可见温度的测量和控制是非常重要的。单片机在电子产品中的应用已经越来越广泛,在很多的电子产品中也用到了温度检测和温度控制。随着温度控制器应用越来越广泛,各种试用于不同场和的温度控制器应运而生。 四、方案分析本次设计主要版块分为温度感应模块,温度显示模块,键盘设定模块和加热控制模块。一、方案的选择 1.对于温度感应模块有两种方案: 一种是使用普通温度传感器pt100再结合电压放大器和AD转换器将感应到的温度数值转换为数字量存储在某一单元内。但由于该方案电路繁多,线路冗长,所以舍之不用。 第二种是使用温度传感器18B20感应温度,由于该温度传感器内含AD转换器,因此连接简单,应用方便,故选用该方案。 2.对于温度显示模块有两种方案: 一种是使用静态显示,通过数码管显示被测温度和设定温度。该方案程序简单,但硬件连接复杂,所需元件数量多,不适合设计应用。 第二种是使用动态显示,通过数码管显示被测温度和设定温度。该方案程序复杂,但硬件连接简单,所需元件少,但由于无法显示曲线,故不是最佳方案。 第三种是使用液晶屏,通过字幕显示模式、温度、曲线。该方案程序复杂,但硬件观察方便,显示清晰,故为最佳方案。3.对于键盘设定模块有两种方案:一种是使用线反转法,通过矩阵键盘,一次求出行数和列数,然后求出设定的数值。由于该方案不具有扫描功能,因此不适用于一般的键盘程序,而适用于键盘中断程序。第二种是使用键盘扫描法,通过矩阵键盘,求出设定的数值,由于该方案具有扫描功能,因此在不使用中断的情况下,使用键盘扫描程序是十分恰当的,本次设计采用的是键盘扫描程序。4. 对于加热控制元件有两种方案。一种是使用加热器(俗称热得快),功率约在左右,但考虑到功率过大会导致加热太快,不容易控制。另一种是使用加热棒,功率在左右,功率不大,适合简易水温控制系统。5. 对于控制方法有两种方案。一种是采用普通的控制方法,即随着水温的变化调节温度,但局限性太小,由于水温变化快,且惯性大,不易调节,故采用普通控制方法显得力不从心。另一种就是采用控制加PID算法,通过采用PWM可以产生一个波形,而PWM波形的占空比是通过PID算法调节,这样就可以调节加热棒的功率进而控制温度的变化。2、 硬件的说明 硬件总体框图为:液晶显示屏 温度传感器 1 8B20 单片机继电器 4X4矩阵键盘加热棒加热对象升水本次设计硬件用到了单片机89C52、温度传感器18B20、加热棒、矩阵式键盘、SSR固态继电器等。单片机89C52是常用的单片机之一,单片机上有32个P口,其中P0、P1、P2、P3各8个。温度传感器18B20接到单片机的一个P口上,本次设计是P1.3,因为温度传感器18B20可以直接将数据传输给单片机,因此可直接连接。是液晶显示屏,能显示64*128点阵的图像、文字等,功能强大。矩阵式键盘采用44式,分别表示0到15。通过将8个出线端接到P2口上,然后通过P2口控制键盘,键盘的行拉高电阻和5伏电压。固态继电器SSR是一种动作时间比较快的继电器,有4个接口,2端接5V电压,2端接加热棒。三、软件的说明本次程序的主框图为:开始 中断初始化和初始化运行键盘输入模块运行显示模块运行PID控制模块检查模式,并分别跳到各模式返回开始PID增量型算法程序框图: 比较程序框图: 开始检查设定温度是否高于水温输入设定值(k)和水温(k),若不是,开启加热若不是,关闭加热若是,检查设定温度是否高于水温2摄氏度计算E(k)=R(k)-M(k) 若是,全速加热计算Pp(k)=Kp*E(k)- E(k-1)计算Pi(k)=Ki*E(k)结束计算d(k)=KdE(k)-2E(k-1)+E(k-2)P(k)=Pp(k)+Pi(k)+Pd(k)E(k-2)=E(k-1),E(k-1)=E(k)返回加热控制模块的框图为 开始检测模式若为模式若为模式若为模式设定值取设定值取键盘摄入设定值 若不是比较程序比较程序比较程序 若不是 结束水温是否达到摄氏度水温是否达到摄氏度若是,调节PWM参数若是,持续分钟定时分钟是否已到设定值取70若是,设定值取比较程序 结束比较程序 结束五、实现本次设计的功能板块分为四块,分别是温度传感器感应模块、键盘输入模块、显示模块、控制温度模块。调试过程中,出现过不少问题,诸如:1. 发现温度传感器的温度并不能有效地显示在LCD上原因:温度传感器的程序有问题,延时没有用好。解决方法:修改18B20中的延时程序。2. 发现键盘的数字按下后,键盘没有反应。原因:程序中键盘的按键识别方法是线反转法,键盘的键值所对应的行与列不能有效接通。解决方法:改用扫描法,键盘有了反应。 六、结论本次设计的题目是水温控制系统,其主要思想是将水温控制在某一个设定的温度左右,误差不超过1度。本次设计所包含的基本功能如下:当有键值输入时,判断模式,如果是模式1,则自动将温度被控对象的温度将被设定在设定值左右,来回往复波动。如果是模式2,则将温度升到50摄氏度,维持3分钟,然后升到70摄氏度维持,如果是模式3,则将温度升到35摄氏度,控制PWM参数,控制在每分钟2摄氏度,升到40摄氏度维持。本次设计中不足之处就是LCD反应比较慢,误差还不太理想,有待进一步改进。本次设计历时2周左右,花费了大量的精力和时间,可以说其中包含了诸多的汗水和付出。通过翻阅书籍和不停地写程序调试,既增长了知识,又增加了经验。其过程中有苦有甜,不足道也。最后感谢老师的指导和同学的帮助。7、 附录1原理图附录2元件明细序 号名 称 型号参数数量备注1LCD128641片2键盘按钮16个4SSR固态继电器1个5加热棒1个250瓦6三极管1个7 单片机89C521片附录3电路程序 #include #include #include #include #define unchar unsigned char #define unint unsigned intsbit E=P30; sbit RW=P31; sbit RS=P32; sbit CS1=P36; sbit CS2=P37; sbit DQ=P10; sbit JR=P15;char code table_shuzi16= 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00, 0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00, / 0 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00, 0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00, /1 0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00, 0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00, /2 0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00, 0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00, /3 0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00, 0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00, /4 0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00, 0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00, /5 0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00, 0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00, /6 0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00, 0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00, /7 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00, 0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00, /8 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00, 0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00, /9 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00, /. ;char code table_wenzi32= 0x00,0x10,0x0C,0x04,0x4C,0xB4,0x94,0x05, 0xF6,0x04,0x04,0x04,0x14,0x0C,0x04,0x00, 0x00,0x82,0x82,0x42,0x42,0x23,0x12,0x0A, 0x07,0x0A,0x12,0xE2,0x42,0x02,0x02,0x00, /实 0x08,0x31,0x86,0x60,0x00,0xFE,0x02,0xF2, 0x02,0xFE,0x00,0xF8,0x00,0x00,0xFF,0x00, 0x04,0xFC,0x03,0x00,0x80,0x47,0x30,0x0F, 0x10,0x67,0x00,0x07,0x40,0x80,0x7F,0x00, /测 0x40,0x41,0xCE,0x04,0x00,0x80,0x40,0xBE, 0x82,0x82,0x82,0xBE,0xC0,0x40,0x40,0x00, 0x00,0x00,0x7F,0x20,0x90,0x80,0x40,0x43, 0x2C,0x10,0x10,0x2C,0x43,0xC0,0x40,0x00, /设 0x00,0x10,0x0C,0xA4,0x24,0x24,0x25,0xE6, 0x24,0x24,0x24,0x24,0x14,0x0C,0x04,0x00, 0x40,0x20,0x18,0x07,0x08,0x10,0x20,0x7F, 0x42,0x42,0x42,0x42,0x40,0x40,0x00,0x00, /定 0x10,0xD0,0xFF,0x50,0x90,0x04,0xF4,0x54, 0x5F,0x54,0x54,0x5F,0xF4,0x04,0x00,0x00, 0x03,0x00,0xFF,0x00,0x00,0x84,0x85,0x45, 0x35,0x0F,0x15,0x25,0x65,0xC4,0x44,0x00, /模 0x00,0x08,0x88,0x88,0x88,0x88,0x88,0x08, 0xFF,0x08,0x09,0x0E,0x0A,0x08,0x00,0x00, 0x00,0x20,0x60,0x30,0x1F,0x10,0x08,0x08, 0x00,0x07,0x18,0x20,0x40,0x80,0x70,0x00, /式 0x10,0x21,0x86,0x70,0x00,0x7E,0x4A,0x4A, 0x4A,0x4A,0x4A,0x7E,0x00,0x00,0x00,0x00, 0x02,0xFE,0x01,0x40,0x7F,0x41,0x41,0x7F, 0x41,0x41,0x7F,0x41,0x41,0x7F,0x40,0x00, /温 0x08,0x08,0x08,0xFF,0x88,0x48,0x00,0x98, 0x48,0x28,0x0A,0x2C,0x48,0xD8,0x08,0x00, 0x02,0x42,0x81,0x7F,0x00,0x00,0x40,0x42, 0x42,0x42,0x7E,0x42,0x42,0x42,0x40,0x00, /控 0x00,0x00,0x02,0x22,0xB2,0xAA,0x66,0x62, 0x22,0x11,0x4D,0x81,0x01,0x01,0x00,0x00, 0x00,0x40,0x21,0x13,0x09,0x05,0x41,0x81, 0x7F,0x01,0x05,0x09,0x13,0x62,0x00,0x00, /系 0x20,0x30,0x2C,0xA3,0x60,0x10,0x84,0xC4, 0xA4,0x9D,0x86,0x84,0xA4,0xC4,0x84,0x00, 0x20,0x22,0x23,0x12,0x12,0x92,0x40,0x30, 0x0F,0x00,0x00,0x3F,0x40,0x41,0x70,0x00, /统 ;char code table_xiaoshuzi4= 0x00,0x7c,0x44,0x7c,/0 0x00,0x00,0x7c,0x00,/1 0x00,0x74,0x54,0x5c,/2 0x00,0x54,0x54,0x7c,/3 0x00,0x3c,0x20,0x7c,/4 0x00,0x5c,0x54,0x74,/5 0x00,0x7c,0x54,0x74,/6 0x00,0x04,0x04,0x7c,/7 0x00,0x7c,0x54,0x7c,/8 0x00,0x5c,0x54,0x7c,/9 0x08,0x08,0x08,0x08,;unint bzw0,bzw1,bzw2,sjbz=800,sjbj=1;unint num,qxlie=11,qxpian=1,Temperature;unint shiwei,gewei,xiaoshu,wda,wdb,wdc,js,set_Temperature, pidz;unchar pwmh,pwml;struct PID unint Proportion; unint Integral; unint Derivative; unint LastError; unint PrevError; ; struct PID pidfh; /*读忙void readbusy()P0=0x00;RS=0;RW=1;E=1;while(P0&0x80);E=0;/*写指令void writecommand(unchar command) readbusy();RS=0;RW=0;P0=command;E=1; _nop_();_nop_(); E=0;/*写数据 void writedate(unchar date)readbusy();RS=1; RW=0;P0=date; E=1; _nop_(); _nop_(); E=0; /*设置页void set_page(unchar page)page=0xb8|page;writecommand(page);/*?void set_line(unchar line)line=0xc0|line;writecommand(line);/*?void set_lie(unchar lie)lie=lie&0x3f;lie=0x40|lie;writecommand(lie);void set_onoff(unchar onoff)onoff=0x3e|onoff;writecommand(onoff);/*选屏void selectscreen(unchar screen)switch(screen) case 0:CS1=1;CS2=1;break;case 1:CS1=1;CS2=0;break;case 2:CS1=0;CS2=1;break; default: break;/*清屏void clearscreen(unchar screen)unchar i,j;selectscreen(screen); for(i=0;i8;i+) set_page(i);set_lie(0);for(j=0;j0;i-) DQ=1; _nop_();_nop_();_nop_(); DQ=0;_nop_();_nop_(); _nop_(); _nop_();_nop_();/5us DQ=val&0x01; delay(9); DQ=1; val=val1; delay(4);/*读字节unchar read_byte(viod)unchar a=0;unchar value=0; for(a=8;a0;a-) DQ=1;_nop_(); _nop_();DQ=0;_nop_();_nop_();value=value1; DQ=1; _nop_(); _nop_(); _nop_(); _nop_(); /4us if(DQ) value|=0x80; delay(9); /66us return(value);/*处理温度void chuliwendu(unchar gaowei,unchar diwei) Temperature = (diwei + gaowei *256) * (0.0625*10); /Temperature=125 shiwei=Temperature/100; gewei=Temperature/10%10; xiaoshu= Temperature%10; /*?void caijiwendu()unchar wenh,wenl; reset();yingda(); write_byte(0xcc); write_byte(0x44); reset(); yingda(); write_byte(0xcc); write_byte(0xbe); wenl=read_byte(); wenh=read_byte(); chuliwendu(wenh,wenl); /*延时void delay1(unint z)unint x,y;for(x=z;x0;x-)for(y=1;y0;y-);/*键盘扫描void keyscan()unchar temp;P2=0xfe;temp=P2;temp=temp&0xf0;while(temp!=0xf0)delay1(1);temp=P2;temp=temp&0xf0;while(temp!=0xf0)temp=P2;switch(temp)case 0xee:num=0;js+;break;case 0xde:num=1;js+;break;case 0xbe:num=2;js+;break;case 0x7e:num=3;js+;break;while(temp!=0xf0)temp=P2;temp=temp&0xf0;P2=0xfd;temp=P2;temp=temp&0xf0;while(temp!=0xf0)delay1(1);temp=P2;temp=temp&0xf0;while(temp!=0xf0)temp=P2;switch(temp)case 0xed:num=4;js+;break;case 0xdd:num=5;js+;break;case 0xbd:num=6;js+;break;case 0x7d:num=7;js+;break;while(temp!=0xf0)temp=P2;temp=temp&0xf0;P2=0xfb;temp=P2;temp=temp&0xf0;while(temp!=0xf0)delay1(1);temp=P2;temp=temp&0xf0;while(temp!=0xf0)temp=P2;switch(temp)case 0xeb:num=8; js+;break;case 0xdb:num=9; js+;break;case 0xbb:num=10;break;case 0x7b:num=11;break;while(temp!=0xf0)temp=P2;temp=temp&0xf0;P2=0xf7;temp=P2;temp=temp&0xf0;while(temp!=0xf0)delay1(1);temp=P2;temp=temp&0xf0;while(temp!=0xf0)temp=P2;switch(temp)case 0xe7:num=12;break;case 0xd7:num=13;break;case 0xb7:num=14;break;case 0x77:num=15;break;while(temp!=0xf0)temp=P2;temp=temp&0xf0;/*显示1void display(unchar xp,unchar page,unchar lie,unchar j)unchar i;selectscreen(xp);set_page(page);set_lie(lie);for(i=0;i8;i+) writedate(table_shuziji); set_page(page+1);set_lie(lie);for(i=0;i8;i+) writedate(table_shuziji+8); /*显示2void displayz(unchar xp,unchar page,unchar lie,unchar j)unchar i;selectscreen(xp);set_page(page);set_lie(lie);for(i=0;i16;i+) writedate(table_wenziji); set_page(page+1);set_lie(lie);for(i=0;i16;i+) writedate(table_wenziji+16); /*显示3void displays(unchar xp,unchar page,unchar lie,unchar j)unchar i;selectscreen(xp);set_page(page);set_lie(lie);for(i=0;i4;i+) writedate(table_xiaoshuziji); /*设定坐标轴void set_zhou()unchar a,b,c,d;selectscreen(1);for(a=2;a7;a+) set_lie(10); set_page(a);writedate(0xff); set_lie(10);set_page(7);writedate(0x0f);for(b=2;b8;b+) set_lie(11); set_page(b);writedate(0x08); selectscreen(1);set_lie(12);for(c=0;c52;c+) set_page(7);writedate(0x08); selectscreen(2);set_lie(0);for(d=0;d1;c-)d=d1;if(b=7) for(i=2;i7;i+) selectscreen(pian);set_page(i); set_lie(lie);writedate(0x00); selectscreen(pian);set_page(7);set_lie(lie);writedate(d+8); else for(i=2;i7;i+) if(i=b) selectscreen(pian);set_page(i);set_lie(lie);writedate(d); else selectscreen(pian);set_page(i);set_lie(lie);writedate(0x00); /*曲线void quxian()if(qxlie=32) if(qxpian=2) qxlie=11;qxpian=1; if(qxlie=64) if(qxpian=1) qxlie=0;qxpian=2; xstu(qxpian,qxlie);qxlie+;/*设置温度void shezhiwendu()if(numLastError; / ek-e(k-1) dError=Error-2*pp-LastError+pp-PrevError;/e(k)-2*e(k-1)+e(k-2) pp-PrevError = pp-LastError; pp-LastError = Error; return (pp-Proportion * pError+ pp-Integr

温馨提示

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

评论

0/150

提交评论