




已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机技术与科学学院课程设计报告( 2014 2015 学年 第 二 学期)课程名称:_ project3_ 班 级: 电子1201 学 号: 1402120119 1402120120 姓 名: 李栋 李凌锋 指导教师: 胡方强 武晓光 袁建华 包亚萍 毛钱萍2015 年 7 月目录第一部分 总体设计与选型分析4矚慫润厲钐瘗睞枥庑赖。1.1总体设计4聞創沟燴鐺險爱氇谴净。1.1.1受控模块4残骛楼諍锩瀨濟溆塹籟。1.1.2测温模块5酽锕极額閉镇桧猪訣锥。1.1.3单片机系统5彈贸摄尔霁毙攬砖卤庑。1.1.4显示模块5謀荞抟箧飆鐸怼类蒋薔。1.1.5控制模块5厦礴恳蹒骈時盡继價骚。1.1.6 wifi模块5茕桢广鳓鯡选块网羈泪。1.1.7上位机5鹅娅尽損鹌惨歷茏鴛賴。1.2选型分析5籟丛妈羥为贍偾蛏练淨。1.2.1受控模块方案5預頌圣鉉儐歲龈讶骅籴。1.2.2测温模块方案5渗釤呛俨匀谔鱉调硯錦。1.2.3控制模块方案6铙誅卧泻噦圣骋贶頂廡。1.2.4显示模块方案6擁締凤袜备訊顎轮烂蔷。第二部分 电路硬件设计7贓熱俣阃歲匱阊邺镓騷。2.1受控模块7坛摶乡囂忏蒌鍥铃氈淚。2.2测温模块7蜡變黲癟報伥铉锚鈰赘。2.3单片机系统8買鲷鴯譖昙膚遙闫撷凄。2.4显示模块9綾镝鯛駕櫬鹕踪韦辚糴。2.5控制模块10驅踬髏彦浃绥譎饴憂锦。2.6 wifi模块11猫虿驢绘燈鮒诛髅貺庑。2.7 上位机13锹籁饗迳琐筆襖鸥娅薔。第三部分 系统软件设计13構氽頑黉碩饨荠龈话骛。3.1主程序设计14輒峄陽檉簖疖網儂號泶。3.2子程序设计15尧侧閆繭絳闕绚勵蜆贅。3.2.1 LCD1602子程序15识饒鎂錕缢灩筧嚌俨淒。3.2.2 DS18B20子程序16凍鈹鋨劳臘锴痫婦胫籴。3.2.3 串口中断程序17恥諤銪灭萦欢煬鞏鹜錦。3.2.4 定时器中断程序17鯊腎鑰诎褳鉀沩懼統庫。3.2.5 PID子程序18硕癘鄴颃诌攆檸攜驤蔹。第四部分 PID调试19阌擻輳嬪諫迁择楨秘騖。4.1 PID调节器控制原理19氬嚕躑竄贸恳彈瀘颔澩。4.2 位置式PID算法20釷鹆資贏車贖孙滅獅赘。 4.3 PID参数整定20怂阐譜鯪迳導嘯畫長凉。 4.3.1 整定比例带20谚辞調担鈧谄动禪泻類。 4.3.2 整定积分时间20嘰觐詿缧铴嗫偽純铪锩。 4.3.3 优化参数21熒绐譏钲鏌觶鷹緇機库。 4.3.4 关于微分21鶼渍螻偉阅劍鲰腎邏蘞。 4.3.5 死区设置21纣忧蔣氳頑莶驅藥悯骛。第五部分 系统性能优化21颖刍莖蛺饽亿顿裊赔泷。5.1反应速度优化21濫驂膽閉驟羥闈詔寢賻。5.2稳定性优化22銚銻縵哜鳗鸿锓謎諏涼。5.3 优化前后系统性能对比23挤貼綬电麥结鈺贖哓类。第六部分 问题总结24赔荊紳谘侖驟辽輩袜錈。6.1 硬件问题24塤礙籟馐决穩賽釙冊庫。6.1.1 MOS管开关无法正常工作24裊樣祕廬廂颤谚鍘羋蔺。6.1.2 电脑无法连接WIFI模块24仓嫗盤紲嘱珑詁鍬齊驁。6.1.3 下位机返回数据乱码24绽萬璉轆娛閬蛏鬮绾瀧。6.1.4 液晶无法显示24骁顾燁鶚巯瀆蕪領鲡赙。6.2 软件问题24瑣钋濺暧惲锟缟馭篩凉。6.2.1 上位机与下位机无法正常通信24鎦诗涇艳损楼紲鯗餳類。6.2.2 PID程序无法调用25栉缏歐锄棗鈕种鵑瑶锬。6.2.3 DS18B20测温不稳定25辔烨棟剛殓攬瑤丽阄应。第七部分 总结25峴扬斕滾澗辐滠兴渙藺。参考文献25詩叁撻訥烬忧毀厉鋨骜。附录A 仿真图26则鯤愜韋瘓賈晖园栋泷。附录B 受控模块实物图27胀鏝彈奥秘孫戶孪钇賻。附录C 程序28鳃躋峽祷紉诵帮废掃減。基于单片机的WIFI无线温度测控系统摘要:温度是一个非常重要的物理量,因为它直接影响燃烧、化学反应、发酵、蒸馏、浓度、结晶以及空气流动等物理和化学过程。温度控制失误可能引起生产安全、产品质量、产品产量等一系列问题。稟虛嬪赈维哜妝扩踴粜。本文介绍的是一个以单片机为核心的无线温度控制系统,主要通过WIFI模块完成远程温度控制功能。在一定的区间内,在自动控制系统的控制下,温度始终在人们要求的范围之内。它利用单片机STC89C52、温度传感器DS18B20及LCD等器件实现。陽簍埡鲑罷規呜旧岿錟。基本工作原理是单片机利用DS18B20对温度进行采集,通过串口传递给WIFI模块,再利用无线信号将数据传递给上位机(笔记本电脑或手机)进行温度显示。同时,上位机可以利用无线信号和通信串口发送目标温度给单片机,单片机利用内置的PID算法进行控温。沩氣嘮戇苌鑿鑿槠谔應。关键词:单片机;WIFI发送接收;PID;温度控制;LCD显示第一部分 总体设计与选型分析系统的总体设计方案应在满足系统整体性能指标的前提下,充分考虑系统使用的环境,所选的结构要尽量简单实用、易于实现,器件的选用要着眼与合适的参数、稳定的性能、较低的功耗、低廉的成本以及较好的互换性能。钡嵐縣緱虜荣产涛團蔺。1.1总体设计以下为本设计的总体框图显示模块wifi模块单片机系统测温模块受控模块上位机控制模块1.1.1受控模块受控对象为水泥电阻和12v供电的风扇,水泥电阻使用12v电源进行加热,风扇用来对水泥电阻进行降温,使其达到目标温度,从而实现温度控制。懨俠劑鈍触乐鹇烬觶騮。1.1.2测温模块测温电路核心器件是温度传感器DS18B20。DS18B20测得水泥电阻的温度传输给单片机进行相应的处理。謾饱兗争詣繚鮐癞别瀘。1.1.3单片机系统本设计的单片机使用51单片机。单片机系统连接受控模块、显示模块、控制模块、wifi模块四个部分。1.1.4显示模块显示模块使用LCD1602进行显示,由单片机驱动,显示测温对象的当前温度以及目标温度。1.1.5控制模块控制部分使用MOS管作为开关器件来控制对受控对象的加热以及降温从而达到温度控制的效果。单片机根据内置的PID程序输出不同占空比的PWM波,控制MOS管的通断,从而达到控温的目的。呙铉們欤谦鸪饺竞荡赚。1.1.6 wifi模块wifi模块为有人的USR-WIFI232-T。wifi模块通过串口与单片机系统之间进行双向的数据传输,具体数据由与wifi模块连接的上位机决定。莹谐龌蕲賞组靄绉嚴减。1.1.7上位机上位机软件使用wifi模块配套的软件,而不去重新编写以加快进度。上位机通过wifi模块向下位机发送两种指令。一种是查询指令,要求下位机返回受控对象当前的温度;另一种是控制指令,修改测温对象的目标温度。麸肃鹏镟轿騍镣缚縟糶。1.2选型分析1.2.1受控模块方案方案一:将水泥电阻和风扇均直接置于外界环境中。该方案利于风扇对水泥电阻的降温,但外界环境的空气流动以及温度变化将会对水泥电阻的加热产生较大影响。納畴鳗吶鄖禎銣腻鰲锬。方案二:将水泥电阻和风扇均至于密闭的容器内。该方案可以减小外界环境变化对水泥电阻加热的影响,但由于空气难以流动使得风扇的降温效果较差。風撵鲔貓铁频钙蓟纠庙。方案三:将水泥电阻置于容器内,将风扇固定在容器外,并在容器上风扇扇叶位置钻孔。钻孔的容器仍有较好的隔热效果,且风扇工作时容器内外的空气能较好的进行热交换。灭嗳骇諗鋅猎輛觏馊藹。综合考虑,本设计采用方案三。1.2.2测温模块方案方案一:使用数字型DS18B20温度传感器。DS18B20是常用的温度传感器,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。它是单线接口方式,在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯;铹鸝饷飾镡閌赀诨癱骝。测温范围 55125,在10-50C范围内精度高达0.1C;支持多点组网功能,多个DS18B20可以并联在唯一的三线上;且在使用中不需要任何外围元件。攙閿频嵘陣澇諗谴隴泸。方案二:使用pt100通过电桥将温度变化转换为电压变化供单片机识别。铂电阻温度传感器是利用其电阻和温度成一定函数关系而制成的温度传感器,由于其测量准确度高、测量范围大、复现性和稳定性好等,被广泛用于中温(-200650)范围的温度测量中。PT100是一种广泛应用的测温元件,在-50600范围内具有其他任何温度传感器无可比拟的优势,包括高精度、稳定性好、抗干扰能力强等。由于铂电阻的电阻值与温度成非线性关系,所以需要进行非线性校正。趕輾雏纨颗锊讨跃满賺。方案二用的是温敏电阻传感器,它是将温度变化转化为电阻变化,再通过外围电路转换为电压信号,虽然测量范围较大,但操作复杂,且对外界的环境要求很高,不宜实现。方案一利用的是DS18B20传感器,可以用单片机驱动,简单易于实施,所以基于以上的分析和题目的要求,我们选择方案一。夹覡闾辁駁档驀迁锬減。1.2.3控制模块方案方案一:使用MOS管作为开关控制。MOS管为压控流型器件,通过单片机IO口电平的不同可以控制电源通断,反应迅速,但由于单片机IO口的电压限制难以直接驱动MOS管,因此需要在单片机IO口外接一个三极管以增加驱动电压,然后接MOS管控制电源通断。视絀镘鸸鲚鐘脑钧欖粝。方案二:使用继电器作为开关控制。选用继电器可以将加热电路与控制电路分离,以避免相互之间的干扰,但继电器的开关会有机械振动,影响系统的稳定性切会产生较大噪声,而且继电器的开关寿命短,反应速度要比MOS管慢得多,不适用于需要频繁开关的电路。偽澀锟攢鴛擋緬铹鈞錠。本设计控制方法为单片机IO口输出不同占空比的PWM波以调节水泥电阻的加热功率,以及风扇的降温功率,因此采用方案一比较合适。緦徑铫膾龋轿级镗挢廟。1.2.4显示模块方案方案一: 采用通用的LED数码管。该方案成本较低,电路设计简单,程序的编写也相对来说较方便。但数码管只能显示数字,且显示位数越多所需的驱动电流就越大,需要另外设计驱动电路。騅憑钶銘侥张礫阵轸蔼。方案二:采用LCD1602液晶。LCD1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码。这样在显示温度数据的时候就比较直观,同时在一定程度上也增加了字符的丰富感。但成本较高,编程较为复杂。疠骐錾农剎貯狱颢幗騮。方案三:采用LCD12864液晶。带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为12864, 内置8192个16*16点汉字,镞锊过润启婭澗骆讕瀘。和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示84行1616点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。但成本高,编程复杂。榿贰轲誊壟该槛鲻垲赛。为了更加方便的满足设计要求,并节约成本,我们采用了方案二,采用LCD1602进行显示。第二部分 电路硬件设计设计由受控模块,测温模块,单片机系统等部分构成,具体框图请参照第一页的总体框图。该设计的核心为单片机系统。测温模块测得温度之后传递给单片机,单片机根据当前温度与目标温度调用不同的程序去驱动控制模块对受控模块进行控制。单片机作为下位机,与上位机进行双向的数据传输。下位机接受上位机的指令并给出一定的反馈。邁茑赚陉宾呗擷鹪讼凑。2.1受控模块受控模块的受控对象为水泥电阻和12v供电的风扇,因为水泥电阻和风扇无法仿真,在仿真电路中以LED串联10K电阻来模拟,LED的亮灭指示加热电路通断以及风扇是否工作。嵝硖贪塒廩袞悯倉華糲。本设计将四个3欧姆的水泥电阻串联焊接在电路板上并将其悬挂于用亚克力板制成的密封容器内。由于容器内相对静止的空气有较好的隔热效果,可以减小外界环境对水泥电阻温度的影响。两个水泥电阻缝隙间的温度较为稳定,利于温度传感器读取稳定的温度值。该栎谖碼戆沖巋鳧薩锭。风扇固定在容器外部,并在容器上风扇扇叶的位置以及容器上该面的相对面上的相应位置钻孔。当风扇工作时容器内外的空气通过容器两个相对面上的小孔流通,从而打到降温的效果。另外,我们在小孔位置悬挂了一片塑料膜,当风扇工作时塑料膜被吹起,可以指示风力的大小,当风扇不工作时塑料膜覆盖在小孔上,从而减小外界环境通过小孔对容器内部的影响。劇妆诨貰攖苹埘呂仑庙。2.2测温模块测温模块使用DS18B20。DS18B20是美国Dallas半导体公司的新一代数字式温度传感器,它具有独特的单总线接口方式,即允许在一条信号线上挂接数十甚至上百个数字式传感器,从而使测温装置与各传感器的接口变得十分简单,克服了模拟式传感器与微机接口时需要的A/D转换器及其他复杂外围电路的缺点,而且,可以通过总线供电,由它组成的温度测控系统非常方便,而且成本低、体积小、可靠性高。DS18B20的测温范围-55+125最高分辨率可达0.0625,由于每一个DS18B20出厂时都刻有唯一的一个序列号并存入其ROM中,因此CPU可用简单的通信协议就可以识别,从而节省了大量的引线和逻辑电路。臠龍讹驄桠业變墊罗蘄。Dallas公司的单总线技术具有较高的性价比,适用于低速测控场合,测控对象越多越显示出其优越性;硬件施工、维修方便,抗干扰性好;具有CRC校验功能,可靠性高;软件设计规范,系统简明直观,易于掌握。鰻順褛悦漚縫冁屜鸭骞。DS18B20的温度传感器是通过温度对振荡器的频率影响来测量温度的,如下图所示。DS18B20内部有两个不同温度系数的振荡器。低温系数振荡器输出的时钟脉冲信号通过由高温系数振荡器产生的门开通周期而被计数,通过该计数值来测量温度。计数器被预置为与-55对应的一个基数值,如果计数器在高温系数振荡器输出的门周期结束前计数到零,表示测量的温度高于-55,被预置在-55的温度寄存器的值就增加一个增量,同时为了补偿和修正温度振荡器的非线性,计数器被斜率累加器所决定的值进行预置,时钟再次使计数器计数直至零,如果开门通时间仍未结束,那么重复此过程,直到高温系数振荡器的门周期结束为止。这时温度寄存器中的值就是被测的温度值。这个值以16位二进制补码的形式存放在便笺式存储器中。温度值由主机通过读存储器命令读出,经过取补和十进制转换,得到实测的温度值。穑釓虚绺滟鳗絲懷紓泺。2.3单片机系统本设计采用的单片机是STC89C52(仿真图中是AT89C52)。STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的隶誆荧鉴獫纲鴣攣駘賽。改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。浹繢腻叢着駕骠構砀湊。下图为proteus仿真图中的最小系统部分,包括了STC89C52以及周围的复位电路和晶振电路。晶振电路中使用的电容为22pf,晶振为11.0592HZ。复位电路中的电阻为10K,电容为22uf。鈀燭罚櫝箋礱颼畢韫粝。2.4显示模块1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,它显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。惬執缉蘿绅颀阳灣熗鍵。设计采用LCD1602液晶,它与单片机P0和P3口相连接,单片机根据所测得的温度数据和内部存储的目标温度通过编程实现在LCD1602上显示。贞廈给鏌綞牵鎮獵鎦龐。在proteus中1602的VSS/VDD/VEE都默认接上相应电压,无须再接,背光源省略。值得一提的是本设计中8位数据位接的是单片机的P0口,由于P0口的驱动能力较弱,此处使用10k的排阻进行上拉。嚌鲭级厨胀鑲铟礦毁蕲。RS接单片机P34口,来选择传输的是命令还是数据。使能端E接单片机P35口来控制液晶的开启与关闭。读写控制端RW接P36,控制液晶操作是读还是写。薊镔竖牍熒浹醬籬铃騫。2.5控制模块控制模块的电路图如下所示(受控对象由LED与电阻串联模拟)。控制电路共两个,分别控制水泥电阻的加热和风扇的工作,因为两个电路相同,此处只列出一个。控制模块工作原理:当单片机控制端加低电平时,三极管Q1导通,这时Q1的上端,也就是C极被系统拉到0V左右,这时MOS管Q3的G极为0V,所以此时MOS管的DS端不会导通。当单片机控制端加高电平时,三极管Q1不导通,这是Q1的上端,也就是C极电位为Vcc(15V)-R4两端的压降,电流穿过R3后被稳压管D3稳压在12V,则此时MOS管的G极电压为12V,所以MOS管导通,负载工作。齡践砚语蜗铸转絹攤濼。2.6 wifi模块wifi模块为采用实验室提供的有人USR-WIFI232-T。下图分别为USR-WIFI232-T外观图和管脚定义。本设计只用到该模块的1至6号管脚。USR-WIFI232-T管脚功能定义单片机采用5v供电,而wifi模块采用3.3.v供电,因此需要转换电路,否则下位机无法正确返回数据。2.7 上位机本设计中使用笔记本电脑作为上位机,通过wifi模块配套的串口助手发送指令。当发送查询指令(十六进制00)时,下位机返回当前温度,并显示TURN ON THE 18B20!。当发送控制指令(十六进制29至3D,对应的十进制数为目标温度,例如发送2D,即将目标温度修改为45)时,目标温度被修改,返回提示信息TARGET has been changed! The TARGET is *,并立刻在下位机控制的LCD上显示。当发送其他指令时,下位机关闭温度返回,显示TURN OFF THE 18B20!。绅薮疮颧訝标販繯轅赛。第三部分 系统软件设计温度测量系统的功能是在程序控制下实现的。该系统的软件设计方法与硬件设计相对应,同样采用模块化的设计思想,按整体功能分成多个不同的程序模块,分别进行设计、编程和调试,最后通过主程序和中断处理程序将各程序模块连接起来。这样有利于程序修改和调试,增强了程序的可移植性。温度测量系统的软件主要分为:温度采集、温度控制、温度显示和数据无线传输。饪箩狞屬诺釙诬苧径凛。3.1主程序设计系统的主程序设计主要完成系统初始化以及判断调用各模块程序,即主要实现各程序模块的连接。具体有定时器0和定时器1的工作方式设置及初始化,LCD的初始化,PID程序的初始化,串口通信参数的设置,各变量的初始化。烴毙潜籬賢擔視蠶贲粵。下图为主程序流程图。开始初始化显示目标温度读取当前温度显示当前温度串口是否收到数据是执行对应操作并返回信息否是是否需要发送当前温度发送当前温度否返回3.2子程序设计3.2.1 LCD1602子程序该子程序包含若干子函数,用于驱动LCD1602的显示。因为本设计中单片机对LCD的操作速度较慢,因此不必等待,不必读取LCD的状态。鋝岂涛軌跃轮莳講嫗键。写指令流程图写数据流程图RS=1RS=0P0=dataP0=command延时,EN=1延时,EN=1延时,EN=0延时,EN=0LCD初始化流程图EN=0RW=0写指令1写指令2写指令3写指令4写指令53.2.2 DS18B20子程序该子程序包含若干子函数,用于驱动DS18B20获取当前温度。DS18B20数据线定义为DQ。初始化函数流程图 读字节函数流程图 写字节函数流程图DQ=0,写一位DQ=0,读一位DQ=1,稍作延时DQ=1DQ=1DQ=0,延时大于480us否写满8位读满8位DQ=1,稍作延时是返回返回读取温度函数流程图初始化DS18B20启动温度转换读取温度寄存器数值转换返回3.2.3 串口中断程序当上位机发送数据给下位机时进入串口中断,调用串口中断程序。该程序主要是设置标志位供主程序查询。RI=0将接收的数据传递给aflag_uart=1根据a设置flag_on返回3.2.4 定时器中断程序定时器中断用来设置PID调用周期以及生成PWM波。重装初值是计时达100ms计时清零,执行pid否count1+count+是是count1hightime1counthightimepwm=1pwm=1否否pwm=0pwm=0返回3.2.5 PID子程序PID程序是控温的核心程序,当当前温度与目标温度不同时PID程序便会一直调节加热和降温的功率,使当前温度靠近目标温度。撷伪氢鱧轍幂聹諛詼庞。开始是是否否否否是是全速加热目标温度大于当前温度更新存储的目标温度,sun_i清零目标温度是否改变存储目标温度是否第一次执行返回相差3度以上调节降温pwm占空比调节加热pwm占空比踪飯梦掺钓貞绫賁发蘄。第四部分 PID调试4.1 PID调节器控制原理在控制系统中,控制器最常用的控制规律是PID控制。PID控制系统原理框图如图3.1所示。系统由PID控制器和被控对象组成。婭鑠机职銦夾簣軒蚀骞。图3.1 PID控制系统原理框图PID控制器是一种线性控制器,一种它根据给定值rin(t)与实际输出值yout(t)构成控制偏差:Error(t)=rin(t)-yout(t)PID控制就是对偏差信号进行比例、积分、微分运算后,形成一种控制规律。即,控制器的输出为: (3.1)或写成传递函数的形式: (3.2)左中, kp比例系数;Ti积分时间常数;T d微分时间常数。简单说来,PID控制器各校正环节的作用如下:(1) 比例环节:成比例地反映控制系统的偏差信号error(t),偏差一旦产生,控制器立即产生控制作用,以减小偏差。譽諶掺铒锭试监鄺儕泻。比例控制: Gc(s)= Kp (2) 积分环节:主要用于消除静差,提高系统的无差度。积分作用的强尽弱取决于积分时间常数Ti,Ti越大,积分作用越弱,反之则越强。俦聹执償閏号燴鈿膽賾。积分控制: Gc(s) = Kp/T is(3) 微分环节:反偏差信号的变化趋势(变化速率),并能在偏差信号变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减少调节时间。缜電怅淺靓蠐浅錒鵬凜。微分控制: Gc(s) =KpT ds4.2 位置式PID算法 基本PID控制器的理想算式为 (3.3) 式中u(t)控制器(也称调节器)的输出;e(t)控制器的输入(常常是设定值与被控量之差,即e(t)=r(t)-c(t));Kp控制器的比例放大系数;Ti 控制器的积分时间;Td控制器的微分时间。设u(k)为第k次采样时刻控制器的输出值,可得离散的PID算式 (3.4)式中 , 。由于计算机的输出u(k)直接控制执行机构(如阀门),u(k)的值与执行机构的位置(如阀门开度)一一对应,所以通常称式(2)为位置式PID控制算法。骥擯帜褸饜兗椏長绛粤。位置式PID控制算法的缺点:当前采样时刻的输出与过去的各个状态有关,计算时要对e(k)进行累加,运算量大;而且控制器的输出u(k)对应的是执行机构的实际位置,如果计算机出现故障,u(k)的大幅度变化会引起执行机构位置的大幅度变化。癱噴导閽骋艳捣靨骢鍵。4.3 PID参数整定4.3.1 整定比例带 先把系统设置为纯比例作用。也就是说积分时间无穷大,微分增益为0。逐渐加大比例作用,一直到系统发生等幅震荡。当我们把kp加大到20时,达到了上述效果。根据经验公式,把比例增益乘以0.8,kp定为16。此时观察被调量曲线,发现衰减率大概为0.75,符合要求。鑣鸽夺圆鯢齙慫餞離龐。4.3.2 整定积分时间 为了消除静态误差,要添加积分作用。从0.01开始逐步增加ki。过程中发现被调量会剧烈变化。经检验发现是积分量sum_i没有设阈值导致其变量溢出。于是给它设定范围为【-1000-1000】。当增加到0.08时,发现被调量波动小。系统稳定时间也比较短。于是设ki为0.08。榄阈团皱鹏緦寿驏頦蕴。4.3.3 优化参数 为了进一步加快稳定时间,给PID函数设置了一个执行范围,当目标温度比实际温度多于三度时,使加热占空比为100%,当实际温度比目标温度多于一度时,使散热占空比为100%。逊输吴贝义鲽國鳩犹騸。 此时曲线波动小但是震荡频繁,于是减小比例系数至14。然后观察被调量曲线发现其在第一个起伏使恢复至设定值所需时间较长,于是减小积分系数,当减至0.06时,曲线波动小而平缓。调试结果较为满意。故选定积分参数为0.06,比例参数为14。 幘觇匮骇儺红卤齡镰瀉。4.3.4 关于微分 微分有超前调节的功能,但是微分作用在测量值存在不间断的微小波动时,反而会造成调节干扰,不如不要。考虑到温度会有小波动,我们最终决定只做PI调节。Kd为0。誦终决懷区馱倆侧澩赜。4.3.5 死区设置 为了减少执行器动作次数,可以对PID调节器设置死区。但是死区过大会降低调节精度,也会降低稳定性,因为它造成了调节滞后。权衡利弊之后,我们决定不设置死区以换取高精度。医涤侣綃噲睞齒办銩凛。第五部分 系统性能优化我们的初步设计没有降温措施,只是加热。在初步完成设计之后我们发现虽然温度可以稳定在非常接近目标温度的范围内,但从系统开始工作到温度稳定时间很长,因此,我们对系统进行了硬件设计优化以及参数优化。舻当为遙头韪鳍哕晕糞。5.1反应速度优化上图为未经优化的系统控制水泥电阻温度稳定在40度的温度变化曲线(横坐标为采样个数,每两个点之间的时间间隔约为0.8s)。从下位机返回的数据鸪凑鸛齏嶇烛罵奖选锯。可以看出温度误差已经控制在低于目标温度0.1度和目标温度直接的范围内,但从图像可以看出温度变化很慢,从开始加热到完全稳定需要将近十分钟。因此,我们加上风扇进行降温。筧驪鴨栌怀鏇颐嵘悅废。我们在加上风扇并微调参数后得到上图所示的温度变化曲线。从下位机返回的数据可以看出温度误差有所增大,为0.1。从图像可以看出此时的温度出现轻微的波动。韋鋯鯖荣擬滄閡悬贖蘊。5.2稳定性优化由上图可以看出,当温度第一次上升至目标温度并下降后需要较长时间才能再次达到目标温度并稳定,我们在多次调节参数没有效果之后稍微改进了一下算法。使当前温度低于目标温度时控制加热的PWM波有一个基础的占空比,这样就能在当前温度低于目标温度后尽快的上升至目标温度。下图为改进后的温度曲线。涛貶騸锬晋铩锩揿宪骟。由上图可以看出,虽然温度还是有一些波动,但较之前而言能更快的接近目标温度。5.3 优化前后系统性能对比本设计的功能除了将水泥电阻稳定在一个温度之外还可以更改目标温度并再次稳定。我们测试了从室温上升至40度,再上升至45度的情况。以下三幅图像分别为优化前,第一次优化后以及第二次优化后的图像。钿蘇饌華檻杩鐵样说泻。由以下图像对比可知优化后虽然误差有了稍微的增大,但稳定所需时间大大缩短了。第六部分 问题总结6.1 硬件问题6.1.1 MOS管开关无法正常工作在制作控制电路时我没有考虑MOS管的型号,直接在网上找了一幅MOS管管脚分布图作为参考,然而那幅图的漏极和源级的分部与我所用的MOS管刚好相反。MOS管的管脚分布要参考官方资料,源级和漏极接反会导致Vgs一直为高,从而使MOS管一直导通,达不到控制的效果。戧礱風熗浇鄖适泞嚀贗。6.1.2 电脑无法连接WIFI模块在实验室时电脑无法连接WIFI模块,但在宿舍可以,应该是实验室相同型号的WIFI模块较多,相互干扰导致无法连接,此问题暂未解决。購櫛頁詩燦戶踐澜襯鳳。6.1.3 下位机返回数据乱码用上位机通过WIFI模块给下位机发送数据,下位机能够正常接收,并且能做出相应的正确反应,但下位机本应返回给上位机的数据丢失或者返回的是乱码。经过查阅资料知道是电平不匹配的问题。单片机使用5V供电,WIFI模块使用3.3V供电,需要增加电平转换电路才能正常工作。嗫奐闃頜瑷踯谫瓒兽粪。6.1.4 液晶无法显示开始以为是程序问题或者是接线问题,经检查发现是液晶损坏。6.2 软件问题6.2.1 上位机与下位机无法正常通信单片机使用11.0592HZ的晶振,波特率设置为9600,但WIFI模块的波特率默认为115200,未修改时WIFI模块与单片机之间无法正常进行串口通信。虚龉鐮宠確嵝誄祷舻鋸。6.2.2 PID程序无法调用PID设计为每100ms调用一次,调用方法是由定时器中断处理函数置标志位,PID调用结束后标志位复位。但由于主函数中有较多延时函数,导致中断处理函数置位后PID程序未来得及执行标志位又复位了。解决办法是将PID的调用放置在中断处理函数中判断。與顶鍔笋类謾蝾纪黾廢。6.2.3 DS18B20测温不稳定定时器中断开启使得18b20读数不稳定。因为定时器中断是强制性的,一旦计时溢出,无论程序执行到何处都会被暂停,优先去执行中断服务程序。 DS18B20这种对时序有严格要求的单总线通讯,在发送和接收数据时被定时器中断扰乱了时序,所以无法通讯。解决办法是直接在读取温度时就把中断关闭,不让PWM的中断打扰,读取温度的时间应该很短,影响不大。結释鏈跄絞塒繭绽綹蕴。第七部分 总结本次课程设计由我们两人共同完成,一人负责硬件电路的设计制作以及部分辅助程序的编写,另一人负责核心PID算法的设计以及整体程序的调试。与独自制作相比分工合作效率更高。但由于都是第一次与他人合作去完成课设,我们各自写的程序移植性又不够好,导致两人写的程序不能完全兼容,花了一定的时间来调试。餑诎鉈鲻缥评缯肃鮮驃。PID参数整定时意识到:比例,积分,微分三个参数的大小都不是绝对的。切不可以为我发现一个参数比较合适,就把其固定死,不管别的参数怎么变化,永远不变前面固定的参数。而要在多个参数之间反复权衡,既要把握原则性,又要把握灵活性。爷缆鉅摯騰厕綁荩笺潑。我们从本次课程设计中收获很大,除了专业知识以及分析问题解决问题的经验外我们还学会了如何系统地去完成一个设计。我们已经能够系统地一步步去分解任务去完成去总结,而不再是像无头苍蝇一样做到哪里算哪里。锞炽邐繒萨蝦窦补飙赝。参考文献新概念51单片机C语言教程:入门、提高、开发、拓展全攻略/郭天祥编著.-北京:电子工业出版社,2009.1曠戗輔鑽襉倆瘋诌琿凤。PID调节控制 V1.1Jan 23,2006 中文版中国电子网技术论坛附录A 仿真图附录B 受控模块实物图附录C 程序#include#include #include#include#define uchar unsigned char#define uint unsigned intuchar code table=target:;uchar code table1=current:;sbit lcden=P34;sbit lcdrs=P35;sbit lcdrw=P36;sbit DQ=P22;sbit pwm=P24;sbit pwm1=P25; sbit dula=P26;sbit wela=P27;sbit led=P10;/指示风扇PID函数执行sbit led0=P11;/指示主函数执行float TARGET=37;uchar num;uint hightime,hightime1,count1=0,count=0,qqq=1;float uk,e1,e2,sum_i,kp,ki,kd,sum_i1,uk1;float temp,temp1;uchar flag_on,flag_uart,flag_time=0,a,t0_num=0,deliever,jr_time=0;轉厍蹺佥诎脚濒谘閥糞。/以下是LCD1602驱动程序/延时函数void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);/写指令函数void write_com(uchar com)lcdrs=0;P0=com;delay(5);lcden=1; delay(5);lcden=0;/写数据函数void write_data(uchar date)lcdrs=1;P0=date;delay(5);lcden=1;delay(5);lcden=0;/初始化函数void init()P0=0XFF;/关掉数码管的位选信号。阻止数码管受到P0口信号的影响。(为了方便,使用开发板上的部分硬件资源,因此需要做一些屏蔽操作,防止不用的部分产生干扰)嬷鯀賊沣謁麩溝赉涞锯。delay(5);wela=1;delay(5);wela=0;dula=0;lcden=0;lcdrw=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);/以上是LCD1602驱动程序/以下是DS18B20驱动程序/延时函数void delay1(unsigned int i)while(i-);/初始化函数Init_DS18B20(void)unsigned char x=0;DQ = 1; /DQ复位delay1(8); /稍做延时DQ = 0; /单片机将DQ拉低delay1(80); /精确延时 大于 480usDQ = 1; /拉高总线delay1(14);x=DQ; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败delay1(20);return 0;/读一个字节ReadOneChar(void)unsigned char i=0;unsigned char dat = 0;for (i=8;i0;i-)DQ = 0; / 给脉冲信号dat=1;DQ = 1; / 给脉冲信号if(DQ) dat|=0x80;delay1(4);return(dat);/写一个字节WriteOneChar(unsigned char dat)unsigned char i=0;for (i=8; i0; i-)DQ = 0;DQ = dat&0x01;delay1(5);DQ = 1;dat=1;return 0;/读取温度uint ReadTemperature(void)unsigned char a=0;unsigned char b=0;unsigned int t=0;float tt=0;Init_DS18B20();WriteOneChar(0xCC); / 跳过读序号列号的操作WriteOneChar(0x44); / 启动温度转换Init_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作WriteOneChar(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度a=ReadOneChar();b=ReadOneChar();t=b;t=temp1)if(TARGET-temp13)hightime=100;hightime1=0;else/当前温度低于目标温度3度以上时全速加热,3度以内才调用PID调节 hightime1=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑方案设计部门职责分工
- 2024-2025学年高中物理 第3章 磁场 习题课4 带电粒子在磁场或复合场中的运动说课稿 粤教版选修3-1
- 镁冶炼废弃物处理与再利用分析报告
- 灌排泵站运行工三级安全教育(车间级)考核试卷及答案
- 摄影器材企业人才策略研究
- 橡胶带在户外广告牌固定材料中的耐风性能
- 木片玩具安全规范解读
- 机房建设项目施工组织设计全案
- 口碑好装修材料施工方案
- 心肌梗死临床诊断与治疗指南
- 2025年保密教育线上培训试题参考答案
- 装载机司机安全考试模拟试题(含答案)
- 安全生产法2025全文
- 中储粮薪酬管理办法
- 高空外墙清洗员安全教育培训手册
- 赖特-罗比住宅详细分析
- 资产评估机构采购方案投标文件(技术方案)
- 《老年上消化道出血急诊诊疗专家共识(2024)》解读
- 食品执行标准对照表
- 维修人员考核管理办法
- 销售商务礼仪培训课程
评论
0/150
提交评论