基于STM32的自动灌溉控制系统设计*
2023-07-11董佳王志强盖素丽檀改芳吴青峰
董佳,王志强,盖素丽,檀改芳,吴青峰
(1.河北省科学院应用数学研究所,石家庄市,050081;2.河北省信息安全认证技术创新中心,石家庄市,050081;3.太原科技大学电子信息工程学院,太原市,030024)
0 引言
我国人口约占世界的20%,但淡水资源只有全球的5%~7%,水资源短缺已对我国经济可持续发展和生态平衡构成了严重威胁。不管是相对于农业用水量还是相对于全国用水量,农业灌溉用水都是真正的用水大户。因此,节水灌溉研究一直是一项重要而又紧迫的任务[1]。目前我国农田的灌溉方式仍然以大水漫灌为主,灌溉效率低、水资源浪费严重、劳动强度大、投入产出比低。随着农业集约化的不断推广,土地流转和家庭农场经营模式的不断扩张,发展现代农业节水高新技术逐步成为保障我国人口高峰期食物安全、水安全、生态安全及整个国家安全的重大战略[2]。
近年来,国内外专家对自动灌溉控制系统的研究主要聚焦于两个方面,一是针对具体的农作物,利用专家控制算法及管理系统,实现自动灌溉,达到节水提质的目的;二是针对温室、农田等特定的环境,利用智能控制算法,实现特定环境下的灌溉优化控制。徐凯等根据葡萄的需水规律,基于模糊控制算法实现葡萄的精准阈值灌溉,不仅减少灌溉用水量,而且有效提升了葡萄品质[3]。王兴旺等[4]基于无线传感网络设计了一套针对水晶梨的灌溉控制系统,利用PID-LPF控制算法,提升了灌溉精度和效率及水晶梨外观品质和营养品质。Shinde等[5]对甘蓝分别使用滴灌和微喷灌等灌溉方法进行试验对比,得出甘蓝在不同灌溉条件和灌溉水平下的表现规律,找出了最适宜的作物灌溉方法。赵亮等[6]针对温室环境下的灌溉系统,基于自适应Fuzzy-PID控制算法,实现了灌溉的自动化及智能化。
本文针对农田中不同作物的分片种植场景,设计了一种基于STM32单片机的自动灌溉控制系统[7-13],能够根据不同作物的需水量和施肥量,实现精准灌溉,提升了灌溉系统的自动化、智能化水平,达到了提高水资源利用率、降低劳动强度、节省成本的目的。
1 系统总体设计
本系统由中心控制模块、水泵控制模块、施肥泵控制模块、电磁阀控制模块、人机交互模块组成。通过人机交互模块输入初始参数,对系统进行初始化,人机交互模块下发控制指令给中心控制模块,中心控制模块通过数字IO或通信指令驱动水泵、施肥泵、电磁阀控制模块,实现灌溉设备的控制和系统参数采集;中心控制模块以通信指令的方式给人机交互模块反馈系统参数,实现系统参数的监测。系统总体框图如图1所示。
图1 系统总体框图Fig.1 Overall system block diagram
2 系统硬件设计
2.1 中心控制模块设计
中心控制模块作为系统的逻辑中心,选用STM32F103VET6芯片作为控制器,该芯片使用Cortex-M3作为硬件架构,采用DC3.3 V电压供电,具有512 kB Flash,64 kB RAM,最大时钟频率高达72 MHz,输入/输出端口为80个,有多种外设接口,能够满足系统设计需求。该模块的主要电路包括控制器电路、供电电路、CAN总线收发器电路。
控制器原理图如图2所示。
该模块使用控制器的32个输入/输出管脚驱动电磁阀控制模块;使用PD5和PD6管脚通过UART方式与人机交互模块建立通信,接收控制指令,上传系统参数;使用PA11和PA12管脚连接CAN总线收发器,与水泵控制模块和施肥泵控制模块建立通信,下发控制指令,采集系统数据;采用外部晶振提供8 MHz时钟信号,经过控制器内部倍频后,使控制器在72 MHz高频下工作;设置复位按键K1,当按下K1时,将NRST管脚的电平拉低,控制器复位。
采用UA78M33CKVURG3稳压芯片将系统供电电压DC24 V电压转换为控制器所需供电电压DC3.3 V,电压变换电路如图3所示。
图3 电压变换电路Fig.3 Voltage conversion circuit diagram
采用SN65HVD230D芯片作为CAN总线收发器,收发器的TXD、RXD分别与控制器的PA12和PA11管脚连接,在收发器的输出端传输线两端并联一个120 Ω的电阻,可以减小传输过程中的信号反射,提高通信稳定性[14-15]。CAN总线收发器电路如图4所示。
图4 CAN总线收发器电路Fig.4 CAN bus transceiver circuit diagram
2.2 施肥泵控制模块设计
施肥泵控制模块与水泵控制模块的硬件设计完全相同,通过设备通信地址来区分控制对象。该模块用于控制施肥泵的启停及运行状态的监控。该模块采用STM32F072CBT6作为控制器,设计了控制器电路、数字量输入/输出电路、模拟量输入/输出电路、供电电路、CAN总线收发器电路。数字量输入/输出电路如图5所示。模拟量输入/输出电路如图6所示。
图5 数字量输入/输出电路Fig.5 Digital input/output circuit diagram
图6 模拟量输入/输出电路Fig.6 Analog input/output circuit diagram
数字量输入/输出电路用于采集变频器的运行状态和启动变频器,数字量输出电路选用NUD3124LT1G负载驱动芯片,内置MOSFET、ESD保护和稳压二极管,当管脚G接收到控制器输出的电压驱动信号时,驱动芯片内部MOSFET的漏极和源极导通,即驱动芯片的管脚D和管脚S导通,继电器线圈的A2端与地导通,线圈吸合,常开触点K1闭合,驱动信号送达变频器。变频器的运行状态反馈信号是AC220V电压信号,因此数字量输入电路选用PA2501L-1高隔离电压光耦进行强弱电信号隔离,为了降低光耦被击穿的风险,减小电路功耗,在反馈电压输入端增加二极管V13和稳定电压为100 V的稳压管V11,V13的单向导电性使得光耦输入端的信号只有正弦波的正半波,V11的稳压特性,使得流过光耦输入端的电流不到3 mA。
模拟量输入/输出电路用于采集肥液流量和设定变频器的给定运行频率,输入输出量均为DC4~20 mA 电流信号。模拟量输入电路选用AD8542ARZ作为A/D转换芯片,该芯片有两路差分输入,12位采样精度,具有极低的输入偏置电流,适用于具有较高源阻抗的应用。采用该芯片将DC4~20 mA电流信号变换为DC0~2.7 V电压信号送到控制器,在电路中增加V7、V8齐纳二极管,防止过电压[16-17]。模拟量输出电路选用XTR115U芯片,将控制器输出的DC0~3.3 V 电压信号变换为DC4~20 mA电流信号,利用该芯片VREF管脚的DC2.5 V电压,产生DC4 mA的偏置电流,选用B2424LS-1WR2隔离电源模块为XTR115U芯片提供DC24 V电压,保证供电的稳定性。
2.3 电磁阀控制模块设计
电磁阀控制模块选用ULN2803AN达林顿管驱动芯片[18],该芯片适用于低逻辑电平数字电路和较高的电流/电压之间的接口。驱动芯片接收中心控制单元输出的DC3.3V电压信号,使输出端与地导通,继电器线圈吸合,指示灯点亮,常开触点闭合,控制电磁阀导通。电磁阀控制电路如图7所示。
图7 电磁阀控制电路Fig.7 Solenoid valve control circuit diagram
3 系统软件设计
系统软件设计包括上位机部分和下位机部分,上位机部分软件设计主要是人机交互界面的设计,下位机软件设计主要包括逻辑控制程序和通讯程序的设计。
3.1 下位机主程序设计
系统上电后,首先进行初始化,对参数进行设置,判断系统的运行状态,确保系统可以正常工作。初始化后,运行主程序,实现水泵、施肥泵、电磁阀的控制及运行状态采集,故障判断与处理,通信及协议解析等功能。系统主程序流程图如图8所示。
图8 主程序流程图Fig.8 Main program flowchart
3.2 上位机界面设计
上位机作为人机交互部分,用来输入控制指令,监测系统的运行状态。通过上位机可以设定系统的运行参数,实现现场设备的手动单控、手动组控、计划轮灌三种控制模式,并能够监测系统的运行状态。人机交互主界面如图9所示。
图9 人机交互主界面Fig.9 Man-Machine interface
4 系统功能测试
系统设计完成后,基于实验室CS4000过程控制试验装置对系统进行测试。试验装置有6个电磁阀、1个水泵、1个压力传感器、1个变频器、1个流量计、1个电动调节阀。利用这套试验装置对系统进行测试,如图10所示。
设定主管路初始压力为50 Pa,电动调节阀初始开度为60%,施肥泵流量为0.05 m3,通过调节支路中的手动阀门来改变主管路中的压力,测试系统的调节能力;当肥液流量达到设定值后,电动调节阀开度应变为0。经过测试,电磁阀能够正常开闭;系统受到扰动后,经过一定的过渡时间,主管路仍能保持设定压力;肥液流量达到设定值后,电动调节阀关闭,即开度变为0,证明系统的功能测试合格。
通过设定不同主管路压力,测试系统模拟量输入输出精度,4~20 mA对应0~50 Pa,测试数据如表1所示,模拟量输入输出对比曲线如图11所示。
表1 模拟量测试数据Tab.1 Test data of analog quantity Pa
图11 模拟量对比曲线图Fig.11 Comparison curves of analog quantity
在测试试验中,常温下选取10个压力测试点,分别测量模拟量输出值,并与理论输出值进行比较,根据数据分析,模拟量理论输出值与实际输出值的最大误差为7.5%;压力传感器输出值与模拟量输入值的最大误差为3.7%,从图11中可以观察到,模拟量输出值最大误差发生在压力值为0 Pa时,模拟量输入值最大误差发生在50 Pa时,最大误差在允许范围内,满足系统要求。
5 结论
针对大规模农田分片种植不同作物的灌溉需求,设计了一种基于STM32的自动灌溉控制系统。该系统包括4个模块,其中电磁阀模块、水泵控制模块、施肥泵控制模块可进行扩展,能够满足不同面积农田的灌溉需求;通过人机交互界面可实现电磁阀的分组,根据专家经验设定论管计划,实现不同作物的精准灌溉。测量10个压力测试点的数据,模拟量理论输出值与实际输出值的最大误差为7.5%;压力传感器输出值与模拟量输入值的最大误差为3.7%。该系统提升了灌溉的自动化和信息化程度,提高了水资源的利用率,降低了劳动强度,满足大规模农田分片种植的灌溉需求,具有一定社会效益和经济效益。