基于PID算法和51单片机的温度控制系统设计研究意义研究背景研究内容研究方法硬件电路软件设计小插曲结论目录研究意义温度是生活及生产中最基本的物理量,它表征的是物体的冷热程度。自然界中任何物理、化学过程都紧密的与温度相联系。在很多生产过程中,温度的测量和控制都直接和安全生产、提高生产效率、保证产品质量、节约能源等重大技术指标相联系。因此,温度的测量与控制在国民经济各个领域中均受到了相当程度的重视。研究背景近年来,温度的检测在理论上发展比较成熟,但在实际测量和控制中,如何保证快速实时地对温度进行采样,确保数据的正确传输,并能对所测温度场进行较精确的控制,仍然是目前需要解决的问题。从工业控制器的发展过程来看,温度控制技术大致可分以下几种:定值开关温控法、PID线性温控法、智能温控法。研究内容本次设计控制对象是1L水的温度,主要要求如下:(1)能够连续测量水的温度值,用LCD1602显示水的实际温度。(2)能够设定水的温度值,设定范围是30℃~90℃。(3)能够实现水温的自动控制,如果设定水温为85℃,则能使水温保持恒定在85℃的温度下运行。(4)用DS18B20做温度传感器,用单片机AT89C52和PID算法控制电加热器,通过矩阵键盘的输入来控制水温的设定值,数值采用LCD1602显示。研究方案电路设计USB供电电路设计晶振和复位电路电路设计程序下载电路电路设计报警电路电路设计显示电路电路设计矩阵键盘电路设计温度传感器电路电路设计负载驱动电路软件设计开始开机初始化T是否等于0.1秒按键输入是否完整停止计时扫描是否有按键按下读出按键值并存储在LCD1602中显示按键输入值调用PID算法给PWM波的高电平的占空比赋值T是否等于0.2秒读取DS18b20的温度数据送LCD显示YNT=0Y开始计时YNN停止计时开始计时注释在输入没有完成的时候是不会调用PID算法的,这个时候的加热目标值还是上一次的输入值。如果输入长时间没有完成系统是无法正常工作的主程序软件设计温度是否相差2℃最大功率加热温度大于目标温度停止加热PID算法结束计算离目标温度还差多少功率er[2]积分W_i[1]=Ki*er[2]W_pid=Kp*er[2]+W_i[1]+W_i[0]+Kd*(er[0]-2*er[1]+er[2])er[0]=er[1]er[1]=er[2]W_i[0]=W_i[0]+W_i[1]根据W_pid的值求出加热的PID功率求出PWM的占空比开始YYPID算法软件设计开始对阵键盘的对应的表格赋值,方便后面查表P0=oxf0行为低4位列为高4位判断P0是否等于oxf0通过~(P0|ox0f)的值得到是哪一列有按键按下P0=ox0f通过~(P0|oxf0)的值知道是哪一行有按键按下P0=ox0f判断P0是否等于ox0f即判断按键是否松开返回按键结束NYN返回值为字符XY判断P0是否等于oxf0延时500usNY按键程序软件设计软件设计还有许多的小程序和一些小技巧比如初始化程序,DS18B20的时序电路,如何命名变量,如何程序模块化等,就在此略过。小插曲1.困惑与PID三个参数的调节,本来我是想从纯理论的方面去思索这个问题的后面与老师交谈了下才知道PID的参数调节是与实际环境相关的。2.鬼影,LCD1602出现鬼影。本来我并不知道这个是鬼影,在网上搜索也就不知道检索什么关键词。后面请教了公司的一个毕业不久的学长得知是鬼影,解决方法是在VDD端和地之间串联个10K的电位器,发现鬼影可调。小插曲3.以前我用单片机烧写程序的时候都是用M8下载器,这次我是用的串口烧写,需要的条件是USB转串口驱动,和一个STC-ISP软件,注意要调节好对应的USB口。4.在实习的时候我看了公司的不少程序蛮有感触的,我发现他对变量的命名很好让人看到这个变量知道这个变量的作用,方法是下划线和大小写。还有一个是扫描程序,用定时器让一个变量自加,就等于到了某个时间单片机会去检查某个部位,本来我是打算用中断写这些程序的。本次毕业设计我就用上了这些学到的东西。初次用比较生疏。小插曲5.矩阵键盘这块焊接的时候倒是发了我不少时间,以前都是看着的以为自己会。这次我真正的感受到动手和不动手的区别。矩阵键盘的程序也让我纠结了点时间。这里有个思维过程。首先我确定了我的这个电路是有按键按下是高电平的IO口会被拉低,比如说11110000会变成1011000,让P0口和00001111继续位或运算在按位取反,就可以得到是第二列有按键按下,在赋值00001111就可以等到行就能确定是哪个按键按下。这里要理清硬件电路的关系才能编程。小插曲6.模块的综合,以前变成的时候都是写小程序,这次我把这些小模块加在了一起,中间出现了许多的小问题,使得编译通过不了。总能马上解决的那种。7.MOC3051和BTA08的电路图我开始不会接,不懂原理后来问了公司的一个经验比较老道的大哥。弄清原理后,然后我就按照MOC3051的经典案例接了硬件电路。最后却忽略了焊锡能通过的最大电流问题。用焊锡部分用比较粗的导线代替。总结同时本设计还存在着一些不足,例如:系统的硬件设计方面有待完善,可以增加各种保护功能和故障检测功能。还有可以用12864显示温度曲线,或者用电脑和单片机描出图形,使得PID参数更好的调节。通过本次毕业设计我感受很深,从中学到了很多东西。通过本次实践,不但培养了我们独立思考问题的能力,同时也增强了我的动手能力,为以后步入工作岗位奠定了基础。敬请老师批评指正谢谢!