• 正文
  • 相关推荐
申请入驻 产业图谱

1/128微步进+10A相电流:Agilex 3 FPGA如何打造高精度CNC步进控制

2小时前
22
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

作者:Jean-Jacques

对传统计算机数控(CNC)设备进行改造既是一项挑战,也是一种机遇。传统机床的机械结构通常仍保持良好的工作状态,但其控制系统中的电子元件往往采用专有技术,或已停止技术支持,导致设备难以与现代软件工具和工作流程集成。更换整个CNC系统成本高昂且缺乏灵活性,而现成的改造方案则可能限制定制化或实验的可能性。

本项目提出了一种替代方案:采用基于FPGA的控制架构构建原型系统,在实现传统CNC设备现代化改造的同时,保留对系统设计的完全控制权。

项目材料和资源

项目物料清单(BOM)

Terasic Technologies Atum A3 Nano开发板

Arduino UNO R4 Wi-Fi®

STMicroelectronics X-NUCLEO-IHM03A1扩展板 ×3

双向逻辑电平转换模块(4通道或8通道)

四线、六线或八线配置的步进电机 ×3

5V/3A直流电源(用于Terasic Technologies Atum A3 Nano开发板)

适合您所用电机的5–50VDC电源(需满足总负载的额定电流需求);接地端需连接到公共地

PC(Windows或Linux系统)

万用表

电烙铁

跳线

小号螺丝刀

软件与下载

Quartus Prime Pro软件(新版本)及相关许可证

Altera Agilex 3 C系列FPGA软件(Agilex 3器件支持的新许可证版本)

Agilex通用文件

USB Blaster III驱动程序(新版本;为Quartus Prime Pro软件的一部分)

UART FTDI驱动程序(新版本;为Quartus Prime Pro软件的一部分)

Arduino IDE

Ponoor PowerSTEP01库v 1.1.0(可通过Arduino IDE获取)

项目代码

GitHub项目存储库

ard_control.ino(为本项目开发)

fpga_control.v(为本项目开发)

参考文档

STMicroelectronics X-NUCLEO-IHM03A1 Expansion Board Datasheet

STMicroelectronics X-NUCLEO-IHM03A1 User Manual

Terasic Atum A3 Nano Board Getting Started Guide

Terasic Atum A3 Nano Board User Manual

Terasic Atum A3 Nano Board My First FPGA

项目技术概述

图1:Terasic Technologies Atum A3 Nano开发板、STMicroelectronics X-NUCLEO-IHM03A1步进电机驱动板(连接到Arduino UNO R4 Wi-Fi板)以及从CNC铣床拆解下来的步进电机。(图源:作者)

本文介绍了如何利用Terasic Technologies Atum A3 Nano开发板上的Altera Agilex™ 3 FPGA,并结合基于Arduino的SPI电机控制架构,构建并测试多轴步进电机控制系统(图1)。三台步进电机分别对应一台传统数控铣床的x、y和z轴,经过逆向工程、重新接线,并通过FPGA选择的串行外设接口(SPI)芯片选择逻辑进行驱动。Atum A3 Nano开发板上的按钮和开关提供即时的硬件级控制和视觉反馈,展示了FPGA如何作为高度灵活的CNC接口设备。

这个高级项目让参与者能够体验基于FPGA的逻辑设计、SPI通信以及CNC系统改造。通过完成该项目,您将了解如何利用现代可编程逻辑技术对传统机床进行升级改造,不仅能够延长设备使用寿命、提升功能和性能,还能为集成先进CNC控制界面奠定基础,实现PC控制和G代码解析等现代化功能。

虽然不是硬性要求,但若具备Quartus Prime、Verilog HDL、FPGA、Arduino UNO、SPI通信以及步进电机驱动器的相关经验,将使该项目的理解和实施更加轻松。

Terasic Technologies Atum A3 Nano开发板

Terasic Technologies Atum A3 Nano开发板是一款基于Altera Agilex™ 3 FPGA构建的紧凑型FPGA开发平台。该FPGA在主要配置下拥有约135K个逻辑单元,采用Altera的HyperFlex架构,并集成了双Arm® Cortex®-A5内核和硬化外设等先进功能,使其性能远超早期的Cyclone® V FPGA,同时具备更快的收发器,并支持LPDDR4等现代内存。

Arduino UNO R4 Wi-Fi

Arduino UNO R4 Wi-Fi结合了基于48MHz Arm Cortex-M4内核的32位Renesas RA4M1微控制器,并集成了ESP32-S3模块,以提供内置Wi-Fi和蓝牙连接。这种双处理器架构提供了大幅扩容的存储空间(256kB闪存、32kB SRAM和8kB EEPROM),同时还增强了性能和外设功能,包括实时时钟数模转换器(DAC)以及CAN总线

STMicroelectronics X-NUCLEO-IHM03A1扩展板

STMicroelectronics X-NUCLEO-IHM03A1扩展板是一款基于先进powerSTEP01控制器的高功率步进电机驱动平台,可提供精确高效的电机控制。它支持全数字化运动控制,具有可编程速度曲线、定位计算和全面的保护特性,为要求严苛的应用提供高性能和稳健性。该板支持宽工作范围,可处理10.5V到50V的供电电压和高达10A RMS相电流,同时通过高达1/128的微步进以及无传感器堵转检测和过温保护等功能,提供精细的电机控制。该板设计灵活,兼容Arduino UNO R3/R4连接器,并可以与其他板堆叠使用,以驱动多达三个步进电机,使其成为工业、机器人和运动控制应用的可扩展且易于集成的解决方案。

项目开发

仅凭铣床中可见的电子元件,无法轻易确定本项目中使用的步进电机的接线方式。不过,可以通过从铣床中拆下步进电机并对电子元件进行逆向工程,来确定步进电机线圈的配置和接线方式。

拆卸步进电机

从CNC铣床中拆下步进电机(图2)。此过程的具体步骤取决于待改装的特定机型,但大多数机器都需要拆卸安装螺栓和紧固件,以及线束或接口板。

图2:从CNC铣床拆卸下来的步进电机(图源:作者)

确定步进电机线圈配置和接线

从该CNC铣床电子设备(图3)可以看出,其步进电机采用八线配置,工作电压为24VDC,工作电流小于1.5A。

注意:Nucleo开发板的接线端子可支持50VDC输入电压。请确保您的电机工作电压低于50VDC。

图3:CNC铣床的步进电机电源(图源:作者)

然而,电机的接线接口(图4)并未明确显示电机的具体接线方式。如果您使用的是回收或未标注的步进电机,请先识别线圈对。如果您的电机是已知且带有明确引脚映射文档的四线电机,则可跳至驱动器连接步骤。

图4:从CNC铣床拆解下来的接线接口,其中未包含任何可直接解读的步进电机引脚连接说明。(图源:作者)

使用万用表的电阻(Ω)档,通过测量各导线之间的电阻,确定线圈对。真正的线圈对会显示较低且稳定的电阻(通常为1Ω到5Ω);非线圈对则会显示开路(OL)或非常高的电阻。

如果使用的是八线电机,将具有四个独立的线圈(即四个不同的低电阻线圈对)。如果是六线电机,则每个相位都有一个中心抽头。因此,端到端电阻大约是端到中心抽头电阻的两倍。

如果您使用的是八线或六线电机,则需要将其转换为标准的四线驱动器配置。为此,应为每个相位选择串联或并联接线方案,并将由此产生的四根引线映射到Nucleo板上的A+、A-、B+和B-端子。

在测试电机引线前,请确保电源完全断开并放电完毕。在步进电机连接到未通电的驱动板时,手动转动电机会产生反电动势,这可能会导致万用表读数失真,并永久损坏板载powerSTEP01集成电路

确定各绕组对后,还需判断哪些绕组属于同一相,以及各绕组之间的极性关系。对于八线电机,两组绕组构成A相,另外两组绕组构成B相。将一组候选绕组接至驱动器的A+/A−端子,另一组候选绕组接至B+/B−端子,并在较低电流和低速条件下启动驱动器进行测试。如果电机仅振动而不能正常旋转,或发生堵转现象,应断开电源,然后尝试调换其中一相的接线极性,或重新选择绕组组合进行测试。

注意:确保直流电正确连接到Nucleo板的正极(+)和负极(-)端子。请查阅X-NUCLEO-IHM03A1数据手册以了解电压和功率处理能力,并验证当施加直流电时,板载发光二极管(LED)指示灯是否点亮。

测试步进电机功能

通过将步进电机连接到堆叠在Arduino UNO R4 Wi-Fi板上的X-NUCLEO-IHM03A1步进电机驱动板,来测试其功能。

将电机相位线及其输入电源线连接到Nucleo板上的螺丝端子(图5)。

图5:使用X-NUCLEO-IHM03A1步进电机驱动器测试步进电机接线配置。(图源:作者)

将Nucleo板连接到Arduino UNO R4 Wi-Fi板。

通过USB数据线将Arduino板连接到PC。

通过Arduino IDE库管理器安装Ponoor PowerSTEP01库v1.1.0。

运行powerSTEP01SimpleTest.ino示例程序。

如果已将步进电机正确连接至Nucleo板,电机应先正转再反转。

组装步进电机板和Arduino控板平台

假设三台步进电机的规格完全相同,则可采用相同的接线方式,将每台步进电机分别连接到一块独立的X-NUCLEO-IHM03A1驱动板上。Nucleo开发板与Arduino UNO的引脚布局兼容,并且各Nucleo板之间也彼此兼容,因此支持堆叠安装。这样,三块Nucleo板便可同时连接到同一块Arduino UNO上。Arduino UNO的SPI接口引脚与X-NUCLEO-IHM03A1板相匹配,借助相应的软件库,即可通过SPI接口直接控制至多三路步进电机驱动器。

STMicroelectronics提供了在X-NUCLEO-IHM03A1板上驱动三个步进电机的示例代码(配置详情,请参阅X-NUCLEO-IHM03A1用户手册),但目前可用于通过单块Arduino UNO快速实现与三块驱动板进行SPI通信的标准库却相对较少。在本项目中,FPGA将来自Arduino UNO的片选(CS)信号路由至目标Nucleo步进电机驱动板。这种方法允许至多堆叠三块X-NUCLEO-IHM03A1板并插入Arduino UNO,由Arduino UNO处理各驱动板的SPI通信。

为实现这种堆叠方案,需要移除或弯折每块Nucleo板底部突出的CS引脚。然后,通过电平转换器将Arduino UNO的D10 (CS) 引脚连接至Terasic FPGA的GPIO 5。将FPGA控制的CS输出信号从GPIO 2、GPIO 3和GPIO 4分别连接至底部、中间和顶部X-NUCLEO-IHM03A1开发板上的CS引脚。FPGA/接头引脚的具体物理位置必须与表1中的引脚映射一致。

将步进电机连接到X-NUCLEO-IHM03A1步进电机驱动板。

在每块Nucleo板上,将CS引脚剪断或向外弯折,使其既不与Arduino的排针接口连接,也不与下方Nucleo板的排针接口接触。

随后,为每块Nucleo板的CS引脚分别连接一根信号线。该信号线既可以从板卡顶部的排针端子引出,也可以直接连接到之前弯折并隔离的CS引脚上(如果采用弯折方案)。

将FPGA的CS引脚通过导线连接到Arduino板的D10引脚。

将Nucleo板堆叠在一起,并连接到Arduino UNO板。

将Arduino板的FPGA GPIO引脚连接至相应的FPGA GPIO引脚

Terasic Atum A3 Nano板采用3.3V逻辑电平,而Arduino UNO R4 Wi-Fi(包括SPI GPIO引脚)则采用5V逻辑电平。若直接用5V信号驱动3.3V逻辑器件,可能会导致FPGA永久性损坏。为保证系统能够安全稳定地运行,需要在Arduino和Terasic板之间增加一个双向逻辑电平转换器,以实现两者之间电压电平的正确转换(图6)。

图6:展示Agilex 3 FPGA和Arduino UNO之间5V到3.3V双向逻辑电平转换器互连的框图。(图源:贸泽)

根据表1中定义的逻辑路径连接系统。

注意:请确保将Arduino板的5V逻辑引脚连接到逻辑电平转换器的高压(HV)侧,将Terasic板的3.3V引脚连接到低压(LV)侧。

通过电平转换器将Arduino D10 (CS) 引脚连接到Terasic FPGA GPIO 5。

通过电平转换器将Terasic板的引脚2、3和4分别连接到三块X-NUCLEO-IHM03A1板的CS引脚10。

将Terasic板上由FPGA生成的方向控制信号通过电平转换器连接至Arduino:其中,Terasic FPGA GPIO 0连接到Arduino D7,对应正转信号;Terasic FPGA GPIO 1连接到Arduino D6,对应反转信号。Atum板的按键状态由FPGA在内部读取,FPGA根据按键输入控制相应GPIO信号,并将方向指令发送给Arduino。

通过规定的5V直流输入电压为Atum A3 Nano板供电。

通过USB或相应的电源输入为Arduino供电。

通过连接到VS和GND的独立电机电源为X-NUCLEO-IHM03A1电机驱动板供电,并将所有设备的GND连接在一起,形成共地。

通过USB将Terasic板连接到PC。

重新编程Arduino

使用本地ard_control.ino脚本重新编程Arduino UNO。该代码使用了powerSTEP01SimpleTest.ino示例的修改版本。Arduino将SPI通信配置为使用SPI模式3(时钟极性[CPOL]=1且时钟相位[CPHA]=1),确保时钟极性和相位与自定义CS逻辑及powerSTEP01 IC正确同步。

本次修改将Arduino UNO的引脚7和6定义为数字输入,用于读取来自FPGA的正向和反向逻辑控制信号。当Arduino检测到引脚7为高电平时,会通过SPI向当前激活的电机驱动器发送一条正向步进命令,并在后续步进操作前等待20ms。当检测到引脚6为高电平时,Arduino则会通过SPI发送一条反向步进命令。

设置FPGA

有关安装编程Atum A3 Nano板所需的Quartus Prime软件的背景信息,请参阅Terasic Technologies文档。Atum A3 Nano板入门指南和我的第一个FPGA详细说明了如何安装Quartus Prime、获取许可证文件以及运行示例项目。

配置FPGA:

在Quartus Prime中,单击File并选择New Project Wizard。

设置工作目录、项目名称和顶层实体名称(例如,fpga_control)。

依次点击Assignments和Device。

在打开的窗口中,点击Family下拉菜单并选择Agilex 3。

点击Device下拉菜单并选择Atum A3 Nano Board。

添加HDL文件:依次点击Project和Add/Remove Files in Project,并选择fpga_control.v。若系统提示,请将该文件设为顶层实体。

分配FPGA引脚:依次点击Assignments和Pin Planner。将设计信号映射到物理FPGA引脚(图7)。

图7:本项目中所用Quartus Prime引脚规划器的Atum A3 Nano FPGA引脚标识。(图源:作者)

依次点击Processing和Start Compilation。Quartus将生成一个.sof编程文件。

依次点击Tools和Programmer。

点击Hardware Setup并选择连接的USB Blaster设备。

添加生成的.sof文件(如果未自动添加),选择Program/Configure复选框,然后点击Start。

步进电机控制

本项目中的步进电机控制依赖于Arduino UNO R4 Wi-Fi实现的SPI通信,而电机选择和控制逻辑则由Atum A3 Nano FPGA的输入信号驱动。Terasic Technologies Atum A3 Nano板上的按钮通过Arduino上的专用逻辑输入,实现步进电机的正转和反转控制。

为实现对三块X-NUCLEO-IHM03A1驱动板的控制,可采用SPI菊花链连接方式对这些板卡进行配置。具体而言,通过调整板上的电阻阵列设置相关寄存器,从而定义SPI电机控制器的通信方式。在该标准模式下,SPI主控制器按顺序发送多个字节,而链路中的各SPI设备则接收对应的数据字节并执行相应操作。

然而,本项目采用FPGA将CS信号直接传输到每个步进电机控制器的SPI接口(图8)。SPI设备仅在CS信号被拉低时才会接收传输数据;传输完成后,必须再次将CS信号拉高。FPGA程序设计已充分考虑这一通信特性,因此无需通过拆焊和重新焊接电阻来修改相关配置。

图8:逻辑流程图和示意图,对比了标准SPI菊花链连接与本项目中使用的自定义FPGA路由CS拓扑。(图源:贸泽)

堆叠多块X-NUCLEO-IHM03A1板需将每块堆叠板底部的CS引脚进行隔离,以防其与Arduino UNO上的MCU相连。然后从专用FPGA GPIO引出独立的CS引线,连接至步进电机驱动器的CS引脚(在X-NUCLEO-IHM03A1板上标记为CS,在Arduino UNO R4 Wi-Fi上标记为D10引脚)。

FPGA利用Arduino的D10 CS信号,通过简单的逻辑控制在特定条件下激活相应驱动板的CS引脚。在本示例中,Atum A3 Nano板上的两个开关用于选择当前需要控制的电机。Atum A3 Nano板上的LED阵列可直观显示FPGA和CS信号状态。LED 0和1以二进制编码方式显示当前选中的电机编号(例如:关闭对应0;电机1对应00,电机2对应01,电机3对应11)。LED 3则用于显示CS信号的活动状态,当发生CS信号切换时会闪烁,其行为与Arduino UNO上的TX LED相对应。

Verilog HDL文件

Verilog HDL文件用于初始化FPGA的输入和输出,并通过简单逻辑电路,将开关、按键和Arduino CS信号映射到Arduino的命令输入、X-NUCLEO-IHM03A1扩展板的片选信号以及FPGA开发板上的LED指示灯。当多个X-NUCLEO-IHM03A1板堆叠时,它们的CS信号被隔离并通过FPGA传输。这使得Arduino的CS信号每次只能控制一个步进电机驱动器。FPGA根据开关输入来确定哪个电机接收SPI通信。

为实现这种自定义信号路由,FPGA使用简单的与门逻辑,将CS信号与当前激活的开关状态直接关联。例如,使用逻辑非运算符(用!符号表示),基本的信号路由逻辑可按如下方式编写:

assign gpio_motor_1 = (!switch[0] & !switch[1]) & CS;

assign gpio_motor_2 = (switch[0] & !switch[1]) & CS;

assign gpio_motor_3 = (switch[0] & switch[1]) & CS;

由于控制按键采用低电平有效方式工作,因此FPGA的正向控制GPIO输出被设定为对应按键输入的逻辑非值;反向控制采用相同的处理逻辑。LED 0和LED 1用于指示电机选择状态,以二进制编码方式显示FPGA板载开关信号的反向逻辑状态。CS_LED输出连接至FPGA开发板上的LED 3,其闪烁时序与Arduino的CS信号保持同步(如图9所示)。CS_out信号仅用于测试。根据上述assign语句,FPGA将Arduino的CS信号与开关选择的电机使能信号进行逻辑与运算,从而确保在SPI通信过程中,仅有一个驱动器的CS信号处于有效状态。

图9:本项目中用于编程Atum A3 Nano FPGA板的fpga_control.v Verilog HDL文件。(图源:作者)

在Quartus Prime中完成引脚分配后,会对该项目进行编译。Quartus生成fpga_control.sof文件,Programmer将利用该文件对FPGA进行配置(图10)。

图10:Quartus Prime Programmer窗口用于将.sof文件信息发送到FPGA进行编程。(图源:作者)

运行系统

要控制电机,可使用Atum A3 Nano上的两个开关选择目标电机,然后按下相应的按键来驱动该电机。

电机1(二进制00):两个开关均处于向下位置(朝向电路板边缘)。

电机2(二进制01):紧邻按键的开关(SW0)处于向上位置(远离电路板边缘),而靠近电路板角落的开关(SW1)处于向下位置。

电机3(二进制11):两个开关均处于向上位置。

在完成硬件布线(图11)、对FPGA编程,且Arduino UNO运行ard_control.ino代码后,系统将按如下运行:

当两个开关均处于向下位置(选择电机1)时,按住Key0按键使电机每20ms前进一步。按住Key1按钮,电机反向旋转。

当两个开关均处于向上位置时,电机3的响应方式与电机1相同。

当SW1处于向下位置且SW0处于向上位置时,电机2的响应方式与电机1相同,前提是HDL将电机2映射到开关状态01。

图11:项目设置的粗略接线和测试图。(图源:作者)

结语

本项目探索了如何利用FPGA开发多轴电机控制接口原型,用于对配备三台步进电机的传统CNC铣床进行升级改造。系统采用Arduino UNO负责SPI通信,Terasic Technologies Atum A3 Nano开发板负责控制逻辑处理,从而实现了基于板载开关和按键的多电机系统控制功能。虽然该原型系统目前依赖Arduino作为SPI通信控制器,但开发人员可以采用HDL实现SPI主控、powerSTEP01命令序列及所需的配置和状态机逻辑,从而将Arduino的控制功能集成到FPGA中。

此外,若进一步集成外部控制器或基于PC的软件系统,以实现G代码的解析与执行,FPGA还能够扩展为CNC系统的核心控制接口,进一步提升其在数控机床控制中的应用价值。

该发布文章为独家原创文章,转载请注明来源。对于未经许可的复制和不符合要求的转载我们将保留依法追究法律责任的权利。

贸泽

贸泽

贸泽是电子元器件和工业自动化产品的知名授权代理商。我们汇聚超过1200家品牌制造商的730多万种产品,为客户提供丰富且全面的现货产品选择。我们的电子元器件业务面向设计工程师及采购人员,提供半导体、无源元件、连接器及相关电子技术领域的新产品引入服务。我们的工业自动化业务通过新一代传感器、控制面板、PLC及电机控制等现货解决方案,帮助客户设计、打造并维护制造设备及生产运营体系,同时支持快速发货。 贸泽在全球设有 28 个客户支持中心,为客户提供无时差的本地化贴心服务,并支持使用当地货币结算。我们从占地约13.9万平方米的先进全球配送中心,将产品运送至全球223个国家/地区、超过65万个顾客的手中。更多信息,敬请访问:https://www.mouser.cn/zh。

贸泽是电子元器件和工业自动化产品的知名授权代理商。我们汇聚超过1200家品牌制造商的730多万种产品,为客户提供丰富且全面的现货产品选择。我们的电子元器件业务面向设计工程师及采购人员,提供半导体、无源元件、连接器及相关电子技术领域的新产品引入服务。我们的工业自动化业务通过新一代传感器、控制面板、PLC及电机控制等现货解决方案,帮助客户设计、打造并维护制造设备及生产运营体系,同时支持快速发货。 贸泽在全球设有 28 个客户支持中心,为客户提供无时差的本地化贴心服务,并支持使用当地货币结算。我们从占地约13.9万平方米的先进全球配送中心,将产品运送至全球223个国家/地区、超过65万个顾客的手中。更多信息,敬请访问:https://www.mouser.cn/zh。收起

查看更多

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录

贸泽 (Mouser Electronics) 是全球授权半导体和电子元器件代理商,致力于以高效的方式向电子设计工程师和采购推广新一代产品和新技术,全面支持研发阶段的采购。 Mouser.cn一个芯片也可出货,新一代产品信息和技术内容每日更新,可在线搜寻超过1200家品牌制造商的3100多万种产品,其中730多万种产品可直接在线订购,产品涵盖的应用领域包括工业、机器人技术、物联网、新能源、汽车电子等。想深入了解贸泽,请访问:https://www.mouser.cn