基于Arduino 的智能雨量计校验系统的设计与研究
2020-11-11吴金玲
吴金玲
(沈阳工程学院 工程训练中心,辽宁 沈阳 110136)
1 系统的总体设计与要求
本雨量计校验系统在整体设计上主要包括用户输入部分、雨量控制(模拟)部分、实时显示部分及故障检测部分等,主要构成如图1所示。
图1 智能雨量计校验系统主要结构
用户可以通过键盘输入所需要的雨量模拟值,液位检测模块负责检测雨量模拟储存箱的液位信息,当雨量模拟储存箱的液位低于最低设定值时,单片机给出相应的控制信号,报警模块启动报警,并在上位机的显示页面上显示相关信息以便提醒用户及时加水;当液位高于设定值时,系统保存当前液位信息。首先单片机接收到用户的输入值后,对数据进行计算处理;然后输出相应的控制信号给电机驱动模块,在驱动电路的作用下,步进电机将带动水阀的开与合,实现雨量模拟,并对系统实时监测;最后给出校验结果,即是否合格。
当用户输入设定的雨量模拟值后,Arduino 单片机通过设定的算法给出校正数字量和相应的阀门开度、放水时间以及液位下降目标值,继而输出控制信号驱动步进电机打开阀门,当达到放水时间时,单片机立刻给出控制信号,随即电机驱动模块驱动步进电机反向运行将阀门关闭。系统对水阀的开合程度进行实时监控,当发现故障时会给出相应的提示与处理。在阀门打开并进行雨量模拟的过程中,系统会记录并统计被检定雨量计的输出信号。在雨量模拟结束之后,系统会显示被检定雨量计的测量值,并对测量结果进行自动校验。
2 系统的主要硬件设计
本文所设计的智能雨量计校验系统的硬件主要包括Arduino UNO 板、液位检测模块、电机驱动模块、显示存储模块及监视报警模块等。
2.1 Arduino UNO 系统简介
该系统使用的是UNO 版本Arduino单片机,以ATmega328 MCU 主控芯片为核心的处理器,具有6 路模拟输入,14 路数字输入/输出口,其中6 路可用于PWM 输出,1 个USB 接口,1 个16 MHz 晶体电路,1 个电源接口,1 个ICSP leader 串行编程端口和1 个复位按钮,可以非常简单、方便地进行各种信号地采集和控制回路的扩展[1]。Arduino UNO单片机实物如图2所示。
图2 Arduino UNO单片机
2.2 液位检测模块
由于雨量模拟储水室要保持足够的水量,所以必须设置液位检测模块,可以随时检测储水室的液位信息。本系统使用的是AJ-SR04M-T-X 超声波测距模块,其理论探测距离为20 cm~800 cm,在保证较高精度时其探测距离为20 cm~250 cm。该模块与外部连接的有4 个引脚:直流电源端VCC、接地端GND、输入启动信号端Trig 及输出测量信号端Echo[2]。将Trig 和Echo 引脚分别接至Arduino系统的数字信号I/O 口8 脚和9 脚。数据采集及处理具体过程如下:
1)Arduino 控制I/O 口8 脚输出1 个大于10 μs的高电平,触发模块发出40 k的超声信号;
2)在超声信号发出时,I/O 口9脚读入1个持续的高电平,直到检测到回波;
3)测量距离=(I/O 口9 脚高电平持续时间*340 m/s)/2。
2.3 步进电机驱动模块
雨量模拟的开始、停止以及模拟雨强大小均需要水阀来控制,而水阀的开启、闭合以及开启程度是需要步进电机来控制的。步进电机可以将电脉冲信号转变为线位移或角位移,能够实现非常精确的定位和速度控制。驱动电路的输入端会一直检测有无脉冲信号,当没有信号的时候,步进电机的转子不动;当输入端接收到脉冲信号时,转子便以固定的角度(称之为步距角)转动[3],步距角决定了步进电机完成一转所需要的步数,而内部绕组的通电顺序则决定了步进电机的转动方向。
本系统采用的电机驱动芯片是L298N,它是一种驱动能力很强的集成电路,并且体积小、启动性好。其硬件电路如图3 所示,其中续流二极管D1、D2、D3 和D4 构成的“H 桥”作为L298N 的辅助电路,Arduino 单片机控制器通过ENA 对电机进行调速,INT1和INT2分别控制电机的转向与制动。
图3 步进电机驱动电路
3 系统软件设计
3.1 系统总体流程设计
根据国家气象局出台的相关雨量计检定规程,雨量计检定一般设置小雨、中雨和大雨3 种降雨强度[4],本雨量计校验系统提供小雨(0.5 mm/min)、中雨(1.0 mm/min 或2.0 mm/min)、大雨(4.0 mm/min 或5.0 mm/min),共5 种模拟雨强,模拟的雨量大小为10 mm 或30 mm。目前,我国采用的雨量计承水器直径d大小为20 cm,因此雨量大小h为10 mm时,对应的总降水量为
雨量大小为30 mm时,对应的降水量为942 mL。
已知雨量计承水器直径大小为d,雨量大小为h,放水时间为t,可得雨强大小:
水流量大小为
该雨量计校验仪在不同雨强大小(当模拟降雨量为10 mm 和30 mm 时)下的放水时间,分别如表1和表2所示。
表1 模拟降雨量为10 mm时的放水时间
表2 模拟降雨量为30 mm的放水时间
系统的整体检定流程如图4 所示。系统上电后,首先检查水阀和报警灯是否处于关闭状态,如果在开始前水阀未关闭,可能会因为漏水而造成误差,若检测到阀门没有关闭,则发出指令关闭阀门;校验开始前必须确保雨量模拟储水室内的水量充足,因此需要启动液位检测模块,若检测到雨量模拟储水室的水位低于最低设定值,则发出警报,提醒用户及时加水,若检测到水位高于设定值,则保存当前液位值,继续向下执行。用户通过上位机选择所需要模拟的雨强(0.5 mm/min~5.0 mm/min)和降雨量大小(10 mm/30 mm),系统读取到用户所输入的数据后,经过一系列换算得出总放水时间和步进电机的步距角,继而控制步进电机打开阀门并计时,当达到设定的总放水时间时,控制阀门关闭。雨量模拟过程完成以后,系统读取被校验雨量计的输出信号,从而计算出被校验雨量计的误差值,并显示测量值和误差值,同时给出判断结论,即被校验雨量计是否符合国家标准规定的精度要求。
图4 系统总体流程
3.2 步进电机流量控制程序
Arduino UNO 系统读取到用户输入的模拟雨强值后,通过计算,输出相应的控制信号,电动机驱动模块接收到控制信号,便会驱动步进电机正传、反转和停止并控制步距[5],阀门在步进电机的带动下实线开启和闭合,从而通过不同的开启程度控制水量。具体控制流程如图5所示。
图5 步进电机流量控制流程
系统依据模拟雨量大小h及模拟雨强大小p,计算出相应的总模拟降水量大小vi,进而得到驱动步进电机转动相应的步数Ti,最终使模拟水量均匀地排出。当用户所选择的模拟雨强较大时,步进电机要增加转动步数,阀门开启程度加大,从而加大实时流量,放水时间随之缩短;反之则减少转动步数,阀门开启程度减小,从而减小实时流量,放水时间随之延长。当计数时间达到目标值时,即达到要求“降水量”时,单片机及时驱动步进电机反转,迅速并精确地将水阀关闭。
4 结语
与传统的人工手动校验方式相比,本文所设计的智能雨量计校验系统自动化程度高,能够有效地避免人为操作误差,该系统结构简单、省时省力、易于维护。今后还需进一步地提高步进电机控制水阀的精度使流量更加均匀、精确,同时不断改进完善各个功能模块,使整个雨量计校验系统更加的稳定智能,检定结果更加精准、可靠。