基于单片机控制的鱼缸水循环系统设计
2020-09-29殷佳琪
殷佳琪
(兰州资源环境职业技术学院,甘肃 兰州730000)
随着人们生活水平居住环境的提高和改善,养鱼成为日常生活中陶冶情操的一种乐趣,越来越多的家庭以及办公场所均能看见鱼儿的身影,但是往往欣赏的背后却要付出很多辛苦劳动。市面上的鱼缸多采用背部过滤设计,可以在过滤的同时给鱼缸加氧,这需要时常向鱼缸背部添水,由于养鱼者忙碌或出差不在家不能及时给鱼缸添水导致过滤系统损坏,或者要经常给鱼缸换水费时费力,所以普通鱼缸无法满足人们对智能化产品的需求,特别对于忙碌的上班族来说,养鱼往往是赏心悦目,却要被这些繁琐事情牵绊。所以设计一款鱼缸的自动水循环系统是非常必要的,为人们自动控制管理鱼缸水位高度,清理鱼缸提供了很大的便利。
1 系统总设计
该设计是以STC89C51 单片机芯片为整体控制中心,总体设计框图如图1 所示。由超声波测距模块、LCD 液晶显示模块、按键电路模块、以及水位高度测量电路、报警电路等结构组成得以实现鱼缸水循环系统。该设计实现了实时监测显示鱼缸水位高度,并兼具两种控制鱼缸水位的模式:自动模式、手动模式。
图1 总体设计图
自动模式主要适用于无人看守鱼缸并需要实时向鱼缸里加水情况,在无人看守下,可以设定系统为自动模式。背部过滤设计的鱼缸水分蒸发较快,由于养鱼者没有及时向鱼缸添水,可能会导致过滤系统烧坏。在自动模式下,利用软件编程可以设置最高水位值和最低水位值,也可以通过单片机上设置按键改变水位高度设定值,当鱼缸水分蒸发低于设定最低值时,系统自动报警,红灯指示灯亮同时注水水泵工作,向鱼缸里加水。手动模式更适用于清理鱼缸时自动换水情况,在手动模式下,实时显示鱼缸液位高度,但是报警电路不工作,当鱼缸需要换水时,可以切换成手动模式,按下设置键选择排水,当鱼缸水抽净后通过按键控制而停止抽水,再按下设置键选择注水,由此实现了自动水循环过程。
2 硬件设计方案
根据上述对系统的设计要求,具体实施过程与元器件选择如下:
2.1 单片机最小系统:首先考虑系统应有掉电保护的功能,所以在选取单片机上选择了内部含有EEPROM 的存储空间的芯片[1],对每次设定好的水位数据值进行记忆存储,在单片机第二次开机时,系统首先读取EEPROM的上一次记忆存储值显示在屏幕上,不会因为突然掉电、上电改变高度值从而影响鱼缸水位。由于51 系列单片机内存为4K 可以满足鱼缸整体程序的存储空间,加之成本低、可在线编程下载、可靠性高、市场应用高的特点,综合决定选取STC89C51 为主控芯片。
最小系统还包含了电源电路、复位电路和时钟电路。考虑到51 单片机的工作电压是5V 左右,本次供电方式采用5V 移动电源供电。对于时钟电路主要是单片机晶振的选取,由于本次设计对系统的实时性要求不高,再考虑到功耗,成本的问题时,11.0592M晶振足以满足系统需求。
2.2 显示模块:由于设计要求需要,显示模块需要显示实时鱼缸液位高度、显示设置的液位最高值和最低值以及模式状态,显示内容较多。LCD1602 液晶显示屏完全可以符合设计需求。LCD1602 的八位数据端口(D0-D7)分别连接单片机P0.0-P0.7端口,RS、R/W、使能端E 分别连接单片机P1.0-P1.2 端口,经过软件编程对液晶显示屏控制后,在液晶屏第一行显示模式状态和水位高度,第二行显示液位设置最高值最低值高度。
2.3 超声波测距模块:此模块是设计的核心,主要功能是实时测量液位高度。对于测量液位高度,国内外有二十几种检测方式,如电阻式、光纤式液位测量等[2],最终选取超声波测量主要考虑的是尽量不选择在鱼缸的水中放入传感器,而超声波测量方法是非接触式测量[3],利用超声波脉冲反射和脉冲反射回波进行相应计算得到测量结果。
超声波模块选取的是HC-SR04,其最大探测范围是4m,如图2 为超声波模块接口图,GND、VCC 分别接地和5V 电源,Trig为控制端口连接单片机P2.6 接口,工作时需要单片机给该端口一个高电平信号,超声波发射端口会循环发出40KHz 频率方波[4],Echo 为接收端口连接单片机P2.7 接口,当接收端接收到超声波返回信号会将Echo 输出高电平。通过单片机内计时功能得到往返时间t1,超声波在空气中传播速度V 为340m/s,则水面到发射器的距离为S=Vt1/2,进而可以得到鱼缸水位高度。
图2 超声波模块接口
2.4 按键模块:有三个功能按键,分别是设置键、水位加、水位减按键分别连接单片机P1.3、P1.4、P3.5 接口,设置键主要是切换自动模式和手动模式。手动模式下,显示屏显示“A”,当按下水位加按键,注水水泵开始工作给鱼缸加水,当按下水位减按键停止加水;当按下水位减按键,排水水泵开始工作给鱼缸抽水,当按下水位加按键停止抽水;在自动模式下显示屏显示“H”和“L”,在“H”界面下通过水位加和水位减按键可以调节最高水位值,在“L”界面下通过水位加和水位减按键可以调节最低水位值。
3 系统软件设计
本设计是以51 单片机为基础,结合上面阐述的硬件设计,以C 语言作为编程语言,采用模块化方式进行程序设计。主要分为三个功能模块:主程序模块、EEPROM数据记忆存储模块、液晶显示模块构成。
其中主程序流程图如图3 所示,有三个函数构成,第一部分是系统初始化函数,主要是单片机上电后系统开始运行时设置各模块的初始值。第二部分是延时函数,主要用在按键电路的延时去抖中。第三部分是实时液位高度检测函数,利用单片机内部定时器计数的功能得到time1,机器周期时间T1 为1/11.0592×12μs=1.08μs 进而得到超声波往返的时间t1为1.08×time1μs,由于t1为声波的往返时间,计算距离时的时间应该为t1/2, 进而得到超声波发射器与液体高度的距离S1,则S1=vt=346×t1/2=1.87×time1/100cm,利用尺子量出超声波模块到鱼缸底部的距离S2,其为定值,则鱼缸实时高度S 为S2-S1。
主程序流程图具体分析如下:首先单片机上电,系统初始化,在EEPROM存储空间中读取上一次设置的水位最高值和最低值显示在液晶屏幕上;开启定时计数功能;进入液位检测函数中,得到鱼缸水位高度值;判断此时的工作模式是手动还是自动模式;如果是自动模式,继续判断液位高度是否在设置值范围内,如果在,则显示液位高度,如果不在设置范围内,则相应的排水、注水水泵工作,同时指示灯亮,蜂鸣器报警;如果在手动模式下,关闭报警电路并判断是否有加水键和减水减按下,如果有则进行相应操作,如果没有显示鱼缸水位高度值。
4 结论
本次设计在keil 编程调试和proteus 软件仿真后均得到预期值,经过实物测试得到该方案可行,可以实时监测鱼缸水位高度,并实现自动化水循环和液位高度控制的功能,本次设计是电子技术于测量领域结合应用在居家生活中,还可以在多方面进行提高,比如加上水温控制,实时监测鱼缸内氧气浓度等功能,这样一个智能鱼缸系统会更加完善。
图3 主程序流程图