液位控制系统设计
《计算机控制技术》课程作业《计算机控制技术》课程作业 题目名称题目名称 学学院院 专专业业 班班级级 学学号号 姓姓名名 单片机水槽液位控制系统设计报告 机电与质量技术工程学院 2017 年 5 月 25 日 单片机水槽液位控制系统设计报告 一 :选题的实际意义 现在的工业生产最大的一个特点就是自动化, 已经是取代了之前 的人工化的,在这样的一个过程当中有很多的特点, 也就是说我们要 实现这样的一点的话,那就需要很多的高科技的仪器来满足了, 这点 是非常的值得肯定的,因为多数的时候,我们要是能够真正的将我们 的工业化的生产做好的话,那是非常的困难的,在某种程度上面可以 说,比起其他的一些工业生产来,是比较的困难的多的。所以的话, 有许多的精密的仪器需要运用到, 比如说,液位控制器是我们常见的 一种。而在液位控制器的话,有一个非常的多的特点,就是他的使用 范围上面是非常的广泛的, 几乎是覆盖了各行各业里面的, 所以的话, 在现在的话,有很多的行业都有这样的一个特点, 就是说要实现自动 化的过程,那么这样的一个仪器,那是要用到的了。此次我们本次要 设计的就是基于单片机的水槽液位控制系统。 二 :该计算机控制系统的目的 根据水槽液位的高低变化来控制水泵的启停, 从而达到对水槽液 位的控制目的。 在运行中可以随时方便的修改各种各样的运行参数的 控制值,并修改系统的控制参数,可以方便的改变液位的上限、下限。 同时,通过水体控制过程的自动化处理以及监控软件良好的人机界 面,操作人员在监控计算机上能根据控制效果及时修运行参数, 这样 能有效地减少工人的疲劳和失误,提高生产过程的实时性、安全性。 三 :计算机控制系统达到的效果 自动控制水槽水位高度。 当水槽液位下降至 B 点或 B 点以下时水 泵被启动;水槽液上升,当液位到达C 点时,水泵停止运行;当液位 处于 B 点与 C 点之间时,水泵就会维持之前的状态(启动或运行)。 以实现控制水位高度。 四 :设计思路 水位检测及控制采用如附件一所示电路, 虚线表示水位变化。在 正常范围以内,水位应维持在虚线 A 和 C,其中 A 处于下限水位,C 处于上线水位,B 位于 AC 之间。A 接+5V 电源,B、C 各 通过一个电 阻与地相连,同时与单片机的 P1.0 和 P1.1 口相连。 1. 供水时,水位上升,当达到上线水位 C 时,由于水的导电作用 B、 C 与+5V 电源导通,同时通过 P1.0 和 P1.1 端口向单片机输入高电 平 1,这时通过程序设计使单片机控制电机和水泵停止工作, 不再 供水。 2. 当水位下降到 B 以下时,电极 B 与电极 C 在水面上悬空,b 点、c 点向单片机输入 低电平,这时单片机应控制水泵启动,向水槽内 供水。 3. 当水位位于 B 点与 C 点之间时,由于水的导电作用,电极 B 连到 电极 A 及+5V 是 b 点呈现高电平,而电极 C 仍处于悬空状态,则 c 点位低电平,这时不论水位处于上升还是下降状态,水泵都应继 续维持原有的工作状态,既可能是运行,也可能是停止。 五 :设计过程(建议模块化设计过程) 1.设计的目标与要求 根据水槽液位的高低变化来控制水泵的启停, 从而达到对水槽液 位的控制目的。工作原理图如下: 当液位上升至高限 C 以上时,水泵停止运行,液位不再上升;液 位降至 B 以下时,水泵开始启动运行,也为上升;液位维持在 BC 之 间时,水泵维持原来的工作状态,既可以停止,也可以启动。 2.硬件电路设计 根据工艺要求,设计的系统硬件电路如下表: 表 1液位信号及操作状态表 P1.0 0 1 P1.1 0 0 液位 B 点以下 B、C 之间 操作状态 水泵启动 维持原来工作状态 0 1 1 1 测量不正常 C 点以上 故障报警 水泵停止 (1)系统核心部分 采用 AT89C51 单片机,P1.0 和 P1.1 作为液位采集入口,用 P1.2 作输出口,P1.3 作报警输出口。 (2)液位测量部分 根据液位的4种状态, 单片机根据4种状态控制水泵电机的工作, 具体见表 1。 (3)控制报警部分 根据表 1 中的液位状态, 当液位测量不正常时, 会发出故障报警, 水槽液位控制系统中的发光二极管发光,或者是蜂鸣器发出声音。 3.软件设计 (1)软件设计的原理 通过软件设计将将模拟信号送入 A/D 转换器, 换算出某一时刻水 塔水位的实际高度,然后拿它与标定水位进行比较,要求实时检测水 箱的液位高度,并与开始预设定值做比较, 由单片机控制开关的开断 进行液位的调整,最终达到液位的预设定值。检测值若高于上限设定 值时,要求水泵停止,断开继电器,控制水泵停止上水;检测值若低 于下限设定值,要求水泵启动,开启继电器,控制水泵开始上水;若 测量值在设定值之间,则维持原来工作状态;当测量不正常时,故障 报警系统启动。 (2)系统主程序设计 void main (void) { T0_init_1(); while(1) { if(key_play==0) //按下开始按钮 { temp=1; TR0 = 1;//启动定时器 1 开启 0 关闭 } if(key_stop==0) //按下停止按钮 { temp=0; TR0 = 0;//启动定时器 1 开启 0 关闭 } if(key_jian==0) //按下退水按钮 { while(key_jian != 1); //消抖 TR0 = 0;//启动定时器 1 开启 0 关闭 if(NEW_shui0) { NEW_shui--; } } smg_show(); //显示水位 if(temp) { if(NEW_shui30) { led_A=0; } else if(NEW_shui60) { led_B=0; } else if(NEW_shui90) { led_C=0; TR0 = 0;//启动定时器 1 开启 0 关闭 } else if(NEW_shui0) { NEW_shui--; } } smg_show(); //显示水位 if(temp) { if(NEW_shui30) { led_A=0; } else if(NEW_shui60) { led_B=0; } else if(NEW_shui90) { led_C=0; TR0 = 0;//启动定时器 1 开启 0 关闭 } else if(NEW_shui0; t--) { for(i=0; i=10) // { NEW_shui++; T0_time=0; if(NEW_shui99) // { NEW_shui=0; } } wei1=0; P0=smg_ying[NEW_shui/10]; delay_ms(10); wei1=1; P0=0 xff; wei2=0; P0=smg_ying[NEW_shui%10]; delay_ms(10); wei2=1; P0=0 xff; } 仿真图: 七 :个人总结 基于单片机的水位自动控制系统由于价格低廉, 通用性、实用性 强, 能够在稍作改造后或直接用于诸如: 自来水厂的储水池、 爆气池, 污水处理厂、 化学工厂的各类液体池以及电厂的锅炉气泡