1. 主页
  2. 文档
  3. ESP32_GRBL文档
  4. 主轴类型

主轴类型

概述

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

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

什么是主轴?

Grbl 中的主轴这个词可以表示很多东西。标准 gcode 不支持激光之类的东西,所以 Grbl_ESP32 使用M3(顺时针主轴)、M4(逆时针主轴)、M5(主轴关闭)和Snnnn(将 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
  • $激光/全功率=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/Min , Spindle/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如果您想要反向信号,则可选。

主轴类型::环阳

主轴类型

这种主轴模式使用 RS485 串行连接与 Huanyang VFD(一种非常流行的中国 VFD)对话。它可以控制主轴转动的速度和方向。ESP32 可以产生信号,但不能产生 RS485 所需的差分电压。需要使用 3.3V TTL 转 RS485。MAX485CSA 对此非常适用。Type **HUANYANG ** 是他们的原始协议,HY2是 Huanyang 的最新协议。

  • 必需的#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
这篇文章对您有用吗?

我们要如何帮助您?