APP下载

一款小型智能播种机的设计*

2022-04-15朱文兴

南方农机 2022年8期
关键词:高电平播种机串口

程 鹏 , 朱文兴 , 董 亮

(齐齐哈尔大学通信与电子工程学院,黑龙江 齐齐哈尔 161003)

0 引言

近年来,由于人口的增加和对粮食需求的提高,我国农业经济发展迅速,有力推动了我国播种机行业的发展。在主要使用传统的条播机和穴播机的同时,还成功研制了多种精密播种机,虽然全国精密播种机具推广势头比较猛,小麦等几类常见作物的精密播种机推广应用迅速,但我国精密播种还并未完全普及,能精密播种的作物仍局限于几种常见作物,受限于技术等方面的原因,国内播种机存在效果不理想、效率低等问题[1-3]。

国内成熟的机型相对较少。欧美发达国家对播种机的研究较早,其播种机研究和开发的技术水平很高[4],尽管新型播种机的开发时间短,但其对播种的种子适应性好、效率高。目前,在播种机已经相当完善的背景下,我国不少地方已基本实现了精密播种。在采用多种新式工作原理的情况下,播种机控制精准,播种的质量很高[5]。

本项目是基于STM32单片机制作的小型智能自动播种机。与传统的自动播种机相比,更小型,更轻便,更适用于零散土地。相比于传统的小型手动播种机,避免了大量人力资源的浪费,解放了劳动力,也提高了农业的生产效率与生产质量。本项目的设计拥有多种播种模式,可适用于不同的地形,播种不同的种子。

1 整体设计结构

小型智能播种机的系统主要包括主控模块,电源模块,驱动模块,显示模块,声音模块,检障模块,远控模块,播种模块,如图1所示。主控模块是STM32F103C8T6即意法半导体公司(ST)推出的芯片,电源模块与驱动模块同时由L298N模块来完成工作,显示模块采用Script HMI Controller,声音模块选用JQ8900-16P,避障模块采用HC-SR04,远控模块采用HC-05,播种模块采用市面上流行的传统播种机,在此基础上进行改造[6]。

图1 整体结构设计图

2 硬件设计

2.1 主控模块

主控模块选择STM32F103C8T6,除了简单的I/O口,还具有全双工异步通信、数模模数转换、通用定时器和高级定时器、DMA传输数据、片内FLASH编程、SPI IIC操作等功能。

本设计主要用到I/O口通用定时器串口SYSTICK等功能。

2.2 电源模块与驱动模块

驱动STM32F103C8T6单片机需要5 V电压,而电机驱动则需要6 V ~12 V的电压,为了解决供电问题采用L298N。

L298N主要由稳压部分和双H桥直流电机驱动芯片两部分组成,通过稳压部分产生可向单片机供电的5 V电压通过双H桥直流电机驱动芯片来控制电机驱动[7]。

2.3 显示模块

显示模块采用Script HMI Controller,即脚本人机控制器。该控制器有触摸屏,采用分离式存储将程序存储在TF卡上,方便替换与编写,可以直接在屏上运行自己编写的可视化程序。此模块设计了一套独特的仿C代码,便于开发人员设计和编写,此屏幕支持2路串口和6个扩展口,可以充当控制系统中的上位机。

2.4 声音模块

JQ8900-16P有多种控制模式:串口控制模式、线性控制模式、按键控制模式。连接一条数据线可以直接打开此模块内部储存,更改控制音频,使用方便,即插即用,硬件系统稳定,可适应一些极端环境。

2.5 避障模块

超声波避障的原理主要是通过超声波发出端发出超声波,接收端接收超声波,根据接收器收到超声波的时间来计算发射点到障碍物的距离。超声波在空气中传播的速度为340 m/s,时间差为t,即发射点到障碍物的距离D=170*t[8-9]。

2.6 远控模块

使用USB转TTL连接电脑与HC-05,进行调试。首先按下使能按钮进入at模式,当串口发送at、蓝牙模块回复ok时,代表成功进入at模式。然后使用模块特有指令进行查看或修改相应参数,例如“AT+PSWD? ”查看连接密码,“AT+UART=”修改波特率等。

2.7 播种模块

在原有的基础上增加hex711称重传感器,当播种机缺少种子时及时发出提醒,避免无种可播。制作相应的外部播种鸭嘴轮,适应不同种子的不同间距,增加辅助轮,提高播种时行进的稳定性。

3 软件设计

3.1 整体软件运行流程

整体软件运行流程如图2所示。

图2 整体软件运行流程图

3.2 检障模块的实现

检障模块使用超声波模块,为保证测量高电平精准,采用通用定时器捕获的方式来测量高电平持续时间输入。捕获Input Capture基本原理如下。

定时器针对外部输入信号或内部触发信号实行边沿捕捉,记录捕捉时刻计数器的值。基于这个原理,配合计数器实时计数功能可以对捕捉信号进行脉冲宽度的测量,进而实现对周期性波形测量其周期或占空比,或者用来通信解码。

由于存在输入高电平时间过长无法测量,以及如何使用一个捕获通道记录一次上升沿一次下降沿等问题,采用两个全局变量作为虚拟寄存器进行设置,其中一个变量负责捕获高电平,另一个变量则负责记录高电平时间。工作流程如图3所示。

图3 检障模块工作流程图

3.3 驱动的实现

单片机无法通过直接控制电机来实现车体的运动,因此需要电机驱动芯片来解决这个问题。编写驱动芯片程序,电机驱动芯片由两个驱动端口、四个信号输入端口、两个使能端口和一个变压芯片组成。驱动端口连接电机正负极,利用正反转电压的大小来控制转速。四个信号输入端用来控制驱动端电压方向。使能端通过pwm波形来控制电压的占空比,从而控制转速。通过这个流程,明确了要实现的设计目标,首先要实现四个信号输入,其次要产生pwm波形来控制电机的转速。四个输入信号十分容易实现,只需要简单的I/O口配置,然后通过串口传来的信息来确定四个信号的高低电平。而产生pwm波要较为复杂一点,首先要明确pwm的定义,即脉冲宽度调制,通俗一点来说,就是在固定时间里等时间间隔地产生相同时间宽度的高电平或低电平。因此,需要确定固定时间。所以,需要定时器并了解定时器的时间计算。设置分频值asd与计数值act,定时器的时钟源是固定的Tclk,得出频率H=Tclk/(asd+1)MHZ,记每一个数的时间为(asd+1)/Tclk,则总时间T=(act+1)*(asd+1)/Tclk。设置完总时间后,需要选取产生pwm波的通道,因为STM32引脚数量有限,一个引脚有许多功能,需要复用引脚。然后设置pwm波输出极性,设置占空比,就可以输出想要的波形。将其直接连在驱动芯片上,可以直接使能[9]。

3.4 稳定直线行走的实现

通过L298N控制直流电机虽然可以实现,但是整体的驱动受制于电压、车体、轮胎等外在因素,很少能正确走出笔直的直线。因此要采用pid算法。

pid算法是在工业上广泛应用的直线型反馈控制体系,因其操作简单、便于实现,所以被广泛应用。但存在一定的局限性,只适用于一阶齐次的系统,面对复杂的系统,只能采用简化或拆分的方式才能使用pid算法。其中,比例系数为p,积分为i,微分为d,公式为u=Kp*e+Ki*e总+Kd*Δe。

确定了解决问题的算法,然后要找出真正解决这个问题三个系数的意义和e。让车体可以稳定直线行走的关键是两侧车轮速度相同,那么就需要测量车速。使用旋转编码器测量车速,编码器电机转动,编码器通过A相和B相可以产生脉冲信号,根据脉冲信号可以计算出轮胎的转速。一般采用4倍频来求车轮速度,即记录A相和B相的上升沿和下降沿。

电机旋转一圈会输出固定的脉冲数,利用这个脉冲数来求轮胎的转动速度,即M法测量,V=Mt/M*T(Mt是所设时间内记录的总脉冲数,M是电机旋转一圈的脉冲数,T是设定的时间)。可以通过STM32芯片定时器特有的编码器接口模式来记录脉冲数。

测出车轮速度后,以左边车轮为基准,进行测速。当右方车轮速度与左方车轮速度不相等时,进行pid调节使速度相等,即e=预期速度(左轮速度)-右轮速度。比例系数p主要负责大体控制以及控制进程的快慢,积分i主要负责比例系数无法到达的小部分控制(即之前错误的累计)。微分d主要负责当速度相差过大时或者轮子被卡住再释放以及人为操作不当时,产生的过矫(现在的错误与之前的错误作差,产生的方向与前两项相反)[10]。大体流程如图4所示。

图4 测速流程图

3.5 远控模块的实现

STM32单片机多采用USART的通信方式,即全双工异步串口通信。全双工指的是数据的接收端与发出端在同一时刻,可以互相发送信息。异步通信指的是在通信过程中每一帧信息之间的间隔是任意的,但是要求每一帧中的字符相隔时间相同。串行通信是指将每一位数据通过一条数据线传输,这种通信方式特别适用于外设与外设之间的通信。通过STM32内部关于串口通信的结构体,可以直接设置波特率、数据位、收发端等。同时,STM32通信也有两种方式,查询方式和中断方式。中断方式更适用于来回传输信息的模式,例如本项目;而查询模式更适用于只接收命令的下位机。

3.6 显示模块的实现

显示模块是通过显示模块自带的编译器进行编译,此编译器存在一套特殊的编译流程,因为既可以对系统内部实现与外部人机的交互,也可以实现对外的电信号交互。

它的编译流程首先要解决人机交互问题,因此要编辑软件对外界面。首先,选取想要实现的功能控件,通过调节控件参数来更改整体布局。其次,通过此编译器特有的仿C语言编写控件代码,实现控件与人的交互。然后,编写显示模块,硬件参数与选择的中控模块参数相同,在编写相应的仿C代码进行相应的电信号处理。然后进行软件仿真调试改错,最后进行实机检验。

3.7 声音模块的实现

JQ8900-16P具有多种控制模式:串口控制模式、线性控制模式、按键控制模式。为了节省I/O口并使程序更简洁,摒弃了串口控制模式和按键控制模式,选择了更为简单和方便的线性控制模式。线性控制模式是此模块独有的一种通信方式,其通信协议要求单片机起始码引导要大于2 ms,每个字节之间要求间隔10 ms。高电平持续时间是低电平持续时间的三倍,则芯片检测为高电平;低电平持续时间是高电平持续时间的三倍,则表示为低电平。因此,需要准确的毫秒甚至纳秒级的定时,这时如果使用定时器会浪费很多资源,也无法做到随用随取,所以选用SYSTICK来解决这个问题。SYSTICK定时器是一个24位的节拍定时器,具有自动重装初值和中断的功能。SYSTICK存在的意义是提供必要的时钟节拍,在运行不同的任务时提供可以依照的节拍,类似于演奏中的节拍器,可以防止演奏出错,此处即防止程序调动出错。SYSTICK定时器除了能服务于操作系统之外,只要设置好初值、算好中断时间、写好中断函数,就可以把它作为一个合格的闹钟或者钟表。

4 结论

本研究设计并实现了一款基于STM32的小型智能播种机,介绍了播种机的整体设计、模块设计和软件设计。我国土地辽阔,土地类型多样,可以用于农业的土地中有一些因为地形地貌等原因形成的零散耕地,由于无法应用大型耕地设备,只能应用人工和一些简单的机械设备,使零散耕地的土地利用率低下,造成了土地资源的极大浪费,严重影响着土地的集约利用程度,因此本项目具有巨大的现实意义和应用前景。

猜你喜欢

高电平播种机串口
免耕播种机使用性能的研究
播种机使用维修及用后保养的注意事项(1)
播种机使用维修及用后保养的注意事项
高电平MMC子模块电容电压控制策略研究
播种机的使用技巧a与维护
数字电子技术的应用
MCS—51单片机中的多串口通讯技术的应用
浅谈物理电路与数字电路
关于Multisim10.0的高电平调幅电路仿真研究
全国计算机等级考试机房准备工作探讨