Grbl_ESP32 支持多种类型的步进电机驱动器。步进电机驱动器使用来自控制器的步进、方向和使能信号,并产生运行步进电机所需的线圈电流。任何可以接受这些步进、方向和使能信号的东西,如ODrive 伺服电机,都可以被视为步进电机的等效物。
StepStick或Pololu样式的驱动器使用标准的 2 列、8 行格式的引脚。它们都共享相同的基本引脚排列,因此通常可以互换。其中大多数兼容 3.3V,可与 ESP32 一起使用。有些具有板载 5V Vcc 源,因此通常不兼容。每个电机的电流和微步进可能不同,因此您可能需要在交换时调整与之相关的内容。
通常,您可以使用电位器调节电机电流。您可以使用标有 MS1、MS2 和 MS3 的引脚上的一些跳线来调整微步进级别。ESP32 可以处理非常高的步进速率,因此一些控制器会消除微步进跳线并将其硬接线到最精细的微步进级别。
您可以通过将 STEPPERS_DISABLE_PIN 定义为启用引脚(例如 GPIO_NUM_2)来为这些驱动程序设置启用引脚。要反转启用信号,您可以将 DEFAULT_INVERT_ST_ENABLE 定义为 1,但这些驱动程序通常要求不反转启用信号。
为了使驱动器保持启用状态的时间比运动时间长,您可以将 $Stepper/IdleTime 设置为某个超时时间(以毫秒为单位)。 最大超时时间为 255,这意味着驱动器将始终保持启用状态。
以下是一些常见的 StepStick 风格驱动程序
- Allegro A4988 – 我喜欢这些适合 NEMA14 等小型电机的产品。它们在极低电流下运行效果往往优于其他产品。
- TI DRV8825 – 具有高功率水平,但即使在电机不运转时也会产生噪音。
- 一些 Trinamic 驱动器(处于独立模式) – 这些驱动器因其极低的噪音水平而闻名。
- S109(东芝 7S109)- 这款产品的 5V 输出可能会损坏 ESP32。请参阅 Github 上的此问题。
许多 Trinamic 驱动器有如此多的调整,以至于一个电位器和几个跳线是不够的。它们使用 SPI 通信总线进行调整。固件必须设置这些值。许多常见的更改内容都可以通过 $$ 设置进行调整。
驱动器可以使用单独的 CS(片选)电路,或者它们以菊花链方式为所有驱动器连接单个 CS 电路。有关这些驱动器的使用,有一个完整的 wiki 页面。
Grbl_ESP32 目前不支持这些。
它们提供大量功率和各种微步进选项。它们通常在步进、方向和启用输入上使用光电隔离器。这意味着信号点亮 LED,该 LED 照射到检测器上,检测器将信号传输到驱动器。这意味着驱动器与 CNC 控制器电气隔离。这可以防止机器侧的噪声或电压尖峰损坏 CNC 控制器 (ESP32) 侧。这就是为什么每个输入都有 + 和 – 连接的原因。它们之间没有共同点。
电路中的 LED 需要限流电阻。通常驱动器内部有一个 5V 大小的电阻。这意味着当信号为 5V 时不需要电阻,如果要在 5V 以上运行,可以添加额外的外部电阻。不幸的是,ESP32 是 3.3v 设备。
大多数人都报告说 3.3V 通常仍能工作,但如果电压下降,您可能非常接近无法工作的阈值。我不建议在 3.3V 下运行它们。您可以使用电压电平转换器,但要小心使用哪一个。常见的转换器(如 TI TSX0101)使用上拉电阻来提供高信号。该电阻无法驱动 LED 所需的电流(几毫安)。可以使用晶体管阵列或类似 74ACT245 芯片的东西。
这些工作原理与上面的外部电机驱动器非常相似。它们通常具有警报输出,以防闭环功能检测到失速。Grbl_ESP322 不直接支持此功能,但理论上可以将其连接到保持或重置输入。