单片机水温控制系统设计.docx
《单片机水温控制系统设计.docx》由会员分享,可在线阅读,更多相关《单片机水温控制系统设计.docx(57页珍藏版)》请在冰点文库上搜索。
单片机水温控制系统设计
数理与信息工程学院
课程设计
题目:
水温控制系统
专业:
计算机科学与技术(专升本)
班级:
计本056
姓名:
章一娜学号:
05191129
实验地点:
数理与信息工程学院电子系统设计室
指导老师:
余水宝张胜丁宇
成绩:
(2006.6)
第1节引言……………………………………………………………………1
1.1水温控制系统概述………………………………………………………1
1.2设计任务与要求…………………………………………………………1
1.3系统组成…………………………………………………………………2
第2节系统硬件设计……………………………………………………………2
2.1系统总体设计框图………………………………………………………2
2.2温度采样电路…………………………………………………………3
2.3温度控制电路…………………………………………………………4
2.4主机控制部分…………………………………………………………4
2.5键盘及数字显示部分………………………………………………5
2.6微机控制及图形显示部分…………………………………………6
第3节系统软件设计……………………………………………………………7
3.1系统主程序设计…………………………………………………………7
3.2键盘显示程序……………………………………………………………8
第4节实际测试…………………………………………………………………9
4.1系统测试仪器…………………………………………………………9
4.2测试方法…………………………………………………………………9
4.3测试结果…………………………………………………………………9
第5节结束语……………………………………………………………………11
参考文献………………………………………………………………………12
附录…………………………………………………………………………………13
单片机水温控制系统
数理与信息工程学院05计算机专升本章一娜
指导教师:
余水宝张胜
第1节引言
在现代冶金、石油、化工及电力生产过程中,温度是极为重要而又普遍的热工参数之一,在环境恶劣或温度较高等场合,为了保证生产过程正常安全地进行,提高产品的质量和数量,以及减轻工人的劳动强度、节约能源,要求对加热炉炉温进行测、显示、控制,使之达到工艺标准。
如何更快、更准确的控制所需的温度是温度控制技术的关键。
1.1水温控制系统概述
本文介绍的是一个以51单片机为控制核心的水温控制系统,此系统通过人机交互设定控制温度,采用增量型PID算法,通过脉宽调制控制电炉加热,最终实现水温的恒定。
该系统具有温度超调量小、调节时间短、静态误差小、测量精确、恒定温度与设定温度偏差小等优点,且控制方便、显示直观、性能稳定、可靠性高。
1.2设计任务与要求
系统的基本任务与要求:
(1)系统的基本要求:
一定量水由电炉加热,要求水温可以在一定范围内由人工设顶,并能在环境温度降低时自动实现调整,以保持设定的温度基本不变。
(2)主要性能指标
a.温度设定范围:
温度设定为40℃—90℃最小区分度为1℃;
b.控制精度:
温度控制的静态误差名1℃;
c.用十进制数码显示实际水温;
(3)扩展功能
a.具有通信能力,可接收其他数据设备发朱的命令,或将结果传送到其他数据设备;
b.采用适当的控制方法;当没定温度或环境温度突变时减小系统的调节时间和超调号
c.温度控制的静态误差<0.2℃;
d.能自动显示水温随时间变化的曲线。
1.3系统组成
本系统是一个典型的检测、控制型应用系统,它要求系统完成从水温检测、信号处理、输入、运算到输出控制电炉加热功率以实现水温控制的全过程。
因此,以单片机为核心组成一个专用计算机应用系统,以满足检测、控制应用类型的功能要求。
另外,单片机的使用特为实现水温的智能化控制以及提供完善的人机界面及多机通讯接口提供了可能,而这些功能在常规数字逻辑电路中往往是难以或无法实现的。
根据设计任务基本要求,本系统应具有以下基本功能:
(1)可以进行温度设定,并自动调节水温给定的温度值。
(2)可以调整PID控制参数,满足不同控制对象与控制品质要求。
(3)可以实时显示给定温度与水温实测值。
第2节系统硬件设计
本电路总体设计包括五部分:
主机控制部分(89C52)、前向通道(温度采样电路)、后向通道(温度控制电路)、键盘和数字显示部分、微机控制及图形显示。
2.1系统总体设计框图
本系统以89c52单片机为核心,采用了温度传感器AD590,A/D采样芯片ADC0804,可控硅MOC3041及PID算法实现对温度的精确控制。
系统框图如图2-1
图2-1系统框图
2.2温度采样电路
系统的信号采集电路主要由温度传感器(AD590)、基准电压(7812)及A/D转换电路(ADC0804)三部分组成。
电路图如图2-2-1
图2-2-1温度采样电路原理图
(1)AD590性能描述测量范围在-50℃--+150℃,满刻度范围误差为±0.3℃,当电源电压在5—10V之间,稳定度为1﹪时,误差只有±0.01℃。
AD590为电流型传感器温度每变化1℃其电流变化1uA在35℃和95℃时输出电流分别为308.2uA和368.2uA。
(2)ADC0804性能描述ADC0804为8bit的一路A/D转换器,其输入电压范围在0—5v,转换速度小于100us,转换精度0.39﹪。
满足系统的要求。
(3)电路原理及参数计算温度采样电路的基本原理是采用电流型温度传感器AD590将温度的变化量转换成电流量,再将电流量转换成电压量通过A/D转换器ADC0804将其转换成数值量交由单片机处理。
如图2-2-2
Ub
Uc
A
图2-2-2
图中三端稳压7812作为基准电压,由运放虚短虚断可知运放的反向输入端Ui的电压为零伏。
当输出电压为零伏时(即Uo=0v)列出A点的结点方程如下:
……………..………………………….…
(1)
由于系统控制的水温范围为35℃--95℃,所以当输出电压为零伏时AD590的输出电流为308.2uA,因此为了使Ui的电位为零就必须使电流
等于电流
等于308.2uA,三端稳压7812的输出电压为12v所以由方程
(1)得
……….………….….
(2)
由方程
(2)的取电阻R2=30k,R1=10k的电位器。
由方程
(2)的取电阻R2=30k,R1=10k的电位器。
又由于ADC0804的输入电压范围为0—5v,为了提高精度所以令水温为95℃时ADC0804的输入电压为5v(即Uo=5v)。
此时列出A点的结点方程如下:
………………………………(3)
当水温为95℃时AD590的输出电流为368.2uA。
由方程式(3)得
R4+R5=83.33k因此取R5=81k,R5=5k的电位器。
2.3温度控制电路
此部分电路主要由光电耦合器MOC3041和双向可控硅BTA12组成。
MOC3041光电耦合器的耐压值为400v,它的输出级由过零触发的双向可控硅构成,它控制着主电路双向可控硅的导通和关闭。
100Ω电阻与0.01uF电容组成双向可控硅保护电路。
控制部分电路图如图(2-3)。
图2-3
2.4主机控制部分
此部分是电路的核心部分,系统的控制采用了单片机89C52。
单片机89C52内部有8KB单元的程序存储器及256字节的数据存储器。
因此系统不必扩展外部程序存储器和数据存储器这样大大的减少了系统硬件部分。
2.5键盘及数字显示部分
在设计键盘/显示电路时,我们使用单片机2051做为电路控制的核心,单片机2051具有一个全双工的串行口采用串口,利用此串行口能够方便的实现系统的控制和显示功能。
键盘/显示接口电路如图2-5-1。
图2-5-1键盘/显示部分电路
图2-5-1中单片机2051的P1口接数码管的8只引脚,这样易于对数码管的译码,使数码管能显示设计者所需的各数值、小数点、符号等等。
单片机2051的P3.3、P3.4、P3.5接3-8译码器74L138,译码器的输出端直接接八个数码管的控制端和键盘,键盘扫描和显示器扫描同用端口这样能大大的减少单片机的I/O,减少硬件的花费。
键盘的接法的差别直接影响到硬件和软件的设计,考虑到单片机2051的端口资源有限,所以我们在设计中将传统的4*4的键盘接成8*2的形式(如图2-5-2),键盘的扫描除了和显示共用的8个端外,另外的两个端直接和2051的P3.2和P3.7相连。
图2-5-2键盘接线
如图2-5-2的接法已经完全用完了单片机的15个I/O口,有效的利用了单片机的资源。
2.6微机控制及图形显示部分
为了使系统具有更好的人机交换界面,在系统设计中我们通过VisualBasic语言设计了微机控制界面。
通过系统与微机的通信大大的提高了系统的各方面性能。
其控制界面见图2-6-1
图2-6-2
由于单片机89C52串行口为TTL电平,而PC机为RS232电平,因此系统采用了MAX232电平转换芯片。
由于系统设计了多机通信的功能,即主系统(89C52)和键盘及数字显示部分的通信、主系统(89C52)和PC机的通信,所以在设计电路时要特别注意多机通信的时序及竞争问题,针对此类问题在设计中我们特地的在两根串行通信线上增加了如图2-6-2的电路:
如图2-7由于主机部分发送两个从机都可以接受,因此主机的发送部分(及主机TXD)不存在竞争问题。
而两个从机可能同时向主机发送各类控制信息,因此会存在竞争问题。
其实图2-6-2为一个与门电路,图中R1为提升电阻,D1、D2为开关二极管,当pcTXD(或2051TXD)中有一个为低电平时主机RXD为低电平,同时另一个分机无效,当pcTXD(或2051TXD)中有一个为高电平时主机RXD为高低电平。
图2-6-1微机控制界面
如图2-6-1的微机控制界面,具有温度控制及显示的功能。
图中左半部分为水温的实测温度和给定温度的数值显示及对主系统(89C52部分)的控制界面,右半部分为水温的实测温度的逐点采样及图形显示,通过此界面可以更直观的显示温度的变化,并且通过对图形的保存能方便的打印出水温的变化曲线。
第3节系统的软件设计
本系统的软件系统主要可分为主程序、定时计数中断程序、时间调整或定闹设置程序三大模块。
在程序设计过程中,加强了部分软件抗干扰措施,下面对部分模块作介绍。
3.1主程序流程图
主程序流程图如图4-2-1所示,程序主要完成以下的几部分任务:
(1)初始化设定各参数的初始值,设定各中断及定时器。
(2)接收/发射此部分程序主要完成数据的控制及显示,其主要通过89C52单片机的全双工串行口完成和键盘部分的双向通信。
(3)PC机通信此部分完成与微机控制接口RS232的联接及通信的控制。
(4)数值转换子程序由于主程序中用到了很多的数值转换及数值的运算(如十进制转换成十六进制、双字节与单字节的除法运算等等),为了程序调用的方便,特地将其编写成子程序的形式。
3.2键盘显示程序
图3-2定水温、显示温度、确定、取消、清零、输出,均为各种子程序,1、2、3、4、5、6代表个子程序的应用程序。
系统初始化
显示清零,各记数指针清零
否
是
消除颤抖
设定水温
显示温度
确定单步
清零
取消输出
输出
图3-2程序
第4节系统调试与测试结果分析
4.1系统测试仪器:
双路跟踪稳压稳流电源DH1718E-5
直流稳压电源
数字示波器TektronixTDS1002
伟福E6000/L仿真器
多功能数字表GDM-8145
数字万用表
P4CPU2.4内存261.616RAMHaier机。
0~100℃温度计、调温电热杯、秒表
4.2测试方法
(1)在调温电热杯中放入1升清水,电热杯和控制系统相连,给系统上电,系统进入准备工作状态。
(2)用温度计测量及调节水杯中清水,水稳为35℃,给系统调零。
分别设定温度为40℃、45℃、50℃、60℃、70℃、75℃、80℃、90℃,观察设定温度和实际温度,并记录数据。
填写表4-1。
观察水温变化的动态情况,并记温度稳定的时间。
填写表4-2。
4.3测试结果
(1)给定温度与实测温度的数据对比如表4-1
表4-1误差分析表
设定温度(℃)
实测温度(℃)
绝对误差(℃)
相对误
差(%)
设定温度(℃)
实测温度(℃)
绝对误差(℃)
相对误
差(%)
1
35℃
35℃
0℃
0%
4
60℃
61℃
1℃
1.64%
2
40℃
41℃
1℃
2.43%
5
74℃
75℃
1℃
1.33%
3
45℃
44℃
-1℃
-2.27%
6
81℃
82℃
1℃
1.22%
从表4-1中的数据可知,系统的误差基本稳定在正负1℃基本满足系统的设计要求。
(2)温度稳定和时间的关系
设定温度为50℃,每隔30s记录实测温度如表4-2
表4-2温度稳定速度关系表(设定温度50℃)
测量时间(分)
0.5分
1分
1.5分
2.0分
2.5分
3.5分
4.0分
实测温度℃
35℃
37℃
40℃
43℃
48℃
52℃
55℃
测量时间(分)
4.5分
5.0分
5.5分
6.0分
6.5分
实测温度℃
52℃
49℃
51℃
50℃
51℃
从表4-2中的数据可知,系统运行5分钟时系统基本达到稳定。
由微机逐点采样所的曲线图如图4-1所示
50℃
图4-1温度变化图
结束语
本系统结构简单,温度控制灵活、检测准确。
增量型PID算法使得温度控制灵活,控制精确,存在的缺点是此系统中的PID的算法只实现了I的积分部分,控制不是非常准确,如果把P,D两部分都加进去,浮点运算也包含进去,就更加完美了,但是这样复杂的程序在单片机中无法实现,需要借助计算机的软件功能,如:
C语言等。
参考文献
[1]电子系统设计(第三版)何小艇.浙江大学出版社.2004
[2]8051单片机实践与应用吴金戎.清华大学出版社.2001
[3]模拟电子技术基础简明教程杨素行.高等教育出版社.1997
[4]电路设计与制版PROTEL99高级应用赵晶.人民邮电出版社.2000
[5]VisualBasic串行通信工程开发实例导航许浩.人民邮电出版社.2003
[7]电子线路设计、实验、测试谢自美.华中科技大学出版社.2000
附录
源程序
1人机键盘显示
--------------------------------------------------------------------
FLAGBIT2AH.0
FLAG10BITP3.2
FLAG11BITP3.3
FLAG12BITP3.4
FLAG13BITP3.5
FLAG14BITP3.7
GUAN8EQU20H
GUAN7EQU21H
GUAN6EQU22H
GUAN5EQU23H
GUAN4EQU24H
GUAN3EQU25H
GUAN2EQU26H
GUAN1EQU27H
SHFTNEQU28H
COUNTEQU29H
--------------------------------------------
ORG00H
JMPSTART
ORG0BH
JMPTIMER0
ORG23H
JMPSINT
--------------------------------------------
主程序
--------------------------------------------
START:
MOVSP,#50H
MOVTMOD,#00100001B
MOVIE,#10010010B
MOVIP,#00010000B
MOVSCON,#01010000B
ANLPCON,#01111111B
MOVTL1,#0F4H
MOVTH1,#0F4H
MOVTH0,#HIGH(65536-50000)
MOVTL0,#LOW(65536-50000)
MOVGUAN8,#11H;数码管8从左向右数
MOVGUAN7,#11H;数码管7
MOVGUAN6,#11H;数码管6
MOVGUAN5,#11H;数码管5
MOVGUAN4,#11H;数码管4
MOVGUAN3,#11H;数码管3
MOVGUAN2,#11H;数码管2
MOVGUAN1,#11H;数码管1
MOVSHFTN,#00H
MOVCOUNT,#0
CLRFLAG
MOVR5,#4
MOVR6,#0
MOV2BH,#10
MOV40H,#3
MOV30H,#0FFH
MOV31H,#0FFH
MOV32H,#0FFH
MOVDPTR,#TABLE
SETBTR1
--------------------------------------------
显示扫描按键扫描
--------------------------------------------
BEGAN:
SETBFLAG14
SETBFLAG13
CLRFLAG12
JNBFLAG11,LOOPPF
CALLDISPLAY
JMPBEGAN
LOOPPF:
JBFLAG11,SHAO;容许按键
CALLDISPLAY
SETBFLAG14
SETBFLAG13
CLRFLAG12
JMPLOOPPF
SHAO:
SETBTR0
INCSHFTN
MOVCOUNT,#1
SHAOMIAO:
MOVP1,#0FFH
CLRFLAG14;8
SETBFLAG13
SETBFLAG12
JNBFLAG10,LOOP
JMPNEXT
LOOP:
JBFLAG10,LOOP1;数字7
CALLDISPLAY
CLRFLAG14
SETBFLAG13
SETBFLAG12
JMPLOOP
LOOP1:
MOVR7,#11H
INCSHFTN
MOVR0,#SHFTN
JMPPANDUAN
-------------------------------------------
NEXT:
CLRFLAG14;7
CLRFLAG13
SETBFLAG12
JNBFLAG10,LOOPA
JMPNEXT1
LOOPA:
JBFLAG10,LOOP2;数字3
CALLDISPLAY
CLRFLAG14
CLRFLAG13
SETBFLAG12
JMPLOOPA
LOOP2:
MOVR7,#29H
INCSHFTN
MOVR0,#SHFTN
JMPPANDUAN
--------------------------------------
NEXT1:
SETBFLAG14;6
SETBFLAG13
SETBFLAG12
JNBFLAG10,LOOPB
JNBFLAG11,LOOPPB
JMPNEXT2
LOOPB:
JBFLAG10,LOOP3;数字键2
CALLDISPLAY
SETBFLAG14
SETBFLAG13
SETBFLAG12
JMPLOOPB
LOOPPB:
JBFLAG11,CLEAR;清零键
CALLDISPLAY
SETBFLAG14
SETBFLAG13
SETBFLAG12
JMPLOOPPB
LOOP3:
MOVR7,#7DH
INCSHFTN
MOVR0,#SHFTN
JMPPANDUAN
----------------------------------------------
清零
----------------------------------------------
CLEAR:
MOVGUAN8,#11H
MOVGUAN7,#11H
MOVGUAN6,#11H
MOVGUAN5,#11H
MOVGUAN4,#11H
MOVGUAN3,#11H
MOVGUAN2,#11H
MOVGUAN1,#11H
MOVSHFTN,#0
CLRTR0
MOV30H,#0FFH
MOV31H,#0FFH
MOV32H,#0FFH
JMPBEGAN
-----------------------------------------------
NEXT2:
SETBFLAG14;5
CLRFLAG13
SETBFLAG12
JNBFLAG10,LOOPC
JMPNEXT3
LOOPC:
JBFLAG10,LOOP4;数字键6
CALLDISPLAY
SETBFLAG14
CLRFLAG13
SETBFLAG12
JMPLOOPC
LOOP4:
MOVR7,#23H
INCSHFTN
MOVR0,#SHFTN
JMPPANDUAN
NEXT3:
SETBFLAG14
-------------------------------------------
SETBFLAG13
CLRFLAG12
JNBFLAG10,LOOPD
JNBFLAG11,LOOPPD
JMPNEXT4
LOOPD:
JBFLAG10,LOOP5;数字键1
CALLDISPLAY
SETBFLAG14
SETBFLAG13
CLRFLAG12
JMPLOOPD
LOOPPD:
JBFLAG11,LOOPP5;负键
CALLDISPLAY
SETBFLAG14
SETBFLAG13
CLRFLAG12
JMPLOOPPD
LOOP5:
MOVR7,#1DH
INCSHFTN
MOVR0,#SHFTN
JMPPANDUAN
LOOPP5:
MOVGUAN5,#0FDH
JMPXIANSHI
NEXT4:
CLRFLAG14
-------------------------------