液位自动控制装置

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2.1基本功能

本设计是采用AT89C51单片机为核心芯片,及其相关硬件来实现的水体液位控制系统,在用液位传感器测液位的同时,CPU循环检测传感器输出状态,并用3位七段LED显示示液位高度,检测液位数据,实施报警安全提示,当水体液位低于用户设定的值时,系统自动打开泵上水,当水位到达设定值时,系统自动关闭水泵或打开排水泵。2.2塔水位控制原理

单片机水塔水位控制原理如图l所示,图中的虚线表示允许水位变化的上、下限位置。在正常情况下.水位应控制在虚线范围之内。为此,在水塔内的不同高度处,安装固定不变的3根金属棒A、B、C。用以反映水位变化的情况。其中,A棒在下限水位.B棒在上、下限水位之间,C棒在上限水位(底端靠近水池底部.不能过低,要保证有足够大的流水量)。水塔由电机带动水泵供水。单片机控制电机转动,随着供水,水位不断上升.当水位上升到上限水位时,由于水的导电作用。使B、C棒均与+5V连通。因此b、C两端的电压都为+5V即为。l”状态,此时应停止电机和水泵工作,不再向水塔注水;当水位处于上、下限之间时。B棒和A棒导通.而C棒不能与A棒导通,b端为“r状态。C端为“O”状态。此时电机带动水泵给水塔注水,使水位上升,还是电机不工作,水位不断下降,都应继续维持原有工作状态;当水位处于下限位置以下时,B、C棒均不能与A棒导通,b、c 均为“0”状态。此时应启动电机转动,带动水泵给水塔注水。

2.3系统硬件总体方案

系统的原理是采用8个按钮进行水位检测,在现场的3个不同的位置,由下至上测量水体的液位值,。并把这四个液位状态通过模数转换器传到单片机中,在通过3位七段LED显示器显示出液位的三种状态及报警安全提示。用LED显示是因为它具有显示清晰、亮度高、使用电压低、光电转换效能高、寿命长等特点,根据当前的液位值和用户设定的水位决定是否进行开、关水泵,需要是否开启和关闭驱动阀门的电动机。

3控制系统方案设计

3.1系统硬件方案

系统方案设计液位控制是利用把液位的状态转换成模拟信号,再通过模数转换器AT89C51把输出状态直接接到单片机的I/O接口,单片机经过运算控制,输出数字信号,输出接口接LED进行显示,实现液位的报警和键盘的显示与控制;图2即是液位控制系统:

由上图可观察到传感器通过对液面进行测量,输出模拟信号,再通过模数转换器把输入的模拟信号转换成数字信号,通过AT89C51单片机

的运算控制,在通过LED进行显示,通过报警装置进行报警,报警显示之后再通过对阀门的开启实现对水体的液位进行调节控制,阀门的驱动设备是电动机。

3.2核心芯片AT89C51单片机

AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图3所以。

3.3系统软件总体方案

水位检测是通过8个按钮进行水位检测的,当水位到检测位置其输出

端口就向单片机输出低电平。由上至下的第一个位置为水位上限报警线,即当水位高于此位置时,开水阀控制系统就会自动报警,提醒工作人员注意,加水电磁阀有可出故障;第二个位置是自动停止加水线,即当水位高于此位置时,控制系统会自动关闭加水电磁阀,停止加水;第三个位置是自动加水线,即当水位低于此位置时,控制系统会自动接通加水电磁阀,开始加水;第四个位置是水位下限报警线,即当水位低于此位置时,控制系统就会自动报警,提醒工作人员注意,加水电磁阀可能出故障如图

4.Proteus设计与仿真4.1元器件清单,

4.2基于单片机水位控制原理

4.3基于单片机的水位控制PCB图

.4水位检测的主程序

本控制系统采用的是控制,由于模糊控制量的求取是采用查表法,因此软件程序较简单,整个软件部分较多,现取最重要的水位检测主程序。

#include

#define uchar unsigned char

#define uint unsigned int

sbit MOR=P2^7;

sbit MOT=P2^6;

sbit LED=P2^0;

code uchar tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void delay(uint n)

{

while(n--);

}

void LED_SHOW()

{

if(P1==0xfe)

{

P0=tab[8];

LED=0;

MOR=0;

MOT=1;

}

if(P1==0xfd)

{

P0=tab[7];

LED=0;

MOT=1;

}

if(P1==0xfb) {

P0=tab[6]; LED=1; MOR=1; MOT=1;

}

if(P1==0xf7) {

P0=tab[5]; LED=1; MOR=1; MOT=1;

}

if(P1==0xfd) {

P0=tab[4]; LED=1; MOR=1;

相关文档
最新文档