智能水温控制系统的设计
摘要:近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月异更新。本文给出了一个基于 AT89C51 单片机控制的水温智能控制系统。重点阐述了系统的硬件构成,各部分的主要作用及系统软件的设计过程。设计方案的核心部件是80C51,通过硬件及软件的合理设计,使系统能满足控制模型中不同阶段的要求。系统的采集模块采用了AD590温度传感器作为测温元件,而控制模块则通过控制可控硅的导通和截止,从而控制加热电压的通与断,使控制具有灵敏、可靠、抗干扰能力强等优点。水温直接由人工设定,并能在环境温度变化时实现自动调整以保持设定的温度基本不变,实测水温用十进制数码管显示输出。
关键词:智能控制;水温控制;数据采集;温度传感器
A Design Of Water Temperature Brainpower
Controlling System
Abstract :The paper main design a brainpower controlling system of water temperature based on MCS-51. It expounds emphatically the hardware structure of the system, the main function, and the process of the system software design. The core of the design is MCS-51. Through reasonable design of hardware and software to make the system meet the demands of different phases of the control model, the collection module of the system uses AD590 as the element of the temperature measurement, and the control module uses the optical shutter. The heating voltage is controlled by optical shutter, the control has the advantages of sensitive and dependable and strong ability of resisting disturbance. The water temperature may be set at some degree by manpower and auto-adjusted as environment is cool, so the water temperature keeps constantly and is displayed in decade.
Key Words :Brainpower controlling, water temperature controlling, date collection, temperature sensor
目 录
摘 要 ............................................ 错误!未定义书签。
绪 论 ............................................................. 3
一、总体设计 ....................................................... 3
1.1 电路实现的功能及特点 ........................................ 3
1.2 原理方框图及说明 ............................................ 4
1.3总体方案论证................................................. 5
二、硬件设计 ............................................................................................................................... 5
2.1电源模块..................................................... 5
2.2主机控制部分论证............................................. 7
2.3温度采集模块论证............................................. 7
2.4后向温度控制模块论证......................................... 8
2.5键盘显示模块论证............................................. 8
三、软件设计 ............................................................................................. 错误!未定义书签。
3.1 主程序设计 .................................................. 9
3.2 温度设定、传送和显示子程序 ................................ 22
3.3 PWM电压输出子程序......................................... 25
3.4 PID计算子程序.............................................. 27
四、设计总结 ............................................................................................................................. 36
参考文献 ...................................................................................................................................... 38
致 谢 . .......................................................................................................... 错误!未定义书签。 附 录 . .......................................................................................................... 错误!未定义书签。
绪 论
随着社会的发展和科技的进步以及测温仪器在各个领域的应用,智能化是现代温控系统发展的主流方向,特别是今年来,温度控制系统已应用到生活的各个方面,但是温度控制一直是一个未开发的领域,是与人们息息相关的一个问题。针对这种实际情况,设计一个温度控制系统,具有广泛的应用前景和实际意义。
温度是科学技术中最基本的物理量之一。温度常常是表征对象和过渡状态的重要物理量。各行各业对温度的要求越来越高,可见温度的测量和控制是非常重要的。单片机在电子产品中的应用已经越来越广泛,在很多的电子产品中也用到了温度检测和温度控制。
本文主要介绍单片机温度控制系统的设计过程,其中涉及系统结构设计、元器件的选取、程序的调试和系统参数的整定。在系统构建时选取了AT89c51芯片作为该控制系统的核心,温度信号由新型的可编程温度传感器(DS18B20)提供。通过软件实现对水温的控制,使用继电器作执行部件。水温可以在一定范围内由人工设定,并能在环境温度降低时实现自动控制,以保持设定的温度基本不变, 具有较好的快速性与较小的超调。该系统为一实验系统,要求系统有控制能力,实现对主要可变参数的实时监控。使用软件编程既减少了系统设计的工作量,又提高了系统开发的速度,使用软件还可以提高所设计系统的稳定性,避免了因个人设计经验不足而产生过多的系统缺陷。
一、总体设计
1.1 电路实现的功能及特点
一个水温控制系统,对象为一升净水,加热器为1KW 的电炉。设计拟达到的主要要求:1)水温由人工设定,范围:40—90℃,最小区分度为1℃,并能在环境温度变化时实现自动调整,以保持设定的温度基本不变;2)控制精度:温度控制的静态误差小于1℃;3)用十进制数码显示实际水温;该系统的特点是
采用适当的控制方法,当设定温度突变(由40℃提高到 60℃)时,减小系统的调节时间和超调量。 能在环境温度降低时实现自动调整,以保持设定的温度基本不变。
1.2 原理方框图及说明
采用AT89C51单片机为核心,配合温度传感器,信号处理电路,显示电路,输出控制电路组成,软件选用汇编语言编程。单片机可将温度传感器检测到的水温模拟量转换成数字量,显示于数码管上。原理方框图如图1-1所示
图1-1水温控制原理方框图
1.3总体方案论证
依据课题要求, 提出三种方案
方案一 此方案是传统的一位式模拟控制方案,选用模拟电路,用电位器设定给定值,反馈的温度值和设定值比较后,决定加热或不回热。系统受环境影响大,不能实现复杂的控制算法,不能用数码显示,不能用键盘设定。
方案二 此方案是传统的二位式模拟控制方案,其基本思想与方案一相同,但由于采用上下限比较电路,所以控制精提高。这种方法还是模拟控制方式,因此也不能实现复杂的控制算法使控制精度做得较高,而且仍不能用数码显示和键盘设定
方案三 此方案采用89C51单片机系统来实现。单片机软件编程灵活、自由度大,可用软件编程实现各种控制看法和逻辑控制。可实现数码显示和键盘设定等多种功能,系统电路框图如图2-1所示:
图2-1系统电路框图
方案一和方案二是传统的模拟控制方式,而模拟控制系统难以实现复杂控制规律,控制方案的修改也较麻烦。而方案三是采用以89C51为控制核心的单片机控制系统,尤其对温度控制,它可达到模拟控制所达不到的控制效果,并且可实现显示、键盘设定等多种功能,又易于扩展,大大提高了系统的智能化,也使得系统所测结果精度大大提高。故选择方案三。
二、硬件设计
2.1电源模块
在本设计中,用于控制和运算的单片机以及数码管显示器都需要在+5V直流
电压下才能工作,运算放大电路需要在±12V 直流电压下工作。因此,这里需要一个能输出+5V和±12V 的直流电压源。电压源的选择也有两个方案。
方案一:直接用干电池供电。此方法不用焊接电路,简单方便,但是由于它提供的4.5V 的电压,电压不够,提供12V 电压时需要8节干电池连接,而且供电不稳定,带负载能力不强。因此,此方案不可取。
方案二:自制一个直流稳压电源。直流稳压电源一般由电源变压器,整流电路,滤波电路和稳压电路四部分组成。其基本原理框图如图2-2:
图2-2 直流稳压电源基本组成原理及电路图
如图2-2所示直流电源的输入为220V 的电网电压,所需直流电压的数值和电网电压的有效值相差较大,因而需要通过电源变压器降压。再通过整流电路将正弦波电压转换为单一方向的脉动电压。为了减小电压的脉动,需通过低通滤波电路滤波,使输出电压平滑。理想情况下是可以将交流分量全部
滤掉,但是因为受负载影响,加之滤波电路并不能达到理想效果。还需要加入稳压电路,使输出直流电压基本不受电网电压波动和负载电阻变化的影响。
2.2主机控制部分论证
方案1:采用8031芯片,其内部没有程序存储器,需要进行外部扩展,这给电路增加了复杂度。
方案2:本方案的CPU 模块采用2051芯片,其内部有2KB 单元的程序存储器,不需外部扩展程序存储器。但由于系统用到较多的I/O口,因此此芯片资源不够用。
方案3:采用AT89C51单片机,其内部有8KB 单元的程序存储器,不需外部扩展程序存储器,而且它的I/O口也足够本次设计的要求。
比较这3种方案,综合考虑单片机的各部分资源,因此此次设计选用方案3。
2.3温度采集模块论证
方案1:采用热敏电阻,可满足35℃--95℃的测量范围,但热敏电阻精度、重复性和可靠性都比较差,对于检测精度小于1℃的温度信号是不适用的。
方案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 校验码,具有极强的抗干扰纠错能力。但是由于其编写程序过程复杂,价格也较一般传感器昂贵,所以在这里我们并不采用。
方案3:采用温度传感器AD590。:AD590具有体积小、质量轻、线形度好、性能稳定等优点。其测量范围在-50℃-- +150℃,满刻度范围误差为±0.3℃,当电源电压在5—10V 之间,稳定度为1﹪时,误差只有±0.01℃,其各方面特性都满足此系统的设计要求。此外AD590是温度-电流传感器,对于提高系统抗干扰能力有很大的帮助。
经上述比较,方案3明显优于方案1和2选用方案3。
2.4后向温度控制模块论证
方案1:采用电磁式继电器驱动电路控制,它采用较小的电流去控制较大电流,达到一种“自动开关” 在电路中起着自动调节、安全保护、转换电路等作用。电磁式继电器利用在线圈加上一定的电压, 线圈中会流过一定的电流, 产生电磁效应, 衔铁就会在电磁力作用下对触点簧片吸合、释放,从而达到了在电路中的导通、切断的目的. 其优点为抗干扰能力强, 过压过流大, 以及电路的简洁, 简单. 作为工控产品好.
方案2:温控电路要由光电耦合器MOC3041和双向可控硅BTA12组成. 由于可控硅只有导通和关断两种工作状态,所以它具有开关特性。采用脉宽调制输出控制电炉与电源的接通和断开比例,以通断控制调压法控制电炉的输入功率。
但由于采用继电器控制继电器的寿命比不上可控硅, 而且电路过于简单, 不能控制电炉的输入功率. 因此采用方案2.
2.5键盘显示模块论证
方案1:使用液晶显示屏显示水温。液晶显示屏(LED )具有轻薄短小,低耗电量,无辐射危险,平面直角显示以及影像稳定不闪烁等优势,可视面积大,画面效果好,分辨率高,抗干扰能力强等特点。但是由于只需显示温度这样的数字,信息量比较少,且由于液晶是以点阵的模式显示各种符号,需要利用控制芯片创建字符库,编程工作量大,控制器的资源占用比较多,而且其成本也比较高。
方案2:采用可编程控制器8279与传统数码管及地址译码器74LS138组成,可编程/显示器件8279实现对按键的扫描、消除抖动、提供LED 的显示信号,
并
对LED 显示控制。用8279和键盘组成的人机控制平台,能够方便的进行控制单片机的输出。
方案3:采用单片机AT89C51与地址译码器74LS138组成控制和扫描系统,并用74 LS164的译码器接受片机AT89C51通过串行口输出的BCD 串行码经译码输出为BCD 码,这种方案既能很好的控制键盘及显示,又为主单片机大大的减少了程序的复杂性,而且具有体积小,价格便宜的特点。
对比两种方案可知,方案2虽然也能很好的实现电路的要求,但考虑到电路设计的成本和电路整体的性能,我们采用方案3。
三、软件设计
3.1软件设计主要完成以下的几部分任务:
初始化,设定各参数的初始值,设定各中断及定时器。
(1)(2)接收/发射数据此部分程序主要完成数据的控制及显示,其主要通过89C51单片机的全双工串行口完成和键盘部分的双向通信。
(3)温度采集和数值转换子程序,此部分程序主要完成将AD590中传送过来的数据进行各种数值的转换及数值的运算(如十进制转换成十六进制、双字节与单字节的除法运算等等) 。
(4)PID和PWM 子程序,此部分程序主要完成控制电炉加温的作用。 本系统采用的是循环查询方式[4],来显示和控制温度的。
3.1 主程序设计
主程序流程图如图4-1所示
图4-1总流程图
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INT0
ORG 0030H
MAIN: MOV SP,#70H ;
CLR P1.7
MOV R0,#40H
SETB PSW.4
SETB PSW.3
SETB IT0
SETB EA
SETB EX0
MOV TMOD,#20H ;
MOV TH1,#0FDH
MOV TL1,#0FDH
SETB TR1
MOV SCON,#50H
SETB TI
CLR 30H
CLR 01H
SETB P1.7
CLR P1.6
CLR P1.5
MOV DPTR,#0BFFFH
MOV A,#00H
MOV 2EH,#0
MOV 2DH,#0 置初值 波特率9600
MOV 2CH,#0
MOV 2BH,#0
MOV 2AH,#0
MOV 29H,#0
MOV 62H,#0
LOOP: MOV DPTR,#0BFFFH
MOVX @DPTR,A ;启动A/D转换
CLR 00H
WAIT: LCALL XUAN
CHAXUN:JNB P1.3,LOOP1 ;调整
JNB P1.4,LOOP2
JNB 00H,GG ;判断是否再启动
LJMP LOOP
GG: LJMP WAIT
;===========上限温度调整===========
LOOP1: CLR EX0
LCALL DELAY1
JNB P1.3,$
MOV 62H,2EH
MOV 61H,2DH
MOV 60H,2CH
JB P1.2,M2
MOV A,2EH
ADD A,#01
DA A
MOV 2EH,A
CJNE A,#10H,M1
MOV 2EH,#00
M1: JNB P1.2,$
M2: JB P1.1,M4
MOV A,2DH
ADD A,#01H
DA A
MOV 2DH,A
CJNE A,#10H,M3
MOV 2DH,#00
M3: JNB P1.1,$
M4: JB P1.0,M5
MOV A,2CH
ADD A,#01
DA A
MOV 2CH,A
CJNE A,#10H,M5
MOV 2CH,#00
M5: JNB P1.0,$
SETB 30H ;是否显示第一位的标志位 MOV 63H,#11H ;显示“上”
MOV 62H,2EH
MOV 61H,2DH
MOV 60H,2CH
LCALL DELAY
JNB P1.3,TUI ;再次中断时,退出
LJMP LOOP1
;==========下限温度调整===========
LOOP2: CLR EX0
JNB P1.3,$
MOV 62H,2BH
MOV 61H,2AH
JB P1.2,L2
MOV A,2BH
ADD A,#01
DA A
MOV 2BH,A
CJNE A,#10H,L1
MOV 2BH,#00
L1: JNB P1.2,$
L2: JB P1.1,L4
MOV A,2AH
ADD A,#01H
DA A
MOV 2AH,A
CJNE A,#10H,L3
MOV 2AH,#00
L3: JNB P1.1,$
L4: JB P1.0,L5
MOV A,29H
ADD A,#01
DA A
MOV 29H,A
CJNE A,#10H,L5
MOV 29H,#00
L5: JNB P1.0,$
SETB 30H ;
MOV 63H,#0FH ;
MOV 62H,2BH
MOV 61H,2AH 是否显示第一位的标示位 显示“下”
LCALL DELAY
JNB P1.4,TUI ;再次中断时,退出
LJMP LOOP2
TUI: MOV A,2BH
CLR C
CJNE A,2EH,AA ;比较上限是否低于下限 MOV A,2AH
CJNE A,2DH,AA
MOV A,29H
CJNE A,2CH,AA
LJMP XXX ;正常
AA: JNC ERRO ;上限低于下限,跳转 XXX: SETB EX0
MOV A,@R0
LCALL XUAN
LJMP WAIT
ERROR: MOV 63H,#0EH ;显示“ERROR “
MOV 62H,#15H
MOV 61H,#15H
MOV 60H,#0H
SETB 30H
SETB 01H
EEEE: LCALL DELAY
JNB P1.3,XX1 ;是否重新调整
JNB P1.4,XX2
LJMP EEEE
XX1: LJMP LOOP1
XX2: LJMP LOOP2
;==========显示数据转换=========
Xian: MOV A,@R0
MOV B,#100
MUL AB
MOV R3,A
MOV A,B
MOV B,#10
DIV AB
MOV R1,#62H
MOV @R1,A
DEC R1
MOV @R1,B
MOV A,R3
MOV B,#10
MUL AB
DEC R1
MOV @R1,B
CLR 30H
ACALL DELAY
MOV A,2EH
CJNE A,62H,E1
MOV A,2DH
CJNE A,61H,E1
MOV A,2CH
CJNE A,60H,E1
LJMP E2
E1: JC SHANG_BAO
LJMP E2
;======超上限温度======
SHANG_BAO:
SETB P1.7
SETB P1.6
CLR P1.5
LJMP X2
E2: CLR P1.5
CLR P1.6
CLR P1.7
X1: MOV A,2BH
CJNE A,62H,E3
MOV A,2AH
CJNE A,61H,E3
MOV A,29H
CJNE A,60H,E3
LJMP E4
E3: JNC XIA_BAO
LJMP E4
;======低于下限温度======
XIA_BAO:SETB P1.7
SETB P1.5
CLR P1.6
LJMP X2
E4: CLR P1.5
CLR P1.6
CLR P1.7
X2: CLR 30H
ACALL DELAY
;========串口通信=========
MOV R3,#30H ;转ASCII 码
MOV A,62H
ADD A,R3
DA A
MLP3: JBC TI,MLP2 ;当TI 为1时清0
SJMP MLP3
MLP2: MOV SBUF,A
MOV A,61H
ADD A,R3
DA A
MLP5: JBC TI,MLP4
SJMP MLP5
MLP4: MOV SBUF,A
MOV A,#46 ;小数点
MLP8: JBC TI,MLP9
SJMP MLP8
MLP9: MOV SBUF,A
MOV A,60H
ADD A,R3
DA A
MLP7: JBC TI,MLP6
SJMP MLP7
MLP6: MOV SBUF,A
MOV A,#32
MLP10: JBC TI,MLP11
SJMP MLP10
MLP11: MOV SBUF,A
RET
;==========延时加显示=========
D00: ACALL DISPLAY
DJNZ R3,D00
RET
DISPLAY:JNB 30H,DD
MOV 30H,#40
MOV DPTR,#TAB0
MOV A,63H
MOVC A,@A+DPTR
MOV DPTR,#0F8FFH
D0: MOVX @DPTR,A
DJNZ 30H,D0 ;千位
DD: MOV 30H,#40
MOV DPTR,#TAB0
MOV A,62H
MOVC A,@A+DPTR
MOV DPTR,#0F9FFH
D1: MOVX @DPTR,A
DJNZ 30H,D1 ;百位
MOV 30H,#40
MOV DPTR,#TAB0
MOV A,61H
MOVC A,@A+DPTR
JB 01H,TT
ADD A,#80H
TT: MOV DPTR,#0FAFFH
D2: MOVX @DPTR,A
DJNZ 30H,D2 ;十位
MOV DPTR,#TAB0
MOV A,60H
MOVC A,@A+DPTR
MOV DPTR,#0FBFFH
D3: MOVX @DPTR,A
DJNZ 30H,D3 ;个位
RET
TAB0:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,
; 0 1 2 3 4 5 6 7
7FH,6FH,77H,7CH,39H,5EH,79H,71H
; 8 9 A B C D E F
DB 76H,78H,38H,6EH,00H ,77H,
; H K L Y 无 R
DELAY12: MOV R4,00H
MOV R5,00H
X3: DJNZ R4,$
DJNZ R5,X3
RET
;-------中断0服务程序-------
INT0: PUSH A
PUSH PSW
MOV DPTR,#0BFFFH
MOVX A,@DPTR ;读A/D转换结果
MOV 2FH,#0FFH
CLR CY ;程序调整高低位
RLC A
JC N1
CLR 78H
N1: RLC A JC N2 CLR 79H N2: RLC A JC N3 CLR 7AH N3: RLC A JC N4 CLR 7BH N4: RLC A JC N5 CLR 7CH N5: RLC A JC N6 CLR 7DH N6: RLC A JC N7 CLR 7EH N7: RLC A JC N8 CLR 7FH N8: MOV A,2FH MOV @R0,A SETB 00H POP PSW POP A RETI
;=======延时=======
DELAY1: MOV R6,#60 DE1: MOV R7,#248 MOV R7,$ DJNZ R6,DE1 RET END
; 显示区地址分别为63H ,62H ,61H ,60H ; 上限温度地址分别为2EH ,2DH ,2CH ; 下限温度地址分别为2BH ,2AH ,29H ; 用到的位地址有00H ,01H ,30H 3.2 温度设定、传送和显示子程序 编程序,实现温度设定、传送和显示
图4-2 温度设定程序流程图
具体程序编写如下 SW0: MOV R6 #00H JNB P1.6 XH JNB P1.7 QH XH: MOV R7 #07 MOV DPTR #TAB MOV A #00H XH1: MOVC A A+DPTR RL A MOV P3.0 C DJNZ R7 HX1 INC DPTR AJMP SW1 QH: MOV A #00H CJNE R6 #00H QH1 CLR P2.7 CLR P2.6 ADD A #01H MOV R6 A AJMP XH
QH1: CJNE R6 #01H QH2 SETB P2.7 CLR P2.6 ADD A #01H MOV R6 A AJMP XH
QH2: CJNE R6 #02H QH3 CLR P2.7 SETB P2.6
ADD A #01H MOV R6 A AJMP XH
QH3: CJNE R6 #03H SW0 SETB P2.7 SETB P2.6 AJMP SW0
TAB :C0 0F9 0A4 0B0 99 92 80 0F8 80 98
3.3 PWM电压输出子程序
编写程序实现PWM 电压自动可调宽度脉冲波输出。
图4-3 自动可调宽度脉冲波输出流程图
POUT EQU P1.0 OUTBIT EQU 7FH ORG 0000H AJMP MAIN ORG 000BH AJMP CTC_INT ORG 0030H MAIN: MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H
SETB E
SETB ET0
WAIT:SJMP WAIT CTC_INT:PUSH ACC PUSH PSW
CLR TR0 JNB OUTBIT,OUT0 SETB POUT CLR C MOV A,#0FFH MOV A,#0FFH
SETB TR0 MOV TL0,A MOV A,#0FFH SUBB A,#0FH
MOV TH0,A CLR OUTBIT SJMP CTC_OUT OUT0: CLR POUT CLR C MOV A,#0FFH SUBB A,#0FFH MOV TL0,A MOV A,#0FFH SUBB A,#1F SUBB A,0FFH
MOV TH0,A MOV A,TL0
ADD A,#0FFH
MOV TL0,A MOV A,TH0 ADDC A,#0FH MOV TH0,A
SETB OUTBIT
CTC_OUT: SETB TR POP PSW0 POP ACC RETI
3.4 PID计算子程序
PID 调节规律的基本输入输出关系可用微分方程表示为:
u (t ) =K ⎡1t
de (t ) ⎤
P ⎢e (t ) +⎣T I ⎰e (t ) dt +T D ⎥ 0dt ⎦
式中e (t ) 为调节器的输入误差信号,且
e (t ) =r (t ) -C (t ) 4-1)
4-2) ((
其中:r (t ) 为给定值,C (t ) 为被控变量; u (t ) 为调节器的输出控制信号; K P 为比例系数;
T I 为积分时间常数; T D 微分时间常数。
计算机只能处理数字信号,若采样周期为T 第n 次采样的输入误差为e n ,且e n =r (n ) =C (n ) ,输出为u (n ) ,PID 算法用的微分分⎰e (t ) dt 由∑e K T 代替,于是得到
0t
e -e n -1de
由差分n 代替,积
T dt
⎡1
u n =K P ⎢e n +
T I ⎣
写成递推形式为
△u n =u n -u n -1
∑T +T D
i =0
n
e n -e n -1⎤
⎥T ⎦
(4-3)
n -1
⎡⎤T T n
=K ⎢(e n -e n -1) +(∑e i -∑e i ) +D (e n -2e n -1+e n -2) ⎥
T I i =0T i =0⎦P ⎣
⎡⎤T T
=K P ⎢(e n -e n -1) +e n +D (e n -2e n -1+e n -2) ⎥
T I T ⎣⎦
=K P (e n -e n -1) +K P
T T
e n +K P D (e n -2e n -1+e n -2) T I T
=K P (e n -e n -1) +K I e n +K D (e n -2e n -1+e n -2)
=P P +P I +P D (4-4)
其中:P P =K P (e n -e n -1) (4-5)
P I =K P
T
e n =K I e n (4-6) T I
P D =K P
T D
(e n -2e n -1+e n -2) =K D (e n -2e n -1+e n -2) (4-7) T
显然,PID 计算△u n 只需要保留现时刻e n 以及以前的两个偏差量e n -1和e n -2。初始化程序初值e n -1=e n -2=0通过采样并根据参数K P 、K D 、K I 以及e n 、e n -1和
e n -2计算△u n 。
根据输出控制增量△u n ,可求出本次控制输出为
u
u n =u n -1+△n =u n -1+P P +P I +P D (4-8) 由于电阻炉一般是属于一阶对象和滞后的一阶对象,所以式中K P 、K D 、K I
的选择取决于电阻炉的阶跃响应曲线和实际经验,工程上已经积累了不少行之的参数整定方法。本设计采用Ziegler-Nichols 提出的 PID归一调整法,调整参数,主要是为了减少在线整定参数的数目,常常人为假定约束条件[5],以减少独立变量的个数,令:
T =0. 1T U
T I =0. 5T U
T D =0. 12T 5U
式中
T U
称为临界周期[6]。在单纯比例作用下(比例增益由小到大),是系统
K U
产生等幅振荡的比例增益,这时的工作周期为临界周期
T U [7]
,则可以得到
△u n =K P [(e n -e n -1) +0. 2e n +1. 25(e n -2e n -1+e n -2) ]
=K P (e n -e n -1) +0. 2K P e n +1. 25K P (e n -2e n -1+e n -2)
=K P (e n -e n -1) +K I e n +K D (e n -2e n -1+e n -2) (4-9) 式中K I =0.2K P ,K D =1.25K P [8] 从而可以调节的参数只有一个。可设计一个调整子程序,通过键盘输入改变K P 值,改变运行参数,使系统满足要求。 下面对PID 运算加以说明:
1、所有的数都变成定点纯小数进行处理。
2、算式中的各项有正有负,以最高位作为符号位,最高位为0表示为正数,为1表示负数。正负数都是补码表示,最后的计算以原码输出。
3、双精度运算,为了保证运算精度,把单字节8位输入采样值C n 和给定值r n 都变成双字节16位进行计算,最后将运算结果取成高8位有效值输出。
4、输出控制量u n 的限幅处理。为了便于实现对晶闸管的通断处理,PID 的输出现在在0~250之间。大于250或小于0的控制量u n 都是没有意义的,因在算法上对u n 进行限幅,即 5、
⎧u min ⎪
u n =⎨u n
⎪u ⎩max
u n ≤u min
u min
[8][9]
PID 的计算公式采用位置式算法,计算公式为
u n =u n -1+K P (e n -e n -1) +K I e n +K D (e n -2e n -1+e n -2)
=u n -1+P P +P I +P D (4-11)
图4-4 PID计算程序的流程图
参照流程图4-4编写程序,程序如下:
MOV
R5,
31H
MOV
MOV
MOV R4, 32H R3, 2AH R2, #00H
CPL1
DSUM
39H , R7 LACALL LCALL MOV
MOV 3AH ,
MOV R5,
MOV R4,
MOV R0,
LCALL MULT1
MOV R5,
MOV R4,
MOV R3,
MOV R2,
LCALL DSUM
MOV R5,
MOV R4,
MOV R0,
LCALL MULT1
MOV R5,
MOV R4,
MOV R3,
MOV R2,
LCALL DSUM
MOV 4AH ,
MOV 4BH
MOV R5,
MOV R4, R6 35H 36H #4AH 39H 3AH 3BH 3CH 33H 34H #46H 49H 48H 4DH 4CH R7 R6 39H 3AH
MOV R3,
MOV R2,
LCALL DSUM
MOV A ,
MOV R5,
MOV A ,
MOV R4,
MOV R3,
MOV R2,
LCALL DSUM
MOV A ,
MOV R5,
MOV A ,
MOV R4,
MOV R3,
MOV R2,
LCALL DSUM
MOV R5,
MOV R4,
MOV R0,
LCALL MULT1
MOV R5,
MOV R4,
MOV R3,
MOV R2,
LCALL DSUM
MOV A ,
MOV R3,
MOV A , 3DH 3EH R7 A R6 A 3BH 3CH R7 A R6 A 3BH 3CH 37H 38H #46H 49H 48H 4AH 4BH R7 A R6
MOV R2, A
MOV R5, 2FH
MOV R4, 30H
LCALL DSUM
MOV 2FH , R7
MOV 30H , R6
MOV 3DH , 3BH
MOV 3EH , 3CH
MOV 3BH , 39H
MOV 3CH , 3AH
MOV A , 2FH
JNB ACC.7 CONt1
MOV 45H, #00H
RET
CONt1: MOV A, 30H
RLC A
MOV A, 2FH
RLC A
MOV R2, A
SUBB A, #OFAH
JNC CONt2
MOV 45H, R2
RET
CONt2: MOV 45H, #0FAH
RET
负数双字节-(R3R2)求补,结果仍存放于R3R2中,其子程序如下:
CPL1: MOV A, R2
CPL A
ADD A , #01H
MOV R2, A
MOV A , R3
CPL A
ADDC A , #00H
MOV R3, A
RET
双字节加法(R5R4)+(R3R2)→(R7R6)。其子程序如下:
DSUM : MOV A , R4
ADD A , R2
MOV R6, A
MOV A , R5
ADDC A , R3
MOV R7, A
RET
双字节无符号乘法子程序:
入口(R7R6)=被乘数;
(R5R4)=乘数。
出口(R0)=乘积的4字节地址指针。
工作寄存器 R3,R2。
竖式乘法过程表示为:
R7 R6
⨯) R5 R4
H64 L64←R6⨯R4
H74 L74←R7⨯R4
H74 L74←R5⨯R6
+) H75 L75
(R0+3) (R0+2) (R0+1) RO←乘积存储单元
MULT : MOV A , R6
MOV
MUL
MOV
MOV
MOV
MOV
MUL
ADD
MOV
MOV
ADDC
MOV
MOV
MOV
MUL
ADD A,
INC
MOV
CLR
MOV A,
ADDC A,
MOV R2,
JNC LAST
SETB F0
LAST: MOV A,
MOV
MUL AB
ADD A,
INC RO B , R4 AB @RO, A R3, B A, R4 B , R7 AB A, R3 R3, A A, B A, #00H R2, A A, R6 B, R5 AB R3 R0 @RO, A F0 R2 B A R7 B, R5 R2
MOV @RO, A
MOV A, B
ADDC A, #00H
INC R0
MOV @R0, A
RET
双字节带符号数乘法子程序:
带符号数用补码表示, 最高位1表示负数, 为0表示正数.
入口(R7R6)=被乘数;
(R5R4)=乘数;
SIGN1标号位地址5CH ;
SIGN2标号位地址5DH 。
出口(R0)=乘积的4字节地址指针
四、设计总结
该系统主要根据目前节省能源的发展趋势和国内实际的应用特点和要求,采用了自动化的结构形式,实现对水温的自动检测和控制。
系统以单片机AT89C51为核心部件,单片机系统完成对水温信号的采集、处理、显示等功能; 用Protel 软件绘制电路原理图和PCB 电路印刷板图,可以在电路板厂制作控制主板; 利用MCS-51汇编语言编制, 运行程序该系统的主要特是:
1) 适用性强,用户只需对界面参数进行设置并启动系统正常运行便可满足不同用户水温的要求,实现对水温的实时监控。避免了电力力资源的浪费,节省了能源。
2) 将单片机以及温度传感器引入对水温的分析和处理中,单片机控制决策无需建立被控对象的数学模型,系统的鲁棒性强,适合对非线性、时变、滞后系统的控制,对水温控制系统采用单片机控制非常适合。
3) 系统成本低廉,操作非常简单,可扩展性强,只要稍加改变,即可增加其他使用功能。 本系统对现代化的发展具有十分重要的意义:
首先,节省了能源,特别是最近几年,我国东部沿海地区电力资源缺口十分巨大,可以缓解部分电力资源压力。
其次,由于我过大部分电力资源是火力发电,因而从一定程度上节省了自然资源,以及保护了环境。
宝鸡文理学院2014毕业论文
参考文献
[1] 华成英 童诗白 >高等教育出版社,2006.1
[2] >北京理工大学出版社:2004.8
[4] 徐建军 >人民邮电出社,2002.6
[6] 陈可中 >清华大学出版社,2003.1
[7] 陶永华 >上海机械工业出版社,1998
[8] 张福学 >北京电子工业出版社,1991
[9] 何立民 >北京航空航天大学出版社,1991
[10] 吴金 >清华大学出版社,2002.9
[11] 高光天 >北京科学出版让,2001
[12] 蔡惟铮 >哈尔滨工业大学出版社,1998
[13] 赵茂泰 >北京电子工业出版社,2004
[14] 丁元杰 >上海机械工业出版社,1999
[15] 李广第 《单片机原理及应用》北京航天航空大学出版社 2008.2
[16] 潘新民 《微型计算机控制技术>> 电子工业出版社 2008.5
[17] 梅丽凤 《C 语言程序设计案例教程》 西安电子科技大学出版社 2004.6
[18] 谭浩强 《C 程序设计》 清华大学出版社 2000.1
[19] 江思敏 陈明>(第二版). 清华大学出版社.
[20]何小艇.>(第三版)[M].浙江:浙江大学出版社,2004:
[24] 吴金戎.>.北京:清华大学出版社,2001:126-134
[25] 赵晶.>.人民邮电出版社.2000:201-218
[26] 胡汉才.>. 北京:清华大学出版社,1996:106-142
宝鸡文理学院2014毕业论文