基于单片机控制的喷淋系统设计*
2024-03-08蒋正忠
蒋正忠
(南宁学院智能制造学院,广西 南宁 530200)
室内花、草、盆栽等植物得不到及时的水分补充,很有可能就会枯死。为此,笔者设计了一款基于单片机控制的喷淋系统。该系统使用单片机的控制功能,用户可以手动控制喷淋。借助电脑端的串口助手,用户也可以根据自己的实际需求灵活地设置喷淋时间和喷淋时长,使用灵活方便。
1 喷淋系统硬件方案设计
喷淋系统硬件由电源系统模块、单片机系统模块、按键模块、电磁阀水阀驱动模块、喷淋管路系统模块等组成[1]。喷淋系统硬件组成如图1所示。
图1 喷淋系统硬件组成图
1.1 电源系统模块
系统电源电路如图2 所示。其中,图2(a)为电源指示电路,图2(b)为5 V 稳压电路。来自外界的24 V 电源通过图2 中的P3 接线端子接入本系统。24 V 电源一方面直接驱动喷淋用的电磁阀水阀,一方面通过图2(b)中的稳压电路输出给单片机控制系统[2]。
图2 电源系统
1.2 单片机系统模块
单片机系统是整个控制系统的核心,在本系统中,单片机采用宏晶STC32G12K128。这是一款国产的8051内核的32位单片机,其内部自带EEROM区可用于存储本系统的自动喷淋数据参数。其成本低,外围最小系统电路简单,非常有利于简化电路、提高系统的可靠性。单片机系统电路原理图如图3 所示。其中,P1 模块用于程序烧录,K1、K2、K3 连接按键模块,DCF 控制电磁阀水阀驱动模块,RST、DAT、CLK控制时钟模块,RX、TX一方面用来烧录程序,另一方面用来接收来自上位机的系统运行方式控制指令[3]。
图3 单片机系统
1.3 按键模块
按键模块如图4 所示,包括K1、K2、K3 三个按键,其中K1 为自锁按键,K2、K3 为自动回弹按键。在系统中,各按键的功能定义为:K1 按下表示系统处于自动运行模式,K1 弹起表示系统处于手动运行模式。在自动运行模式下,K2、K3按键失效。在手动运行模式下,K2为启动喷淋按键,K3为停止喷淋按键。
图4 按键模块电路
1.4 上、下位机信号调理模块
用户可以通过计算机端串口软件下发指令,设置喷淋系统在自动模式下的运行动作。在上、下位机实现数据信息交换的途径上,系统采用的是上位机计算机端的通用USB 接口与下位机端标配的UART 接口。由于USB 接口与UART 接口互不兼容,系统通过CH340 芯片实现如上两接口数据的转换,具体的硬件电路如图5所示。电路板上采用Micro USB接口与上位计算机连接。
图5 上、下位机信号调理模块电路
1.5 时钟模块
在自动运行模式下,系统需要根据用户预先设定的动作指令确定在每周的哪几天的几时开始喷淋,并控制喷淋的时长[4]。系统通过DS1302 芯片获取实时的日历信息,具体电路如图6 所示。单片机通过I/O 口模拟实现IIC 通信功能,从而实现与DS1302 芯片的IIC 接口通信,最终完成时钟芯片日历信息初始化和日历信息的实时获取。在整个系统掉电后,图6电路中的电池B1 可以继续为DS1302 提供电力,这样DS1302 中的日历信息在外界正常或意外掉电后均不丢失,从而为喷淋系统的正常喷淋工作提供可靠的时间保证[5]。
图6 DS1302实时时钟模块电路
1.6 电磁阀水阀驱动模块
系统通过电磁开关阀控制喷淋系统开始喷淋作业和停止喷淋作业。如图7 所示的阀门是一个常闭型电磁阀水阀,工作电压为DC24 V,功率8 W。电磁阀水阀的两头接口为内螺纹,在其两头各接一个如图8 所示的螺纹直通组成电磁阀水阀组件,该水阀组件一头连接家用自来水水源,另一头连接喷淋管路系统。单片机不能直接带动该电磁阀工作,为了提高系统的驱动能力,保证系统能长时间大电流驱动,电路中采用以AOD4185 的P 型MOS 管为主导的功率驱动电路,详细原理图如图9 所示。在图9 所示的电路中,DCF 与单片机I/O 口连接,接线端子P17 与图7 所示的电磁阀水阀的工作电源线连接。当DCF 被控为高电平时,晶体管Q13 截止,晶体管Q14 的基极与VCC打开。此时,在下拉电阻R8 的作用下,晶体管Q14的基极的电平被拉为低电平,所以Q14 截止。由于此时Q14 的集电极,即PMOS 管Q15 的栅极与GND断开,在上拉电阻R5 的作用下,Q15 的栅极电压被拉高为24 V,此时PMOS 管Q15 的源极与栅极无压差,Q15 的源极与漏极断开,P17 不得电,电磁阀水阀关闭,喷淋管路不工作。当DCF 被控为低电平时,晶体管Q13 的发射极与集电极导通,电阻R7 与R8 串联于正负极之间,适当增加电阻R8 在R7 与R8 之和中的比值,可以保证Q14 的基极电位高于Q14 的开启电压,从而使晶体管Q14 导通。由于此时Q14 的集电极,即PMOS 管Q15 的栅极与GND 接通,此时PMOS 管Q15 的源极与栅极产生24 V的压差,Q15的源极与漏极接通,P17 得电,电磁阀水阀打开,喷淋管路开始喷淋工作[6]。
图7 电磁阀水阀
图8 螺纹直通
图9 电磁阀水阀驱动模块电路
1.7 喷淋管路系统模块
喷淋管路系统由图10 中的转换接头、喷头、堵头、胶管组成。在具体连接时,喷头可以连接多个,喷头的具体连接数量取决于用户的实际需求量。在转换接头与喷头、喷头与喷头之间用胶管连接。转换接头与喷头、喷头与喷头之间的胶管长度由用户自行根据实际需要用一长胶管裁剪而成。在最后一个喷头的下一级出口处,连接一个堵头,便完成了整个喷淋管路系统的组装工作。喷淋管路系统的所有连接均采用快速连接头,连接简单、方便。
图10 喷淋管路系统配件
2 喷淋系统软件设计
系统软件主题分为两大部分,分别是喷淋工作处理程序和串口中断设置程序。喷淋工作处理程序是按照预先约定的工作规则实时执行喷淋任务的开启和停止动作。串口中断设置程序是处理来自上位机的设置指令,完成喷淋任务工作规则的重新设置。
2.1 喷淋工作处理程序
喷淋工作处理程序由主函数、手动模式函数、自动模式函数以及电磁阀控制函数组成。系统上电后,首先读取EEROM 内的自动工作参数信息,为自动工作模式做好初始化准备。紧接着系统进入主程序的无限循环。在无限循环中,程序会不停地查询图4 工作模式中控制按键K1 的按放情况,根据K1 是否被按下去执行手动控制代码或自动控制代码。主函数处理流程图如图11 所示。在手动模式下,程序依次扫描K2、K3 是否被触发,如果K2 被触发,程序将全局变量sign 赋值1,然后进入电磁阀控制函数。如果K3 被触发,程序将全局变量sign 赋值0,然后进入电磁阀控制函数。手动模式函数处理流程图如图12 所示。程序如果进入自动处理阶段,每一次进入,首先会从DS1302 芯片读取当前的实时时间信息。然后将此时间信息与用户设定喷淋时段信息进行比对,如果当前时间在用户设定的喷淋时段内,就会将全局变量sign 赋值1,否则将全局变量sign 赋值0。然后程序进入电磁阀控制函数。自动模式函数流程图如图13 所示。电磁阀水阀是否动作,是以全局变量sign 作为信息传送纽带的。每当进入电磁阀控制函数,程序先读取全局变量sign 的当前数值,如果sign 为1,则开启电磁阀,否则关闭电磁阀[7]。电磁阀控制函数流程图如图14所示。
图11 主函数处理流程图
图12 手动模式函数流程图
图13 自动模式函数流程图
图14 电磁阀控制函数流程图
2.2 串口中断设置程序
系统除了运行正常的喷淋启停控制程序,还会执行串口中断处理程序。单片机系统从串口接收自动喷淋控制参数,这些参数数据包括三类,分别是每次喷淋时长、每次喷淋的开始时间、每周有哪些天需要喷淋[8]。这三类信息都存储在STC32G12K128 单片机自带的EEROM 内。烧录程序时,通过宏晶官方提供的烧录软件stc-isp 分配给单片机1 kB 的EEROM空间。每次喷淋时长信息占一个字节,单位为分钟,存储位置地址:0X000A。每次喷淋的开始时间为24小时制,精确到分。具体表现为喷淋在几时几分开始。其中的开始时信息占一个字节,单位为小时,存储位置地址:0X000B。分信息占一个字节,单位为分,存储位置地址:0X000C。每周有哪些天需要喷淋信息在地址为0X000D 开始的连续空间内存储。存储规则为:地址0X000D 存放每周有几天需要喷淋,从0X000E 开始的每一个字节空间内存放每周的周几需要喷淋。比如,如果在0X000A 位置存储的值为0X14,则表示每次喷淋的时长为20 分钟。开始的每一个字节空间内依次存放了0X14、0X08、0X28、0X03、0X02、0X05、0X07。则表示每次喷淋时长为20 分钟,喷淋开始时间为8:40,在每周的星期二、星期五和星期天才会有喷淋作业[9]。
用户通过上位机串口发送自动喷淋控制参数时,每次喷淋时长的发送规则为:A4 01 +每次喷淋时长。每次喷淋开始时间的发送规则为:A4 02 +喷淋开始时+喷淋开始分[10]。每周有哪些天需要喷淋的发送规则为:A4 03 +周喷淋的天数+星期?+星期?+…。其中,用1表示星期一、2表示星期二…。
有了上述规则,串口中断接收数据的处理流程是先接收一帧以A4 开头的完整数据,一帧数据接收完成后,通过数据帧的第二个字节判断数据的类型,然后根据数据类型将数据帧余下的数据按照上述的约定存储到EEROM指定的空间内。
3 结语
本文设计了一款基于单片机控制的喷淋系统,有详细的硬件设计图及其原理阐述。软件设计方面有深入的流程分析和完整的数据通信协议规则。借助电脑端的串口助手,用户可以手动控制喷淋,可以根据自己的实际需求灵活地设置喷淋时间和喷淋时长,使用灵活方便。