马天宇 , 刘雅菲 , 韩 蕊 , 李秋洁
(南京林业大学,江苏 南京 210037)
目前,世界上林果采收的方式,可分为半机械收获平台、机械式收获机和全自动采摘机器三种类别[1-4]。本文针对使用最广泛的机械式收获机进行分析。机械振动采收的工作原理是利用偏心块的振动或曲柄连杆机构的往复运动来振动果树。当果树受到激振力作用时,它会以一定的频率和振幅振动,与果枝相连的果实会在果枝的受迫振动下以某一种运动方式或某几种运动复合的方式加速运动。当惯性力大于某一方向的果柄结合力时,果柄撕裂,果实脱落,完成分离过程。
由于频率对采收效果有最显著的影响,因此本文将介绍基于上下位机的林果采收激振电机系统的实现,侧重于系统的构建和扫频控制。模拟实现了上下位机通过串口通信来设置扫频参数,并且下位机可以独立通过外部按键来设置扫频参数和控制系统启停,通过OLED显示屏显示参数信息。
扫频控制系统主要包括单片机和数模转换模块两部分,由单片机定时计数器控制稳定输出数字变化量,并由数模转换模块将其转换为控制变频器频率变化的模拟输出信号,进而变频器控制激振电机完成扫频操作。通过修改单片机控制程序、修改输入参数或修改变频器工作频率范围,可灵活调整扫频步长、扫频时间、扫频循环次数等多项参数,以满足不同情况下的实际生产需要。扫频控制系统结构及工作流程如图1所示。
图1 扫频控制系统结构及工作流程框图
启动频率、终止频率、单频保持时间、单频/扫频模式、启动/停止,可以通过上位机控制面板进行数据设置,并通过串口传输到下位机。上下位机的具体设计会在下文中阐述。
本装置采用单片机驱动8位D/A转换,将需要输出的数字控制量转换成模拟量(电压)输出。其中,数字输出量由矩阵键盘或者面板输入,通过单片机的加权后通过一组I/O输出(八位二进制数)到DAC0832模块。选用DAC0832模块是因为该模块的分辨率为1/255,分辨率误差为0.515LSB,能满足本设计的要求。
D/A模块数字量转换成0~5 V直流电压输出给变频器。单片机内部的定时器定时为1 ms,然后通过对计数变量的叠加,实现较为精准的单频保持时间的定时,每增加一份时间则I/O输出改变一次,即改变一次输出数字量,从而能够实现均匀的电压输出。
为了扫频装置控制电机正常工作,至少需要以下几个工作参数:单频保持时间、频率变化步长、初始频率和终止频率。该部分上位机面板和单片机均可以设置。
激振频率的设定方法共有两种。第一种是设定好变频器的初始工作频率和终止工作频率,然后将初始份数设置为0,终止份数设定为255*n(n代表扫频循环次数);第二种是根据初始份数和终止份数与激振频率的换算关系设定,换算关系如下:
下位机基于51单片机开发,本芯片串口通信是全双工的,即可以在互不影响的情况下同时发送和接收信息,串口可同时使用SBUF接收和发送,虽然是同时但因为是两个独立寄存器,所以实际上互不影响,只是名称一致。
对于接收单独而言,则是接收到一个信息之后才能接收下一个,并不能同时接收多个信息;同样发送也是一样的,需要发送完成一个之后才能发送下一个。对于这种情况可先定义多个变量,如接收用rec变量保存,发送数据在send变量中。
对于发送,例如SBUF=send;while(T1==0);T1=0;//,这是用查询方式发送的。当发送一个字节完成时,T1会自动置1,所以查询到T1等于1后就知道可以继续发送下一个信息了。如果发送中断则令T1清0,即T1=0。同样接收时,收到一个信息之后令R1=1,需要注意的是,因为通常接收都是中断方式,所以R1置1的同时即产生中断,产生中断之后执行程序即令R1清0,如果是接收一组数据可以定义一个数组,用来保存数据。因为SBUF中不能存放数据,所以收到后需要立即读取,否则会被下一个数据覆盖,所以多个数据的发送和接收可利用循环来实现。下位机使用的编译器Keil,通过USART外设实现串口通信。TX引脚为数据发送引脚,RX引脚为数据接收引脚。
在编程中首先对上下位机分别进行编程,即编程后通过串口调试助手分别对上位机和下位机进行USB串口模拟通信,来比较是否可以发出正确的数据。在两边通信正常后将上下位机通过串口工作方式1,定时器设置工作方式2进行通信。通信内容包括起始频率与结束频率、扫频速度、扫频重复次数、转动频率以及启动时间,以“P=xxx; I=xxx; D=xxx;p=xxx; i=xxx; d=xxx, state=xxx;f=xxx;”固定格式发送,设置波特率为9 600,数据位8,停止位1,无校验位,晶振频率11.059 2 MHz。
上下位机以ASCII码的形式传输数据,通信协议中规定数据以回车(其ASCII码有两个字节表示,0X0D和0X0A)作为结束标志。借助这个协议,配合一个数组USART_RX_BF[]和一个全局变量USART_RX_STA实现串口数据的接收,有效提高了处理器的工作效率。当接收到数据后,串口的中断函数把接收到的数据保存在USART_RX_BF[]中,同时在接收状态寄存器(USART_RX_STA)中对接收到有效数据的个数进行计数,当收到回车的第一个字节0X0D时,计数器停止增加,并等待0X0A的到来;而如果0X0A没有来到,则认为这次接收失败,重新开始下一次接收。如果顺利接收到0X0A,则标记USART_RX_STA的第15位,从而完成一次接收,并等待该位被其他程序清除,从而开始下一次的接收;而如果一直没有收到0X0D,那么在接收数据超过程序设定好的长度时,则会丢弃前面的数据,重新接收。
单片机所需要的接口主要包括键盘控制接口,用于输入各种激振参数,例如启动初始份数、终止份数、单频保持时间和启动开关;此外,还有数码管显示(段选和位选)接口以及D/A模块输出接口。
D/A模块由220 V转15 V双极性开关电源驱动,并通过OUT1接口将模拟信号输出到变频器的COM接口中。单片机芯片接线图如图2所示,DAC0832数模转换模块如图3所示,proteus仿真图如图4所示。
图2 单片机芯片接线图
图3 DAC0832数模转换模块
图4 proteus仿真图
根据软件设计要求,上位机软件主要需要实现的功能有:能够完成对下位机参数的配置,能够发送开始命令和结束命令,能够向下位机传输输入的数据。由此确定上位机软件开发的步骤流程如下:
1)根据任务确定程序模块;
2)程序界面设计;
3)编写各功能模块代码;
4)根据流程编写代码;
5)程序调试。
根据上位机设计要求,软件功能模块主要包括:工作状态显示模块、串口参数输入模块、数据输入模块等。
1)工作状态显示模块:显示模块的主要作用是能够在主页面显示数据,给用户提供更加友好方便的界面,让结果更加直观地显示出来。
2)串口参数输入模块:串口按位(bit)发送和接收字节,可以在使用一根线发送数据的同时用另一根线接收数据。其中最重要的参数是波特率、数据位、停止位和奇偶校验,对于两个进行通信的端口,这些数据必须匹配。所以通信前必须设置串口端口号、波特率、校验方式等基础参数。串口参数输入模块主要提供的就是对串口参数的设置,用户完成相关设置后点击打开串口,模块会把和串口相关的参数传递给串口控件,并打开指定的串口。
3)数据输入模块:该模块主要提供数据的输入与发送功能,能够将输入的数据处理,经由串口发送给下位机。保证上下位机数据的可靠传输也是良好系统性能的重要决定因素之一。
Microsoft Visual Studio(简称VS)是目前最流行的Windows平台应用程序的集成开发环境。它是一个完整的开发工具集,包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等等,所写的目标代码适用于微软支持的所有平台。
上位机界面包含控件类型有ComboBox、Button、RadioButton、TextBox,主要用作串口参数设置选框及按钮,系统启动及停止控制按钮,频率参数设置按钮。上位机设计中所涉及的主要控件如表1所示,包括控件用途、控件类型和控件ID。
表1 控件表
接着添加一个SerialPort对象,然后就可以在程序中控制串口通信的全过程。在进行串口通信的时候需要设置一些相关的参数,可以通过设置SerialPort的属性来进行,具体如下。
PortName:串口名称,COM1,COM2等。
BaudRate:波特率,也就是串口通信的速度,进行串口通信的双方的波特率需要相同;如果用PC连接其他非PC系统,一般地,波特率由非PC系统决定。
Parity:奇偶校验,可以选取枚举Parity中的值。
DataBits:数据位。
StopBits:停止位,可以选取枚举StopBits中的值。
而在创建一个SerialPort并设置串口属性后,可以通过Open()方式打开串口,数据读取完成之后,可以通过Close()方式关闭串口。
上下位机通信所需控件如下:串口参数设置选框及按钮,系统启动及停止控制按钮,频率参数设置按钮等。将所需控件一一填入面板并进行相应设置,成果如图5所示。
图5 面板示意图
国外对于林果采收机械的研究较早,机具设计种类繁多,比国内的研究更为成熟。收获机械根据采收原理主要分为气力振动式和机械振动式[5-7]。对于国内外应用最多的采收方式树干抱摇式采收,根据相关激振参数的研究,激振频率对采收效果的影响最大[8-10]。因此,本文主要针对激振频率的设定和数值传输进行了具体研究。
事实上,目前通过应用振动式林果采收机械,提高了果实采收效率,减轻了劳动强度,促进了农业发展。但由于机械多采用对树干进行摇振的方式以实现果实的脱落,这种方式一定程度上会损伤果树与果品,所以需要考虑更多细节的东西才能满足采收需求。