基于单片机的水温控制系统设论文经典.docx
《基于单片机的水温控制系统设论文经典.docx》由会员分享,可在线阅读,更多相关《基于单片机的水温控制系统设论文经典.docx(31页珍藏版)》请在冰豆网上搜索。
基于单片机的水温控制系统设论文经典
摘要…………………………………………………………………………………4
第1节课题任务要求………………………………………..5
第2节总体方案设计…………………………………………....5
2.1总体方案确定………………………….…………………..6
2.1.1控制方法选择………………………………………………….6
2.1.2系统组成………………………………………………………7
2.1.3单片机系统选择…………………………………………………7
2.1.4温度控制……………………………………………………….7
2.1.5方案选择………………………………………………………7
第3节系统硬件设计…………………………………………………..8
3.1系统框图…………………………………………………………..8
3.2程序流程图…………………………..……………….……………..12
第4节参数计算…………………………………………….………………...16
4.1系统模块设计………………………………………………………16
4.1.1温度采集及转换………………….………………………………….16
4.1.2传感器输出信号放大…………………………………………………17
4.1.3模数转换…………………………………………………………….18
4.1.4外围电路设计……………………………………………………….19
4.1.5数值处理及显示局部……………………………………………..19
4.1.6PID算法介绍…………………………………………...………………19
4.1.7A/D转换模块………………………………………………..………………20
4.1.8控制模块…………………………………………..………………21
4.2系统硬件调试……………………………………………………….21
第5节CPU软件抗干扰…………………………….……………..24
5.1看门狗设计…………………………………………….…………24
第6节测试方法和测试结果……………………………………………27
6.1系统测试仪器及设备……………………………………....……………27
6.2测试方法…………………………………………………………..…………27
6.3测试结果………………………………………………………………………27
完毕语………………………………….………………....……..29
基于单片机的水温控制系统设计
摘要:
本系统以AT89C51,AT89C2051单片机为核心,主要包括传感器温度采集,A/D模/数转换,按扭操作,单片机控制,数码管数字显示等局部。
本系统采用PID算法实现温度控制功能,通过串行通信完成两片单片机信息的交互而实现温度设定、控制和显示。
本设计还可以通过串口与上位机〔电脑〕连接,实现电脑控制。
系统设计有体积小、交互性强等优点。
为了实现高精度的水温控制,本单片机系统采用PID算法控制和PWM脉宽调制相结合的技术,通过控制双向可控硅改变电炉和电源的接通、断开,从而改变水温加热时间的方法来实现对水温的控制。
本系统由键盘显示和温度控制两个模块组成,通过模块间的通信完成温度设定、实温显示、水温升降等功能。
具有电路构造简单、程序简短、系统可靠性高、操作简便等特点。
第1节课题任务与要求:
1.根本要求
一升水由1kw的电炉加热,要求水温可以在一定围由人工设定,并能在环境温度降低时实现自动调整,以保持设定的温度根本不变。
2.主要性能指标
a.温度设定围:
30-90℃,最小区分度为1℃。
b.控制精度:
温度控制的静态误差≤1℃。
c.用十进制数码显示实际水温。
d.能打印实测水温值。
3.扩展功能
a.具有通信能力,可承受其他数据设备发来的命令,或将结果传送到其他数据设备。
b.采用适当的控制方法实现当设定温度与环境温度突变时,减小系统的调节时间和超调量。
c.温度控制的静态误差≤1℃。
d.能自动显示水温随时间变化的曲线。
第2节总体方案设计
2.1总体方案确实定
2.1.1、控制方法选择
由于水温控制系统的控制对象具有热存储能力大,惯性也较大的特点。
水在容器的流动或热量传递都存在一定的阻力,因而可以归于具有纯滞后的一阶大惯性环节。
一般来说,热过程大多具有较大的滞后,它对任何信号的响应都会推迟一段时间,使输出与输入之间产生相移。
对于这样一些存在大的滞后特性的过渡过程控制,一般来说可以采用以下几种控制方案:
〔1〕输出开关量控制:
对于惯性较大的过程可以简单地采用输出开关量控制的方法。
这种方法通过比拟给定值与被控参数的偏差来控制输出的状态:
开关或者通断,因此控制过程十分简单,也容易实现。
但由于输出控制量只有两种状态,使被控参数在两个方向上变化的速率均为最大,因此容易硬气反应回路产生振荡,对自动控制系统会产生十分不利的影响,甚至会因为输出开关的频繁动作而不能满足系统对控制精度的要求。
因此,这种控制方案一般在大惯性系统对控制精度和动态特性要求不高的情况下采用。
〔2〕比例控制〔P控制〕
比例控制的特点是控制器的输出与偏差成比例,输出量的大小与偏差之间有对应关系。
当负荷变化时,抗干扰能力强,过渡时间短,但过程终了存在余差。
因此它适用于控制通道滞后较小、负荷变化不大、允许被控量在一定围变化的系统。
使用时还应注意经过一段时间后需将累积误差消除。
a.比例积分控制〔PI控制〕
由于比例积分控制的特点是控制器的输出与偏差的积分成比例,积分的作用使得过渡过程完毕时无余差,但系统的稳定性降低。
虽然加大比例度可以使稳定性提高,但又使过渡时间加长。
因此,PI控制适用于滞后较小、负荷变化不大、被控量不允许有余差的控制系统,它是工程上使用最多、应用最广的一种控制方法。
b.比例积分加微分控制〔PID控制〕
比例积分加微分控制的特点是微分的作用使控制器的输出与偏差变化的速度成正比例,它对克制对象的容量滞后有显著的效果。
在比例根底上加上微分作用,使稳定性提高,再加上积分作用,可以消除余差。
因此,PID控制适用于负荷变化大、容量滞后较大、控制品质要求又很高的控制系统。
结合本例题设计任务与要求,由于水温系统的传递函数事先难以准确获得,因而很难判断哪一种控制方法能够满足系统对控制品质的要求。
但从以上对控制方法的分析来看,PID控制方法最适合本例采用。
另一方面,由于可以采用单片机实现控制过程,无论采用上述哪一种控制方法都不会增加系统硬件本钱,而只需对软件作相应改变即可实现不同的控制方案。
因此本系统可以采用PID的控制方式,以最大限度地满足系统对诸如控制精度、调节时间和超调量等控制品质的要求。
2.1.2、.系统组成
就控制器本身而言,控制电路可以采用急经典控制理论和常规模拟控制系统实现水温的自动团结。
但随着计算机与超大规模集成电路的迅速开展,以现代控制理论和计算机为根底,采用数字控制、显示、A/D与D/A转换,配额后执行器与控制阀构成的计算机控制系统,在过程控制过程中得到越来越广泛的应用。
由于本例是一个典型的检测、控制型应用系统,它要求系统完成从水温检测、信号处理、输入、运算到输出控制电炉加热功率以实现水温控制的全过程。
因此,应以单片微型计算机为核心组成一个专用计算机应用系统,以满足检测、控制应用类型的功能要求。
另外,单片机的使用也为实现水温的智能化控制以及提供完善的人机交互界面及多机通讯接口提供了可能,而这些功能在常规数字逻辑道路中往往是难以实现或无法实现的。
所以,本例采用以单片机为核心的直接数字控制系统〔DDC〕。
2.1.3、.单片机系统选择
AT89C2051、AT89C51单片机是最常用的单片机,是一种低损耗、高性能、CMOS八位微处理器。
AT89C2051与MCS-51系列的单片机在指令系统和引脚上完全兼容,而且能使系统具有许多MCS-51系列产品没有的功能,功能强、灵活性高而且价格低廉。
AT89S51可构成真正的单片机最小应用系统,缩小系统体积,增加系统的可靠性,降低了系统本钱。
只要程序长度小于4K,四个I/O口全部提供给拥护。
系统运行中需要存放的中间变量较少,可不必再扩大外部RAM。
1.1.4、温度控制
键盘输入一个需要控制的温度,通过单片机2051的串口把数据传送到AT89C51,AT89C51通过数据比拟,PID分析,T0,T1产生PWM波来控制电炉是否继续加热还是停顿加热。
1.1.5、方案选择
方案一:
用热敏电阻:
通过电阻的变化来获得电压的变化,起价格虽然廉价但是精度不是很高。
对于一个精度要求高的系统不宜采用
方案二:
用A/D590:
通过AD590温度传感器采集温度,由于AD590是电流传感器,经过电阻转换为电压。
虽然价格较高但是精度高。
经比拟,我们选择方案二
第3节系统硬件设计
3.1系统框图
传
感
器
电
炉
单
片
机
基
本
系
统
信号
放大
A/D
功
率
放
大
键
盘
显
示
图3-1单片机控制系统原理框图
3.1.2键盘显示电路
本模块以AT89C2051单片机为核心,利用138译码器对显示器动态扫描及作为键盘的扫描线,采用此方法大大简化了硬件,充分的利用了单片机的资源,这也是本设计的巧妙所在。
可同过键盘来设置温度,并显示在数码管上,并通过串口发送出去,另外检测到温度通过串口接收进来,并显示在相应的数码管上键盘的扫描输入与显示器的扫描输出由单片机控制,但考虑到键盘与接口需要较多的I/O口线,如果直接由单片机控制,一方面必须扩大系统I/O口,另一方面,键盘与LED显示的扫描处理占用大量机时,增加软件编程负担。
为此在组成系统人机对话通道时采用了可编程的键盘。
显示接口芯片8051,由8051负责键盘扫描、消抖处理和显示输出工作。
根据认为的要求,8051键盘被设计为2*8行,扫描线有SL0~SL8经译码输出,接入键盘列线,查询RL0~RL1提供,采用键盘扫描法对16个按键进展读取状态。
使用行列式,把这16个按键分为8
2,采用74LS138对8行键盘轮流扫描,再通过P3.2和P3.7这2列读进来,从而判断按键是否按下。
电路如图3所示。
键盘的系统框图如下:
键盘显示图一
键盘显示图二
2系统温度控制
前向通道:
以AT89C51单片机为控制核心,采集到温度,经放大,AD转换后送单片机处理,再通过串行口发送到显示模块因为考虑到PID运算时需要调用浮点数运算程序库,程序需要占用很大的存储空间,8051部的能满足此要求,所以不需要扩展外部ROM,系统中运行中需要存放的中间变量只有给定温度和实测,PID运算中间结果及输出结果等十几个变量.因而8051片的RAM能够满足要求,可不必再扩展。
后向通道:
后向通道是实现控制型号输出的通道,单片机系统产生的控制信号经过功率放大器的放大控制电炉的输入功率,以实现水温的控制的目的.根据系统的总误差要求,后向通道的控制精度也要应控制在0.83%之.
以上就是整个电路的框图,将前述各单元电路连接起来,就可构成完整的系统硬件电路图。
系统硬件电路中除了包含前、后向通道的输入、输出插座外,还应考虑增加苦干个插座,以方便主控板与各部件的连接。
硬件电路制作包括印刷线路板制作、焊接和系统连接等几个方面。
印刷线路板的设汁一般都是在计算机上利用Protel99SE软件进展辅助设计。
3.2程序流程图
系统软件由主程序、键盘扫描、LED显示、串行口中断组成。
由于本模块就进展键盘与显示任务,且键盘扫描与LED扫描是用同个74LS138来完成,可以将程序精简,即把键盘和显示的程序合在一起放在主程序里。
〔1〕初始化。
设定可编程芯片的工作方式,对存中的工作参数区进展初始化,显示系统初始状态。
〔2〕读温度程序.通过DS18B20的侧温.
〔3〕调用PID算法子程序通过键盘模块发送过来的数据,即给定值,和测量值进展计算,输出PWM波.对电炉的水温度进展控制.
〔4〕返回
(2)定时中断效劳程序:
采样定时由定时器o的定时操作完成,定时器o的定时初值时间由PID的运算结果控制。
程序流程如下图:
(3)脉宽调制输出子程序:
第4节参数计算
系统调试包括硬件调试和软件调试。
按+键设定温度值加一;按-键设定温度值减一;按设温键,可任意设置温度,输入相应的数值,按确定键即可,按取消键那么返回前一次设置的值;按初始键那么返回刚一开机的状态。
软件的调试府在仿真器提供的单步、断点、跟踪等功能的支持下对各子程序分别进展调试.将调试完的工程序连接起来再调试.逐步扩大调试围。
4.1系统各模块设计及参数计算
4.1.1、温度采集局部及转换局部
我们使用AD590来采集外界的温度。
AD590是美国模拟器件公司生产的单片集成两端感温电流源。
它的主要特性如下:
1、流过器件的电流〔mA〕等于器件所处环境的热力学温度〔开尔文〕度数,即:
mA/K式中:
—流过器件〔AD590〕的电流,单位为mA;T—热力学温度,单位为K。
2、AD590的测温围为-55℃~+150℃。
3、AD590的电源电压围为4V~30V。
电源电压可在4V~6V围变化,电流变化1mA,相当于温度变化1K。
AD590可以承受44V正向电压和20V反向电压,因而器件反接也不会被损坏。
4、输出电阻为710MW。
5、精度高。
AD590共有I、J、K、L、M五档,其中M档精度最高,在-55℃~+150℃围,非线性误差为±0.3℃。
由于AD590采集的输出数据是模拟量—电流,而且很小,不易测量,所以我们要将电流量转换成电压量,这样有利于后面的放大及D/A转换。
我们改用一个固定电阻〔9.1k或10k〕和一个电位器(1K)串接的方法,这样可以通过调节电位器使得每路输出电压根本一致。
如以0℃为参考值那么应使其电压输出为2.73V;如以25℃为参考值,那么应使其电压输出为2.98V.
4.1.2、传感器输出信号放大电路局部:
由于取得的电压量很小,我们选用LM324做为运放,以为其部带有四个运放,可以使得运放局部在电路版上不占用太大的体积。
我们用了其部的三个运放。
第一级运放我们做成射级跟随器的形式,起到阻抗匹配的作用。
第二级运放设计为反相比例求和电路,根据反相比例求和电路公式,我们设计了如下列图的电路,U=-(〔10/10〕*U1+10/〔20+R〕),其中U为第二级输出电压,R为50k的电位器。
可以通过调节电位器使得输出电压到达要求。
设0℃时,第二级的输出为2.73-2.73=0V,而25℃时,第二级的输出为2.73-2.98=-0.25V〔反相〕〔零位调整〕。
第三级运放设计为反相比例放大电路,我们设计为将第二级的输出电压放大5倍。
所以我们选用了10k和50k的电阻来实现。
4.1.3、模数转换电路局部:
这局部最初想用ADC0809的,但为了配合使用CD4051,我们最终选择了ADC0804。
ADC0804的规格及引脚图
·8位CMOS逐次逼近型的A/D转换器
·三态锁定输出
·存取时间:
135μs;
·分辨率:
8位;
·转换时间:
100μs;
·总误差:
±1LSB;
·工作温度:
ADC0804LCN——0℃~+70℃;
·ADC0804LCD——-40℃~+85℃;
引脚图及说明如下图:
/CS:
芯片选择信号。
/RD:
外部读取转换结果的控制脚输出信号。
/RD为高时,DB0~DB7处于高阻抗;/RD为低时,数字数据才会输出。
/WR:
用来启动转换的控制输入,相当于ADC的转换开场〔/CS=0时〕,当/WR由高变为低时,转换器被去除;当/WR回到高时,转换正式开场。
CLKIN,CLKR:
时钟输入或接振荡元件〔R,C〕,频率约限制在100kHz~1460kHz,如果使用RC电路那么其振荡频率为1/〔1.1RC〕.
/INTR:
中断请求信号输出,低电平动作。
VIN(+)、VIN(-):
差动模拟电压输入。
输入单端正电压时,VIN(-)接地;而差动输入时,直接参加VIN(+)、VIN(-)。
AGND,DGND:
模拟信号及数字信号的接地。
VREF:
辅助参考电压。
DB0~DB7:
8位的数字输出。
VCC:
电源供给以及作为电路的参考电压。
众所周知,精度是数据采集系统的重要指标,模数转换器的量化误差是影响系统精度的主要因素,A/D转换器的位数越多,其量化误差越小,一个M位的A/D转换器的量化误差可表示为:
式中Vref为模数转换器的参考基准电压。
设A/D转换电路的模拟输入电压为Vi,那么经A/D转换后的相对误差表示为:
(2)上式说明,当模数转换器的位数选定后,其相对误差D与其模拟输入电压Vi成反比。
因此只有将输入信号Vi预放大到接近参考电压Vref,才能充分发挥A/D
转换器位数的效能,减小量化误差,提高系统数据采集精度。
此即为引入前置放大器的目的之所在。
逐步逼近式A/D的转换公式:
,
、Ux为输入电压、N为输出值〔1-1〕
〔1-2〕
中选定参考电压和A/D位数时,e为常数,由误差传递公式得:
,Ux是输入绝对误差〔1-3〕
由式〔1-3〕知:
当输入电压越大,A/D转换的相对误差越小,当然输入电压不能大于A/D最大转换电压。
因此为了减少A/D转换误差,对输入信号进展放大。
4.1.4、ADC0804芯片外围电路的设计:
a.19脚的CLKR端接一个10k的电阻和150PF的电容,根据公式f=1/〔1.1RC〕,可算得时钟输入频率为0.6兆左右。
b.9脚:
选择470k的电阻、5k的电位器和2.7伏的稳压管来调节芯片的相对电压。
本电路中应调节电位器使得9脚电压为2 .56伏。
c.1、7、8脚接地
d.6脚接运放的输出端,采集收集到的信号,经过A/D转换最后输出8位2进制数,这样就可以送到单片机里进展处理了。
4.1.5、数值处理局部及显示局部:
数值处理局部:
我们采用8051芯片,其部自带程序存储器。
其外接12兆的晶振来给起供给震荡频率。
9脚接一个10μF的电解电容再接地,来实现复位功能。
/RD和/WR分别与ADC0804的/RD和/WR相连,实现数据的读写控制。
P2.4脚与ADC0804的/INTR相接,可以通过编程来判断该脚的上下来得知A/D转换是否完成。
P1.4~P1.7及P2.7口分别外接一个4.7k的电阻接至三极管的C端,来控制三极管的通断,来控制5个数码管的亮暗。
P2.0~P2.2口分别与ADC0804的9、10、11脚来控制选择的路数。
显示局部:
用7447芯片与8051的P1.0~P1.3口相连,7447芯片可将8051转换好的8421BCD码转换成7段码送到数码管显示。
数码管选用共阳的,因此在其Vcc端要外接一个三极管〔9013〕,通过控制三极管给数码管供电,来控制数码管的通断。
4.1.6、PID算法的介绍:
在模拟系统中,PID算法的表达式:
〔1〕式中:
P〔t〕——调节器的输出信号:
e〔t〕——调节器的偏差信号,它等于测量值与给定值之差;
KP——调节器的比例系数;
TI——调节器的积分时间;
TD——调节器的微分时间。
4.1.7、A/D转换模块
由于系统对信号采集的速度要求不高,故可以采用价格低的8位逐次逼近式A/D转换器ADC0804,该转换器转换速度为100us,转换精度为0.39%,对应误差为0.2340°C。
故采用AD0804,ADC0804是8位模数转化电路,它能把模拟电压值转化为8位二进制码,其转化公式如下:
DX=VIN*256/VREF我们这里设置VREF等于5V〔因为这里悬空没接,查资料可知其为5V〕,那么DX所对应的值就是八位二进制码的十进制值,具体转化表如下:
温度值
ADCin〔V〕
DX
十六进制编码
温度值
ADCin〔V〕
DX
十六进制编码
0°C
0
0
00H
30°C
2.344
8
78H
2°C
0.156
1
07H
35°C
2.734
9
8BH
4°C
0.313
2
0AH
40°C
3.125
A
A0H
8°C
0.625
3
20H
45°C
3.516
B
B4H
10°C
0.781
4
27H
50°C
3.906
C
C7H
15°C
1.172
5
3CH
55°C
4.297
D
DCH
20°C
1.560
6
4FH
60°C
4.688
E
F0H
25°C
1.953
7
63H
64°C
5.000
F
FFH
A/D转换器时钟电路参数计算
ADC0804片有时钟电路,其振荡频率可按下式计算:
fclk≈1/1.1RC
式中R和C分别是CLK_R和CLK_IN两端外接一对地电阻、电容的阻容值。
其典型应用参数为R=10KΩ,C=150PF。
此时fclk≈640kHz,A/D转换时间约为103≈μs。
A/D转换器的INTR与89C51的P1.0相连,单片机以查询方式获取A/D转换器转换完毕的信息。
4.1.8、控制模块
由于用单片机来控制双向晶闸管,而晶闸管阳极和阴极间所接的是220V的交流电压,故本电路在中间加了一个光电耦合器件,使低压区和高压区隔离开。
光电耦合器件采用的是MOC3041,其耐压值为400V,可以满足本设计的要求。
而光电耦合器件的工作电流较大,因此前面需加放大电路,采用的是小功率硅三极管9012可满足要求,另外为了保护光电耦合器件需在高压侧接一个大功率电阻。
双向晶闸管的选取:
由于负载是1KW的电炉,用于控制负载输入功率的双向晶闸管应能满足负载对工作电压、电流的要求。
工作电压峰值可按下式计算:
Vp=220Χ1.414=313〔V〕
工作电流峰值可按下式计算:
Ip=1000/220Χ1.414=6.43〔A〕
因此,为满足应用要求并适当留有余地,双向晶闸管可选用BAT12-600,该器件可承受的最大反向电压为600V,最大电流为12A,为了保护双向晶闸管还可在其旁边加一保护电路〔即缓冲电路〕,因为双向晶闸管在开通和关断的瞬间du/dt的变化率较大,开关损耗很大,因此加上阻容电路,利用储能元件对能量进展缓冲,从而到达保护的目的,具体电路如图2所示。
由于本电路采用PID控制,程序较长,约为2.8K左右,因此选用比拟熟悉AT89C51单片机,其容量为4K,可以满足设计的要求。
复位电路的参数选择:
本设计晶振用的是12M,那么机器周期为1us,要使单片机复位需持续2个机器周期的高电平。
可按下式计算:
RC≧2us
为了使单片机能够可靠地上电自动复位,选取R=8.2KΩ,C=10uF。
4.2系统硬件调试
温系统经温度传感器和信号放大器产生0~5V的模拟电压信号送入A/D转换器的输入端,A/D转换器将模拟量转换为数字量通过系统总线送入单片机进展运算处理。
硬件电路的调试应依次对单片机根本系统、前向通道和后向通道分别进展调试。
调试时可利用仿真器对各接口地址进展读写操作,静态地测试电路各局部的连接是否正确;对于动态过程(如中断响应、脉宽调制输出等)可以编写简短的调试程序配合硬件电路的调试。
4.2.1、单片机根本系统调试
(a)晶振电路
将仿真器晶扳开关打到外部,如果仿真器出现死机