单片机课程设计报告
题 目: 水塔水位控制 引言
水塔供水的主要问题是塔内水位应始终保持在一定范围,避免“空塔”、“溢塔”
现象发生。目前,控制水塔水位方法较多,其中较为常用的是由单片机控制实现自动运行,使水塔内水位保持恒定,以保证连续正常地供水。实际供水过程中要确保水位在允许的范围内浮动,应采用电压控制水位。首先通过实时检测电压,测量水位变化,从而控制电动机,保证水位正常。因此,这里给出以intel公司的80C31单片机为核心器件的水塔水位检测控制系统仿真设计,实现水位的检测控制、电机故障检测、处理和报警等功能,并在proteus软件环境下实际仿真。实验结果表明,该系统具有良好的检测控制功能,可移植性和扩展性强。
1设计说明
本设计为一个实际应用系统的水塔水位控制部分。在此水塔水位控制系统中,检测信号来自插入水中的3个金属棒,以感知水位变化情况。工作正常情况下,应保持水位在某一范围内,当水位变化发生故障的时候,及时关断电机电源,发出声、光报警信号。
(1)完成单片机硬件的设计,包括:CPU、存储器(外扩ROM、RAM)、输入/输出接口(外扩并行I/O口)以及总线连接部分(附控制电路原理图)。
(2)完成控制软件的设计(附控制软件清单)。
2 系统硬件设计 2.1水塔水位控制原理
单片机水塔水位控制原理图1所示,图中的A、B表示允许水位变化的上、下限位置。
由于题目中所要求的金属导体在长时间置于水和空气中会被氧化,因此导电性会下降,这样会影响系统的正常工作,所以本设计需要改动部分控制硬件,上部两个导体分别用
浮子开关代替,第三个不需要置于水中,而将它直接接地然后串入电阻接入电路中。在正常情况下,水位应控制在上下限的范围之内。为此,在水塔内的不同高度处,安装固定不变的两个浮子开关A、B,利用杠杆原理, A浮子控制开关A,B浮子控制开关B,受到浮力时开关打开,A靠近水塔上部,B靠近水池底部,A、B之间足够距离,要保证有足够大的流水量。水塔由电机带动水泵供水,单片机控制电机转动,随着供水,水位不断上升,当水位上升到上限水位时,由于水的浮力作用,使浮子开关A,B均断开。因此b、c两端的电压都为+5 V即为“1”状态.此时应停止电机和水泵工作,不再向水塔注水;当水位处于上、下限之间时,B开关断开和A开关闭合, b端为“1”状态,c端为“0”状态。此时电机保持原来的运行状态,使水位上升或下降,当水位处于下限位置以下时,A,B开关都断开,b、c均为“0”状态,此时应启动电机转动,带动水泵给水塔注水。当开关A断开B闭合(这种状态在正常情况下不会出现,因此必有一浮子出现故障)停止电机运转,报警器打开。图1所示水塔浮子的控制原理。
图1 水塔水位浮子开关控制原理图
2.2 硬件设计
2.2.1. 电路设计
水塔水位控制系统主要由CPU(80C31)、水位检测接口电路、报警接口电路、存储器扩展接口电路、复位电路、时钟振荡等部分组成,图2为系统硬件电路。
图2 系统硬件电路 2.2.2 选用的设备列表如表1所示:
表1 元件列表 单片机8031芯片 锁存器74LS373,2732 7406,74LS04 电动机 浮子开关 发光二极管,二极管1N914 电容5p和20p,晶振电容 直流电源 电阻 导线 2.2.3水位检测接口电路 为了便于实现水位检测功能,用一个两位的浮子开关A,B模拟P1.1和P1.0端的状态(0、1),浮子开关另一端接地,每个负电极分别通过4.7 k的电阻(R1,R2)接+5V电源。 一片 各一件 一台 两件 各一个 各一件 5V,电机电源电压 三个 若干 将单片机的P1.0端口接开关B,P1.1端口接开关A。假设被水淹没的负电极都为高电平,此时开关置1;露在水面的负电极都为低电平,开关此时置为0。单片机通过负电极重复采集检测水位,当缺水时(此时两个开关均置0),电机必须带动水泵抽水;若水位在正常范围内时,检测信号为高,低电平(此时开关B置1,开关A置0);当水位过高时,检测信号为高电平(此时开关A和B都置1),单片机检测到P1.0和P1.1为高电平后,立即停机。 2.2.4报警接口电路 为了避免系统发生故障时,水位失去控制造成严重后果,在超出、低于警戒界水位时,报警信号直接从高、低警界水位电极获得。单片机P1.3端口为启动电机命令输出端口,P1.3=0为低电平,经过非门和驱动器7406后与电机的另一端接地导通,启动电机工作;P1.3=l为高电平,反之,电机停止工作。电机故障报警由单片机控制,电机故障报警信号由P1.3输人。当P1.3为高电平时蜂鸣器报警。水位超过高警戒水位,单片机控制系统使电机停止转动,向水塔内供水工作也停止。 2.2.5存储器扩展接口电路 为了便于系统扩展,存放大容量应用程序,系统设计扩展一片程序存储器,用于存放源程序代码。74LS373用于锁存地址,单片机的P0.0~P0.7通过复用方式分别接锁存器74LS373的DO~D7和存储器2732的D0~D7端,地址锁存信号线ALE接锁存器的OE端,通过软件设置实现地址和数据信息的传输,锁存器的输出端Q0~Q7与存储器地址线A0~A7相连,剩余的3根地址线A8~A11接P2.0~P2.2.单片机选通引脚接存储器OE端,因只扩展一片存储器,片选端CE接地。 2.2.6 各设备的地址分配 各元件所接端口以及对应地址如表2 所示 表2 P1口 元件 地址 1 P1.0 开关B 90H 2 P1.1 开关A 91H 3 P1.2 电动机 92H 4 P1.3 报警等 93H 3 软件设计 3.1设计思路描述 当水塔水位处于上、下限之间时,P1.0=l,P1.1=0,此时无论电机是在带动水泵给水塔供水使水位不断上升还是电机没有工作使水位不断下降,都应继续维持原有工作状态;当水位低于下限时,P1.0=0,P1.1=0,此时启动电机转动,带动水泵给水塔供水。水位检测信号与输出控制操作关系如表3所示: 表3 水位检测信号与输出控制操作表 P1.1 (A) 0 0 1 1 P1.0 (B) 0 1 1 0 运行状态 电机运转 维持电机运行状态 电机停转 故障报警 3.2 设计程序流程图
为实现表2的各个控制,要求程序选择P1.0和P1.1的高低电平,以及当出现故障
时控制P1.3为低电平报警同时关闭电机。程序流程图如图3所示:
图3 程序流程图
3.3 主程序
根据图3的流程,首先将P1口写1,为检查P1.0和P1.1状态做准备,然后选择