基于STM32 的设施农业果蔬运输车称重系统设计
2022-02-21肖志刚索雪松滕桂法
年 贺,肖志刚,索雪松,滕桂法
(1.河北农业大学 机电工程学院,河北 保定 071001;2.河北农业大学 信息科学与技术学院, 河北 保定 071001)
在实际生产中,设施农业种植作物多为果蔬,收获时间较为集中,果蔬易于腐烂变质[1-2]。目前棚种果蔬采摘后先运输到棚外,利用地秤称重后售卖给菜商,数据记录在纸质账薄上,工作过程比较繁琐且工作效率低[3-6]。通过在运输车上加装称重系统不仅可以省却一次搬运过程,提高劳动效率,还可以将果蔬的产量信息发送给云平台,为智慧农业系统的建立提供有力的数据支持[7-9]。为此本文设计了1 种基于STM32 的设施农业果蔬运输车称重系统。
1 系统总体设计
称重系统搭载在电动运输车上,通过加装称重传感器的方式改装车体载物台,使原本只具有运输功能的运输车兼具称重功能。系统主要由STM32、人机交互模块、称重模块、GPRS 模块等组成,并由软件编程实现预期功能。人机交互模块用于显示所称量果蔬重量以及对果蔬种类和大棚号的选择;称重模块完成对果蔬重量的称量,并将数据传输到STM32 中;GPRS 模块将设备接入网络,传输果蔬信息至云服务器。系统的框图如图 1 所示。
图1 系统框图Fig.1 System block diagram
2 系统硬件设计
硬件电路连接图如图2 所示。
图2 系统硬件连接图Fig.2 System hardware connection diagram
硬件部分主要包括供电模块、STM32 主控制器模块、GPRS 模块、称重模块、人机交互模块。
供电电源采用运输车24 V 动力电源,通过LM2596S 型降压模块降压至5 V,直接与人机交互模块、称重模块、GPRS 模块电源端连接供电,与STM32 主控制器模块5 V 电源输入端连接,通过开发板内置AMS1117-3.3 型线性稳压芯片将5 V 电压转换为3.3 V 供电[10]。
主控制器模块采用ALIENTEK MiniSTM32 开发板,板载芯片为STM32F103RTC6 型。
GPRS 模块采用Air800 模块,通过串口方式进行通信,将Air800 模块的TXD、RXD 引脚分别接到STM32 的PA3、PA2 引脚。
称重模块采用YCD-100 kg 压阻应变式压力传感器与HX711 型24 位A/D 转换芯片。
压力传感器的电阻应变片将被测件上的应变信息转换为电信号, A/D 转换芯片接受电信号并将其转换为二进制数字信号传输给STM32 主控制 器[11-13]。YCD-100 kg 压力传感器主要技术参数:综合误差0.02% F.S;安全过载范围150%;使用温度范围 -20 ℃~ +80 ℃。
称重传感器个数根据称重系统用途、秤体需要的支撑点数确定,秤体的支撑点与传感器应具有一一对应关系[14]。对本系统中的长方形载物台,考虑载物台机械结构的稳定性,设计4 个支撑点,采用4 个称重传感器,按中心对称和轴对称原则安装在称重台面下方实现称重[15],传感器摆放位置如图 3 所示。
图3 传感器安装位置Fig.3 Sensor installation location
将4 片HX711 的SCK 引脚分别接在单片机的PB1、PB13、PB5、PB7 引脚,DOUT 分别接在PB2、PB14、PB6、PB8 引脚。
人机交互模块使用5 寸基本型USART HMI 智能串口屏。该屏为800×480 像素4 线精密电阻式触摸屏,并添加了GB312 型字库以及相应背景图片与各种组态控件,设计人机交互界面。利用STM32 的USART1 实现串口屏与主控模块的信息交互,将串口屏的TXD、RXD 引脚分别接到STM32 的PA9、PA10 引脚完成硬件连接。
3 系统软件设计
软件设计包括主控芯片STM32 嵌入式的软件设计和人机交互模块USART HMI串口屏的软件设计。串口屏软件设计在USART HMI 开发环境中进行,实现数据显示与信息输入等人机交互功能。STM32软件设计采用C 语言在keil5 集成环境下进行基于标准库的开发,通过移植FreeRTOS 操作系统实现实时数据处理和实时控制任务。
3.1 数字滤波算法
称重系统使用压阻应变式压力传感器,对所称量物品的重量值进行数据采样。采集过程是先将压力信号转换为电信号,再将电信号转换为数字信 号[16]。在信号转换过程中由于硬件电路本身或多或少存在不可避免的电磁干扰[17],以及随机噪声的存在都会影响测量结果的准确性。使用数字滤波算法排除噪声信号的干扰不但能降低设备的硬件成本[18],而且只要适当改变滤波算法的参数就能改变滤波特性[19]。
本系统采用防脉冲干扰平均滤波法。此方法是连续采集H个数据,将这H个数据按大小排序,取其中间段h个值进行算数平均,把得到的算数平均值作为本次采集到的数据值。既可以剔除噪声信号,又可以对采样数据进行平滑加工[20-21]。原理表示如下:
3.2 称重模块程序设计
主控芯片采集4 片HX711 A/D 转换芯片的数据,对所采集数据进行软件数字滤波与计算得到称重传感器初始值。进入程序循环,再次采集称重传感器数据,利用软件进行数字滤波与计算,本次计算值减去初始值即为当前所称量物品重量值。
3.3 串口屏模块功能介绍
串口屏模块实现的功能:设备上电,时间栏显示当前时间表示串口屏初始化完成。点击屏幕中棚号区域出现数字键盘输入当前棚号,种类选择区用点选按钮来选择果蔬种类。重量显示区显示所称量果蔬重量,当重量超出本系统准确量程(75 kg)时,系统将调出超重页面提示用户。产量统计界面用来显示当日所称量每种果蔬的统计值。点击“确定”按钮将本次称重结果累加至统计值中,同时给STM32 主控芯片发送数据上传命令。
3.4 GPRS 模块程序设计
使用Air800 模块自带的TCP 协议与网络连接,GPS 导航系统进行坐标定位。数据传输报文格式为:标识 4 字节;车ID 3 字节;棚ID 2 字节;品种 3 字节;重量 5 字节;时间 14 字节;地理坐标 13 字节,其中标识:000 1 开机 、000 2 果蔬信息传输。
传输过程为:
①终端登录向服务端发送数据报文,除标识、车ID、时间,地理坐标其他字段均填默认值。服务端返回登录确认信息“888”。
②确认收到重量,服务端向终端返回“999”。
③当用户点击屏幕上确定键,确定记录此次称重数据时STM32 主控芯片通过调用Air800 模块将此数据传送至云平台。
4 系统功能测试
4.1 压力传感器特性测定
通过对每个压力传感器分别施加不同的重量值读取HX711 芯片A/D 转换后的输出值,分析所施加重量值与输出值之间的关系得出每个压力传感器的特性。本称重系统量程设定为75 kg,称重台面将所称量物品的重量分散到各个传感器,重量值从0 kg开始每隔1 kg 逐次累加至50 kg。为避免硬件可能产生的噪声信号或实验过程中其他偶然因素产生的噪声信号影响实验结果,对每个重量值的输出信号采样60 次,用防脉冲干扰平均滤波法处理采样值后确定HX711 芯片A/D 转换后的输出值。利用实验所得数据拟合出传感器的输出特性,各个传感器所承载重量值与输出值为线性关系如图4 所示,得出由传感器输出值转换为重量值的计算参数如表1 所示。
表1 拟合参数Table.1 Fitting parameters
图4 拟合曲线Fig.4 Fitted curve
4.2 滤波流程分析
由于本称重系统是由4 个压力传感器共同完成重量信号的采集,每个传感器的输入输出特性均为线性,由原始数据获取重量值的方式可有2 种。方式一,先滤波后线性变换。各传感器分别使用滤波算法处理所采集到的原始数据,将滤波后所得数据值代入各传感器的特性方程进行线性变换,然后将各传感器所获取的重量值相加得到本次称量物品的重量值。方式二,先线性变换后滤波。将各传感器采集到的原始数据代入各传感器的特性方程进行线性变换,然后相加进行数字滤波,最后得出本次称量物品的重量值。此法只进行了一次总的数字滤波,较方式一中每个传感器都进行一次数字滤波节约了3 次滤波时间,又由下式(1)可知各线性变换公式中的常数b,合并为1 个总的常数B。在线性变换时暂时略去常数b,只对采集到的原始数值进行乘系数的线性变换,将此过程称之为拟线性变换。待到滤波结束后,再在滤波所得结果上加总常数B 得到本次称量物品的重量值,这样又节约3 次加常数的时间。
主控芯片STM32 为单线程控制器,顺序查询接收A/D 转换器芯片HX711 传输的数字信号。采样过程为轮询4 片HX711 A/D 转换芯片H次(即定义的采样次数),将每次轮询结果均存入4 行H列的二维数组中(4 片A/D 转换芯片H次轮询)。对于滤波流程方式一(先滤波后线性变换),先将二维数组的每个行向量数值排序、取h个中间值(即剔除噪声信号后剩下的采样值)的算数平均值,再对每个行向量所得算数平均值进行线性变换,然后将4 个经线性变换的算数平均值相加得重量值。在实际称量物品时4 个压力传感器共同承载重物,但并不能保证重量均分到每个压力传感器,并且可能存在所称量物品轻微晃动的情况。这样在1 个行向量中存在的最大值或最小值并不是噪声信号,而方式一的滤波流程会将这样的采样值剔除出去,从而降低了测量值的真实性。滤波流程方式二(先线性变换后滤波),将行向量中数据根据每个传感器的特性先做拟线性变换,然后将二维数组中拟线性变换后的列向量数值对应相加。对每次轮询结果求和后再进行数字滤波,可弥补方式一中可能剔除有效数据的缺陷,因此本系统采用方式二滤波流程。滤波流程图如图5 所示。
图5 滤波流程图Fig.5 Filter flow chart
4.3 整体功能测试
称重范围是0 ~75 kg,精度为0.05 kg,车体如图6 所示。将采样点数设定为30,滤波后剩余采样点设定为10。在实际应用场景中进行测试并与标准秤进行对比,测试结果如表2 所示,最大绝对误差为 0.04 kg,满足精度要求。
图6 运输车Fig.6 Carrier vehicle
表2 称重模块测试Table 2 Weighing module test
人机交互模块能够实现与STM32 主控模块的通讯功能,完成交互任务。人机交互模块测试结果如图7 所示。 打开服务器数据接收软件监听端口,通过Air800 模块将本系统与服务器连接,在本系统与服务器达成握手协议后进行通讯测试,数据成功传输至服务器,数据接收软件监听端口接收结果如图8 所示。
图7 人机交互界面Fig.7 Interactive interface
图8 网络上传测试Fig.8 Network upload test
5 结论
本文设计了1 套与运输车相结合的果蔬称重系统。该系统以STM32 控制器为核心,以24 位A /D转换芯片采集称重传感信号。根据传感元件的线性特性确定滤波流程,采用防脉冲干扰平均滤波算法进行数字滤波。该称重系统可实现果蔬重量数据的实时显示与数据上传至云平台等功能。通过在设施温室大棚现场试验验证,所设计的系统安全可靠,满足实际精度需求。可在设施农业中进行推广应用。