基于FPGA 的步进电机驱动控制系统的研究与设计

2023-06-21 05:00向云峰王秀莲
南方农机 2023年13期
关键词:编码器串口角度

向云峰 ,王秀莲

(沈阳理工大学自动化与电气工程学院,辽宁 沈阳 110159)

0 引言

步进电机是一种用电脉冲信号控制,并将其转换成角位移的执行机构[1]。由于其具有低成本、易控制、无累计误差等优点,其一直以来被广泛应用于各个领域,如工业、农业、航空航天等。随着控制系统的复杂化以及动态性能要求的提高,常用的开环控制在定位系统中存在振荡、跟踪精度低的问题,对系统突加负载可能导致出现失步、堵转的现象。

为解决上述问题,近年来对步进电机的闭环控制的研究愈加火热。在实际设计步进电机驱动控制中,大多数采用单片机进行驱动。吕颖利等[2]、余智勇等[3]采用单片机研究步进电机控制系统,实现简单且易于控制。但众多应用实践显示,单片机在一些复杂的实时性高的控制系统中,其电机的控制性能有所下降。FPGA 具有计算速度快、可靠性高以及逻辑资源丰富等特点[4],本文基于FPGA 进行了步进电机驱动控制系统的研究与设计。

1 系统硬件设计

步进电机驱动系统的整体结构主要由电源、主控制器、驱动芯片、编码器等组成。根据本系统的设计以及实现功能,系统硬件设计可以划分为以下几个部分。

1.1 主控芯片电路

在主控芯片电路设计方面,以A3PE600 为核心的电路主要包括两个方面:一个是控制器本身工作所需的最小系统电路,另一个是指向机构驱动系统正常运行时所需器件的电路。其中,最小系统设计主要包括电源电路(3.3 V,1.5 V)、复位电路、时钟电路以及仿真接口部分,而外围电路则根据系统要求设计。

1.2 驱动电路

本研究选择TMC5130 驱动芯片驱动步进电机,此芯片具有高精度无传感器负载检测、静音平稳运动、失速检测等功能,更加符合电机运动时的要求,它也可以设置成位置模式、速度模式和上电保持模式[5-6]。SPI 通信接口串联33 Ω 电阻为了阻抗匹配,由于信号源的阻抗低,与信号线阻抗不匹配,串联一个小电阻后,可以改善匹配状况,减少反射和振荡的干扰,同时可以保证信号的完整性,特别是读写信号线。

1.3 编码器接口电路

采用DS-25 系列编码器,其数据输出与时钟传输采用差分RS422 的接线标准,串口通信也采用此类传输方式。RS422 差分传输的特点很明确,它是四线类型的接口,全双工、差分传输[7]。本研究利用DS26LV32 高速四路差动线路接收器和DS26LV31 高速四路差动线路驱动器,它们功耗低,且工作电压满足3.3 V。在编码器以及串口接口电路中,考虑到差分传输,因此信号的稳定性、抗共模干扰能力等性能必不可少。当阻抗不匹配时,可以考虑使用串联/并联电阻的办法。一般来说,一些驱动器的阻抗比较低,可以串联一个合适的电阻来跟传输线匹配,而一些接收器的输入阻抗则比较高,可以使用并联电阻的方法来跟传输线匹配。例如,RS422 总线接收器,常在数据线终端并联1 000 Ω 的匹配电阻。

2 系统软件设计

采用Verilog语言结合自顶向下的设计思路,实现驱动控制系统的软件部分设计。自顶向下指的是先从系统的整体功能要求开始,规划系统整体结构并分别划分为各个小规模、功能简单的子模块,然后确立各个子功能模块之间的相互关系和模块接口,进而继续这种形式划分,最终整个系统被细分为多个最小单元。

2.1 部分模块的软件系统设计

2.1.1 串口通信设计

本研究采用RS422 串口通信实现与上位机通信,完成数据信息的传输,同时串口通信相对而言具有较好的稳定性和抗干扰能力[8]。其子功能模块结构图如图1 所示。在设计时考虑到数据传输的准确性,本次设计通过“帧头+数据+帧尾”的方式实现一段数据的传输,同时增加奇偶校验位以加强对数据传输准确性的判断。

图1 串口通信模块结构图

串口接收控制模块主要功能是将串口接收模块收到的数据组成完整的数据包,并进行帧头与帧尾的校验,将校验正确的数据输出给控制寄存器模块(图1 中Recv_Data 模块)。串口发送控制模块的功能是将下位机向上位机发送的数据经过解码成8bit 的数据依次传送给RS422_TX 模块。串口发送模块的功能是将串口发送控制模块输出的数据,通过UART_TX 信号传输给上位机,其数据传输形式与串口接收模块类似。

2.1.2 Netzer编码器数据采集设计

角度反馈量由绝对式电编码器得到,其接口电路已在1.3 小节详细介绍,根据DS-25 系列的数据手册得知:采集到的角度值可以通过SSI 和BISS 两种传输协议将当前角度传输到寄存器里[9-10]。在本研究中,采用SSI 传输协议完成角度值的采集,若要将角度值返回到上位机,则可以通过RS422_RX 发送一个指令使能编码器数据采集传输功能,然后将编码器接口接收到的数据转存到寄存器里,再通过发送控制模块对数据进行解码,解码为8bit 的数据,最后通过RS422_TX模块将数据发送到上位机。

基于SSI 传输协议的角度值采集功能模块如图2所示,这里主要对SSI_INTERFACE 模块进行研究。首先,系统时钟频率为32 MHz,程序中设计SSI传输时钟频率为4 MHz。因此,可以对系统时钟进行8 分频,本研究主要利用某个定义的寄存器的3bit(如sd_cnt[2]),当sd_cnt[2]为1 时,SSI_SCK(SSI_SCK 初始状态为1)相对于原状态取反,从而实现4 MHz 的时钟频率。其次,数据采集精度定义为17 位,因此整个数据帧结构为“17bit 数据+1bit 停止位”,并且在SSI_SCK 时钟上升沿时传输数据,下降沿时采集数据,依次完成数据的传输。最后,将传输的最后一位通过右移位计算移除停止位,剩下17 位为当前角度值,再通过串口通信模块将其传输到上位机或者传输到步进电机驱动控制模块。本模块的设计用到三段式状态机,以便于后期的查阅与复用。

图2 基于SSI传输协议的角度值采集功能模块图

2.1.3 TMC5130驱动设计

此模块编写程序时可以分为两个功能模块,其一是数据传输模块,其二是数据控制模块。

1)数据传输模块主要功能是SPI 通信协议的编写,使用三段式状态机编写,设置五个状态,分别为IDLE、WAIT0、SPI_W_R、WAIT1、STOP。IDLE状态到WAIT0 状态依据数据控制模块的SPI_EN 使能信号;WAIT0 转换到SPI_W_R 状态,等待计时器到达即可。SPI_W_R 状态实现数据的传输,传输完成标志信号产生时,进入下一个状态。数据之间来回传输只需多次使能SPI_EN 信号即可。依据数据手册,主机向从机发送数据的格式为:“8bit 地址值+8’h80+32bit 的数据”;在从机向主机发送数据时,主机需要先向从机发送读取数据寄存器的地址一次,此时主机接收的数据为无效数据,第二次发送该寄存器地址后,才能读取到有效数据,且读取有效数据的高8位为SPI状态寄存器的数据。

2)数据控制模块主要功能是TMC5130 芯片的寄存器赋值以及实现主机与从机之间多数据的传输;上位机向下位机发送一段指令,使能SPI_EN,同时将数据存入输出寄存器中。

2.2 系统整体控制模式

2.2.1 开环驱动模式

将上述2.1 节中各个模块的设计在顶层中例化,在顶层实现接口连接,然后利用美高森美的开发软件Libero SoC 对程序进行综合、管脚分配,并将程序下载到FPGA 里实现电机的开环驱动控制。基于TMC5130的驱动模块结构图如图3所示。

图3 基于TMC5130的驱动模块结构图

2.2.2 定位控制模式

根据上述研究内容,将串口通信模块、角度值采集模块、电机驱动模块等子功能模块分别例化到顶层模块中,然后进行综合、管脚分配以及程序下载,通过发送指令使指向机构可以执行开环驱动的工作模式。在开环驱动模式的基础上进一步对驱动芯片进行开发与研究,可实现闭环控制的定位模式。具体设计思路为:首先,通过Netzer 读取上电锁定状态时电机的位置,注意此时编码器读取的值不是对应的角度,需要经过以下关系转换:

式中,current_deg 表示当前电机角度;cur_ssi_recvdata表示当前Netzer 读取的角度值由16 进制转换为10进制的数值。

根据以上公式,规定此时的值为初始位置。定义电机需旋转的角度,然后通过对上式的变形可得到电机到达目标位置后的值与到达目标位置所对应Netzer 的值相同(理想条件下)。经过多次试验测试,理论计算的数值与实际电机到达目标后采集的数值之间相差角度范围为±0.07°。此值不满足设计期望。这里设定一个阈值,使其差值范围约为0.007°。通过对理论计算角度值和实际角度值的差值与阈值的比较,判断下次电机的运行方式。当差值大于阈值时,说明电机运动的角度超过给定角度,电机需要反方向运行;当差值小于阈值时,说明电机运动的角度未超过给定角度,电机需要继续当前方向运行。运行具体步数根据以下关系转换:

当ssi_position﹥target_position时,

式中,ssi_position为Netzer 采集的角度数值(十六进制表示),target_position为给定角度数值(经过数值转换),spi_xactual为TMC5130 驱动芯片完成一次运动后所对应位置寄存器的值(TMC5130驱动芯片上电后每次运行时,需要计算绝对位置,不能随意给定位置寄存器的值),DR为减速比120,K为25,M为64。

加速度与最大速度的计算,可以根据TMC5130芯片所给的速度曲线控制算法计算得到对应的数值,斜坡发生器速度相关电机控制如图4 所示。通过设置V1=0禁用A1与D1阶段,只使用AMAX和DMAX阶段,因此构成一个梯形速度曲线控制方式。再设置总运行时间为20 s,加减速时间相等且预设为4 s,因此可以根据以下关系计算电机对应的VMAX、AMAX。

图4 斜坡发生器速度相关电机控制

依据本设计选用的晶振为16 MHz,则速度与加速度时间的转换公式如下:

假设设置X/Y轴运动12°,总步数为204 800微步,根据以上的预设关系,可以得到VMAX=13 421μstep/t,AMAX=DMAX=27μstep/t_a^2。

3 结束语

研究团队以FPGA 为主控制器,结合TMC5130驱动芯片、Netzer 编码器等,设计了步进电机驱动控制系统,首先满足步进电机驱动控制的基本性能要求,其次结合驱动芯片的特点,设置了几种运动模式,相较于其他芯片,此芯片更适用于具有高精度定位、静音运动控制系统的场合。

猜你喜欢
编码器串口角度
神奇的角度
浅谈AB PLC串口跟RFID传感器的通讯应用
一个涉及角度和的几何不等式链的改进
基于FPGA的同步机轴角编码器
角度不同
人啊
基于PRBS检测的8B/IOB编码器设计
USB接口的多串口数据并行接收方法探索
JESD204B接口协议中的8B10B编码器设计
基于蓝牙串口适配器的GPS接收机与AutoCAD的实时无线通信