基于 AT89S52 的水温控制系统的设计
樊彦
(吉首大学物理科学与信息工程学院,湖南 吉首 416000)
摘要:本文介绍了基于 AT89C52 单片机的自动水温控制系统的设计及实现过程。
该系统具有实时显示、温度测量、温度设定并能根据设定值对环境温度进行调节
实现控温的目的以及达到上下限温度报警功能,控制算法是基于数字 PID 算法。
关键词 :PID AT89C52 脉宽调制 实时
前言
随着人们生活水平的提高,对生活环境的要求也越来越高,家用电器越来越
趋向于自动控制控制乃至于智能控制,针对目前家庭的实际需要,自动控制水温
报警系统比较方便实用,本文就通过 51 系列单片机来实现一种家用自动控制水
温报警系统的设计。该家用自动控制水温报警系统即实时反映当前系统工作区的
温度信息,温度信息通过液晶屏直观的显示给用户,用户可根据自己对水温的实
用要求,通过键盘自行设定温度及温度的报警值,当温度值超出用户设定的范围
时,本系统可以自动执行语音报警。
目录
1 题目分析………………………………………………………………………………………………1
1.1 任务和功能………………………………………………………………………………………1
1.2 主要性能指标……………………………………………………………………………………1
2 方案的论证……………………………………………………………………………………………1
2.1 控制电路方案选择……………………………………………………………………………1
2.2 测温电路方案的选择…………………………………………………………………………2
2.3 加热控制方案的论证…………………………………………………………………………2
2.4 软件算法方案的选择…………………………………………………………………………2
3 硬件的设计……………………………………………………………………………………………3
3.1 单元电路的设计……………………………………………………………………………… 3
3.1.1 温度采集电路………………………………………………………………………… 3
3.1.2 功率控制电路………………………………………………………………………… 4
3.1.3 控制、键盘、显示电路………………………………………………………………5
3.1.4 报警电路………………………………………………………………………………… 6
3.2 总体电路设计………………………………………………………………………………… 7
4 软件设计与实现……………………………………………………………………………………7
4.1 软件流程图………………………………………………………………………………………7
4.2 PID 控制算法……………………………………………………………………………………12
5 功能测试及结果分析………………………………………………………………………… 12
5.1 传感器标定………………………………………………………………………………… 12
5.2 动态温控测量…………………………………………………………………………………12
5.3 测试结果分析…………………………………………………………………………………13
5.4 硬件调试问题…………………………………………………………………………………13
6 结论………………………………………………………………………………………………………13
7 参考文献………………………………………………………………………………………………13
8 附录………………………………………………………………………………………………………14
8.1 附 1:元器件明细表…………………………………………………………………………14
8.2 附 2:硬件电路原理图………………………………………………………………………15
8.3 附 3:软件程序清单…………………………………………………………………………15
1 题目分析
根据题目的具体要求,经过阅读思考,可对题目的具体任务、功能、技术指
等作出如下分析。
1.1 任务和功能
实际上题目的任务就是要设计一个温控系统,系统的功能是温度测量和控温
在测量部分,要求测量 40~90ºC 的温度范围,还规定了测量的精度需高于
1ºC,测温的结果要求显示。
在控制部分,要求系统能够将水温调节到给定的温度,并进行保温。题目并
未规定温度调节的时间长短,但显然调节时间越短越好。
题目没有具体给出具体加热的器具和方式,因此选手必须自行选择和制作加
热装置,然后才能真正进行电路制作。
在发挥部分,还要求提高温度系统的控制性能,缩短调节时间,提高控制精
度,增加打印功能。
1.2 主要性能指标
(1) 测温范围:40~90ºC,可以大于此范围;
(2) 测温精度:1ºC,发挥到 0.2ºC;
(3) 保温精度:1ºC,发挥到 0.2ºC。
2 方案的论证
对题目进行深入的分析和思考,可将整个系统分为以下几个部分:测温电路、
控制电路、功率电路和加热装置。系统框图如图 1 所示。
显示
测温电路
控制电路
功率电路
加热装置
水
输入
2.1 控制电路的方案选择
图 1
方案一:采用运放等模拟电路搭建一个控制器,用模拟方式实现 PID 控制,
对于纯粹的水温控制,这是足够的。但是附加显示、温度设定等功能,还要附加
许多电路,稍显麻烦。同样,使用逻辑电路也可实现控制功能,但总体的电路设
计和制作比较烦琐。
方案二:采用 FPGA 实现控制功能。使用 FPGA 时,电路设计比较简单,通
过相应的编程设计,可以很容易地实现控制和显示、键盘等功能,是一种可选的
方案。但与单片机相比,价格较高,显然大材小用。
方案三:采用单片机最小系统同时完成控制、显示、键盘等功能,电路设
计和制作比较简单,成本也低,是一种非常好的方案。
综上所述本设计采用方案三作为控制电路。
2.2 测温电路方案的选择
方案一:采用热敏电阻作为测温元件。热敏电阻精度高,需要配合电桥使
用,要实现精度测量需要配上精密较高的电阻。此外还需要制作相应的调理电路。
方案二:采用半导体集成温度传感器作为测温元件,半导体集成温度传感
器应用也很广泛,它的精度、可靠性都不错,价格也适中,使用比较简单,是一
个较好的选择。
综上所述本设计采用方案二作为测温电路。
2.3 加热控制方案的论证
首先要选择好加热装置。根据题目,可以采用热得快进行加热,控制热的
快的功率即可控制加热速度。当水温过高时,一般不能对水进行降温控制,而只
能关掉热得快,让其自然冷却。在制作中,为了达到更好的控制效果,也可以放
置一个小风扇,当加热时开启热得快关闭风扇,当水温超高时关闭热得快开启风
扇加速散热。
热得快这类电阻性电器可直接使用 220V 交流电,控制有两种实现方式。
它们的电压波形如图所示。
2
控制周期
导通角
(a)
(b)
具体方案如下。
方案一:采用控制导通交流周期数的方式如图(a)所示,为了达到控制
的精度,需要在一个较多的周期数中控制导通的数目,不适用于动态性能较高的
控制。水温控制系统具有较大的惯性,可以考虑这种控制方式。
方案二:采用控制导通角的方式如图(b)所示,由于对每个周期的交流
电都进行控制,因此响应速度比较高,另外由于导通角连续可调,因此控制精度
比较高。
2.4 软件算法方案选择
方案一:采用模糊控制算法,对于一个典型的模糊控制系统,考虑它的
输入信号有偏差 e 和偏差变化率 e 两种,输出信号为控制信号u 。根据测试经验,
可选取三角型隶属函数,分为正大、正中、正小、正零、零、负零、负小、负中、
负大,9 个档次。然后根据控制规则列出规则基表。这种控制方法能够较精确的
实现设计要求,但是考虑到单片机的存储量,和实时性,不采取这种尚未完全推
广的控制方法。
方案二:采用经典 PID 控制算法和根据实验数据分区间控制的算法,对
于温度系统来说,被控对象没有精确的数学模型。热得快加热使得水温具有有热
惯性,而且检测的实时数据是检测点附近的实时温度并不能完全体现 1 升水的实
际温度,所以经典 PID 控制算法不能满足设计要求,还必须根据实验数据进行调
整。这种控制算法基本能够满足设计要求,且通用性较强。
本设计采用方案二作为控制算法。
3 硬件的设计
3.1 单元电路的设计
3.1.1 温度采集电路:
一种电路是采用单线数字温度传感器 18B20,可直接输出数字量,单线器件
和单片机的接口只需一根信号线,所以本设计的硬件电路十分简单,容易实现。
能达到 0.5ºC 的固有分辨率,使用读取温度暂存寄存器的方法能达到 0.2ºC 以上
的精度。 18B20 连接电路图如图 2 所示。
3
VCC
DS18B20
至单片机I/O口
Data
GND
图 2
另一种测温电路采用 AD590 集成温度传感器,AD590 将温度转化为电流信号,
但由于 AD 转换大都需要电压信号,因此还需要通过相应的调理电路,将电流信
号转化为电压信号。AD590 测温电路如图 3 所示。
+15V
U1
AD581
Vin
1
3
Vout
D
N
G
2
R2
9.1k
R3
99k
+15V
AR1
R4
1k
R5
2k
R1
10k
GND
AD590
OPAMP
OUT
-15V
图 3
由于这个电路输出的是电压信号,不能直接被单片机利用,因此需经过一
个 A/D 转换器,将电压信号转换为数字量。A/D 转换器有很多类型,需要根据精
度和转换速度来进行选择。本设计可采用最常用的 A/D 芯片之一 AD0809 的应用
电路。也可直接选用带有 A/D 的单片机,这样可以省去 A/D 电路的制作,简化了
电路,提高了可靠性。带 A/D 的单片机有很多型号,如常用的 PIC16C711 内含有
4 路 8 位 A/D,C8051F020 内含一组 8 路 12 位 A/D 和一组 8 路 8 位 A/D,凌阳
SPCE061A 单片机内含有 8 路 10 位 A/D。
3.1.2 功率控制电路:
功率控制电路是本系统硬件设计的关键,由于加热装置的电源是 220V,50HZ
的市电,选择器件的耐压至少要两倍以上,否则容易发生损坏。下面就方案论证
中提出的两种方案功能实现的电路进行进一步的分析,从而确定系统设计电路。
i. 控制交流周期数的方式:
可以采用 MOC3043 和可控硅的功率控制电路,图中 MOC3043 是具有双向晶闸
管输出的光电隔离器,SCR 是双向可控硅,负载(热得快)。在 MOC3043 内部不
仅有发光二极管,而且还有过零检测电路和一个小功率双向可控硅。当单片机的
I/O 口输出低电平信号进入 7407 时,MOC3043 中的发光二极管发光,由于过零电
4
路的同步作用,内部的双向可控硅过零后马上导通,使功率双向可控硅 SCR 导通,
在负载中有电流流过,当 I/O 口输出高电平时,MOC3043 中的发光二极管不发光,
内部双向可控硅截止,所以功率双向可控硅 SCR 也截止,负载中没有电流流过。
控制驱动电路如图 4 所示。
+5
U1C
7407
5
R5
150
6
1
2
3
U3
过零测
MOC3043
R6
27
R7
330
6
5
4
图 4
A2
A1
R8
39
SCR
C9
0.01uf
12
J3
负载接口
ii. 控制导通角的方式:
首先要设计交流电过零检测电路,将检测信号送如单片机,延时输出触发信
号,触发双向可控硅导通,使交流电加在热得快两端。
如图 5 所示是一种可实现的交流电过零检测电路,通过变压器讲 220V 交流
电降压为 6V 后进行过零检测,通过光耦合器输出过零检测信号,避免交流电平
干扰,其安全性可靠性高。正半周期输出低电平,负半周期输出高电平。
R6
240
C2
0.1uF
D2
5V
D1
1N4007
C1
220uF
R7
1K
T1
220V
6V
TRANS1
R10
470
Q1
U2
TIL113
R9
100K
D3
图 5
+5V
R8
1K
GND
过零检测电路的输出信号可送入单片机中断控制口,通过单片机的中断控制
可根据需要,延时输出触发信号,控制每个周期内导通相角的大小。驱动控制部
分实现电路图如图 6 所示,经过单片机处理的触发信号通过光耦合器触发双向可
控硅导通,在下个零点到来时截止。从而可以对交流电的半个周期的有效值周期
性调节。
5
C1
1000pF
R2
10k
R3
240
+5V
R1
470
U1
TIL113
C2
470uF
D1
10V
D3
1N4007
D2
1N4007
Q1
图 6
R4
1M
C3
1uF/600V
Uin=220V
热得快
3.1.3 控制、键盘、显示电路:
这部分实际上是一个单片机最小系统的基本电路,可选用最常用的 51 系列
单片机,足够满足系统的要求。
键盘可以选用常用的 4 4 扫描键盘,不过在这个设计中只需要 3~5 个按键
即满足要求。本着简单实用的原则,选择了 4 个按键,分别用作模式选择、设置
选择、温度加、温度减。
在显示方面,选用了常用的显示容量为 16 2 个字符的液晶显示模块。通过
相应的软件编程,可以实现比较美观和丰富的显示界面。模块连接电路图如图 7
所示。
3
2
SW5
4
1
VCC
+
C5
10U
res et
R13
8.2K
GND
GND
p20
p21
p22
p23
p24
p25
p26
p27
p30
p31
p32
p33
rxdttl
txdttl
int0
int1
p34
p35
xtl1
xtl2
nWR
nRD
p36
p37
nPSEN
ALE
Y1
11.09MHZ
C6
27P
GND
C7
27P
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
29
30
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INTO
P3.3/INT1
P3.4/TO
P3.5/T1
P3.6/WR
P3.7/RD
PSEN
ALE/PROG
C
2
3
VCC
U1
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P1.0/T2
P1.1/T2-EX
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
XTAL1
XTAL2
RST
EA/VPP
AT89C52
p0 0
p0 1
p0 2
p0 3
p0 4
p0 5
p0 6
p0 7
p10
p11
p12
p13
p14
p15
p16
p17
xtl1
xtl2
res et
39
38
37
36
35
34
33
32
1
2
3
4
5
6
7
8
19
18
9
31
图 7
VC C
1
R5
4K7*8
23456789
p0 0
a
bp0 1c
p0 2
p0 4
p0 6
g
f
e
d
p0 5
p0 3
do t
p0 7
D12
1602
VCC
DI SP1 602
he llo w an swe r i s 12 345 6
S
S
V
D
D
V
0
V
S
R
W
R
E
0
d
1
d
2
d
3
d
4
d
5
d
6
d
7
d
A
K
1
2
3
4
5
6
7
8
9
1
1
0
1
p0 3
3
1
2
1
p0 5
4
1
p0 7
5
1
6
1
p0 1
p2 1
p0 0
p2 0
p2 2
p0 2
p0 4
p0 6
GN D
VO
VC C
VC C
R1
10K
R2
10K
R3
10K
R4
10K
p2 4
p2 5
p2 6
p2 7
SW1
1
2
SW2
1
2
SW3
2
1
SW4
4
3
3
4
4
3
GND
GND
1
4
3.1.4 报警电路:
本系统采用 ISD1420 作为温度语音芯片,它有 20s 的录放时间。它的基
本组成有时钟电路、拾音放大、自动增益控制电路、滤波器、差动功放、电源电
路、 PROM
E 2
地址译码电路组成。PLAYE 和 PLAYL 分别于单片机 I/O 口连接。
图 9 为回放电路的时序图。PLAYL 上升沿触发回放,下降沿截止;PLAYE 上升沿
触发回放语音信号,直至回放结束。报警电路图 8 所示。
6
+5
R15
100K
R16
100K
R17
100K
+5
R9
1K
PLAYE
PLAYL
C1
220uf
REC
S1
SW
S2
SW
S3
SW
R10
10K
R11
10K
1
2
LS2
MIC
+5
1
D1
2
1
LED
2
1
2
3
4
5
6
6
7
9
10
11
12
13
14
U4
A0
A1
A2
A3
A4
A5
NC
NC
A6
A7
NC
VSSD
VSSA
SP+
ISD1420
VCCD
REC
XCLK
RECLED
PLAYE
PLAYL
NC
ANA OUT
ANA IN
AGC
MIC REF
MIC
VCCA
SP-
LS1
SPEAKER
C7
0.001UF
REC
PLAYE
PLAYL
R12
28
27
26
25
24
23
22
21
20
19
18
17
16
15
R14
1K
C3
5.1K
0.1uf
R13 470
C6
4.7uf
C5
0.1uf
C2
0.1uf
+5
图 8
+5
C4
0.1uf
图 9
3.2 总体电路设计
本着简单、实用的原则,这里最后选用了一个比较典型的硬件方案:
测温电路选用 DS18B20 集成数组测温电路;
功率控制电路选用 MOC3043 和可控硅的功率控制电路
控制芯片采用常见的 AT89S52
7