开源改变世界

M3 工作,M4 不工作。(视频问题链接) #108

推推 grbl 3年前 (2023-01-21) 88次浏览

关闭
inciteman 打开了这个问题 2017 年 1 月 27 日 · 11 条评论
关闭

M3 工作,M4 不工作。(视频问题链接)#108

inciteman 打开了这个问题 2017 年 1 月 27 日 · 11 条评论

注释

M3 工作,M4 不工作。(视频问题链接) #108

您好,我在使用 GRBL 1.1e 的 Arduino Uno 上使用M4命令时遇到问题。我知道它只有在使用 G1 命令时才有效。命令M3 S50工作正常,引脚 D13 的“主轴方向”变低(启用激光)和 D11 的“可变主轴 PWM”调制。然而,当我发送M4 S50然后用G1 X10 F100跟随它时,引脚 D13 保持高电平(禁用激光)但 D11 确实调制。

视频链接:https ://www.youtube.com/watch?v=uei6Dhy-Acw

我很惊讶我是唯一遇到这个问题的人。也许是硬件问题?操作员?墨菲定律?

任何帮助将不胜感激。

M3 工作,M4 不工作。(视频问题链接) #108
贡献者

@inciteman. 请阅读有关激光模式工作原理的 wiki 页面。

M3 工作,M4 不工作。(视频问题链接) #108
作者
煽动者 评论了 2017 年 1 月 28 日  

你好@chamnit感谢您的答复!但是,在过去的两天里,我已经阅读了“Grbl v1.1 激光模式”页面大约 7 或 8 次。

M3 仅适用于 C02 激光器而 M4 不适用于 C02 激光器吗?C02 激光器需要 D11 到 PWM 和 D13 变低(M4 不需要)。

我完全知道在 M4 激光模式下,激光仅在 G1、G2 或 G3 运动时工作,而我的 PWM(引脚 D11)正常,谢谢!但是,它不会将 D13 设置为低电平(因此 CO2 激光器不会打开)。

另一方面,M3 工作正常,D11 将 PWM,D13 设置为低电平(启用/打开激光)。
M4 将 PWM D11 但不将 D13 设置为低电平,它保持高电平(禁用/保持激光关闭)。

我试过编译 GRBL 1.1e 和使用预编译的 .hex 文件都有相同的结果。我没有修改任何 .h 文件。
对不起,重复的问题。

M3 工作,M4 不工作。(视频问题链接) #108
贡献者

@inciteman:主轴方向引脚D13是方向引脚,不是开/关使能引脚。M3 和 M4 在 g 代码中是 CW 和 CCW,因此 M4 将在启用时打开 D13。如果需要开/关,则需要编辑 config.h 文件并启用 USE_SPINDLE_DIR_AS_ENABLE(或类似的东西)选项

M3 工作,M4 不工作。(视频问题链接) #108
作者
煽动者 评论了 2017 年 1 月 28 日  

@chamnit
好的,现在我对这个概念有了更好的理解。所以通常它用于铣削,但在激光模式($32=1)下它的行为没有改变(因为通常激光二极管只需要一个 PWM 来发射)。

所以我启用了 USE_SPINDLE_DIR_AS_ENABLE 但就像描述状态一样“没有方向销,主轴顺时针 M4 g 代码命令将被删除。M3 和 M5 仍然有效。” 现在激光模式下的 M4 根本不起作用,M3 现在变高而不是变低(我确定它可以以某种方式反转)但不幸的是,这禁用了我不想做的 M4 激光模式。

也许更改代码会更好,因此如果启用了激光模式,则主轴方向引脚 (D13) 将用作启用引脚,并将随 M3 或 M4 变低。

M3 工作,M4 不工作。(视频问题链接) #108
贡献者

@inciteman: 啊,你说的对。在激光模式下,M4 是不同的。当启用 USE_SPINDLE_DIR_AS_ENABLE 时,阻止 M4 操作似乎有点过分。我会考虑删除该规定,以便它适用于激光模式。现在,我认为您所要做的就是删除 gcode.c 第 255 行和第 262 行的#ifdef 以使其运行。让我知道它是如何工作的。

M3 工作,M4 不工作。(视频问题链接) #108
作者

是啊,那样最好了!

我删除了 255 和 262(w/it’s contents),它禁用了 M4 命令。现在 M4 返回错误:20

     // #ifndef USE_SPINDLE_DIR_AS_ENABLE_PIN
     //   case 4:
     // #endif
      case 3: case 5:
        word_bit = MODAL_GROUP_M7;
        switch(int_value) {
          case 3: gc_block.modal.spindle = SPINDLE_ENABLE_CW; break;
     //     #ifndef USE_SPINDLE_DIR_AS_ENABLE_PIN
      //      case 4: gc_block.modal.spindle = SPINDLE_ENABLE_CCW; break;
      //    #endif
M3 工作,M4 不工作。(视频问题链接) #108
贡献者

@inciteman: 抱歉,我的意思是应该删除定义,但不应该删除其中的内容。因此, case 4: 两个语句都需要在您的示例中取消注释。

M3 工作,M4 不工作。(视频问题链接) #108
作者

@chamnit
哦好的,试过了。仍然得到相同的行为(M3 工作正常,M4 PWM 工作但 D13(方向引脚)保持高电平)

    //  #ifndef USE_SPINDLE_DIR_AS_ENABLE_PIN
        case 4:
    //  #endif
      case 3: case 5:
        word_bit = MODAL_GROUP_M7;
        switch(int_value) {
          case 3: gc_block.modal.spindle = SPINDLE_ENABLE_CW; break;
    //      #ifndef USE_SPINDLE_DIR_AS_ENABLE_PIN
            case 4: gc_block.modal.spindle = SPINDLE_ENABLE_CCW; break;
     //     #endif

现在只是做了一个工作。铣削时不应使用。在 spindle_control.c 中,将第 119 至 123 行替换为

if (pwm_value == SPINDLE_PWM_OFF_VALUE) {
  SPINDLE_TCCRA_REGISTER &= ~(1<<SPINDLE_COMB_BIT); // Disable PWM. Output voltage is zero.
  SPINDLE_DIRECTION_PORT |= (1<<SPINDLE_DIRECTION_BIT); // Set pin to HIGH when PWM is disabled (LASER WORKAROUND)
} else {
  SPINDLE_TCCRA_REGISTER |= (1<<SPINDLE_COMB_BIT); // Ensure PWM output is enabled.
  SPINDLE_DIRECTION_PORT &= ~(1<<SPINDLE_DIRECTION_BIT); // Set pin to LOW when PWM is enabled (LASER WORKAROUND)
}

这不是为发布编写代码的最佳方式,但它目前与 M3 和 M4 的预期完全一致。
感谢您的帮助!

M3 工作,M4 不工作。(视频问题链接) #108
贡献者

@inciteman:澄清一下,使能引脚不同于 PWM 引脚。只要 M3 或 M4 仍处于活动状态,它将保持启用状态。当主轴速度为零时它不会切换。

M3 工作,M4 不工作。(视频问题链接) #108
贡献者

@inciteman: 我知道这看起来很熟悉。我刚刚解决了这个问题,两次提交前,Grbl 将启用引脚设置为 S0 和 S>0。一位用户要求使启用引脚独立于 S,因为作为他工作流程的一部分,他经常在开始一项工作之前使用 M3/4 启用他的激光器。看到有多个工作流程,我将添加一个编译时选项,以根据您的需要更改启用引脚的行为。

M3 工作,M4 不工作。(视频问题链接) #108
杰吉尔伯特fpv 评论了 2018 年 12 月 14 日  

@chamnit我有一个类似的问题,但我猜自这篇文章以来已经有一些更新,但我在寻找它时没有看到其中的一些代码片段。我用 M3 很好,但 M4 没有打开激光。我在 arduino mega 而不是 328p。我将我的激光 PWM 连接到引脚 7 主轴 PWM,激光发射连接到引脚 5 主轴方向(我也尝试连接到引脚 6 主轴启用)并且我启用了激光模式。我已经阅读了激光模式设置并尝试了几件事,谷歌把我带到了这里。难道我做错了什么?

喜欢 (0)