您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于msp430的家用太阳能加热控温沐浴系统
论文格式***********************************************************注意:此为封面格式***********************************************************2011-2012德州仪器C2000及MCU创新设计大赛项目报告题目:基于msp430的家用太阳能加热控温沐浴系统学校:西安电子科技大学指导教师:杨振江组别:本科组应用类别:控制系统类平台:(MSP430或Cortex-M或C2000)参赛队成员名单(含个人教育简历):1.袁健威机电工程学院09级机械设计制造及其自动化专业2.张朝扬机电工程学院09级机械设计制造及其自动化专业3.符修亮机电工程学院09级机械设计制造及其自动化专业********************************************************************注意:此为正文起始格式正文和附录中均不得大段复制源代码和原理图,只允许能充分体现创新方法或关键设计的少量源代码示例和原理图,滥用源代码和原理图的,评委有权扣分。正文+附录尽量控制在20页内,超过25页的部分不会被阅读*********************************************************************题目:基于msp430的家用太阳能加热控温沐浴系统摘要(中英文)针对现在的太阳能加热,我们的系统分为三部分:信号输入部分,加热控制控制部分以及电机控制出水温度部分。信号输入部分我们采用便于现场控制的键盘输入和便于用户控制的红外输入,加热部分采用的是温度和容量可调的加热系统,而电机控制采用的是发展较为成熟的PID控制以及定位准确的步进电机控制。三个系统相互联系,总体上达到淋浴控温和加热目的。ThewaterheatingbathsystemisdesignedbasedonthesolarenergywaterheatingThesystemcanbedividedintothreeparts:definitionpart,heatingandheat–preservationpart,andsteppingmotortemperaturecontrollingpart。Foreasycontrol,weuseinfraredcontrollingandkeypadinputmethod。Forquicklyheating,wedefinedtwomodesforheatingandheat–preservation。Forquicklyandstablytemperaturecontrollinginwateroutlet,weusePIDmethodinrunningsteppingmotor。1.引言简述系统设计的背景、目的、和所要解决的问题。随着进入节能时代,较好地利用各种的再生资源是我们设计产品的一个重要因素。太阳能,作为最容易获得的能量,渐渐开始成为各种绿色能源的首选。基于这个立场,我们基于太阳能加热的方案来设计出水温度的系统,利用电机控制冷水和热水的混合来达到控制出水温度的目的。再则考虑到晚上太阳能水箱热能散失导致温度下降热水供给不足的问题,我们可以需要给予系统加热的功能,解决晚上用户舒适洗澡的问题。在用户使用这个模块,考虑到用户在使用的时候因为浴室的原因,用液晶显示可能模糊,所以我们选用的是数码管显示输出。为了便于用户的操作使用,我们采用红外控制,同时作为硬件调试和用户必要时的使用,我们增加用键盘对系统进行直接的控制值设置模块。考虑到现在的家庭一般都是3人家庭,在水位的设置上面,我们让用户可以对水位进行设定,分别是超低水位,一人,二人和三人水位。这样既可以节约到加热的时间,同时也可以节约到在晚上的时候热水洗澡而需要的加热热水的电费。至于电机控制模块,为了达到快,准,稳的要求,我们采用了现在比较成熟度PID模块来解决电机控制。我们利用msp43016x系列内部的DAC模块,用利用数字PID方法算出输出电压,对步进电机来进行速度和方向的控制。从而达到了用户出水水温的快,准,稳。2.系统方案系统总框图:系统的总体构造思想是:用户可以在任意时候设定需要的目标值,例如水位,热水箱的温度,以及出水时候的温度。而对于系统,我们的做法是:水位超过的时候不给予进水,低于最低水位的时候为了保护系统必须关闭出水强行进水同时关闭加热控制。加热控制和水位控制并行操作,可以为用户节约时间。在超低水位时进行过热保护等措施。为了让洗澡时候的供水温度稳定,只有水位和热水温度到了设定的参数才准许用户开水洗澡。在出水控制这一模块,为了更好地获得稳定快速的输出,我们会采用现在较为成熟的PID算法对在出水控制这一块电机输出进行控制。用户设定水位控制加热控制出水控制最后,为了方便用户控制,我们同时采用红外和按钮键盘的方式给系统设定参数。用红外的方式可以更好的让用户进行控制。而按钮键盘则为了更容易对系统进行调试以及在应急情况下对系统进行控制。3.系统硬件设计以下是对系统的各个子系统的硬件设计进行简要说明:水位控制模块:水位控制框图:YNN水位检测水位超出?进水用户设定参数超低水位?关闭热水阀水位控制模块思想比较简单,只关心水位是否达到设定要求。没有的时候就进水,有的时候就停止进水,节省用水。设计这一块的时候为了防止因为水位过低而引起的热水箱损坏,设计时候我们设计了超低水位,用来对水箱进行保护。当水位过低的时候,强行关闭热水阀,没有热水供出。同时加水,烧水,到了安全情况的时候才可以继续正常使用。热水加热模块:加热模块框图:NYNY热水水温检测水温比较低?(要快速加热吗)快速加热模式水温小于设定水温?慢速加热模式用户参数设定加热模块设计思想是:为了可以快速地达到设定的水温同时可以稳定的控制水温,我们设定两种加热模式:快速加热模式和慢速加热模式。假设那个温度点我们设在设定温度的70%那里,那么在设定温度的70%以下的时候,我们把加热模式设置为快速加热模式;在超过的时候,我们设置在慢速加热模式。当温度小于设定温度,则用慢速加热。淋浴供水输出模块框图:NYPID计算输出电压计算温度偏差(实际出水温度-目标出水温度)电压驱动输出需要淋浴出而且情况正常?冷水水阀关闭冷水水阀打开电机控制的主要思想是:首先判断是否用户是否需要淋浴且机器情况正常。机器不正常或者用户不需要都会关闭冷水阀,禁止冷水流出。符合条件之后,电机控制冷水的进出来控制输出的水温。用这种方法的好处是当用户不需要进水的时候或者出现突发情况时候,系统可以很及时地做出相应,而且电机的寿命可以得到延长。同时,鉴于市面上的水阀控制,采用PID算法来控制可以得到更加平稳的调温效果和比较快捷的目标时间。PID控制模块:采用位置式的PID算法,控制系统如下:设定出水温度+淋浴水温输出-PID控制算法D/A电机调节温水输出用户输入模块:用户输入模块框图:用户输入模块分为红外和键盘两部分。都采用中断的方式,可以及时对单片机内部的参数赋值,然后让系统按照新的参数进行调节。漏电保护模块:如下图所示:作为一个沐浴系统所必需的安全保护系统中最重要的漏电保护系统。一旦出现漏电现象,立即关闭所有工作(软件控制)并切断电源(硬件电路控制)。键盘扫描中断输入红外扫描中断输入用户参数设定(第一次是标准值)4.系统软件设计详细介绍算法设计与算法流程图(不得大量复制源代码)系统软件的设计上,在主程序开始之前,是参数的设定,有目标热水温度(aim_hot_temp),目标出水温度(aim_temp),目标水位设置(aim_water_level),用户是否使用(use)。主程序开始部分是对各个端口的设定,以及关闭watchdog,开启各个中断模块的标识。对单片机的资源分配如下:P1.0~P1.6键盘输入P1.7红外输入P2.0~P2.3水位检测P3.0,P3.1数码管显示P4.0DAC步进电机电机电压控制输出P4.1步进电机电机转向控制输出P4.2冷水紧热水箱阀门P4.3淋浴热水放出阀门P4.4淋浴冷水放出阀门P5.3P5.4热水加热模块(低速高速)P6.0P6.1接ds18b20温度检测模块接收温度以下是主程序的while(1)模块:while(1){intTime=40;//延时部分{inti;for(;Time!=0;Time--){for(i=0;i123;i++);}}if(P2IN&0xf0==0xf0){water_level=0;//这里是水位监测部分。高八位=1111时候是超低水位}elseif(P2IN&0xf0==0xe0){water_level=1;//1是低水位}elseif(P2IN&0xf0==0xc0){water_level=2;//2是一人水位}elseif(P2IN&0xf0==0x80){water_level=3;//3是二人水位}elseif(P2IN&0xf0==0x00){water_level=4;}elsewater_level=8;//(异常处理)now_temp=Do1Convert();//Do1Convert()是ds18b20检测出水水温的传递函数hot_temp=Do2Convert();//Do2Convert()是ds18b20检测水箱热水水温的传递函数initdisplay();//对显示模块初始display(now_temp);//显示现在的出水温度if(use){aim_water_level-=1;use=0;}if(water_level=aim_water_level)//p42=1是冷水阀门开否则关闭p43=1是热水阀开,否则关闭{P4OUT&=~BIT2;P4OUT|=BIT3;}else{P4OUT|=BIT2;P4OUT&=~BIT3;}if(hot_temp=0.7*aim_hot_temp)//加热判断,符合上述框图的条件就开启或者关闭热水加热.{P5OUT|=0x0c;}elseif(hot_tempaim_hot_temp){P5OUT|=0x04;//p53=1P5OUT&=0xf7;//p54=0}else{P5OUT&=0xf3;}if(hot_tempaim_hot_temp-3)//当热水温度低于目标热水温度3摄氏度的时候可以淋浴{P4OUT|=BIT3;P4OUT|=BIT4;if(P4OUT&0x04==0x04)//如果热水阀开了控制电机{temp_distant=PID_Caculate(aim_temp-now_temp);if(temp_distant=0)//电机部分{P4OUT|=0x02;//正向DAC12_Set0((int)temp_distant);//电压控制转动,下面亦然}else{P4OUT&=0xfd;//反方向DAC12_Set0((int)-temp_distant);}}else{P4OUT&=~BIT3;P4OUT&=~BIT4;}}}以下是while(1)的流程图:YNNYNY延时程序检测参数(当前水箱水温,出水水温,水位)用户正在使用use=1?目标水位-=1use=0水位到了吗?打开相应阀门进水水箱温度符合要求吗?电机控制调节出水温度电机控制的部分我们采用PID算法。PID算法的控制如下:PID控制算法框图如下:输入+++输出结果输出输出结果会直接反馈到DAC环节里里面,用电压开控制步进电机驱动来达到控制步进电机的目的。为了防止在水温变化环境异常,比如热水箱收到破坏而造成温度骤降,以及让温度控制系统调节的时候超调量幅值较小,在这个环节里面,我们在积分环节和输出环节都采用限幅环节。有限幅环节的PID算法会更加平稳,安全性更高,在工业现场的应用也相对广泛。温度误差比例放大P积分环节误差记录队列限幅环节微分环节限幅环节PID算法代码如下:intPID_Caculate(intError){inti;floatOut
本文标题:基于msp430的家用太阳能加热控温沐浴系统
链接地址:https://www.777doc.com/doc-2570968 .html