开源改变世界!!

主轴类型

推推 grbl 3周前 (12-01) 50次浏览

概述

Grbl_ESP32 中的主轴编码与 Grbl (Arduino) 中的主轴编码有很大不同。每种主轴类型都有定义的类。这允许使用简单的方法来创建新的主轴,并为 Grbl 提供一个标准接口。主轴有很多 #define 和 $$ 设置。您使用的主轴可能只使用其中的几个。例如,如果您使用继电器来控制主轴,则 RPM 相关设置将被忽略。有关每种类型的详细信息,请参阅下文

只要在机器定义中定义了所有必需的 I/O,您就可以动态地在主轴类型之间切换。例如:您可以在机器上安装主轴和激光器,并在两者之间切换,而无需重新编译甚至重新启动。

什么是主轴?

Grbl 中的主轴一词可以表示多种含义。标准 gcode 不支持激光之类的东西,因此 Grbl_ESP32 使用M3(顺时针开启主轴)、M4(逆时针开启主轴)、M5(关闭主轴)和Snnnnn(将 rpm 设置为 nnnnn)来控制许多工具。这些可以是基于开/关继电器的主轴、PWM 速度控制主轴、RC 型无刷速度控制器、RS485 VFD、激光等。我们可以轻松添加其他东西,例如热线和其他东西。

注意:目前,当您在任何地方看到 RPM 时,它指的是 gcode Snnnnn 值。当用于激光器等时,它可能意味着不同的东西。只需将其视为您正在使用的工具的适当单位即可。

主轴在您的机器定义文件中定义。您需要定义的 I/O 引脚取决于您选择的主轴类型。主轴类型由$Spindle/Type选择,您可以使用#define SPINDLE_TYPE SpindleType::XXXXX ` 语句在机器定义文件中设置默认值。如果您未定义任何内容,它将默认为 None 主轴。以下是当前可用的类型。

#define SPINDLE_TYPE     SpindleType::NONE 
#define SPINDLE_TYPE     SpindleType::PWM
#define SPINDLE_TYPE     SpindleType::RELAY
#define SPINDLE_TYPE     SpindleType::LASER 
#define SPINDLE_TYPE     SpindleType::DAC   
#define SPINDLE_TYPE     SpindleType::HUANYANG // RS485
#define SPINDLE_TYPE     SpindleType::BESC
#define SPINDLE_TYPE     SpindleType::_10V
#define SPINDLE_TYPE     SpindleType::H2A // RS485

当 Grbl_ESP32 启动时,它会向 USB/串行端口发送一些消息。它会告诉您哪种主轴类型处于活动状态。如果您的机器定义文件中缺少任何引脚定义,它也会发送有关该内容的错误消息。

以下是每种主轴类型的详细信息。

设置

主轴有许多设置。请参阅下文,了解每种主轴类型使用的设置。您的主轴类型未使用的设置将显示并可更改,但会被忽略。必须关闭主轴 (M5) 才能更改任何主轴设置。更改设置后,它将重新初始化您的主轴。

主轴类型::无

如果您的机器不需要主轴,例如笔式绘图仪,请选择此类型。#define SPINDLE_TYPE SpindleType::NONE它不会使用任何 I/O。如果未定义 I/O,它将默认为此类型。

主轴类型::PWM

主轴类型

许多主轴速度控制电路使用 PWM 信号来设置速度。以下是您在机器定义文件中需要的内容。

  • 必需的#define SPINDLE_TYPE SpindleType::PWM
  • 必填#define SPINDLE_OUTPUT_PIN GPIO_NUM_nn,其中 nn 是引脚编号。这是连接到速度控制器上的 PWM 输入的引脚。
  • #define SPINDLE _ENABLE_PIN GPIO_NUM_nn如果您想要主轴使能信号,则是可选的。
  • #define SPINDLE_DIRECTION_PIN GPIO_NUM_nn如果您需要方向信号,则可选。
  • $GCode/MaxS最大主轴速度。此值用于将 PWM 占空比与所需的 RPM 相匹配。如果您将其设置为 1000 并发送 S500,它会将占空比设置为 50%。如果您发送 S1500,它会将您的值更改为 1000。
  • $GCode/MinS这是最低 RPM。如果您的主轴在 200 RPM 以下无法正常工作,请设置 $31=200。如果您发送低于 200 的 S 值,它会将速度设置为 200。
  • $Spindle/PWM/Frequency主轴 PWM 频率。此项设置 PWM 信号的频率。
  • $Spindle/PWM/Off主轴 PWM 关闭值。通常设置为 0。PWM 值以占空比的百分比设置。
  • $Spindle/PWM/Min主轴 PWM 最小值通常设置为 0。
  • $Spindle/PWM/Max主轴 PWM 最大值。通常设置为 100。

主轴类型::继电器

主轴类型

如果您使用继电器来打开主轴,则只需要一个开/关信号。意外的 PWM 信号可能会损坏继电器。ESP32 没有足够的电流来直接驱动继电器。您应该为此使用驱动电路。以下是您在机器定义文件中需要的设置。

  • 必需的#define SPINDLE_TYPE SpindleType::RELAY
  • 必填#define SPINDLE_OUTPUT_PIN GPIO_NUM_nn,其中 nn 是引脚编号。这是连接到继电器电路的引脚。
  • #define SPINDLE _ENABLE_PIN GPIO_NUM_nn如果您想要一个启用信号,则是可选的。
  • #define SPINDLE_DIRECTION_PIN GPIO_NUM_nn如果您需要方向信号,则可选。

因为它是一个开/关信号,所以大多数 $$ 主轴设置将被忽略。

主轴类型::激光

主轴类型

激光基本上是一个带有一些额外功能的 PWM 主轴。当机器快速移动或暂停时,您希望它关闭。它还可以执行速度补偿功能。如果您正在雕刻,您希望激光在加速或减速时按比例降低功率。使用 M4 命令(通常用于逆时针旋转)来启用此功能。

  • 选修的#define SPINDLE_TYPE SpindleType::LASER
  • 必填项#define LASER_OUTPUT_PIN GPIO_NUM_nn,其中 nn 是引脚编号。
  • #define LASER_ENABLE_PIN GPIO_NUM_nn如果您想要一个启用信号,则是可选的。
  • 大多数 PWM 设置也适用
  • $GCode/LaserMode设置 $GCode/LaserMode=1 为激光模式
  • $Laser/FullPower=nnnn。这将设置用于 PWM 的满功率数。$Laser/FullPower=100 表示您的功率范围是 0-100。

主轴类型::DAC

主轴类型

一些主轴速度控制器具有模拟输入。此模式使用 ESP32 上的 DAC(数字到模拟)输出模拟信号。您可能需要通过运算放大器运行输出,以将 ESP32 的 0-3.3V 范围放大到速度控制器所需的 0-5V 或 0-10V 范围。

  • 必需的#define SPINDLE_TYPE SpindleType::DAC
  • 必填#define SPINDLE_OUTPUT_PIN GPIO_NUM_nn,其中 nn 是引脚编号。这是连接到继电器电路的引脚。
  • #define SPINDLE _ENABLE_PIN GPIO_NUM_nn如果您想要一个启用信号,则是可选的。
  • #define SPINDLE_DIRECTION_PIN GPIO_NUM_nn如果您需要方向信号,则可选。
  • $GCode/MaxS , $GCode/MinS请参阅 PWM 模式
  • $Spindle/PWM/Frequency$Spindle/PWM/Off$Spindle/PWM/MinSpindle/PWM/Max不适用。

这是一个典型的运算放大器电路,可以将 3.3v 升压到更高的电压。此电路的增益为 3.2。互联网上有很多运算放大器资源,包括计算器。

注意:DAC 的分辨率只有 8 位。如果您需要更高的分辨率,可以考虑使用_10V主轴

主轴类型

主轴类型::_10V

0-10V 是一种常见的工业控制信号,通常由 VFD 和速度控制器使用。它使用 3.3V PWM 信号,因此您需要使用与上述电路类似的电路来提高电压。为了实现完全控制,VFD 通常需要 0-10V 信号以及单独的正向和反向信号。此类型支持这一点。

  • 必需的#define SPINDLE_TYPE SpindleType::_10V
  • 必填#define SPINDLE_OUTPUT_PIN GPIO_NUM_nn,其中 nn 是引脚编号。这是连接到速度控制器上的 PWM 输入的引脚。
  • #define SPINDLE _ENABLE_PIN GPIO_NUM_nn如果您想要主轴使能信号,则是可选的。
  • #define SPINDLE_FORWARD_PIN GPIO_NUM_nn如果您想要前向信号,则可选。
  • #define SPINDLE_REVERSE_PIN GPIO_NUM_nn如果您需要反向方向信号,则可选。

主轴类型::HUANYANG

主轴类型

此主轴模式使用 RS485 串行连接与华阳 VFD(一种非常流行的中国 VFD)通信。它可以控制主轴的速度和转动方向。ESP32 可以创建信号,但不能创建 RS485 所需的差分电压。需要使用 3.3V TTL 到 RS485。MAX485CSA 非常适合此用途。类型 **HUANYANG ** 是其原始协议,HY2华阳的最新协议。

  • 必需的#define SPINDLE_TYPE SpindleType::HUANYANG
  • 必需,#define HUANYANG_TXD_PIN GPIO_NUM_nn这是传输数据引脚。
  • 可选#define SPINDLE_RXD_PIN GPIO_NUM_nn这是接收数据引脚。
  • 可选#define HUANYANG_RTS_PIN GPIO_NUM_nn此引脚控制数据是否正在发送或接收。

您还需要确保 VFD 设置正确。按如下方式设置寄存器。

PD004   400  Base frequency as rated on my spindle (default was 50)
PD005   400  Maximum frequency Hz (Typical for spindles)
PD011   120  Min Speed (Recommend Aircooled=120 Water=100)
PD014   10   Acceleration time (Test to optimize)
PD015   10   Deceleration time (Test to optimize)
PD023   1    Reverse run enabled
PD141   220  Spindle max rated voltage
PD142   3.7  Max current Amps (0.8kw=3.7 1.5kw=7.0, 2.2kw=??)
PD143   2    Poles most are 2 (I think this is only used for RPM calc from Hz)
PD144   3000 Max rated motor revolution at 50 Hz => 24000@400Hz = 3000@50HZ

PD001   2    RS485 Control of run commands
PD002   2    RS485 Control of operating frequency
PD163   1    RS485 Address: 1 (Typical. OK to change...see below)
PD164   1    RS485 Baud rate: 9600 (Typical. OK to change...see below)
PD165   3    RS485 Mode: RTU, 8N1

主轴类型::HY2

主轴类型::YL620

主轴类型::BESC

主轴类型 图片来源

这是 RC 型无刷直流速度控制器。它使用特殊的 PWM 信号来控制电机的速度。电机非常强劲,而且成本低廉。但实际速度可能不太准确。

请参阅此页面了解更多详情

机器定义示例

#define SPINDLE_TYPE            SpindleType::BESC
#define SPINDLE_OUTPUT_PIN      GPIO_NUM_26
喜欢 (0)