1 设计任务与要求
工业生产中过程控制是流量测量与仪表应用的一大领域,流量与温度、压力和物位一起统称为过程控制中的四大参数,人们通过这些参数对生产过程进行监视与控制。对流体流量进行正确测量和调节是保证生产过程安全经济运行、提高产品质量、降低物质消耗、提高经济效益、实现科学管理的基础。流量的检测和控制在化工、能源电力、冶金、石油等领域应用广泛。
本设计的主要内容是对流量进行检测,主要由流量传感器采集流量信息,然后经过AD转换器将连续的模拟信号离散化后传给单片机,单片机在软件系统的控制下,根据预先的设置和预期的控制要求,通过步进电机来精确控制阀门的开度,实现对流量的精确控制。其中,硬件电路的搭接是本设计的重点,控制系统软件的设计是本课题的核心。硬件电路部分,采用AT89C51单片机,外扩EPROM存储器,构成单片机控制系统的主体部分。通过电磁流量传感器,AD转换器进行输入,通过控制步进电机带动阀门来控制输出。一些其他的功能,如设定值输入,数码管显示则通过扩展I/O接口芯片8155来完成相应的功能。系统软件设计部分,分别对拨码盘设定值输入,步进电机控制,AD转换控制,数码管显示等程序进行了设计,并且设计了主程序和流量控制PID程序。
2 系统设计方案
2.1 系统设计思路
系统的总体设计思想是流量传感器采集到流量信息,通过变换器,转化为电信号,AD转换器将模拟电信号转化为离散信号,传给单片机。单片机软件系统根据事先的设定值对采集的信息进行处理,输出离散的控制信号。DA转换器将离散的控制信号转化为模拟电量。通过模拟电量来控制阀门的动作,从而调节流量,实现流量的精确控制。
2.2 系统设计原理
系统的工作原理是流量传感器采集到流量信息,通过变换器,转化为电信号,AD转换器将模拟电信号转化为离散信号,传给单片机。单片机软件系统根据事先的设定值对采集的信息进行处理,输出离散的控制信号。DA转换器将离散的控制信号转化为模拟电量。通过模拟电量来控制阀门的动作,从而调节流量,实现流量的精确控制。
系统原理框图如下:
图2 系统原理框图
其中,电磁流量计作为流量传感器,采集流量信息,经放大器放大后送到AD转换器。AD转换器将连续的模拟量转化为单片机能接受的离散的数字量。单片机收到流量信号后,在控制系统软件的作用下,发出相应的执行命令给执行机构——步进电机。步进电机带动阀门动作,对流体流量进行控制
2.3 系统实现的功能
该控制系统的基本功能有如下几点:
(1).流量显示功能
a 复位显示功能:
b 平均流量显示内容折算成立方米
c 累积流量显示内容为立方米
d 累积流量数值的保护不受停电的影响
e 显示精度均保留到小数点后两位
(2).对水泵的工作状态进行监视
a 水泵工作正常,则显示平均流量和累积流量的值
b 当水泵停止工作时LED显示部分显示的内容和复位时相同
(3).对电动阀门有较好的控制功能
3硬件设计
3.1 硬件系统的组成
本系统主要由水泵、流量传感器、电动阀门和MCS-51单片机控制系统以及液体管线和控制线、监视线等组成。
系统结构框图如下所示:
图3.1 系统结构框图
3.2 硬件电路及接口设计
3.2.1 MCS-51单片机与BCD码拨盘的接口设计
(1)BCD码拨盘
拨盘种类很多,作为人机接口使用的最方便的拨盘是十进制输入,BCD码输出的BCD码拨盘。这种拨盘为四片BCD码拨盘拼接的4位十进制输入拨盘组。每片拨盘具有0~9十个位置,每个位置都有相应的数字显示,代表拨盘输入的十进制数。因此,每片拨盘可代表一位十进制数。
表3.1 BCD码拨盘的输入输出状态表
*:输出状态为1时,表示该输出线与A相遇。
(2)BCD码拨盘与单片机的接口
单片BCD码拨盘可以与任何一个4位I/O口或扩展I/O口相连,以输入BCD码,A端接+5V。为了使输出端在不与控制端A相连时有确定的电平,常将8,4,2,1输出端通过电阻拉低。图3.2是AT89C51通过P1.0~P1.3与单片BCD码拨盘的接口电路。
图3.2 AT89C51与拨盘的接口电路
3.2.2 步进电机控制接口
步进电机是一种将电脉冲转换成相应角位移或线位移的电磁机械装置,也是一种能把输出机械位移增量和输入数字脉冲对应的驱动器件。步进电机具有快速启停能力,只要电机的负荷不超过它所能提供的动态转矩,就能通过输入脉冲来控制它在一瞬间启动和停止。步进电机的步距角和转速只和输入的脉冲频率有关,和环境温度、气压、冲击和振动无关,也不受电网电压的波动和负载变化的影响,它每转一周都有固定的步数,步进精确和步距误差不会长期积累。因此,步进电机在需要精确定位场合应用广泛。
(一)步进电机的工作原理
电机定子上均匀分布有六个磁极,相邻两磁极间夹角为60°,磁极上绕有三相控制绕组,分别对应于A、B和C三相电源。转子外侧均匀分布有40个齿,每个齿的齿距为9°。定子的每个极弧上也有5个齿,定子和转子的齿宽和齿距都相同,而每个定子磁极的极距为60°,故每个磁极所占的齿距数不是整数。若按ABCA顺序轮流循环通电,则步进马达就会沿顺时针方向以每个脉冲3°的规律转动起来;若把通电顺序改为ABCA,则步进马达就会沿逆时针方向一每个脉冲3°的规律转动。这就是所谓的三相单三拍通电方式。
(二)步进电机控制系统
上述分析表明:步进电机是否旋转是由控制绕组中输入脉冲的有无来控制的,每步转过的角度和方向是由三相控制绕组中的通电方式决定的。因此,步进电机的控制是要求单片机软件产生按上述规律变化的时序脉冲,然后通过接口和驱动放大电路来驱动步进电机控制绕组工作。步进电机控制系统由硬件电路和软件程序两部分组成。89C51对三相步进电机的控制电路如图3.3所示。
图3.3 AT89C51与步进电机接口电路
3.2.3 电磁流量计电路
电磁流量计电路如图3.4和图3.5所示,它是利用法拉第法则检测管内流动流体的流量。激励线圈中流过的电流通常采用矩形波,电极间产生的流量信号与激励波形相似,而电平为40
V~4mV左右。将该电压信号放大并采样,变换为4~20mV的输出信号。检测流体的性质,通常与流体的共同电位C对比,流量信号特别是A、B两极间的直流成分相重叠。输出阻抗跟样,变换为4~20mV的输出信号。检测流体的性质,通常与流体的共同电位C对比,
流量信号特别是A、B两极间的直流成分相重叠。输出阻抗跟流体的电导率有关,最大为3M
。因此输入部件的构件要求能把交流放大,并且阻抗高。
图3.4示出了电磁流量计初级输入放大电路,加入C5和C6是为了消除因A1、A2的输入偏置电流和失调电流流过R2、R3、R5、R6而产生的直流偏压。该直流偏压含有由温度引起变化约300mV电压。
图3.5示出第二级的采样和保持电路,通常4066型模拟开关在输入输出端间的电压为18V、85℃时规定为1
A,因此输入输出端间开路时的电位差,应抑制在二极管正向电压0.6V以下。为了提高A4、A5的保持特性,输入级使用结型场效应管的运算放大器。
图3.4 电磁流量计初级输入放大电路
3.2.4 MCS-51对LED的接口
1.LED数码显示管原理
LED数码管结构简单,价格便宜。八段LED显示管有八只发光二极管组成,编号是a、b、c、d、e、f、g和SP,分别和同名管脚相连。七段LED显示管比八段LED少一只发光二极管SP,其他的和八段LED相同。
八段LED数码显示管原理很简单,是通过同名管脚是所加电平高低来控制发光二极管是否点亮而显示不同字形的。例如:若在共阴LED管的SP、g、f、e、d、c、b、a管脚上分别加上7FH控制电平(即:SP上为0伏,不亮;其余为TTL高电平,全亮),则LED显示管显示字形为“8”。7FH是按SP、g、f、e、d、c、b、a顺序排列后的十六进制编码(0为TTL低电平,1为TTL高电平),常称为字形码。因此,LED上所显示字形不同,相应字形码也不一样。八段共阴能显示的字形及相应字形码如表7-5所列。该表常放在内存,SGTB为表的起始地址,各地址骗移量为相应字形码对表始址的项数。由于“B”和“8”、“D”和“0”字形相同,故“B”和“D”均以小写字母“b”和“d”显示。
图3.5 第二级的采样和保持电路
LED数码显示管分为共阴和共阳两种。为共阴八段LED管时,所有发光二极管阴极共连后接到引脚G,G脚为控制端,用于控制LED是否点亮。
为共阳八段LED数码显示管时,所有发光二极管阳极共连后接到G脚。5因此,共阴和共阳所需字形码正好相反,如表3.2所列
2.MCS-51对LED的显示接口电路
MCS-51对LED管的显示可以分为静态和动态两种。静态显示的特点是各LED管能稳定地同时显示各自字形;动态显示是指各LED轮流一遍一遍显示各自字符,人们因视觉惰性而看到的是各LED似乎在同时显示不同字形。
(1)静态显示
在单片机应用系统中,常采用MC14495芯片作为LED的静态显示接口,它可以和LED显示器直接连接。MC14495芯片是由4位锁存器、地址译码器和笔段ROM阵列以及带有限流电阻的驱动电路(输出电流为10mA)等三部分电路组成。
(2)动态显示
为了减少硬件开锁,提高系统可靠性和降低成本,单片机控制系统通常采用动态扫描显示。图4.7示出了89C51通过8155对六只共阳LED的接口电路。图中,B口和所有LED的a、b、c、d、e、f、g、SP引线相连,各LED控制端G和8155C口相连,故B口为字形口和C口为字位口,因为CPU可以通过C口控制各LED是否点亮。8155的端口地址分配如下:
8000H 命令/状态口
8001H A口
8002H B口(字形口)
8003H C口(字位口)
8004H 定时器低8位口
8005H 定时器高8位口
8000H—FFFFH 8155I/O重叠地址区
8000H—00FFH 8155 RAM 基本地址区
8000H—7FFFH 8155 RAM 重叠地址区
动态显示采用软件法把欲显示十六进制数(或BCD码)转换为相应字形码,故它通常需要在RAM区建立一个显示缓冲区。显示缓冲区内包含的存储单元个数常和系统中LED显示器个数相等。显示缓冲区的起始地址很重要,它决定了显示缓冲区在RAM中的位置。
当显示器位数较少时,采用静态显示的方法是适合的。当位数较多时,用静态显示所需的I/O太多,一般采用动态显示方法。
图 3.6 LED接口电路
3.2.5 MCS-51和A/D的接口
图3.7 ADC0809与单片机的接口
MCS-51和ADC接口必须弄清和处理好三个问题:①要给START线送一个100ns宽的起动正脉冲;②获取EOC线上的状态信息,因为它是A/D转换的结束标志;③要给“三态输出锁存器”分配一个端口地址,也就是给OE线上送一个地址译码器输出信号。
MCS-51和ADC接口通常可以采用查询和中断两种方式。采用查询法传送数据时,MCS-51应对EOC线查询它的状态:若它为低电平,表示A/D转换正在进行,则MCS-51应当继续查询;若查询到EOC变为高电平,则就给OE线一个高电平,以便2-1—2-6线上提取A/D转换后的数字量。CPU响应中断后,应在中断服务程序中使OE线变为高电平,以提取A/D转换后的数字量。
4 系统软件设计
系统软件设计是该设计的核心,也是设计的重点和难点部分。控制系统软件设计的好坏直接影响到该控制系统的控制功能,因此,要想做好本设计,一个好的系统软件是关键。
该控制系统的程序主要分为三部分:主程序、流量控制程序和各种中断子程序。主程序完成系统的地址分配、系统初始化和各子程序的调用。流量控制程序通过PID控制算法,实现系统的数字化控制。各子程序完成相应的各功能。
4.1 主程序设计
主程序部分,主要完成存储器分配、系统初始化和系统整体控制等,并通过调用各子程序段,实现软件的总体设计功能。
图4.1 主程序流程图
初始化:系统初始化程序的功能是对8155和89C51进行初始化,使D/A输出为0,步进电机处于停机状态,将RAM中的标志位和工作单元置为初始状态,提示符CPUREADY写入缓冲器。更新显示器子程序的功能是将显示缓冲器的内容,分别转化为段数据,输出到8155。当系统处于停机状态时,显示器0~4显示参数,显示器5~7显示参数地址,所以73H~77H作为数据缓冲器,78H~7AH作为地址缓冲器,在运行状态时,73H~77H作为瞬时流量缓冲器,78H~7FH作为累计流量缓冲器。初始化程序的流程如图所示。
图4.2 初始化流程图
4.2 流量控制子程序
在流量测试的基础上,把流量设定值和实际测试得到的瞬时流量进行比较计算出误差,采用数字PID调节算法,计算输出到AD0809的变量Uio增量式PID控制算法的计算公式为:

式中:ei为本次实际测得的流量和设定值之差;
-
;

=
-
;
P为比例系数;
I为积分系数;
D为微分系数;
输出控制变量表达式为:
+ 
本程序占用资源:A,B,R0~R7,CY,F0。
程序如下:
PID1:MOV R0,#52H
MOV R1,#49H
LCALL FSUB
MOV R1,#46H
LCALL FSTR
MOV R1,#4CH
MOV R2,#06H
LCALL LPDM
LCALL LPDM
MOV R0,#4CH
MOV R1,#4FH
MOV 45H,48H
MOV A,4CH
MOV C,A。7
MOV F0,C
程序中 FSUB:3字节浮点数减法子程序;
FADD:3字节浮点数加法子程序;
FMUL:3字节浮点数乘法子程序;
FSTR:3字节浮点数减存放子程序。
4.3 中断服务子程序
4.3.1 设定值输入程序
本程序将4位BCD码按千、百、十、个依次存放在89C51片内RAM的30H~33H单元中,每个地址单元的高4位为0,低4位为BCD码。
RDS:MOV R0,#30H;初始化,存放单元首址
MOV R2,#7FH;P1口高4位置控制字及低4位置输入方式MOV R3,#04H;读入4个BCD码
LOOP:MOV P1,A;P1口送控制字及低4位置输入方式
MOV A,P1;读如BCD码
ANL A,#0FH;屏蔽高4位
MOV @R0,A;送入存储单元
INC R0;指向下个存储单元
MOV A,R2;准备下一片拨盘的控制端置0
DJNZ R3,LOOP;未读完返回
RET;读完结束
4.3.2 A/D中断子程序
A/D中断子程序流程图如下所示:
图4.3 A/D中断子程序
程序如下:
INT0: PUSH ACC ;保护现场
SETB PSW.3 ;选工作寄存器区1
MOV DPTR,#0DF01H;读取8155A口数据
ANL A, #0F0H ;屏蔽低4位
JNB 02H, D51 ;判断是否采样零信号
D51: MOV C,ACC.0 ;万位和标志位→荷重信号缓冲器
ND5: MOV A,R2 ;判断是否读出千位
JNB ACC.7,ND4
JNB 02H,D41 ;判断是否采样零信号
ANL A, #0FH ;千位→零信号缓冲器
SWAP A
ND4: JNB ACC.6, ND3 ;判断是否读出百位
JNB 02H,D31 ;判断是否采样零信号
MOV R1, #25H ;百位→零信号缓冲器
ND3: JNB ACC.5, ND2 ;判断是否读出十位
JNB 02H, D21 ;判断是否采样信号
MOV DPTR,#0DFF3H ;启动A/D转换
MOV 2AH,24H ; 采样数据送处理缓冲器
MOV 2FH,29H
SETB 03H ;置一次A/D采样结束标志
D14: POP PSW ;恢复现场
POP ACC
RETI
4.3.3 定时器中断子程序
定时器T0中断程序流程图如下图所示。程序如下:
图4.4 定时器T0中断
4.3.4 数码管显示子程序
在单片机内部RAM的20H和21H单元中有四位十六进制数(20H中为高两位),以下是将其自左到右显示出来的程序。
相应程序如下:
ORG 2000H
SDIAPLAY:MOV A,20H ;20H中数送A
ANL A,#0F0H ;截取高4位
MOV P1,A ;送1#MC14495
MOV A,20H ;20H中数送A
SWAP A ;低4位送高4位
ANL A,#0F0H ;去掉低4位
INC A ;A1A0指向2#MC14495
ADD A,#02H ;A1A0指向3#MC14495
MOV P1,A ;送3#MC14495
MOV A,21H ;21H中数送A
SWAP A ;低4位送高4位
ANL A,#0F0H ;去掉低4位
RET
END
程序流程图如下所示:
图4.5 数码管显示子程序
4.3.5 步进电机控制程序
步进电机控制程序:
- ORG 2100H
- PUSH ACC ;保护现场
- MOV R4,#N ;步进马达步进数送R4
- CLR C ;Cy清零
- ORL C,PSW.5 ;转向标志状态送Cy
- JC ROTE ;若为反转,则转ROTE
- MOV R0,#20H ;正转模型始址送R0
- AJMP NEXT ; 转入NEXT
- ROTE:MOV R0,#27H ;反转模型始址送R0
- ACALL DELAY ;延时(形成脉宽)
- INC R0 ;准备下个模型指针
- MOV A,#00H ;判断送完一遍模型值
- JZ TPL ;若模型结束,则TPL
- LOOP:DJNZ R4,NEXT ;若步进数未走完,则NEXT
- POP ACC ;恢复现场
- RET :返回
- TPL:MOV A,R0
- MOV R0,A ;恢复模型始址
- AJMP LOOP ;判断步进马达步数走完?
- DELAY:MOV R2,#M1 ;延时
- DELAY1:MOV R2,#M2
- DELAY2:DEC A
- JNZ DELAY2
- DJNZ R2,DELAY1
- RET
- END
复制代码
5 小结
通过课程设计,使我加深了对所学理论知识的理解与巩固,并能将课本上的纯理论应用到实践中,进一步加深了对知识的认识。同时,也有助于对其他知识的理解。现在,我不但对图解法和解析法有了更深入的理解,而且熟练了应用图解法对机构进行运动分析以及力分析。
培养了我耐心、仔细、谨慎的工作态度。这次课程设计的内容最多的是绘画机构简图。在绘图过程中,对比例尺的选定以及合理的布图都要有细致的规划,这是最考验一个人的耐心与严谨态度的过程,只有这样才能使绘制的机构简图更准确、更美观。
通过这次课程设计,使我更充分认识了团队合作的重要性。由于这次课设是以小组为单位对机构不同的运动位置进行运动分析和受力分析,还要查找资料,每个人都有分工。所以在进行分析的过程中每个成员都要保证自己计算数据的准确,查找资料时都要有耐心,这样才能确保小组顺利完成任务。在这次课设过程中,我们小组成员之间都互帮互助、共同思考,相互查漏补缺,互相给予信心。
最后,我对我们小组的成员同学表示衷心的感谢,因为我们是是靠互帮互助才能完成课程设计的,我想其他同学也跟我有一样感受,同时也要诚挚地感谢指导教室宜老师在课程设计过程中给予帮助和指导。