基于单片机的水温控制系统设计.doc
《基于单片机的水温控制系统设计.doc》由会员分享,可在线阅读,更多相关《基于单片机的水温控制系统设计.doc(22页珍藏版)》请在冰点文库上搜索。
数理和信息工程学院
《单片机原理及使用》期末课程设计
题目:
基于单片机的水温控制系统
专业:
电子信息工程
班级:
电信041班
姓名:
李海艳
学号:
04610103
指导老师:
余水宝
成绩:
目录
摘要…………………………………………………………………………………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
参考文献.…………………………………….……….…………………..…30
基于单片机的水温控制系统设计
数理和信息工程学院04电子信息工程1班李海艳
指导教师:
余水宝
摘要:
本系统以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个按键分为82,采用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)脉宽调制输出子程序:
N
Y
Y
N
Y
N
N
Y
开始
初始化
P3.3、P3.4、P3.5=000
消抖
31Hß‘0’
’
P1ß30H
延时
Flaga=1
等待按键放开
P3.2=0?
P3.7=0?
消抖
等待按键放开
Flaga=1?
P3.3、P3.4、P3.5=001
P1ß31H
延时
Flagb=1?
Flagbß1
’
32Hß‘0’
’
Flagbß0
’
…………
………….
………….
………….
………….
………….
P3.3、P3.4、P3.5=010
P3.3、P3.4、P3.5=011
………….
P3.3、P3.4、P3.5=101
P3.3、P3.4、P3.5=100
P3.3、P3.4、P3.5=110
P3.3、P3.4、P3.5=111
入口
P0.0输出高电平
脉宽标志位清0
返回
脉宽标志位是高电平?
P0.0输出低电平
把脉宽标志位置1
Y
N
初始化
调用水温检测子程序
调用PID算法子程序
开起定时器
定时时间到?
调用脉宽子程序
返回
Y
N
N
初始化
调读温度子程序
调PWM子程序
调PID子程序
调发送子程序
定时时间到
Y
PID子程序
T1=T1+K(Ek-E(K-1))
设置温度大于实测温度
设置温度减实际温度
实际温度减设置温度
置标志位
清标志位
差值放30H
Y
N
子程序返回
占空比加上差值
标志位为1
PWM占空比到上限
PWM占空低到下限
占空比减去差值
开始
复位DS18B20
发读存储器命令
返回
发跳过ROM命令
发温度转换命令
延时
复位DS18B20
将温度转换成BCD码
发送温度值,显示温度
水温检测子程序
第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