Trinamic 驱动程序支持
基本 Trinamic 驱动程序支持
注意:如果您打算使用 TMC5160 驱动程序,请先查看此页面
此页面用于在固件控制下使用 Trinamic 驱动程序。它不适用于在 StepStick 或独立模式下使用的 Trinamic 驱动程序。这些将像普通的 StepStick 驱动程序一样使用。
Grbl_ESP32 支持两种类型的 Trinamic 驱动程序。有SPI类型和UART类型。
SPI 驱动程序
目前您只能使用默认的 SPI。您的 PCB 应为 MOSI 使用 GPIO_NUM_32,为 MISO 使用 GPIO_PIN_19,为 SCK 使用 GPIO_NUM_18。
驱动器部件号
对于您使用的每个 Trinamic 驱动程序,您需要为每个轴添加一个#define X_TRINAMIC_DRIVER nnnn,其中 nnnn 是整数形式的驱动程序型号。目前这款限量 2130 和 5160。
CS(片选)引脚
您可以为每个驱动器使用单独的 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 引脚为所有驱动程序使用单个启用引脚
- 您可以使用#define X_DISABLE_PIN 引脚为每个电机定义启用
- 您可以使用 SPI 启用#define USE_TRINAMIC_ENABLE
检测电阻值
您必须告诉固件每个驱动器的感应电阻器的值。这是固件使用#define X_RSENSE 0.11正确设置电机电流所必需的。每个电机都有一个默认定义,通常是正确的,设置如下#define X_RSENSE TMC2130_RSENSE_DEFAULT。
其余的东西就像步骤一样。方向等与普通电机驱动器相同。
运行模式
有用于正常操作和归位的运行模式。
- #define 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 电机。阅读本节以查看更多详细信息。
StallGaurd (新加坡)
SG 是 Trinamic 电机的一项功能,可以检测到失速并将信号路由到引脚。有些人喜欢用它来做无传感器归位。Basic Grbl 不支持这个。高级用户可以使用自定义机器功能来实现这一点。
这需要良好的编程技能和对 SG 功能的透彻理解。请随时在 Slack 上就此提出问题,但开发人员回答的优先级低于标准 Grbl 支持。如果您提出很多问题,请考虑向该项目捐款
基本上…SG 通过查看电机效率的变化来工作。如果电动机在轻负载下运行,则效率更高,如果开始失速,则效率会降低。驱动程序检测到这一点的能力受到许多因素的影响。它无法检测非常高的步进率和非常低的步进率的变化。您需要找到回家的最佳速度才能正常工作。您的机器设置也会影响基准效率。它的正常负载、电线的长度和规格等都会降低效率。您可以更改几个参数来“调整”SG,使其在您的机器上运行。最后,SG 不是非常准确。充其量它精确到几个完整的步骤。普通开关通常更准确。
请参阅此链接以了解StallGuard 调整
故障排除
注意:如果没有主电机电压,驱动器将不会响应。ESP32 似乎只能使用 USB,但驱动程序不会响应。