《基于PID的简单水温控制系统设计》由会员分享,可在线阅读,更多相关《基于PID的简单水温控制系统设计(12页珍藏版)》请在金锄头文库上搜索。
1、基于PID的简单水温控制系统设计 摘要:在工农业生产和日常生活中, 对温度的检测与控制始 终有着非常重要的实际意义和广泛的实际 应用。为了加深计算机控制理 论的理解,故 设计一个温度控制系统,该系统主要由温度信号采集与转 换模块(传感器DS18B20 )、主机控制模块(单片机STC89C52)、温度控制模 块(双向晶闸管BTA06 )、 液晶显示模块(液晶LM1602)等四部分组成,控制算法 为PID算法。系 统可实现稳态误差小于1,最 大超调小于1,并且调节时间较 短,恒定效果好。 关键词:传感器DS18B20 ,单片机STC89C52,PID 算法,液晶LM1602, 双向晶闸管BTA06
2、 1 选题背景 在现代工业生产和日常生活当中,对温度的检测、实现自动恒温控制有着非常重要实际意义和 广泛的应用,例如大型火力发电站锅炉的温度控制、石油炼油厂油温的控制等。一般的温度控制系 统其主要构成部分有以下几部分:被控对象、温度信号采集与转换模块、显示模块、执行模块、主 机控制模块、按键等。关系如图1.1:图1.1 温度检测装备的组成结构 在此,我选择了温度测量及其恒温控制作为计算机控制课程设计课题。在该控制系统中,控制 算法不但结合经典的PID控制算法的优势;还增加了死区控制,平均滤波、限幅消抖、抗积分饱和 等措施抑制非正常情况的发生;此外,控制算法还采用了二维PID算法的优点,加快了系
3、统的动态 响应速度。经过实际测试,采取的措施能够很好地抑制非正常情况的发生,系统的响应速度、稳态 误差、超调量都取得了较为满意的结果。 2 方案设计及其论证 2.1 温度信号的采集及AD转换 2.1.1方案一 采用模拟类温度传感器,比如LM45、AD590、铂电阻等。增加适当的放大电路和AD转换电路以 后,就可以将温度信号送入单片机。然而,这种设计需要用到A/D转换电路,且温度传感器的接线 较为麻烦,制作成本较高。2.1.2 方案二 采用数字类温度传感器,比如DS18B20。DS18B20为数字式温度传感器,直接将温度信号转换为 数字量,可编程的分辨率为912位,采用独特的单总线接口,只需要一
4、条总线就可以实现与单片机 通信,简化了硬件电路设计,降低了设计成本。 将上述两种方案比较,方案二硬件电路设计得到简化并且设计成本降低,故采用方案二。 2.2 主机控制模块 2.2.1方案一 采用快速单片机,比如STC12C5A32S2、ATmega16、W77E58等。以ATmega16为例,ATmega16单片 机是基于增强的AVR RISC结构的低功耗8 位CMOS微控制器。由于其先进的指令集以及单时钟周期指 令执行时间,ATmega16 的数据吞吐率高达1 MIPS/MHz,在相同晶振频率的情况下,速度比普通快 812倍。从性能上来说,该单片机是一款功能非常强大的单片机,然而其价格较高(
5、15元/片), 采用该单片机会使设计成本增加。 2.2.2 方案二 采用普通单片机STC89C52。STC89C52单片机片内有8KB的EPROM和256B的RAM,程序通过串口下载, 十分方便。在晶振频率为12MHz的情况下,单指令仅需1us,完全能满足系统设计要求。另外,该单 片机价格便宜,仅5.8元/片。 将上述两种方案比较,方案一虽然性能上优于方案二,但其设计成本较高,而且本系统不需要 太快的运行速度,故采用方案二。 2.3 显示模块 2.3.1方案一 采用7段式数码管。目前,市场上有大量的七段式LED数码管,价格也较为便宜,单个的数码管 仅0.8元,4位的数码仅2.6元;不过采用数码
6、管作为显示时,需要增加驱动电路,驱动电路的成本 在8元左右,另外,数码管只能显示一些简单字符以及数字,而在本设计中,需要显示较多信息, 比如:实时温度、PID参数、设定温度等,采用数码管会大大增加程序的复杂度,并且还会对单片 机的功能提出更高要求,其性价比较低。 2.3.2 方案二 采用LM1602液晶显示。LM1602液晶的市场价格在15元左右,可以与单片机直接连接,不需要增 加额外的驱动电路,它可以显示所有的ASCII字符。另外可以同时显示32个字符,电路设计简单、 软件复杂度低、性价比高。将上述两种方案比较,方案一中LED数码管虽然价格便宜,但需设计驱动电路,而且本设计需 要显示较多系统
7、运行参数,故又增加编码复杂度,同时对单片机性能要求提高,性价比低,方案二 LM1602液晶显示有电路设计简单,编码复杂度低的优点,故采用方案二。 2.4 温度控制模块 2.4.1 方案一 采用固态继电器。固态继电器有三部分组成:输入电路,隔离(耦合)和输出电路。固态继电器 可以与逻辑电路兼容,耐振耐机械冲击,安装位置无限制,具有良好的防潮防霉防腐蚀性能,在防 爆和防止臭氧污染方面的性能也极佳,输入功率小,灵敏度高,控制功率小,电磁兼容性好,噪声 低和工作频率高等特点。然而,其价格较高,电压AC220V、最大电流5A的固态继电器在25元左右, 采用固态继电器会使得设计成本大大增加。 2.4.2
8、方案二 采用双向晶闸管。市场上双向晶闸管的种类很多,如双向晶闸管BTA06,每片仅3.5元,可以使 设计成本大大降低,配备以驱动电路后,总体设计成本也不超过9元;另外,采用双向晶闸管BTA06 的硬件设计也较为简单。 将上述两种方案比较,方案一中固态继电器虽然性能优于方案二中的双向晶闸管,但考虑固态 继电器成本远高于双向晶闸管,故采用方案二。 2.5 单片机控制方式 2.5.1 方案一 P控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控 制时系统输出存在稳态误差(Steady-state error) 。同时,由于水的温度调节,可以等效于“纯 滞后一阶惯性” ,
9、理论可推导其易产生振荡。 2.5.2 方案二 PI控制是在比例控制的基础上加上积分作用,在积分控制中,控制器的输出与输入误差信号的 积分成正比关系,采用比例积分控制方式,只要有足够长的响应时间,理论上可以做到稳态无静差。 2.5.3 方案三 PID控制器就是根据系统的误差,利用比例、 积分、微分计算出控制量进行控制的,也就是在 比例积分控制方式下,加入微分控制,在微分控制中,控制器的输出与输入误差信号的微分(即误 差的变化率)成正比关系。将上述三种方案进行比较,由于本设计要求无静差,被控对象惯性较大,为了加快调节速度, 采用方案三即PID算法作为控制算法。 3 系统概要设计该系统能够实现测量-
10、25125的温度并予以显示,精度为0.625,准确度0.5。能够实 现在099.9设定任一温度保持恒定。按键可以设定恒温温度,液晶能够实时显示温度、设定 温度、偏差、占空比等基本量。控制程序能够完成恒温功能,并且获得较好的超调量、调节时间、 稳态误差、响应速度等量。 系统的主要部件有7部分,分别是:温度传感器DS18B20、STC89C52单片机、LM1602液晶、 BTA06晶闸管(含光隔电路)、电炉、按键、电源模块、串口通讯模块。整个系统的结构如下: 图3.1 温度控制系统组成结构系框图 4系统硬件设计本设计将该电路分为四个模块:温度信号采集与转换模块(传感器DS18B20) 、主机控制模
11、块 (单片机 STC89C52) 、温度控制模块(双向晶闸管BTA06) 、液晶显示模块(LM1602液晶) 。 4.1温度信号采集与转换 图4.1 温度信号采集与转换原理图 如图 4.1,0.1uF电容的C19用于滤除高频噪声,6.8K上拉电阻用于增加数据总线的驱动能力, DQ连接单片机的P22口,组成单总线通信系统,用于单片机和DS18B20数据通信。 4.2控制晶闸管导通模块 图4.2是控制晶闸管导通的原理图,MOC3022是光隔器件,单片机的P20端口和MOC3022的 2脚相连接。当P20为低电平是光隔右侧的4、6引脚导通,进而控制晶闸管导通。R13一般取2K左右。 图4.2 控制晶
12、闸管导通模块原理图 4.3液晶显示模块 图4.3 液晶显示模块原理图 4.4总系统原理图图4.4 系统总体原理图 5 系统软件设计 软件流程图如下: 图5.1 软件流程图 6 设计体会及今后的改进意见 开始 液晶初始化 相应处 理程序 偏差存在? PID调节 是 否 设定加热温度 单片机初始 化 是 相应处 理程序 读一次温度 温度 偏差大于10 结束 全功率调节 是 否通过本次设计,提高了对计算机控制系统相关理论的理解,大大提升了运用理论解决现实问 题的能力,本课题“简单温度控制系统”的设计与实现,从先前查相关背景资料准备到逐一突破的 经验表现在以下几个面: 首先,对课题牵涉到的一些器件必须
13、加以认识和熟练运用。 其次, 要设计某一个东西,首先要明白它是干什么的,勾画出自己的设计思路。然后将这个 问题进行分块,根据系统的指标和功能框图,明确各部分任务,进行各单元电路的设计、参数计算 和器件选择。当完成电路图的设计后,如果有条件的话可以用某些仿真软件进行仿真,避免在后续 进行硬件焊接出现错误后难以改正。 最后,在设计过程中遇到一些问题能够独立思考从而用所学知识得以解决,真正学会了学以 致用,从中增强了对计算机控制这门课程的学习兴趣,对PID参数的调节也有了较为深入的了解。 实验仍存在不足,比如在调节PID参数时,刚开始没有明确的方向,软件设计不很合理等,我会以 这次设计为契机,进一步
14、加强自己的学习能力,提升自己的专业知识水平。参考文献 1杨刚,周群. 电子系统设计与实践M. 北京:电子工业出版社, 2005. 2张毅刚. 单片机原理及应用M. 哈尔滨:哈尔滨工业大学,2004. 3阎石. 数字电路基础M. 北京:高等教育出版社,2006. 4刘金琨. 先进PID控制及其MATLAB仿真M. 北京:中国电力出版社,2003. 5康华光. 电子技术基础(模拟部分)M. 武汉:高等教育出版社,2006. 6王建华,黄河清. 计算机控制技术M. 北京:高等教育出版社,2003. 7林敏,丁金华,田涛. 计算机控制技术及工程应用M. 北京:国防工业出版社,2008.附 录 PID算
15、法程序 void auto_adjust(int NextPoint) Error = setPoint - NextPoint; / 偏差 if(Error 100) open_duty = 60;/全开通 else SumError += Error; / 积分 dError = Error - LastError; / 当前微分 LastError = Error; real_error = Proportion*Error+ Integral * SumError+ Derivative * dError; open_duty = (int)(real_error+0.5); void
16、 timer0() interrupt 1 /每隔50ms进入中断一次 TH0=0x3C; TL0=0xB0; num_counter+; if(num_counter(Sample_time*20) num_counter=0; kaitong = num_counter=open_duty ? 0:1; 键盘程序 void key_change() static char key_num,bai=5,shi,ge; bit bai_ok = 0,shi_ok = 0,goback_to_PID = 0; key_num = keyscan(); switch(key_num) case 1: /进入温度设定界面 TR0=0;/关闭定时器 kaitong=1; setPosition(1,0); prints(“SV: