基于单片机的差压式液位监控系统设计
2022-01-25王延年李雄飞
王延年,李雄飞
(西安工程大学电子信息学院,陕西西安 710048)
随着现代化工业的飞速发展,越来越多的工业生产领域需要对液位进行实时监测以及对安全运行数据进行实时反馈,如常见的锅炉液位、油罐液位、化工原料液位等,这对正常安全生产起着至关重要的作用[1]。由于被检测液体本身可能具有腐蚀性、毒性和刺激性,不能依靠人为去获取液位数据。在现代化工控领域中不仅要求可以实现液位实时监测和报警,甚至更多时候需要系统进行自我液位调节,使得整个系统始终保持在安全生产液位[2]。这对系统控制的设计提出了更高的要求,设计出符合企业生产的全自动液位监控系统既可以提高企业生产效率又可以降低生产成本[3]。集成化网络和通信技术的迅速发展,为液位监控技术提供了良好的软件编程和硬件设计平台[4]。新的液位监控系统趋于便捷化、自动化和智能化,有利于提高测量的准确度和安全性[5]。
文中设计了一种差压式液位数据采集与监控系统,采用AT89S52 单片机作为系统的主控芯片,使用差压传感器进行液位信号的采集,将采集信号进行相应的数制转换,通过单片机与上位机进行数据传送,实现显示与控制的功能。利用MCGS 软件制作相应的监控画面,实现对液位的变化进行预报警,提高液位监控的实时性[6]。整个设计中需要完成三大块:液位监控系统的硬件电路设计、液位监控系统的软件设计、调试仿真。
1 系统方案设计
考虑到实际设计需求与成本,由于PLC 的价格昂贵且体系结构封闭,各PLC 厂家硬件体系互不兼容,编程语言及指令系统也各异[7],当用户选择了一种PLC 产品后,必须选择与其相应的控制规程,并且学习特定的编程语言[8]。而单片机的体积较小、集成度较高、编程比较方便、功耗和价格都很低、操作简单、通用性好,在工业生产中应用比较广泛[9]。因此该文选取单片机来实现液位监控系统的设计。该系统包含电源、晶振、复位、键盘、显示、液位信号采集、模数转换、报警、电机控制等模块,以及相应模块的软件系统,其硬件系统核心采用单片机,系统框图如图1 所示。
图1 基于单片机的液位监控系统框图
该设计选取AT89S52 单片机为控制核心,选取ZPM430 传感器进行数据采集。AT89S52 单片机的功能非常多,存储容量很大,定时器可以实现多种功能,内置8kROM,足以容纳通用程序,价格低,编程比较方便,ISP 比较简单可靠而且可下载,闪存ROM下载次数多,高达10 000 次以上,可靠性高[10]。ZPM430 传感器精度高、稳定性好,而且它有很多种压力接口和电气接线形式供选择,广泛应用于电力、石油、化工、水文等领域的各种气体和液位的差压测量[11]。
2 系统电路设计
2.1 显示电路设计
该系统需要显示当前液位值以及预报警值,所以在该设计中选用了LCD1602 显示模块,该模块可以将显示屏和驱动集成电路作为一个整体来使用[12]。字符型LCD1602 的驱动器一般是HD44780,其一般有16 条外部接口信号。其中有8 条数据总线,3 条控制线分别为RS、R/W 和E。RS 是输入端,其功能是选择寄存器,当RS 为高电平时,选择数据寄存器;为低电平时,选择指令寄存器。R/W 为读写选择端,当R/W 为高电平时,选择读操作;为低电平时,选择写操作。E 是使能信号端。
LCD1602显示模块与单片机直接相连,LCD1602的八位数据线D0~D7 与单片机的P0.0~P0.7 口对应连接,另外,因为单片机的P0 口内部不带上拉电阻,所以需要外接上拉电阻来增强输出能力。控制线RS 与单片机的P1.0 口相连,当输入高电平时,为数据信号;当输入低电平时,为命令信号。R/W 与单片机的P1.1 口相连,当输入高电平时,为读数据信号;当输入低电平时,为写数据信号。使能信号E 与单片机的P1.2口相连,管脚GND 接地,管脚VCC 接+5 V电源,管脚VEE 外接一个电位器,用来调节液晶显示屏的对比度。
2.2 报警电路设计
该系统是一个液位监控系统,必须在液位超出或低于正常使用范围时及时提醒工作人员,这就必须要用到报警电路。该设计采用双重报警的方式来有效清晰地提醒工作人员,该报警电路包括音频报警电路和信号灯报警电路。
2.2.1 音频报警电路
音频报警电路由蜂鸣器发声报警,当液位处于非正常范围时发出警报声,便于工作人员及时查明并排除故障。电路中蜂鸣器的正极接到三极管8550的集电极C 端,三极管的发射极E 接到电源VCC 上,三极管的基极B 通过一个限流电阻R6后由单片机的管脚P2.2 控制,即接到接线口P2.2 上。当引脚P2.2为高电平时,三极管无法导通,故没有电流流过线圈,这时蜂鸣器不发声;当引脚P2.2 为低电平时,三极管导通,有电流流过蜂鸣器,构成了闭合的回路,蜂鸣器可以发声。所以,只要编好程序来控制单片机P2.2 端口的电平高低,就可实现报警功能。蜂鸣器报警电路如图2 所示。
图2 蜂鸣器报警电路
2.2.2 信号灯报警电路
蜂鸣器报警只能让工作人员知道液位此时不在正常范围内,但是并不能让工作人员知道液位究竟是高了还是低了。而信号灯报警就可以弥补这个缺失,其与蜂鸣器配合使用达到完美报警。当液位低于下限报警值时,单片机的引脚P2.3 为低电平,发光二极管D2 导通,低位报警信号灯点亮,为高电平时,信号灯灭。当液位高于上限报警值时,引脚P2.4 为低电平,发光二极管D3 导通,高位报警信号灯点亮,为高电平时,信号灯灭。R3和R4是两个限流电阻,保护发光二极管不被烧坏。信号灯报警电路如图3 所示。
图3 信号灯报警电路
2.3 控制电路的设计
控制电路主要控制的是供水电机的启停,当液位低于报警下限值时,供水电机启动,开始补水;当液位高于上限报警值时,电机停止补水。其工作原理:当三极管的基极与单片机的P2.0 端口连接并处于低电平时,三极管导通,此时RL1 继电器的线圈得电,常开开关吸合,电机接入电源,开始补水。当三极管的基极与单片机的P2.0 端口连接并处于高电平时,三极管截止,此时RL1 继电器的线圈失电,常开开关弹开,电机与电源断开,停止补水。由于系统的I/O 端口的输出太弱,因此使用三极管来控制继电器的连接。控制电路如图4 所示。
图4 控制电路
3 系统软件设计
3.1 系统主程序设计
主程序是控制单片机进行工作的程序,是整个程序设计中最关键的[13]。主程序是固化到单片机中的,其工作过程首先是负责将单片机进行端口初始化,然后跳转到差压式液位传感器的采集子程序上并执行该程序,将采集到的模拟量信号传送到模数转换器进行数据转换,以便单片机处理,然后执行数码显示子程序,使系统的LCD 显示屏进入工作状态。主程序流程如图5 所示。
图5 主程序流程
3.2 报警控制子程序
报警控制子程序的工作原理如下:由主程序调用报警控制子程序,首先判断检测到的液位值是否低于下限值,如果低于下限值,则执行电机启动程序,下限报警指示灯亮,在检测值恢复到限值范围内后,下限报警指示灯灭并返回;然后判断检测到的液位值是否高于上限值,如果高于上限值,则执行电机停止程序,上限报警指示灯亮,同时蜂鸣器启动报警,检测值恢复到设置范围后,上限报警指示灯灭,蜂鸣器停止报警并返回,然后延时等待,直到下次调用该子程序。报警控制子程序的流程如图6 所示。
图6 报警控制子程序流程
4 仿真调试
该系统设计使用Keil5 程序软件以及Proteus 模拟软件。Keil5 软件使用C 语言开发系统,兼具架构优势、能力优势、读取优势、可编译源程序,连接和定位目标文件库,创建HEX 文件,调试目标程序[14]。Proteus 软件可以实现原理图绘制、代码调试、单片机与外围电路仿真,还能一键切换到PCB 的设计[15]。
4.1 系统电路仿真
将所有元器件连接好后,在调试下拉菜单栏中点击开始仿真。显示屏上显示默认设定值:当前液位为5 m,上限报警值SH为7 m,下限报警值为3 m,电源指示灯D1 亮。将电位器的值调大,显示屏上的当前液位随之变大,将其调小,当前液位随之减小。当液位高于7 m 时,蜂鸣器报警,同时D4 指示灯亮,水泵停止供水。当液位低于3 m 时,D3 指示灯亮,同时水泵开始补水。按下S1 键,报警灯闪烁,处于编辑状态,按一次S2 键,报警值加1,按一次S3 键,报警值减1,S1 可以选择设置H 和L。
4.2 实时监控画面仿真
该设计使用MCGS 模拟运行软件[16],制作了液位监控画面来模拟实时报警画面运行结果,报警画面主要由实时曲线、历史曲线和计划曲线组成,其模拟运行结果如图7 所示。实时曲线是对当前液位情况作出报警的,历史曲线可以用来查看之前的报警情况,计划曲线是用来设定预期的报警值的。
图7 报警画面显示
5 结束语
该文以工业控制生产为背景,设计了基于单片机的差压式液位监控系统,完成了系统的硬件电路设计和软件编程设计,进一步完成了系统配套监控画面的制作,实现了液位的实时监测、调整、报警以及数据报表上传,符合现代化生产要求,提高了安全生产效率的同时节约了企业生产成本。