1. 引言
步进电机根据输入的脉冲信号转变成角位移或者线位移的开环控制电机,在医疗器械、数控机床以及光学设备等领域实现广泛应用[1]。在步进电机正常运作的情况下,电机的转速大小与停止位置只受脉冲信号频率与个数的控制,不受负载的影响。步进电机是以固定旋转角度运行的,可通过控制脉冲个数与频率来控制位移量,进而实现准确步进定位的目的[2]。近年来,研究人员提出基于单片机对步进电机进行控制系统设计[3]-[5],但在实际应用中,基于单片机的控制系统对电机的控制精度相较于FPGA控制来说更低;基于FPGA的步进电机控制系统研究[6]-[9]使得电机启停频率进行精确控制、系统稳定性与抗干扰性更高;但目前四相电机驱动控制设备研究较少,并存在一定的不足:首先,电机的控制驱动策略单一,调节范围小,稳定性不足以及缺少更精细化的控制方式,难以满足一些需要高精度与高稳定性的应用背景;其次,在一些应用环境较为恶劣或对操作人员身体存在一定风险的地方,人员难以接近步进电机控制装置,若步进电机运作过程中出现过流情况,但因缺少监测装置导致相关人员不能及时应对突发情况,于是可能会引发安全事故。因此,本文基于上述问题,提出基于FPGA的四相步进电机驱动及电机参数采集系统设计,使步进电机驱动更加精细,运行更加安全。
2. 系统框架
Figure 1. System diagram
图1. 系统框图
本设计的系统框图如图1所示,用户经上位机对四相步进电机的驱动电压、微步细分、目标转速等驱动参数进行配置,之后由FPGA内部相应的逻辑组合,对用户的配置进行实现;当电机运行时,经相应的数据采集电路对电机的相电压、相电流、霍尔信号以及编码器等数据进行采集,经FPGA内部对不同数据汇总后,定时上传至上位机以便用户实时监测电机相关性能参数。
3. 各模块功能设计
3.1. 高速网络接口搭建
在工业控制系统中,基于以太网协议进行数据传输已经得到广泛应用[10]-[12]。目前千兆以太网接口设计方案常采用端口物理接口收发器(PHY, port physical layer)芯片与媒体接入控制器(MAC, Media Access Control Address)来实现[13]。网络接口常用的有GMII (Gigabit Medium Independent Interface)和RGMII (Reduced Gigabit Medium Independent Interface)两种媒体独立接口,二者接口的传输速率都可达到1000 Mbps,区别在于GMII接口数据传输位宽为8位,而RGMII接口数据传输位宽为4位[14]。从FPGA引脚资源方面考虑,本设计采用RGMII接口作为PHY芯片与MAC的通信接口,接口信息如图2所示。
Figure 2. RGMII interface
图2. RGMII接口
UDP协议和TCP协议都是位于开放式系统互联(OSI, Open System Interconnection)参考的模型中的第四层(传输层),属于无连接型的传输层协议,位于IP协议层(网络层)之上[15],如图3所示为OSI参考模型。相较TCP协议而言,UDP协议的特点在于不需要握手操作,并且通信速率快,资源占用较少,所以本设计采用UDP协议作为FPGA主控和上位机通信的传输协议。
Figure 3. OSI model
图3. OSI模型
以太网UDP传输数据帧的格式由图4所示。从图中可以看出,以太网的数据帧通过对各层协议组合封装后实现数据的传输。每帧数据包含前导码(preamble)、帧起始界定符(SFD, Start Frame Delimiter)、以太网帧头、IP首部、UDP首部、用户数据和帧检验序列(FCS, Frame Check Sequence)。
Figure 4. UDP data frame format
图4. UDP数据帧格式
为使FPGA实现UDP通信功能,可通过如下两个方案架构:FPGA + CPU架构和FPGA + PHY + MAC架构,对于这两种方案架构,FPGA + CPU架构是通过CPU将经UDP协议发送来的数据进行解析后再交由FPGA进行数据处理;FPGA + PHY + MAC架构是运用FPGA的内部逻辑资源对UDP传输层协议进行构建,通过PHY芯片进行物理层的传递,并结合MAC实现数据链路层功能,以此实现UDP传输功能[16]。前者架构中,由于CPU进行网络传输会触发中断,所以将存在传输延迟不固定的隐患。于是本设计根据FPGA + PHY + MAC架构进行UDP协议的传输功能构建。本系统选用Xilinx公司型号XC7A35TFGG484-2的FPGA芯片开发板为主控,PHY芯片型号为RTL8211,运用三段式状态机实现其功能,其状态跳转如图5和图6所示。
Figure 5. UDP receive part of the state machine
图5. UDP接收部分状态机
Figure 6. UDP transmit part of the state machine
图6. UDP发送部分状态机
3.2. 电机驱动模块搭建
3.2.1. 电机驱动电路设计
本文设计驱动的电机为四相步进电机,而电机驱动芯片中少有四相步进电机驱动芯片,于是本设计决定采用两片两相步进电机驱动芯片进行组合,搭建相应驱动电路对四相电机进行驱动。电机驱动芯片TMC2590具有5~60 V高驱动电压范围以及微步细分最高可支持256细分,符号本设计的设计需求。如图7所示为电机驱动电压电路,采用分压法控制数字电位器MCP41010的阻值大小,进而调节电机驱动电压VM的大小。为实现电机驱动电压范围为4~20 V,直接驱动MOS管的方案无法满足设计需求,因此决定采用外部栅极驱动IC芯片,如图8为电机的H桥驱动电路。
Figure 7. The motor drives the voltage circuit
图7. 电机驱动电压电路
Figure 8. H-bridge circuit
图8. H桥电路
3.2.2. 电机驱动软件控制设计
步进电机作为感应负载,通过控制电机上的电流大小可实现对电机的步进控制。于是根据TMC2590芯片内的SPI驱动模式,为H桥电路提供高、低边的控制信号,结合FPGA主控内存储的微步表以及上位机下发的S型速度曲线,可使步进电机按照整步或微步的方式进行变速转动。如图9所示为电机控制模块功能结构。此模块根据上位机下发的电机启动和停止指令对此模块进行控制,根据上位机设定的目标转速、电机细分以及驱动模式进行相应环节响应,由S型速度曲线模块将存储的电机转速值按一定量输入该模块的ram中存储,然后对当前电机转速和目标转速进行比较,决定需要加速或是减速,再根据设置的微步细分将相应数据以SPI的接口协议输出给驱动芯片TMC2590进行配置。
Figure 9. Motor control module function structure
图9. 电机控制模块功能结构
S型速度曲线广泛应用于对步进电机的控制中,S型速度曲线是一种平滑的速度曲线,其加减速过程更加平滑,能够避免因突变速度对电机和机械系统造成的冲击和振动[17]。而在加减速的过程中速度等级细分的越多,则会使步进电机的转动更加流畅。考虑到FPGA的内部资源有限,不适合使用RAM对S型速度曲线的数据存储,于是决定采用外部的DDR3存储器对其进行存储。
本系统采用的主控开发板上配有一个型号为MT41J128M16HA-125的2 Gbit (256 MB)的DDR3芯片,为高效的使用DDR3存储器,采用Vivado软件提供的MIG IP核作为存储器的控制器。MIG IP核主要由用户接口块(User Interface Block)、存储器控制器(Memory Controller)和物理层(Physical Layer)这三部分组成[18]。用户需线根据数据手册对接口时钟、存储器类型以及位宽等参数在配置页面进行MIG IP核的配置,待配置成功后则实现存储器控制器与物理层之间的连接,之后需要考虑用户接口块的读写逻辑。如图10为DDR3读写状态机。
Figure 10. DDR3 read/write state machine
图10. DDR3读写状态机
本设计采用降压转换芯片TPS5450与数字电位器MCP41010组合进行可变分压操作,即可提供电机不同的驱动电压。电机驱动电压设置流程:首先由用户在上位机输入设定的电机驱动电压数值,之后由上位机根据降压转换芯片TPS5450数据手册中的计算公式,即公式(1)进行计算数字电位器的阻值大小,再将此阻值大小转换成二进制码值发送给主控,当主控接收到数据后,通过SPI接口将数据发送给MCP41010进行阻值配置。
(1)
式中
为上位机输入的电机驱动电压数值,
为用来串联分压的阻值,大小为10 KΩ,
为数字电位器的阻值大小。
3.3. 数据采集模块搭建
3.3.1. 电机相电压、相电流采集
本设计不仅需要对四相步进电机的相电压与相电流的测量分辨率达到毫伏与毫安级别,还需要对多通道进行同步采集,而AD7606C是一款8通道16位同步采样模数数据采集系统(DAS),其每个通道均包含模拟输入箝位保护、可编程增益放大器(PGA)、低通滤波器(LPF)和16位逐次逼近寄存器(SAR)模数转换器(ADC),可满足本文的设计需求,于是本文采用模数转换芯片AD7606C作为数据采集芯片,采集电路如图11所示。
Figure 11. Acquisition circuit
图11. 采集电路
3.3.2. 霍尔信号采集
霍尔信号传感器有三根连接线,+5 V电源线、地线、霍尔信号输出线,霍尔信号输出有效为低电平,为便于主控采集,将其转换成3.3 V电平,如图12所示为霍尔信号电路。根据设计要求,通过相邻的霍尔信号之间的时间差来判断四相电机在匀速转动时是否出现丢步或振动等造成转动不稳定的现象,于是采用50 MHz的主时钟对相邻霍尔信号之间的时间差计时。
Figure 12. Hall signal circuit
图12. 霍尔信号电路
3.3.3. 编码器数据采集
感栅编码器与光电编码器相比具有更高的抗污染、抗冲击能力,于是本设计采用感栅编码器对电机位置信息进行采集。本设计采用的感栅编码器的传输协议为同步串行接口(Synchronous Serial interface, SSI)协议,而SSI协议是RS422通信协议上的单向串行协议,RS422接口电路如图13所示。
Figure 13. RS422 interface circuit
图13. RS422接口电路
3.4. 上位机与主控传输协议搭建
为实现上位机精准驱动四相步进电机与电机参数实时监测,需设计上位机与主控之间的传输协议,如图14为FPGA内部指令解析与数据上传框图。如框图中所示,上位机下发的数据帧经UDP收发单元接收后传输至指令解析模块进行指令区分,并将区分的指令分别流入对应模块以便于后续逻辑单元的使用。在四相步进电机运行时,电机的相电压、相电流、霍尔信号以及编码器等数据被采集后,经数据组帧模块将不同数据定时汇总上传至上位机,经上位机相应处理后进行实时显示对应参数的波形。
Figure 14. Instruction parsing and data upload block diagram
图14. 指令解析与数据上传框图
4. 系统仿真与测试
4.1. 系统仿真
为验证主控数据上传的准确性,本设计决定采用信号发生器产生频率为1 KHz,幅值为2 V的正弦信号作为芯片AD7606C采集通道的输入信号,对比经上位机处理后存储的数据绘制的波形来测试数据采集上传的准确性。如图15为存储数据绘图,从图中可看出采集到的数据绘制出来是正弦波形,其幅值是2 V,周期为200个采样点,而此次测试对AD7606C设置采样频率是200 KHz,所以该正弦波形周期为1 μs。根据输入的正弦信号与上位机采集到的数据绘制出的波形对比,可认为本设计的数据采集上传准确无误。
Figure 15. Memory data plotting
图15. 存储数据绘图
4.2. 系统测试
为确定本系统实现相应功能,于是对系统进行测试验证。本次测试设定的电机驱动电压为9 V、微步细分为全步模式,以及电机的目标转速为15 r/min,并设置霍尔信号时间间隔的上限值与下限值。四相步进电机达到匀速状态下四个相线上的相电压与相电流的波形图如图16和图17所示,根据此波形图可对电机运行时四相进行监测,观察四个相线上的电压值与电流值是否出现的异常状态,并且在电机运行过程中,可通过霍尔信号的时间间隔与编码器的位置信息分别计算出电机运行时的平均速度与瞬时速度,进而监测电机运行过程中是否出现丢步以及堵转等异常运行现象。
Figure 16. Motor phase voltage waveform
图16. 电机相电压波形
Figure 17. Motor phase current waveform
图17. 电机相电流波形
5. 结论
本文基于FPGA设计出四相步进电机驱动及电机参数采集系统,主要具有以下几项优点:1. 电机驱动电压实现4~20 V可调,步进细分最高支持256细分,并且可自由组合,实现步进电机驱动灵活配置;2. 根据UDP协议与DDR3存储器的结合应用,为步进电机控制需要的变速曲线提供大量的存储空间,为实现更精细化的驱动步进电机提供可能;3. 在此基础上,本设计将步进电机相电压、相电流、霍尔信号以及编码器等电机相关参数进行采集、上传后进行实时波形显示,从而可对步进电机运行时的电压、电流、瞬时速度以及平均速度进行实时监测;4. 本设计不仅可对各电机参数进行设置阈值上下限,还有相应的报警方式,在出现异常现象可通过不同的报警方式定位到问题根源,为操作人员排查问题提供便利。本文设计了更加精细化的四相步进电机驱动方式以及对四相步进电机的运行进行实时监测,可实现高精度的四相步进电机驱动控制,并且通过实时监测四相步进电机运行以及相应的报警方式,为安全性提供更多保障,具有较高的工程应用价值。