基于单片机的液位控制器设计

  • 格式:doc
  • 大小:330.00 KB
  • 文档页数:14

专业基础综合实验报告题目:测控技术与仪器专业
姓名:
学号:
专业班级:
1、总体设计方案
1.1 设计功能及要求
1、利用单片机和传感器构建一套完整的水位自动控制系统。

要求既能实现水位自动控制,又能显示实际水位,便于用户监视。

在水塔中经常要根据水面的高低进行水位的自动控制,同时进行水位压力的检测和控制。

本液位器具有水位检测、报警、自动上水和排水(上水用电机正转模拟,下水用电机反转模拟)、压力检测功能。

2、该系统以89S52单片机为水塔水位控制系统的核心,
用传感器采集水压模拟信号,然后将模拟信号送入A/D转换
器,换算出某一时刻水塔水位的实际高度,然后拿它与标定
水位进行比较,要求实时检测水箱的液位高度,并与开始预
设定值做比较,由单片机控制开关的开断进行液位的调整,
最终达到液位的预设定值。

检测值若高于上限设定值时,要
求报警,断开继电器,控制水泵停止上水;检测值若低于下
限设定值,要求报警,开启继电器,控制水泵开始上水。

现场实时显示测量值,从而实现对水箱液位的监控。

如此重复“测量、比较、开启”这三步,直至实测水位与标定水位的偏差落入给定的精度范围之内。

落入给定精度范围之后,将两个水泵同时关停。

电路焊接好后,接通电源,改变液位使检测点变化,当液位在A点以下时红灯连续亮并且发出频率较高的报警声,显示00,电机正转;当A≤液位<B时,显示0A,电机正转;当B≤液位<C时,显示0B,电机不转;液位在C点及以上时,绿灯连续亮并且发出报警声,显示0C,电机反转。

3、控制系统中标定水位用键盘输入,用十进制数码显示。

本液位器具有水位检测、报警、自动上水和排水、压力检测功能。

该控制器主要由89S52单片机,
0809A/D转换器,A、B、C三点水位检测电路,压力检测电路、数码显示电路、键盘和电源电路组成。

4、可根据需要设定液位控制高度,同时具备报警、高度显示等功能,
液位自动控制系统工作流程如下:将压力传感器传送来的电流信号经过前级放大和A/D转换进入单片机,经单片机计算处理(与用户的设定值作比较)。

将输出数字量进行D/A转换送给电动执行机构。

5、基于单片机的水位自动控制系统的软件设计
本论文是以单片机为核心设计水塔水位控制系统,包括硬件电路的设计和控制系统程序的设计。

通过此系统使水塔水位保持在要求的高度
1.2 设计方案
1.2.1硬件设计方案
(1)基于单片机的通用水位自动控制系统的硬件设计系统硬件部分的设计采用模块化的设计方法,根据功能的不同,把系统划分为如下模块(图2)。

图2 系统模块图
(1)硬件设计
液位控制器的硬件主要包括由单片机、传感器(带变送器)、键盘电路、数码显示电路、A/D转换器和输出控制电路等。

工作原理:基于单片机实现的液位控制器是以AT89C51芯片为核心,由键盘、数码显示、A/D转换、传感器,电源和控制部分等组成。

工作过程如下:水箱(水塔)液位发生变化时,引起连接在水箱(水塔)底部的压力传感器,压力传感器的压力受到水的压力,即把变化量转化成电压信号;该信号经过运算放大电路放大后变成幅度为0~5 V标准信号,送入A/D转换器,A/D转换器把模拟信号变成数字信号量,由单片机进行实时数据采集,并进行处理,根据设定要求控制输出,同时数码管显示液位高度。

通过键盘设置液位高、低和限定值以及强制报警值。

该系统控制器特点是直观地显示水位高度,可任意控制水位高度。

1.2.2软件设计方案
(1)设计框图
(2)原理:通过软件设计将将模拟信号送入A/D转换器,换算出某一时刻水塔水位的实际高度,然后拿它与标定水位进行比较,要求实时检测水箱的液位高度,并与开始预设定值做比较,由单片机控制开关的开断进行液位的调整,最终达到液位的预设定值。

检测值若高于上限设定值时,要求报警,断开继电器,控制水泵停止上水;检测值若低于下限设定值,要求报警,开启继电器,控制水泵开始上水。

现场实时显示测量值,从而实现对水箱液位的监控。

2.硬件设计
2.1 液位检测电路
2.2 单片机最小系统
2.3 LED显示电路
2.4 按键电路
2.5 报警电路
2.6 电源电路
我们组做的是按键电路、报警电路和电源电路PCB板图如下
3.软件设计
3.1 主程序设计
系统主程序设计:
ORG 0000H
AJMP MAIN
ORG 0060H
MAIN: MOV P1, #FFH ;P1 P3口初始化置1
MOV P3,#FFH
JNB P1.3 ,AUT ;若手动在自动位置,跳到自动模式子程序AJMP MEN ;否则转到手动模式子程序
END
自动模式子程序设计
AUT:NOP ;空命令
JNB P1.2 , LG ;水位高—LG
JB P1.1 LD ,;水位没低---LD
CLR P3.1 ;水位低报警
JB P1.0, LDD ;水位未低低---LDD
CLR P3.0 ;水位低低报警
JNB 3.1 P1.6, Y1 ;M1已启动—Y1
CLR P1.4 ;否则启动M1
Y1: JNB P1.7 ,Y2 ;M2已启动---Y2
CLR P1.5 ;否则启动M2
Y2: ACALL DELAY ;延时1分钟
AJMP AUT ;返回自动模式
LDD: JNB P1.6 ,Y3 ;单独运行M1(LDD〈水位〈LD)CLR P1.4
Y3: JB P1.7 Y2
SETB P1.5
AJMP Y2
LG: CLR P3.2 ;水位高报警
LD: AJMP MAIN ;返回主程序
手动模式子程序设计
MEN:NOP
JNB P1.1 , MAIN ;水位高返回主程序ACALL KEY
CJNE A ,#FOH,NN ;有无键合AJMP MEN
NN: JNB ACC.4 ,HM1
JNB ACC.5, HM2
JNB ACC.6 ,DM1
JNB ACC.7 ,DM2
AJMP MEN
HM1: JNB P1.6 ,MEN
CLR P1.4
AJMP MEN
HM2: JNB P1.7, MEN
CLR P1.5
AJMP MEN
DM1: JB P1.6, MEN
SETB P1.4
AJMP MEN
DM2: JB P1.7, MEN
SETB P1.5
AJMP MEN
RET
3.2 子程序设计
3.2.1 键盘子程序设计
有无键合子程序:
KEY:ACALL KS1 ;有无闭合
JNZ LK1
ACALL TIM
AJMP KEY ;无键闭合返回
LK1:ACALL TIM
ACALL TIM
ACALL KS1
JNZ LK2
延时1S主程序:
T1M1: MOV R1, #F0H
L4: MOV R2, #08H
L1: MOV R3, #FAH
L2: MOV R4, #FAH
L1: DJNZ R4, L1
DJNZ R3, L2
DJNZ R2, L3
DJNZ R1, L4
RET
3.2.2A/D转换子程序设计
A/D模数转换程序
入口参数:30H---33H
;出口参数:BAI,SHI,GE
CHANGE
CLRF BAI
CLRF SHI
CLRF GE;先清除结果寄存器
MOV FW 31H;
ADD WF 30H,1
MOV FW 32H
ADD WF 30H,1
MOV FW 33H
ADD WF 30H,1
RRF 30H,1
RRF 30H,0
MOV WF TEMP
MOV LW 64H ;减100,结果保留在W中
SUB WF TEMP,0
BTFSS TATUS,C ;判断是否大于100
GOTO SHI_V AL ;否,转求十位结果
MOVWF TEMP ;是,差送回TEMP中INC F BAI,1 ;百位加1
GOTO $-6 ;返回继续求百位的值
SHI_V AL
MOV LW 0AH ;减10,结果保留在W中
SUBWF TEMP,0
BTFSS STATUS,C ;判断是否大于10
GOTO GE_V AL ;否,转去判断个位结果
MOVWF TEMP ;是,差送回TEMP中
INCF SHI,1 ;十位值加1
GOTO $-6 ;转会继续求十位的值
GE_V AL
MOVFW TEMP
MOVWF GE ;个位的值
RETURN
显示程序
入口参数:BAI,SHI,GE
出口参数:无
DISPLAY
MOV FW BAI ;显示百位
CALL TABLE
MOVWF PORTD
BCF PORTA,3
CALL DELAY
CALL DELAY
BSF PORTA,3
MOVFW SHI ;显示十位CALL TABLE
MOVWF PORTD
BCF PORTA,4
CALL DELAY
CALL DELAY
BSF PORTA,4
MOVFW GE ;显示个位CALL TABLE
MOVWF PORTD
BCF PORTA,5
CALL DELAY
CALL DELAY
BSF PORTA,5
RETURN。