注意:如果您打算使用 TMC5160 驱动程序,请先参阅此页面
本页适用于在固件控制下使用 Trinamic 驱动程序。它不适用于在 StepStick 或独立模式下使用的 Trinamic 驱动程序。这些驱动程序的使用方式与普通的 StepStick 驱动程序相同。
Grbl_ESP32 支持 2 种类型的 Trinamic 驱动程序。有 SPI 类型和 UART 类型。
目前您只能使用默认 SPI。您的 PCB 应使用 GPIO_NUM_32 作为 MOSI、GPIO_PIN_19 作为 MISO 以及 GPIO_NUM_18 作为 SCK。
对于您使用的每个 Trinamic 驱动器,您需要为每个轴添加一个#define X_TRINAMIC_DRIVER nnnn,其中 nnnn 是驱动器型号(整数)。目前限制为 2130 和 5160。
您可以为每个驱动器使用单独的 CS 引脚,或者如果驱动器采用菊花链模式连接,则使用单个 CS 引脚。如果您使用菊花链模式,则必须将#define TRINAMIC_DAISY_CHAIN添加到机器定义文件中。对于每个电机,您需要使用#define X_CS_PIN pin定义 CS 引脚。如果您使用菊花链模式,则每个电机应使用相同的引脚号。
它们使用 UART 与驱动程序通信。Grbl_ESP32 目前支持 TMC2209
您必须提供有关 UART 的信息
#define TMC_UART UART_NUM_1
#define TMC_UART_RX GPIO_NUM_21
#define TMC_UART_TX GPIO_NUM_22
每个芯片必须有一个地址。这是由电路定义的。定义它的方式如下#define X_DRIVER_ADDRESS n,其中 n 是地址。这通常是 0-3。
- 您可以使用#define STEPPERS_DISABLE_PIN pin为所有驱动器使用单个启用引脚
- 您可以使用#define X_DISABLE_PIN pin为每个电机定义一个使能端
- 您可以使用 SPI 启用#define USE_TRINAMIC_ENABLE
您必须告诉固件每个驱动器的检测电阻的值。这是固件使用#define X_RSENSE 0.11正确设置电机电流所必需的。每个电机都有一个通常正确的默认定义,设置方式如下#define X_RSENSE TMC2130_RSENSE_DEFAULT。
其余的内容如步进、方向等与普通电机驱动器相同。
有正常运行和归位运行模式。
- #定义 TRINAMIC_UART_RUN_MODE xxx
- TRINAMIC_UART_HOMING_MODE xxx
xxx 的有效值为
- TrinamicUartMode::StealthChop
- TrinamicUartMode::StallGuard
- TrinamicUartMode::CoolStep
以下是机器定义文件的一部分,供参考。
// SPI Daisy chain style with software enable
#define TRINAMIC_DAISY_CHAIN
#define USE_TRINAMIC_ENABLE
#define X_TRINAMIC_DRIVER 2130 // Which Driver Type?
#define X_RSENSE TMC2130_RSENSE_DEFAULT
#define X_CS_PIN GPIO_NUM_17 // Daisy Chain, all share same CS pin
#define X_STEP_PIN GPIO_NUM_12
#define X_DIRECTION_PIN GPIO_NUM_14
#define Y_TRINAMIC_DRIVER 2130 // Which Driver Type?
#define Y_RSENSE TMC2130_RSENSE_DEFAULT
#define Y_CS_PIN X_CS_PIN // Daisy Chain, all share same CS pin
#define Y_STEP_PIN GPIO_NUM_27
#define Y_DIRECTION_PIN GPIO_NUM_26
// SPI with Individual CS and Single Enable
#define STEPPERS_DISABLE_PIN GPIO_NUM_13
#define X_TRINAMIC_DRIVER 2130 // Which Driver Type?
#define X_RSENSE TMC2130_RSENSE_DEFAULT
#define X_CS_PIN GPIO_NUM_17
#define X_STEP_PIN GPIO_NUM_12
#define X_DIRECTION_PIN GPIO_NUM_14
#define Y_TRINAMIC_DRIVER 2130 // Which Driver Type?
#define Y_RSENSE TMC2130_RSENSE_DEFAULT
#define Y_CS_PIN GPIO_NUM_16
#define Y_STEP_PIN GPIO_NUM_27
#define Y_DIRECTION_PIN GPIO_NUM_26
// UART Drivers
#define TRINAMIC_UART_RUN_MODE TrinamicUartMode :: StealthChop
#define TRINAMIC_UART_HOMING_MODE TrinamicUartMode :: StallGuard
#define TMC_UART UART_NUM_1
#define TMC_UART_RX GPIO_NUM_21
#define TMC_UART_TX GPIO_NUM_22
#define STEPPERS_DISABLE_PIN GPIO_NUM_13
#define X_TRINAMIC_DRIVER 2209
#define X_STEP_PIN GPIO_NUM_26
#define X_DIRECTION_PIN GPIO_NUM_27
#define X_RSENSE TMC2209_RSENSE_DEFAULT
#define X_DRIVER_ADDRESS 0
#define Y_TRINAMIC_DRIVER 2209
#define Y_STEP_PIN GPIO_NUM_33
#define Y_DIRECTION_PIN GPIO_NUM_32
#define Y_RSENSE TMC2209_RSENSE_DEFAULT
#define Y_DRIVER_ADDRESS 1
Trinamic 电机使用多种 $$ 设置。阅读本节以了解更多详细信息。
SG 是 Trinamic 电机的一项功能,可以检测失速并将信号路由到引脚。有些人喜欢使用它来进行无传感器归位。基本 Grbl 不支持此功能。高级用户可以使用自定义机器功能来实现此功能。
这需要良好的编程技能和对 SG 功能的透彻理解。您可以随意在 Slack 上提问,但开发人员回答这个问题的优先级会低于标准 Grbl 支持。如果您问了很多问题,请考虑向该项目捐款
基本上…SG 的工作原理是观察电机效率的变化。如果电机在轻负载下运行,效率会更高,如果电机开始失速,效率就会降低。驱动器检测这种情况的能力受到很多因素的影响。它很难检测到非常高的步进速率和非常低的步进速率的变化。您需要找到最佳速度来让它正常工作。您的机器设置也会影响基线效率。它的正常负载、电线的长度和规格等都会降低效率。您可以更改几个参数来“调整”SG,使其在您的机器上工作。最后,SG 并不是非常准确。最多可以精确到几个完整的步骤。普通开关通常更准确。
请参阅此链接以了解StallGuard 调整
注意:如果没有主电机电压,驱动器将不会响应。ESP32 似乎只能使用 USB 工作,但驱动器不会响应。