水温控制系统设计报告.docx
《水温控制系统设计报告.docx》由会员分享,可在线阅读,更多相关《水温控制系统设计报告.docx(21页珍藏版)》请在冰豆网上搜索。
水温控制系统设计报告
水温控制系统设计报告
水温控制系统
摘要:
本设计采用一块单片机(AT89C52)作为水温控制系统的控制核心,实现人工设定温度,自动控制温度,显示水的实时温度等功能。
水温测试方式采用集成模拟温度传感器感知器皿中水的温度,并用运算放大器将传感器输出的微弱模拟电压信号进行放大。
采用键盘扫描方式对目标温度(40℃~90℃)进行人工设定,并用数码管动态显示水的实时温度。
同时系统还通过继电器电路控制加热器件的导通与关闭,达到保持设定温度基本不变的目的。
水温控制算法采用现今较为成熟,使用广泛的PID算法。
通过试验调试出PID算法中的比例,积分,微分常数,从而控制加热的时间比例,减小系统的调节时间。
温度控制的静态误差≤0.2℃,标定温度≤1℃。
关键词:
单片机(AT89C52),自动控制,PID算法
1.系统设计
1.1设计要求
1.1.1基本要求
(1)温度设定范围为40~90℃,最小区分度为1℃,标定温度≤1℃。
(2)环境温度降低时(例如用电风扇降温)温度控制的静态误差≤1℃。
(3)用十进制数码管显示水的实际温度。
1.1.2发挥部分
(1)采用适当的控制方法,当设定温度突变(由40℃提高到60℃)时,减小系统的调节时间和超调量。
(2)温度控制的静态误差≤0.2℃。
(3)在设定温度发生突变(由40℃提高到60℃)时,自动打印水温随时间变化的曲线。
1.2系统基本方案
根据题目要求,系统可以划分为控制器模块,温度测量模块,水温加热模块,显示模块。
模块框图如图1.2.1所示。
为了实现各模块的功能,分别做了几种不同的设计方案并进行了论证。
控制器模块
水温控制模块
水温测量模块
显示模块
电源模块
1.2.1水温控制的基本方框图
1.2.1各模块的方案选择和论证
(1)控制器模块
方案一:
采用FPGA(现场可编程门阵列)作为系统的控制器。
FPGA可以实现系统的各种复杂的逻辑功能,规模大,密度高,它将所有的器件集成在一块芯片上,减小了体积,提高了稳定性,并且可以利用EDA软件仿真、调试,易于进行功能扩展。
FPGA采用并行的输入方式,提高了系统的处理速度,适合作为大规模实时系统的控制核心。
但是由于本设计对数据处理的速度要求不是很高,FPGA高速处理的优势得不到充分的体现,并且由于其集成度高,使其成本偏高,同时由于芯片的引脚较多,实物硬件电路板布线复杂,加重了电路设计和实际焊接的操作。
方案二:
采用ATMEL公司的AT89C52作为系统的控制器。
单片机算术运算功能强,软件编程灵活,自由度大,可用软件编程实现各种算法,并且具有功耗低,体积小,技术成熟,成本低廉等有点,使其在各个领域应用广泛。
综上所述,选择方案二,采用单片机构成系统控制部分。
(2)水温探测模块
水温探测模块用于测量器皿中水的温度。
系统需要利用测温传感器检测出水的实时温度,是控制模块做出正确的反应,控制水的温度。
对于测温传感器的选择有以下几种方案。
方案一:
采用单总线可编程温度传感器测温度。
DS18B20数字可编程温度传感器可测温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃。
可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温。
在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。
测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。
但是由于其编写程序过程复杂,价格也较一般传感器昂贵,所以在这里我们并不采用。
方案二:
采用集成模拟温度传感器。
集成温度传感器LM35灵敏度为10mV每摄氏度,常温下测量精度为±5℃以内,消耗电流最大也只有70UA,自身发热对测量精度的影响也只在0.1℃以内,因此基本上能满足我们的设计需要。
而且,该器件连接电路简单,不需要编程,传感器输出的模拟信号直接交给AD转换器处理,也易于实现。
综上所述,选用方案二,利用集成模拟温度传感器测量水温。
(3)显示模块
方案一:
使用液晶显示屏显示水温。
液晶显示屏(LED)具有轻薄短小,低耗电量,无辐射危险,平面直角显示以及影像稳定不闪烁等优势,可视面积大,画面效果好,分辨率高,抗干扰能力强等特点。
但是由于只需显示温度这样的数字,信息量比较少,且由于液晶是以点阵的模式显示各种符号,需要利用控制芯片创建字符库,编程工作量大,控制器的资源占用比较多,而且其成本也比较高。
方案二:
使用传统的数码管显示。
传统数码管具有:
低能耗,低损耗,寿命长,防火,防潮,对外界环境要求低,易于维护等优势。
同时数码管采用BCD编码显示数字,程序编译简单,资源占用比较少。
综上所述,选择方案二,采用数码管动态显示温度,节省了内部资源。
(4)电源模块
在本设计中,用于控制和运算的单片机以及数码管显示器都需要在+5V直流电压下才能工作,运算放大电路需要在±12V直流电压下工作。
因此,这里需要一个能输出+5V和±12V的直流电压源。
电压源的选择也有两个方案。
方案一:
直接用干电池供电。
此方法不用焊接电路,简单方便,但是由于它提供的4.5V的电压,电压不够,提供12V电压时需要8节干电池连接,而且供电不稳定,带负载能力不强。
因此,此方案不可取。
方案二:
自制一个直流稳压电源。
直流稳压电源一般由电源变压器,整流电路,滤波电路和稳压电路四部分组成。
其基本原理框图如下:
图1.2.2直流稳压电源基本组成原理
如图1.2.2所示,电源的变压电路部分主要是进行降压,此时负边输出的仍然是交流电,还不能直接用于电路。
因此紧接着变压器是整流电路,它的作用是将变压期副边的交流电压转换为直流电压,即将正弦波电压转换为单一方向的脉动电压。
脉动电压仍然含有大量的交流分量,会影响负载的正常工作。
为了减小电压的脉动,需通过滤波电路进行滤波,使输出电压平滑。
理想情况下,应将交流分量全部滤掉,使滤波电路的输出电压仅为直流电压。
然而滤波电路为无源电路,接入负载后势必影响其滤波效果。
因此,在电路最后还需要加入稳压电路,稳压电路的功能是使输出直流电压基本不受电网电压波动和负载变化的影响,从而获得足够高的稳定性。
综上所述,选择方案二,通过自制的稳压电源给系统供电。
(5)水温控制模块
水温控制模块用来控制加热器件的导通与关闭,从而达到控制加热时间,控制水温的目的。
方案一:
采用继电器驱动电路控制。
继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。
故在电路中起着自动调节、安全保护、转换电路等作用。
电磁式继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。
只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。
当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)吸合。
这样吸合、释放,从而达到了在电路中的导通、切断的目的。
对于继电器的“常开、常闭”触点,可以这样来区分:
继电器线圈未通电时处于断开状态的静触点,称为“常开触点”;处于接通状态的静触点称为“常闭触点”。
电磁继电器的原理图如图1.2.3。
图1.2.3电磁继电器
方案二:
采用可控硅元件控制。
可控硅是P1N1P2N2四层三端结构元件,共有三个PN结,分析原理时,可以把它看作由一个PNP管和一个NPN管所组成,其等效图解如图1.2.3所示。
当阳极A加上正向电压时,BG1和BG2管均处于放大状态。
此时,如果从控制极G输入一个正向触发信号,BG2便有基流ib2流过,经BG2放大,其集电极电流ic2=β2ib2。
因为BG2的集电极直接与BG1的基极相连,所以ib1=ic2。
此时,电流ic2再经BG1放大,于是BG1的集电极电流ic1=β1ib1=β1β2ib2。
这个电流又流回到BG2的基极,表成正反馈,使ib2不断增大,如此正向馈循环的结果,两个管子的电流剧增,可控硅使饱和导通。
由于BG1和BG2所构成的正反馈作用,所以一旦可控硅导通后,即使控制极G的电流消失了,可控硅仍然能够维持导通状态,由于触发信号只起触发作用,没有关断功能,所以这种可控硅是不可关断的。
由于可控硅只有导通和关断两种工作状态,所以它具有开关特性,这种特性需要一定的条件才能转化,此条件见表1.2.1所示。
图1.2.4可控硅等效图解
表1.2.1可控硅导通和关断条件
状态
条件
说明
从关断到导通
1、阳极电位高于是阴极电位
2、控制极有足够的正向电压和电流
两者缺一不可
维持导通
1、阳极电位高于阴极电位
2、阳极电流大于维持电流
两者缺一不可
从导通到关断
1、阳极电位低于阴极电位
2、阳极电流小于维持电流
任一条件即可
在上述两种方案中,继电器的寿命比不上可控硅,但是可控硅的过压过流能力远逊于继电器,作为工控产品,可靠性应该不单单考虑元件的理想寿命,还应该考虑元气件的抗干扰,过压过流能力以及电路的简洁,简单。
在这些方面继电器都要比可控硅有优势。
且继电器寿命也不会很短,继电器的一般寿命(JZC-22F)在一百万次以上,也就是可以使用十年以上。
综上所述,选择方案一,利用继电器控制加热器件的导通与关闭即达到水温的控制目的。
2.单元电路设计
2.1水温测量电路的设计
温度传感器置于水中,将感应到的温度信号转换成微弱的模拟信号,模拟信号通过运算放大电路的放大就可以输入到AD转换电路中进行AD转换。
具体测量电路如图2.1.1。
运算放大电路采用正相放大接法,由图可知放大倍率即运放增益A0为:
式中R10=R20=2K,R7=1K,得到A0=5。
由于LM35的灵敏度为10mV/℃,故其输出的最大模拟电压为1V,经运放放大后最大输出电压为5V,满足AD转换输入电压0至5V的范围要求。
图2.1.1水温测量电路
2.2AD转换电路
经传感器和运放输出的模拟信号必须经过AD转换电路,将模拟信号转换成数字信号才能被单片机处理。
AD转换芯片目前用的比较多的是ADC0809,他可以直接输入8个单端的模拟信号。
如图2.1.2所示,ADC0809的START端是启动控制输入端,由单片机控制,一个正脉冲过后AD开始转换;CLOCK端是时钟信号输入端,当系统频率为12MHZ时,ALE信号频率约为1MHZ,然后通过74LS74D触发器进行二分频,即可符合ADC0809的时钟信号频率要求。
OE为数据输出允许信号,输入高电平有效。
当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
A,B,C为模拟输入选择端,由于在本系统中只需输入一个模拟信号,故A,B,C均接低电平表示选择IN0口输入模拟信号。
图2.1.2AD转换电路
2.3控制电路设计
图2.1.3AT89C52的最小系统以及外围电路
单片机接受AD转换电路输入的数字信号,并将输入的信号进行处理和运算,以控制控制电流或者控制电压的形式输出给被控制的单元电路,完成各项任务要求。
单片机AT89C51外接显示电路,AD转换电路和继电器驱动电路。
具体电路如图2.1.3所示。
Header8是AD转换器数字量输出的接口,P3.7(RELAY)为继电器电路的接口,P3.6(POWER_OUT)接单片机工作指示灯的输入,高电平有效。
2.4数码管动态显示电路
在本系统中采用动态数码管显示方式驱动4个七段数码管,4个七段数码管用来显示当前的温度。
图2.1.4中采用共阳极数码管,由于AT89C52单片机每个I/O口的拉电流只有1~2mV,但是在灌电流的情况下却能达到20mV左右,采用共阴极需要加驱动电路,采用共阳极数码管不需要驱动电路,可以使电路得到简化。
图中,A1,A2,A3,A4为四位数码管的为选端,A,B,C,D,E,F,段选端。
图2.1.4数码管动态显示电路
2.5继电器电路
继电器用于控制加热器的导通与关闭,其导通与关闭时间由单片机控制,从而维持水温的平衡。
如图2.1.5所示,图中RELAY与单片机的P3.7口连接,当P3.7口输出一个低电平的时候,继电器上电导通,开关打下,加热器件导通开始加热。
图2.1.5继电器电路
3.软件设计
系统的软件设计采用C语言,对单片机进行编程实现各项功能。
程序是在WindowXP环境下采用KeiluVision2软件进行编写的。
3.1PID控制算法介绍
在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节。
这种控制方法集比例、微分调节方法于一体,是现今的一种比较成熟的控制方法,也是使用比较广泛的一种控制方法。
这种控制方式具有直观、实现简单和性能好等一系列优点。
PID具体算法有两种:
直接计算法和增量计算法。
这里所谓的增量算法就是相对于标准算法的相邻两次运算之差,得到的结果是增量也就是说在上一次的控制量的基础上需要增加(负值意味着减小)控制量。
,对于温度控制就是需要增加或减小加热比例。
二直接算法得到的是当前需要的控制量,相邻两次控制量的差就是增量。
在本系统中,我们采用的是增量计算法。
标准的直接计算法公式:
上一次的计算值:
两式相减即可以得到增量计算的公式:
式中
分别称为比例常数,积分常数和微分常数,e(t)为基本偏差,
为累积偏差。
其中三个常数在控制中的作用为:
例调节作用:
是按比例反应系统的偏差,系统一旦出现了偏差,比例调节立即产生调节作用用以减少偏差。
比例作用大,可以加快调节,减少误差,但是过大的比例,使系统的稳定性下降,甚至造成系统的不稳定。
积分调节作用:
是使系统消除稳态误差,提高无差度。
因为有误差,积分调节就进行,直至无差,积分调节停止,积分调节输出一常值。
积分作用的强弱取决与积分时间常数Ti,Ti越小,积分作用就越强。
反之Ti大则积分作用弱,加入积分调节可使系统稳定性下降,动态响应变慢。
积分作用常与另两种调节规律结合,组成PI调节器或PID调节器。
微分调节作用:
微分作用反映系统偏差信号的变化率,具有预见性,能预见偏差变化的趋势,因此能产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除。
因此,可以改善系统的动态性能。
在微分时间选择合适情况下,可以减少超调,减少调节时间。
微分作用对噪声干扰有放大作用,因此过强的加微分调节,对系统抗干扰不利。
此外,微分反应的是变化率。
微分作用不能单独使用,需要与另外两种调节规律相结合,组成PD或PID控制器。
3.2系统应用中的数值量化处理
在本系统中采用时间控制比例的方法。
可以设定一个标准的加温周期,例如20S,我们就在这个20S周期内对输出进行控制,也就是说在这个20S内加温多少时间,全速加温就是连续整个周期都加温,停止加温就是不输出。
根据我们的计算可以让加温时间控制在0—2分钟内变化,比如计算所得我们在这一个周期么内应该加温1分30秒,经过两分钟后再测量被加温物体的温度通过计算我们应该加温1分15秒等等。
这里,除了加温以外的时间就是不加温,等待下一个周期到来,在进行实际测量计算下一周期我们的输出量,周而复始,不断修正我们的输出量,以达到对温度的有效控制。
PID的三个基本参数一般有试验确定,根据我们的实际工作对象去初步确定,为了达到比较好的控制效果,这三个参数一般不采用整数,但同时为了减小单片机的运算量,通常采用2的整数倍放大的方法确定这些参数。
程序结构
数码管显示
键盘扫描
键值处理
AD采样及上传
PID计算
继电器控制
图3.2.1程序结构图
开始
系统初始化
取键值
键值处理
是否有采样数据处理
PID计算
继电器控制
是
否
图3.2.2主程序流程图
4.系统测试
4.1测试使用的仪器
测试使用的仪器设备如表4.1.1所示。
表4.1.1测试使用的仪器设备
序号
名称、型号、规格
数量
备注
1
数字万用表DT9205
2
华晨仪器仪表制造厂
2
单片机仿真板
1
杨中科泰电子仪器有限公司
3
温度计
1
深圳麦威仪器有限公司
4.2硬件电路调试
4.2.1AD电路的调试
AD0809的接口电路较简单,一般不会出现什么问题,不过其采样频率不能太高,不然很容易出现错误,我们采用74LS74触发对单片机的ALE输出时钟进行4分频;而其基准源要求稳定,所以我们采用精确基准源进行调试,没出现太大的问题。
4.2.2数码管显示模块的调试
数码管显示模块由于接口比较简单,程序也不用太复杂,所以调试过程一直都很顺利,只是有时候会出现显示乱码现象,经检查是因为接口焊接出现虚焊现象造成的,排除之后显示正常。
4.2.3温度传感器的调试
LM35温度传感器的灵敏度为10mV/℃,在室温下它的VOUT端应输出约为0.3V的电压值,经过运放放大后约为1.5V。
我们取了一组温度值分别进行测量,测试结果如表4.2.1。
表4.2.1传感器调试结果
序号
实际温度
VOUT(V)
运放两端电压(V)
1
30
0.29
1.47
2
38
0.36
1.86
3
53
0.52
2.56
4
62
0.60
2.88
由表可以看到,LM35的功能能够实现。
表中存在的误差可能是由温度测量本身存在的误差以及环境温度的不稳定和操作人员等因素。
4.3软件电路的调试
PID三个参数(比例,微分,积分常数)的设定与调整是PID最困难的部分,编程时只设定他们的大概值,经过反复的调试,才能相对比较理想的参数值。
我们可以根据这些参数在整个PID过程中的作用原理,来讨论我们的对策,如表4.3.1
现象
原因A
原因B
原因C
加温很迅速就达到目标值
比例系数太大,致使在未达到设定温度前加温比例过高
微分系数过小,致使对现象反应不灵敏
加温经常达不到目标值,小于目标值的时间较多
比例系数过小,加温比例不够
积分系数过小,对恒偏差补偿不足。
基本上能够在控制目标上,但是上下偏差较大,经常波动
积分系数过小,对即时变化反应不够快,反映措施不力
积分系数过大,使微分反应被淹没钝化
设定的基本定时周期过段
受工作环境影响较大
微分系数过小,对即使变化反应不够快
设定的基本定时周期过长,不能及时得到修正。
表4.3.1
经过不断的调试和试验,在比赛的最后阶段,我们终于找到了适宜的参数值,完成了设计的要求。
5.结束语
本设计制作完成了题目要求的基本部分的全部要求和发挥部分的大部分要求,达到了设计要求。
个别功能指标如:
打印水温随时间变化的的曲线,由于时间有限,在电路中未设计与PC连接的串行接口。
在本次设计中,遇到了许多突发事件和各种困难,设计制作曾陷入瓶颈,但通过队员之间的仔细分析和自我状态的调整后解决了一些问题。
在这个过程中,我们深刻的体会到了团队协作的重要性,提高了分析问题,解决问题的能力。
参考文献
1罗亚非.凌阳16位单片机应用基础[M].北京:
北京航空航天大学出版社,2003年
2苏小林.计算机控制技术[M].北京:
中国电力出版社,2004年
3刘金琨.先进PID控制及其MATLAB仿真[M].北京:
中国电力出版社,2003年
4徐建军.MCS-51系列单片机应用及接口[M].北京:
人民邮电出版社,2003年
5薛钧义.凌阳十六位单片机原理[M].北京:
北京航空航天大学出版社,2003年
6王建华,黄河清.计算机控制技术[M].北京:
高等教育出版社,2003年
7张国范,顾树生,王明顺.计算机控制技术[M].北京:
冶金工业出版社,2004年
8雷思孝.单片机原理及应用技术[M].西安:
西安电子科技大学出版社,2004年
9朱定华.单片机原理及接口技术[M].北京:
电子工业出版社,2001年
10王卫东.模拟电子电路设计基础[M].西安:
西安电子科技大学出版社,2002年
附录
附录1主要元器件清单
表5.1.1主要元器件清单
序号
名称、型号、规格
数量
备注
1
电阻器1k
6
2
电磁继电器HRS4H-DC5v
1
3
二极管1N4148
1
4
8芯排线及插口
2
5
运算放大器LM741
1
6
集成温度传感器LM35
1
7
双D触发器74LS74
1
8
PNP三极管9012
5
9
四位数码管HS41056
1
10
AD转换器ADC0809CCN
1
11
发光二极管
2
12
按键开关
5
13
极性电解电容10uF
1
14
单片机AT89C52
1
15
电阻2K
2
16
晶振
1
附录2程序清单
以下是水温控制系统的主程序,由于按键扫描和数码显示电路比较简单故没有单独列出来,可以参考语句后面的注释。
#include
unsignedchardisplay_code[10]={~0x3f,~0x06,~0x5b,~0x4f,~0x66,~0x6d,~0x7d,~0x07,~0x7f,~0x67};
unsignedchardisplay_buffer[4];
bitset=0;
bitpid_allow=0;
sbiteoc=P3^3;
sbitoe=P3^2;
sbitst=P3^4;
sbitk1=P2^4;
sbitk2=P2^5;
sbitk3=P2^6;
sbitk4=P2^7;
sbitlight=P3^6;
sbitheal=P3^7;
unsignedchari=0;
floatt,t_now,tout=100,t_diff=0,t_target=60,temp=0;
unsignedintk=5000;
intttemp1=0;
unsignedcharttemp2=0,ttemp3=1;
floatKP=28,KI=2.5;
voiddisplay(void);//数码管显示
voidadc0809(void);//AD转换
voidpid(void);//pid控制量计算
voidp_out(void);//输出控制
voidmain()
{
TMOD=0x11;
TL0=(65536-3000)%256;
TH0=(65536-3000)/256;
TL1=(65536-40000)%256;
TH1=(65536-40000)/256;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
light=0;
heal=1;
while
(1)
{
display_buffer[0]=(unsignedchar)t_now/10;//刷新显示
display_buffer[1]=(unsignedchar)t_now%10;
display_buffer[2]=(unsignedchar)t_target/10;
display_buffer[3