齐子昂 韩元真 吴真昱 袁嘉惠
摘 要:随着社会的进步和人类水平的提高,工厂生产智能化的趋势越来越明显。而随着工厂生产自动化的不断发展,电机的多轴联动控制也逐渐被人们所注意到,我们一般常见的运动轴可以分为X、Y、Z、Pitch和Yaw轴,而对于多轴联动的控制方法也是多种多样。本文着重叙述一种基于步进电机的多轴联动控制系统,该系统主要由STM32单片机作为主要处理器,步进电机作为动力装置,再由脉冲信号的脉冲数和脉冲的周期来控制步进电机的转动角度和转动速度,而每个轴的速度和位置数据都通过串口发送至上位机实现数据可视化,而每个轴的运动都是独立的,也就是说多个轴可以同时运动,我们将控制三个电机同时运作,同时朝着目标方向运动,但是考虑到该机构不与其他机构产生碰撞即每两点之间不能简单地按照直线路径,因此需要使用Floyd算法计算出各个点之间的最短路径,大幅度缩短了时间,达到最好的效果。
关键词:多轴联动;串口通信;上位机;Floyd算法;最短路径
0 引言
为了能将电机运动的时间缩短到最少时间,我们计划采用多轴联动的方式对步进电机进行控制。对于X、Y、Z、Pitch、Yaw几个运动轴,若只是采取单方向直线运动的话时间无疑将会是非常长的,于是我们将控制三个电机同时运作,同时朝着目标方向运动,同时还要考虑该机构不与其他机构产生碰撞,从而计算出其最短路径,大幅度缩短了时间,达到最好的效果。
STM32单片机为控制系统的核心,处理输入模拟信号和对外部输出控制信号都需要它来实现。它可以提供控制步进电机运动的脉冲信号,同时还可以将电机的各种状态数据通过串口传输给上位机,将各个运动轴的数据直观的展现出来,同时可以发送控制命令给单片机来控制它的运动。
Floyd算是最常用的求两点间最短路径的方法,应用在很多领域,送货员送货,邮递员送信都需要事先考虑路途长短[1],在本系统中选择最短路径的方法既可以根据此算法来设计。
1 系统整体设计
为了实现步进电机多轴联动的效果,需要单片机同时发出多个独立的脉冲信号,以达到联动的目的,然后单片机通过记录脉冲数计算出当前各个运动轴的当前的位置,再通过数据的拆分进行串口发送,上位机进行数据的接收和还原来实现各种数据的可视化以及控制指令的发送,更加方便操作者的使用,在设定完目标位置后,系统先通过Floyd算法进行最短路径的计算,从而规划出最优路径,然后在多轴联动的情况下向着目标方向前进。
2 单片机的信号输出与串口通信
2.1 硬件连接
本次设计所用的为57步进电机和MD542步进电机驱动器,我们采用步进电机常用的共阴极接线法即将驱动器的地线接在一起,再由单片机的三个控制引脚来对其进行控制,这三个引脚通常为ENA、DIR和PUL,分别控制电机的使能、方向和脉冲信号。将步进电机的A,B两相线接到驱动上面对应的接线口,即可完成步进电机与驱动器的硬件连接。而对于单片机和驱动器之间的连线还需要有信号升压模块作为中介来完成连接,由于STM32单片机的控制信号通常为3.3V,而MD542步进电机驱动器的信号电压一般为5V,所以单片机直接连接驱动器是无法驱动电机的。
2.2 脉冲信号的输出
按照步进电机的一般控制逻辑来说,输出脉冲信号就会用到STM32单片机的定时器的PWM输出功能,而且还需要分别设置定时器的通道输入捕获功能来精准的控制脉冲数,这种控制方式较为麻烦。本系统中我们采用的是利用IO口来模拟脉冲信号的产生,即通过定时器中断来使IO口的电平以一定频率变换,从而产生脉冲信号驱动电机的转动,此方法控制简单易操作,而且脉冲数的设定可以用一个变量存放,改动方便,脉冲的周期也可以随意的控制和改变。以下为脉冲信号的输出程序逻辑图:
2.3 上位机的设计
本系统的上位机是基于软件Visual Studio的Windows窗体的应用程序工程平台来编写的,并使用C#语言编程,创建一个典型的Windows的应用程序应该包括以下几个基本步骤:创建一个适当的窗体;向窗体中增加控件;最后增加响应用户事件代码[2]。单片机在收集到各个步进电机的数据后将数据拆分成一个一个的字节,打包成数据包在通过串口传输给上位机,而上位机在接收到数据后将数据进行处理计算即可以得出各个运动轴的位置以及电机的转速信息,并将这些数据传递到各个控件中,使操作者通过上位机就可以获得该系统中各个运动轴的数据信息。同时操作者也可以通过上位机修改各个轴的数据,这些数据将通过串口发给单片机从而实现对各个步进电机的控制,更方便的达到控制目的。
3 基于Floyd算法的最短路径计算
在该系统中,当步进电机多轴联动朝着目标点移动的过程中,在其运动路径中可能会有其他机构的阻挡而造成机构之间的碰撞,即在两个节点之间不一定存在直达的道路。当然在这种时候为了避免碰撞的发生,我们需要找到一条最短的线路来最快的到达目标位置。这是我们想到了Floyd算法,这是一种常用的最短路径算法,具体操作方法如下。
我们先将该系统中需要到达的位置划分成N个目标节点,我们需要做的是找出这N个目标节点之间任意两个位置之间的最短路线,考虑到并不是每两点之间都存在道路故不能简单地将两点之间的直线距离来当做最短路径。我们令任意的节点i到节点j之间的最短距离为Wij,可以列出一个距离矩阵dis=(Wij)N×N,其中若是两点之间没有直接的道路即用inf代替即表示无穷大。同时我们再令任意的节点i到节點j之间的最短距离为dij。Floyd算法的基本步骤如下图所示:
由上图的逻辑计算过后,可以计算出最短距离矩阵D=(dij)N×N以及任意两个目标节点之间的最短路径所经过的节点。
4 结语
本系统利用单片机对步进电机的控制和上位机数据的采集以及最短运动路线的计算,为工业智能生产提供了一种简洁、高效、可靠的控制方式。
参考文献:
[1] 吕静毅, 常赛赛, 聂佳琦, 等. 基于Floyd算法的交巡警服务平台管辖范围设计[J]. 电脑知识与技术, 2017, 13(10): 202-203.
[2] 董忠, 尤良方. C#Windows应用程序开发实例[J]. 天水师范学院学报, 2003(02): 59-60+62.
[3]陈香, 李璞, 刘啸泽. 交巡警服务平台的设置与调度[J].电子测试, 2014(04): 155-157.
*基金项目:本文是桂林电子科技大学2020年自治区级大学生创业训练项目“一种基于视觉匹配的智能鞋柜”的项目成果,项目编号:202010595077