基于单片机的多功能饮水机设计
2022-09-27马培松陶华伟李益民付麦霞吕宗旺
马培松 陶华伟 李益民 付麦霞 吕宗旺
(河南工业大学,河南 郑州 450001)
0 引言
水是生命之源,人的生活离不开水。在现实生活中,饮水机成为家庭必备的饮水设施。饮水机能有效克服直接喝水或饮用桶装饮用水所带来的不良问题。通过饮水机内部的设备对冷水进行加热,从而能快速地给人们供应热水[1]。
目前,桶装饮水机在市场中已占有一席之地。在无人监视时,部分饮水机仍会对滚水进行加热,不但会造成资源的浪费,严重时甚至会危及人员的生命安全。为了解决上述问题,并引进新功能,通过引入单片机系统对饮水机进行控制,通过监测水位来避免出现空烧的情况,利用超声波测距模块来实现自动出水功能。
1 系统设计方案
本研究设计的多功能饮水机系统(见图1)是利用现代电子技术,通过外加单片机控制模块来对传统的饮水机进行改造,并保留传统饮水机的样式。本研究设计的饮水机利用外围回路来实现温控、照明控制、温度监测和显示、自动出水等功能。
图1 多功能饮水机系统
2 系统硬件电路设计
2.1 主控电路设计
硬件电路以AT89C51芯片为核心,该芯片内部有4 kB的FLASH存储空间,芯片外部有40个引脚(见图2),4个8位的并行口(即32个并行接口),其内部有2个16位的定时计数器(Timer0、Timer1)以及2个中断控制器。通过AT89C51芯片自带的I/O口来外接图1中的各个模块,并使用Keil软件进行代码的编写,完成系统的设计需求。
图2 AT89C51芯片引脚图
2.2 矩阵键盘设计
本研究所使用的开发板最大外接的独立键盘数量为4个。根据实际需求来选择按键数量更多的矩阵键盘,矩阵键盘通过8个I/O口连接到单片机上。根据实际需求,设置有手动控制热水水温的上限按钮、手动加热按钮、自动加热水温的下限按钮、电源开关按钮、手动出水按钮等按钮。通过手动控制加热水温的上限按钮来设置加热时候热水的温度,该温度值应该大于系统自动加热时热水水温的下限。当按下手动加热按钮后,该多功能饮水机会将水加热到手动控制热水水温的上限值;通过自动加热水温下限按钮可实时调整热水的下限温度,让热水温度保持在一定的范围内;手动出水按钮是自动出水模块的备用方案,当自动出水模块出现故障时,可按动手动出水按钮让饮水机出水。
2.3 温度检测模块
温度检测模块使用的是DS18B20芯片,其测温范围为-55~125℃,其在-10~85℃内的测量误差小于0.4℃,基本符合饮水机的水温监测需求。同时,该芯片具有体积较小、抗干扰能力强等优点,且电路连接方式比较简单,使用单总线通信[2]。DS18B20芯片内部含有EEPROM,通过软件配置可对芯片的转换精度及报警温度进行设定,设置完成后,即使在系统因突发情况而掉电,EEPROM芯片的数据也不会丢失。DS18B20外部有三个引脚(见图3),分别为GND、DQ、VDD,三者的功能分别是接地、单总线通信接口和接5 V电源。根据要求,该芯片通过VDD连接电源时要外接一个上拉电阻,这样才能正常使用。将DS18B20芯片连接到主控电路时,在软件层根据协议对其进行编码,便可将DS18B20测出的存储在高速缓存器内部的温度数据反馈给单片机系统,方便后续操作。
图3 DS18B20芯片引脚图
2.4 液晶显示电路设计
该系统可在显示模块显示当前水温、手动加热时设置的水温、恒温状态下自动保持的温度等数据。在考虑温度显示功能及用户体验、硬件成本的前提下,本研究选用LCD1602液晶显示屏来实时显示当前水温及水桶内的剩余水量。该模块外部共有16引脚(见图4),有3个电源引脚和1个接地引脚,其余引脚均是输入和输出引脚。通过对该模块进行编码,可将DS18B20读出的温度在液晶显示模块上实时显示出[3]。
图4 LCD1602芯片引脚图
2.5 超声波测距与水位检测电路设计
超声波测距模块是实现系统自动出水功能的关键,该系统的热水出水口处及常温水出水口处都配有HC-SR04超声波测距模块,该模块外部有四个引脚(见图5),分别为VCC(外接5 V电源)、Trig(输入触发信号)、Echo(传出超声波信号)、Gnd(接地)。该模块使用I/O口的Trig触发测距功能,在给该引脚一个大于10 us的高电平,之后该模块会发射出8个40 kHz的超声波,并不断检测是否有返回的信号,可测量距离为0.02~4 m。当超声波遇到障碍物时会返回,通过I/O口ECHO来输出一个高电平,单片机系统通过测量超声波往返的时间(即高电平的持续时间),并通过公式(1)来计算出距离distance,从而判断出水杯是否放在了出水口处。
图5 HC-SR04芯片引脚图
式中:t为高电平的持续时间;v为声速,空气中的音速在1个标准大气压和15℃的条件下约为340 m/s。
当距离合适时,单片机会通过I/O口逻辑控制让外接的饮水机自动出水,并通过AT89C51内部自带的定时器来计算出出水时间,再将此时间乘以每秒钟的出水量,便可实时检测出当下水桶内部的剩余水量,当水位过低时便停止加热[4]。
2.6 AD/DA转换电路设计
自动照明部分采用PCF8591芯片来实现AD转换,该模块具有1个模拟输出、4个模拟输入及供IIC使用的串行总线接口,该模块的最大转换速率由设定的IIC总线的最大速度来决定。该芯片的引脚图如图6所示。PCF8591芯片通过外接光敏电阻可测量外界的亮度变化,当入射光变强时,光敏电阻的电阻值会变小;当入射光变弱时,光敏电阻的电阻值会变大。单片机检测到外界亮度低于一定值时,饮水机外接灯管会自动点亮。
图6 PCF8591芯片引脚图
3 系统软件部分设计
系统软件部分设计主要是使用Keil4软件进行代码的编写,使用单片机I/O口来操作单片机外部外接的PCF8591 AD/DA转换模块、LCD1602显示模块、DS18B20温度检测模块、HC-SR04超声波测距模块、矩阵键盘模块,实现自动出水、水位监控、自动加热等功能。
在给饮水机装上一桶水,系统上电后,单片机内部烧录的程序会控制单片机时刻检测DS18B20探测的外部水温,检测热水温度是否达到设置的热水水温下限值,如果没有达到,在主函数逻辑控制下单片机加热系统对热水进行加热;当达到预设温度时,热水的温度会稳定在附近。当使用水杯接水时,通过内部终端检测HC-SR04超声波模块发射出的超声波的往返时间计算出水杯到出水口的距离。当水杯距离出水口足够近时,单片机就会控制饮水机自动出水。系统温度检测、自动出水功能软件设计框图见图7、图8。
图7 系统温度检测软件设计框图
图8 单片机自动出水功能软件设计流程框图
3.1 超声波测距程序
通过代码对HC-SR04模块Trig引脚赋值10 us以上的高电平,让其发射出8个40 kHz的超声波,芯片开始工作。单片机时刻检测该芯片是否接收到超声波的返回信号。当信号返回时,该模块的Echo引脚会向单片机输送一个高电平信号。通过编程可计算出上述高电平的持续时间,即超声波往返时间长度,并通过公式(1)来计算水杯距接水口的距离。
3.2 PCF8591模块AD转换程序
使用IIC协议写入控制字节,让PCF8591处于AD转换模式,并让其不断接收数据。根据IIC协议,PCF8591的工作通道可选择光敏电阻通道,之后将该模块读取到的数值反馈给单片机。
4 结语
基于单片机的多功能饮水机是利用当下较为前沿的电子技术对传统饮水机进行改进,对传统饮水机缺乏的功能进行补充,方便用户的使用,增加用户使用产品时的幸福感[1]。设计过程中采用的是当下较为普及、价格较低、性能好的硬件设施,从而减少成本支出。本研究设计出的饮水机具有较强的实用性与可开发性,能够为开发者带来良好的经济效益。