1. 主页
  2. 文档
  3. ESP32_GRBL文档
  4. M62、M63、M64、M65 和 M67 用户 IO 命令

M62、M63、M64、M65 和 M67 用户 IO 命令

用户 I/O 命令

此功能用于通用 I/O(输出)控制。您可以将其用于冷却风扇、夹具、阀门等。引脚可以是数字(开/关)或模拟(PWM)。它允许您使用 gcode 而不是特殊编码来控制引脚。

同步化

同步意味着缓冲区中的所有运动必须在 I/O 更改之前完成。Immediate 不等待并在读取命令后立即执行命令。

使用流式 gcode,您应该使用同步命令。命令的即时版本没有时间保证。

类型

  • 数字输入输出
  • 模拟(脉宽调制)

命令

M62 – M65 数字输出控制

M62同步数字输出开启

M63同步数字输出关闭

M64立即数字输出打开

M65立即数字输出关闭

用P字表示数字输出号(0-3)

例子:

M62 P0  // turn digital pin 0 on
M63 P0  // turn digital pin 0 off

M67 – M68 模拟输出控制

M67 同步设定模拟值

M68 立即设置模拟值

使用 E 字作为模拟输出编号 (0-3)

使用 Q 字作为占空比百分比的模拟值。

例子

M67 E1 Q23.87 (set set output#1 to 23.87% duty)
M67 E1 Q0 (to turn off the pin. 0% duty)

引脚编号

每种类型有 4 个引脚,编号为 0 到 3。数字和模拟的编号是独立的。如果你使用其中一个,它们可能都是 0。

特殊行为

  • 开机– 所有引脚都将设置为关闭状态
  • 重置– 所有引脚都将设置为关闭状态
  • 报警模式– 引脚状态无变化
  • 错误– 引脚状态没有变化
  • 文件结束– 引脚状态没有变化

设置

#define USER_DIGITAL_PIN_0   GPIO_NUM_xx
#define USER_DIGITAL_PIN_1   GPIO_NUM_xx
#define USER_DIGITAL_PIN_2   GPIO_NUM_xx
#define USER_DIGITAL_PIN_3   GPIO_NUM_xx

#define USER_ANALOG_PIN_0      GPIO_NUM_xx
#define USER_ANALOG_PIN_1      GPIO_NUM_xx
#define USER_ANALOG_PIN_2      GPIO_NUM_xx
#define USER_ANALOG_PIN_3      GPIO_NUM_xx

#define USER_ANALOG_PIN_1_FREQ      50  // Hz

模拟频率

定义频率是可选的。如果您没有为引脚定义一个,将使用默认值 5000Hz。

模拟分辨率

分辨率取决于使用的频率。PWM 基于 80MHz 定时器。如果您的频率为 10KHz,则 80,000,000 / 10,000 可为您提供最大 8,000 计数分辨率。分辨率基于位,因此您需要向下舍入到最接近的位值,即 12 位或 4096。允许的最高位值为 13 位。

这一切都是在幕后完成的,以提供最高分辨率,您只需提供频率(可选)和职责。

模拟值班

关税是周期的百分比。如果您正在寻找特定的脉冲宽度,则需要确定周期,即 1/freq。如果你的频率是 100Hz,你的周期就是 10ms。如果您想要 1ms 的脉冲,您可以将占空比设置为 0.10%。Duty 是一个浮点数。XX.XX 的值将为您提供最高分辨率。高于 100% 的值设置为 100%。负数设置为 0%。

与 RC 伺服系统一起使用

RC 伺服系统根据 PWM 信号的脉冲长度设置它们的位置。RC 舵机 PWM 的标准频率为 50Hz,一些数字舵机可以处理更高的频率,但它不会提高此应用程序的性能,并且可能会使某些舵机过热。

RC 舵机的标准脉冲范围是 1ms 到 2ms。一些舵机的范围更广。

频率为 50Hz 时,周期为 20ms。因此,1ms 的脉冲占空比为 5.00%,而 2ms 的脉冲占空比为 10.00%。使用 2 个值从行程的一端到另一端。您可以使用介于两者之间的值转到其他位置。如果你的伺服系统有更大的范围,你可以尝试少一点或多一点。舵机没有很大的分辨率,因此职责的微小变化可能不会影响位置。

您也可以将占空比设置为 0%。这通常会关闭伺服系统并允许其自由转动并且不会消耗太多功率。

伺服将尽可能快地移动到目标。下一个 gcode 将立即出现。如果您需要等待舵机移动,您应该添加一个G4 Px.xx命令。

这篇文章对您有用吗?

我们要如何帮助您?