资源描述
计算机控制技术课程设计说明书
储水罐液位控制系统设计
摘要
计算机控制系统是自动控制技术和计算机技术相结合的产物,利用计算机(通常称为工业控制计算机,简称工控机)来实现生产过程自动控制的系统,它由控制计算机本体(包括硬件、软件和网络结构)和受控对象两大部分组成。随着计算机技术和现代控制理论的快速发展,计算机控制技术诞生并迅速蓬勃发展起来,其应用遍及国防、航空航天、工业、农业、医学等多种领域。本文将利用
计算机控制技术控制储水罐液位,具体本文中储水槽液位控制系统设计基于MCS51单片机系统而设计,利用单片机强大的功能和方便通信接口,实现水位检测、电机速度控制,采用PI调节误差,进一步对液位控制系统优化,从而实现怼储水罐液位的计算计控制。
关键字 计算机控制;储水罐;传递函数
22
徐州工程学院课程设计说明书
目录
1 课程设计说明 3
1.1 题目说明 3
1.2设计要求 4
2 控制系统结构框图与工作原理 4
2.1系统结构框图 4
2.2 系统工作原理 5
3 控制系统数学模型与总体控制方案 5
3.1储水槽数学模型建立 5
3.2电机的数学模型建立 6
3.3控制系统的传递函数建立 8
4 硬件选择 9
4.1液位传感器的选型 10
4.1.1液位传感器简介 10
4.1.2液位传感器工作原理 10
4.1.3液位传感器选型 10
4.2微控制器的选择 11
4.2.1 80C51电源 11
4.2.2 80C51时钟 12
4.2.3 80C51 控制线 12
4.2.4 80C51 I/O接口介绍 12
4.3 A/D转换器选择 13
5 硬件电路设计 15
5.1 80C51单片机外围电路设计 15
5.1.1 时钟电路 15
5.1.2 复位电路 15
5.1.3数码管显示电路 15
5.1.4 A/D转换电路 16
5.2水泵驱动电路设计 16
5.2.1 电机驱动电路 16
6 软件设计 18
6.1软件设计概要 18
6.1.1软件设计模块: 18
6.1.2模拟PID控制原理 18
6.2软件设计流程图 19
结论 20
参考文献 21
附录: 22
1 课程设计说明
1.1 题目说明
被控系统为一储水罐。系统如图1-1所示,储水罐内为清水,下部设有出水管,流量记为Q2。储水罐通过水泵将清水池内的清水补入罐内,流量记为Q1,清水池内的水位可视为固定值2米(即在储水罐补水过程中液位不变化)。已知储水罐的截面积A=1平方米,高度H=2米,要求控制目标液位高度为1米。
图1-1,储水罐系统示意图
1.2设计要求
1要求控制系统调节时间≤2分钟,超调量≤10%。
2 设计人机接口实时显示。
2 控制系统结构框图与工作原理
2.1系统结构框图
图2-1,系统结构框图
图2-1中的控制器是PID控制器,其功能由计算机实现。计算机有强大的运算,逻辑判断和记忆功能。当给初始量和反馈量后,依照偏差值进行PID控制算法的运算,计算结果经AD转换器转换为模拟信号传送给执行机构完成对系统的控制。
2.2 系统工作原理
如图1-1所示打开电源水泵工作,将水抽入储水罐中,进水流量为, 水槽液位高度上升,水槽底部有出水槽,水以流量 的速度流出。水槽中有一个液位控制器测量液位懂的高度,液位传感器将液位高度经AD转换器传至计算机与给定液位高度比较得到偏差,经控制算法计算出相应的控制值,控制信号经DA转换器转换为模拟信号控制水泵抽水,从而达到给定的高度。
3 控制系统数学模型与总体控制方案
3.1储水槽数学模型建立
储水罐流入量与流出量之差可用式3-1表示。
……………(3.1)
其中表示输入的水流量
表示输出的水流量
表示储水罐中水的体积
表示储水罐横截面积
表示储水罐液位的增量
输入水量也可表示成
………(3.2),其中表示输入流量的系数
输出水量由于和出水孔的面积,页面高度有关,可表示成
……(3.3),其中表示出水口流量系数。
将3.2式,3.3式代入3.1式得
移项变形,即
令,,
则再变形成:
传递函数:
这是一个典型一阶环节,由条件可知,取,
得传递函数:
3.2电机的数学模型建立
图 3-1是电枢控制直流电动机原理图
图3-1,电枢控制直流电动机原理图
(1)电网络平衡方程
式中表示电动机内阻;表示电枢绕组的感应电动势 ;表示电枢电,表示电动机电感。
(2) 电动势平衡方程
式中为电动机常数,由电动机的结构参数决定。
(3) 机械平衡方程
式中为电动机转子的转动惯量 ; 为电动机的电磁转矩;为折合阻力矩 。
(4) 转矩平衡方程
式中为电磁力矩常数 , 由电动机的结构参数确定。
将上述4个方程联立 , 因为空载下的阻力矩很小 , 略去 , 并消去中间变量、 、, 得到关于输入输出的微分方程式
这是一个二阶线性微分方程 , 因为电枢绕组的电感一般很小 , 略去, 则可以得到简化的一阶线性微分方程 :
令初始条件为零 , 两边拉氏变换 , 求得传递函数
由于抽水高度不高,查阅相关资料选择WKA1300型水泵,参数如表3-1:
表3-1,水泵参数表
电压
电流
流量
最大抽水高度
处于最大抽水高度时泵的抽水速率
12V
<400mA
1.3L/min
3m
>500(L/min)
24V
<240mA
1.3L/min
3m
>500(L/min)
根据设计要求控制系统调节时间≤2分钟,水泵的选型要考虑调节时间的限制。由于储水槽到达液位高度时水槽中水的容量为1000L.得出该电机的传递函数为
由上式我们可以得到此液位系统的框图如图3-1
图3-1,储水罐液位系统框图
3.3控制系统的传递函数建立
由图3-1,得系统闭环传递函数
控制系统性能指标
超调量:
调节时间:
上升时间:
峰值时间:
按照要求控制系统调节时间≤2分钟,超调量≤10%。
经计算,,符合要求。
4 硬件选择
4.1液位传感器的选型
4.1.1液位传感器简介
液位传感器是一种测量液位的压力传感器.静压投入式液位变送器(液位计)是基于所测液体静压与该液体的高度成比例的原理,采用国外先进的隔离型扩散硅敏感原件或陶瓷电容压力敏感传感器,将静压转换为电信号,再经过温度补偿和线性修正,转化成标准电信号(一般为4~20mA/1~5VDC)。静压投入式液位变送器精巧的结构,简单的调校和灵活的安装方式为用户轻松地使用提供了方便。4~20mA、 0~5v、 0~10mA等标准信号输出方式由用户根据需要任选。
4.1.2液位传感器工作原理
用静压测量原理:当液位变送器投入到被测液体中某一深度时,传感器迎液面受到的压力公式为:
………………………………式(4-1)
式中:
:变送器迎液面所受压力;
:被测液体密度 ;
:当地重力加速度 ;
:液面上大气压 ;
:变送器投入液体的深度;
通过导气不锈钢将液体的压力引入到传感器的正压腔,再将液面上的大气压 与传感器的负压腔连,以抵消传感器背面的使传感器测得压力为:,显然 , 通过测取压力,可以得到液位深度。
4.1.3液位传感器选型
根据设计要求液位目标高度为1m,故传感器量程不能选择太大,精度要高。
查阅相关资料选择URS-100投入式液位变送器
结构原理:URS-100系列静压式液位计变送器是通过测量液体高度而产生的静压力来测定液体液位的。当把液位变送器的传感器部分投入到液体介质中时,传感器把液体的静压转换为电压信号,该电压信号经放大后转化成4~20mADC标准电流信号输出。
主要技术参数
1,测量范围:0~1m;0~100m
2,输出信号:4~20mADC二线制
3,精确度:0.2级,可提供0.1级
4,介质温度:-40~100℃
5,环境温度:-30~80℃
6,环境温度影响:在温度外偿范围内,零位变化量≤±0.3%/10℃
7,量程变化量: ≤±0.2%/10℃
8,电源电压:24VDC,按负载特性,电源电压可达12~40VDC
4.2微控制器的选择
此设计采用ATMEL80C51作为控制芯片。它是在MCS-48系列的基础上发展的高性能的8位单片机。所出的系列产品有8051、8031、8751。其代表就是8051。其他系列的单片机都以它为核心,所以本设计采用的核心芯片是8051单片机。CPU是它的核心设备,从功能上看,CPU包括两个部分:运算器和控制器,它执行对输入信号的分析和处理。每片80C51包括:一个8位的微型处理器CPU;128B的片内数据存储器RAM;4KB片内程序存储器ROM;四个8位并行的I/O接口P0-P3,每个接口既可以输入,也可以输出;两个定时器/记数器;五个中断源的中断控制系统;一个全双工UART的串行I/O口;片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接。最高允许振荡频率是12MHZ。以上各个部分通过内部总线相连接。
整个系统电控部分以ATMEL公司的8051为核心芯片,控制信号采集、处理、输出三个过程。这种芯片内置4KROM,因为系统要求控制线较多,如果采用8031外置EPROM程序控制结构,则造成控制线不够,而8051却可以利用P0、P2口作控制总线,大大简化了硬件结构,并可以直接控制LED数据显示,方便现场调试和维护,使整个系统的通用性和智能化得到了很大的提高。
现在介绍下在此设计中用到的引脚,引脚图如图4-2所示。
图4-2,80C51引脚图
单片机的40个引脚大致可分为4类:电源、时钟、控制和I/O引脚。
4.2.1 80C51电源
VCC - 芯片电源,接+5V;
VSS - 接地端;
4.2.2 80C51时钟
XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。
4.2.3 80C51 控制线
ALE/PROG:地址锁存允许/片内EPROM编程脉冲
ALE功能:用来锁存P0口送出的低8位地址
PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
PSEN:外ROM读选通信号。
RST/VPD:复位/备用电源。
RST(Reset)功能:复位信号输入端。
VPD功能:在Vcc掉电情况下,接备用电源。
EA/Vpp:内外ROM选择/片内EPROM编程电源。
EA功能:内外ROM选择端。
Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。
4.2.4 80C51 I/O接口介绍
P0口(39脚~32脚):P0.0~P0.7统称为P0口。当不接外部存储器与不扩展I/O接口时,它可作为准双向8位输入/输出接口。当接有外部程序存储器或扩展I/O口时,P0口为地址/数据分时复用口。它分时提供8位双向数据总线。
P1口(1脚~8脚):P1.0~P1.7统称为P1口,可作为准双向I/O接口使用。对于MCS—52子系列单片机,P1.0和P1.1还有第2功能:P1.0口用作定时器/计数器2的计数脉冲输入端T2;P1.1用作定时器/计数器2的外部控制端T2EX。对于EPROM编程和进行程序校验时,P0口接收输入的低8位地址。
P2口(21脚~28脚):P2.0~P2.7统称为P2口,一般可作为准双向I/O接口。当接有外部程序存储器或扩展I/O接口且寻址范围超过256个字节时,P2口用于高8位地址总线送出高8位地址。对于EPROM编程和进行程序校验时,P2口接收输入的8位地址。
P3口(10脚~17脚):P3.0~P3.7统称为P3口。它为双功能口,可以作为一般的准双向I/O接口,也可以将每1位用于第2功能,而且P3口的每一条引脚均可独立定义为第1功能的输入输出或第2功能。
4.3 A/D转换器选择
本设计采用ADC0809作为A/D转换器,ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。它是逐次逼近式A/D转换器,可以和单片机直接接口。
ADC0809转换器引脚图如图4-3所示
图4-3,ADC0809转换器引脚图
ADC0809转换器引脚介绍:
1,IN0~IN7:8路模拟量输入端。
2,OUT1~OUT8:8位数字量输出端。
3,AL::地址锁存允许信号,输入,高电平有效。
4,START: A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0808复位,下降沿启动A/D转换)。
5,EOC:A/D转换结束信号,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
6,OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
7,CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。
8,VREF(+)和VREF(-):参考电压输入端。
9,Vcc:主电源输入端5V。
10,GND:接地。
11,ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路,通道选择表如表4-3所示。
12,注意事项:输出端out8为最低位out1为最高位,与单片机连接是要注意。
表4-3 通道选择
ADDC
ADDB
ADDA
选择的通道
0
0
0
IN0
0
0
1
IN1
0
1
0
IN2
0
1
1
IN3
1
0
0
IN4
1
0
1
IN5
1
1
0
IN6
1
1
1
IN7
5 硬件电路设计
5.1 80C51单片机外围电路设计
5.1.1 时钟电路
80C51用内部振荡电路,这时需要XTAL1、XTAL2来外接石英晶振和微调电容,如图4-1所示。外接石英晶振为12MHZ,两个电容为30PF为起振电容。
图5-1 80C51外部时钟电路
5.1.2 复位电路
80C51单片机有一个复位引脚RST,高电平有效。在时钟电路工作以后,当外部电路使得RST端出现两个机器周期(24个时钟周期)以上的高电平,系统内部复位。复位方式有两种:上电复位和按钮复位。本设计选用按钮复位,因为遇到特殊情况系统出错,可以及时复位保证系统损失减到最低。复位电路如图5-2所示。
图5-2 80C51按钮复位电路
5.1.3数码管显示电路
数码管显示电路用来显示液位高度,本控制器的电路图如图5-3所示:
图5-3,数码管显示电路
5.1.4 A/D转换电路
A/D转换电路主要是用来采集传感器的信号,将传感器采集的液位高度模拟信号转换为数字信号传送给单片机做相关处理。本控制器采用ADC0809芯片,其连接电路如图5-4:
图5-4,A/D转换电路
根据ADC0809的数据手册连接电路,引脚作为模拟信号的输入端,将转换后的数字信号输入单片机的P2口对数据做相关处理。
5.2水泵驱动电路设计
5.2.1 电机驱动电路
本课程设计所选水泵为WKA1300型微型水泵,此水泵为直流控制,相当于一个直流电机;用单片机控制直流电路通常是通过I/O口输出PWM波来控制直流电机的转速,正转,反转。目前流行的直流电机驱动电路是H型全桥式电路,这种驱动电路可以 很方便实现直流电机的四象限运行,分别对应正转、正转制动、反转、反转制动。它的基本原理图如图5-5所示。
全桥式驱动电路的4只开关管都工 作在斩波状态,S1、S2为一组,S3、S4 为另一组,两组的状态互补,一组导通则 另一组必须关断。当S1、S2导通时,S3、S4关断,电机两端加正向电压,可以实现电机的正转或反转制动;当S3、S4导 通时,S1、S2关断,电机两端为反向电压,电机反转或正转制动。
图5-5,原理图
由于H桥搭建比较繁琐,有集成了H桥的驱动芯片用来控制电机。本课程设计采用的是L293D芯片采用16引脚DIP封装,其内部集成了双极型H-桥电路,所有的开量都做成n型。这种双极型脉冲调宽方式具有很多优点,如电流连续;电机可四角限运行;电机停止时有微振电流,起到“动力润滑”作用,消除正反向时的静摩擦死区:低速平稳性好等。L293D通过内部逻辑生成使能信号。H-桥电路的输入量可以用来设置马达转动方向,使能信号可以用于脉宽调整(PWM)。另外,L293D将2个H-桥电路集成到1片芯片上,这就意味着用1片芯片可以同时控制2个电机。每1个电机需要3个控制信号EN12、IN1、IN2,其中EN12是使能信号,IN1、IN2为电机转动方向控制信号,IN1、IN2分别为1,0时,电机正转,反之,电机反转。选用一路PWM连接EN12引脚,通过调整PWM的占空比可以调整电机的转速。选择一路I/O口,经反向器74HC14分别接IN1和IN2引脚,控制电机的正反转。驱动电路如图5-6:
图5-6,驱动电路
6 软件设计
6.1软件设计概要
6.1.1软件设计模块:
1,A/D数据采集模块;
2,数码管液位高度显示模块;
3,PI算法模块
6.1.2模拟PID控制原理
模拟PID控制系统原理图如图6-1所示。
图6-1,PID控制系统原理图
比例环节的作用是对偏差瞬间做出快速反应。偏差一旦产生,控制器立即产生控制作用,使控制量向减少偏差的方向变化。控制作用的强弱取决于比例系数,越大,控制越强,但过大的KP会导致系统震荡,破坏系统的稳定性。
积分环节的作用是把偏差的积累作为输出。在控制过程中,只要有偏差存在,积分环节的输出就会不断增大。直到偏差,输出的才可能维持在某一常量,使系统在给定值不变的条件下趋于稳态。积分环节的调节作用虽然会消除静态误差,但也会降低系统的响应速度,增加系统的超调量。积分常数越大,积分的积累作用越弱。增大积分常数会减慢静态误差的消除过程,但可以减少超调量,提高系统的稳定性。所以,必须根据实际控制的具体要求来确定。
微分环节的作用是阻止偏差的变化。它是根据偏差的变化趋势(变化速度)进行控制。偏差变化得越快,微分控制器的输出越大,并能在偏差值变大之前进行修正。微分作用的引入,将有助于减小超调量,克服震荡,使系统趋于稳定。但微分的作用对输入信号的噪声很敏感,对那些噪声大的系统一般不用微分,或在微分起作用之前先对输入信号进行滤波。适当地选择微分常数TD ,可以使微分的作用达到最优。
本课程设计采用比例-积分控制,即PI控制,通过一定的算法,来改变PWM波形,控制电机的转速,以达到对储水罐液位高度的控制。
6.2软件设计流程图
根据题目需要,绘制软件设计流程图如图6-2所示
图6-2 软件设计流程图
结论
本储水槽液位控制系统设计基于MCS51单片机系统而设计的,利用单片机强大的功能和方便通信接口,实现水位检测、电机速度控制,采用PI调节误差,进一步对液位控制系统优化。考察了对《自动控制原理》,《计算机控制技术》,《单片机原理及应用》这几门课程的应用。同时硬件电路与软件程序的设计是对液位控制系统的应用支撑。
参考文献
[1] D.Ibrahim. Microcontroller Based Applied Digital Control [M] .John Wiley & Sons. 2006.
[2] 戴文进 等.电机与拖动[M] .清华大学出版社, 2008.
[3] 陈伯时.电力拖动自动控制系统[M] .机械工业出版社, 2011.
[4] 顾德英 等.计算机控制技术[M] .北京邮电大学出版社, 2007.
[5] 谢维成 等.单片机原理与应用及C51程序设计[M] .清华大学出版社, 2006.
附录:
程序
#include<reg51.h>
#define unit unsigned int
#define unchar unsigned char
unit shu,num,i,j,a,EN,zkb,k,t;
unchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
sbit dula=P2^6;
sbit wela=P2^7;
sbit adwr=P3^6; /**A/D的WR端口**/
sbit adrd=P3^7; /**A/D的RD端口**/
sbit cs=P3^2; /**A/D的片选信号端口**/
sbit EN=P2^2;
void pi() ;
void delay(unit z) /**延时**/
{
unit x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void display(unit shu) /**数码管显示**/
{
i=shu%10;
j=shu/10;
wela=1;
P0=0xfd;
wela=0;
dula=1;
P0=table[i];
delay(1);
wela=1;
P0=0xfc;
wela=0;
dula=table[j];
}
void main()
{
EA=1;
TMOD=0x01;ET0=1;TR0=1;
TH0=(65536-100)/256; /**每10u产生中断**/
TL0=(65536-100)%256;
zkb=f(YK); /**占空比与PI调节输出参数关系
**/
cs=1;
delay(50000); /**每隔一定时间读一次AD**/
cs=0;
float EK,EK1,EK2,YK; /**EK:设定值与实测值之差
EK1:上次EK的值
EK2:EK-EK1的差
YK输出的数据**/
while(1)
{
adwr=1;
_nop_(); /**延时一个机器周期**/
adwr=0;_nop_();
adwr=1;
for(a=10;a>0;a--)
{
display(shu);
}
P1=0xff; /**读取P1口之前先全写1**/
adrd=1; /**选通AD**/
_nop_();
adrd=0; /**AD时能**/
_nop_();
shu=P1; /**AD数据读取赋给P1口**/
adrd=1;
}
pi();
}
void timer0() interrupt 1 /**用定时器中断设置PWM波**/
{
TH0=(65536-100)/256;
TL0=(65536-100)%256;
if(++t==zkb*1000) /**设置低电平周期**/
{
EN=0;
t=0;
}
else
{
EN=1
}
}
void pi() /**PI模块**/
{
EK1=EK;
EK=shu-h; /**h为目标液位高度**/
EK2=EK-EK1;
YK=KP*EK+KI*EK2; /**PI调节公式,KP比例系数,KI积分系数**/
}
展开阅读全文