开源改变世界

M3 M4 M5 命令 #1009

推推 grbl 3年前 (2023-01-23) 415次浏览

关闭
meatom 打开了这个问题 2016 年 6 月 7 日 · 5 条评论
关闭

M3 M4 M5 命令#1009

meatom 打开了这个问题 2016 年 6 月 7 日 · 5 条评论

注释

M3 M4 M5 命令 #1009

你好,
我一直在使用我的迷你激光雕刻机和 GRBL 0.9i,所以决定升级到 0.9j 版本。
问题是现在雕刻师不使用 M3/M03 命令打开激光。现在要打开激光,我必须使用 M4,然后使用 M3 关闭。M5 命令没有任何作用。
我已经测量了引脚 13 的电压,它与一个 mosfet 相连,并且它只是通过 M4 命令变高。
PCPayne用户打开了issue #949也遇到了同样的问题,但是没有提供解决方案。
我试图降级到 0.9i 版,但它仍然无法正常工作。在 config.h 中禁用/启用#DEFINE VARIABLE_SPINDLE 和#DEFINE USE_SPINDLE_DIR_AS_ENABLE_PIN 设置无效。
我尝试使用不同的 Arduino 并测量了引脚 13,但它不会随着 M3 命令变高。

M3 M4 M5 命令 #1009
成员

@meatom:13脚为主轴方向脚。不启用。

最近,Grbl 更改了 spindle enable 的工作方式以符合 LinuxCNC g 代码标准。您需要将主轴速度设置为大于零并激活 M3/4 以确保主轴打开。因此,如果您启用了 VARIABLE_SPINDLE 和 USE_SPINDLE_DIR_AS_ENABLE_PIN,则如果主轴速度为零,引脚 13 将不会打开。

如果您禁用了 VARIABLE_SPINDLE,则主轴使能引脚从引脚 D11 移动到 D12,并用作简单的开/关引脚。在这种情况下,它不需要 S 主轴速度字来打开。

M3 M4 M5 命令 #1009

我试图用 GRBL 来控制主轴,我有点实现了,但我无法停止主轴。我可以更改主轴速度 s500/s100 命令,但 M5 命令不起作用。是否有任何配置可以在停止情况下配置引脚值?

或者停止情况下的引脚值是多少。

M3 M4 M5 命令 #1009
成员

@kardinal7:确保您的 pin 接线正确。在 v0.9 中,主轴使能引脚位于 D12 上。

M3 M4 M5 命令 #1009

@chamnit:我在 Arduino Mega2560 + Ramps 1.4 上安装了 GRBL 1.1f 并运行 LaserGRBL。
你能帮我吗?这是关于脉宽调制。M3/M4 和 M5 命令工作,这样,LaserGRBL 说可以。
但只有打开和关闭是可能的。S 命令不起作用。我已经在互联网上阅读了很多相关内容。
我绝对是 GRBL 和 Arduino 的初学者。
这种情况,当我输入 M3/M4 或 M5 时,它会打开和关闭。与 s127 M3 或 M3 s127 相同……
但具有全功率。PWM 在伺服引脚 4 上。

我得到了带有激光驱动板 (TTL) 和 5V 的 2.5W 蓝色激光器。
所以,我不能将它连接到 D9 或 D8,因为 D9 和 D8 是 12V。

在 LaserGRBL 中,M3/M4 和 M5 用于激光,在我的例子中,M3 等用于伺服针 D4。
我必须在哪里进行任何更改,使 Spindlespeed 对命令 S0、S127、S255 等生效?
关键词是哪些?
SPINDLE_ENABLE 或 SPINDLE_PWM_???
我在 PIN D4 上安装了激光 TTL,在 D4 上安装了 +,在地面上安装了 -。
我在上面放了一个万用表,来测量 V。它总是 5V

这是 cpu_map.h 的一部分

 // Define spindle enable and spindle direction output pins.
  #define SPINDLE_ENABLE_DDR      DDRG
  #define SPINDLE_ENABLE_PORT     PORTG
  #define SPINDLE_ENABLE_BIT      5 //  5 MEGA2560 Digital Pin 4 - Ramps 1.4 Servo 4 Signal pin
  #define SPINDLE_DIRECTION_DDR   DDRE
  #define SPINDLE_DIRECTION_PORT  PORTE
  #define SPINDLE_DIRECTION_BIT   3 //  3 MEGA2560 Digital Pin 5 - Ramps 1.4 Servo 3 Signal pin

  // Define flood and mist coolant enable output pins.
  #define COOLANT_FLOOD_DDR   DDRB
  #define COOLANT_FLOOD_PORT  PORTB
  #define COOLANT_FLOOD_BIT   4 // MEGA2560 Digital Pin 10 - Ramps 1.4 12v output
  #define COOLANT_MIST_DDR    DDRH
  #define COOLANT_MIST_PORT   PORTH
  #define COOLANT_MIST_BIT    6 // MEGA2560 Digital Pin 9 - Ramps 1.4 12v output

  // Define user-control CONTROLs (cycle start, reset, feed hold) input pins.
  // NOTE: All CONTROLs pins must be on the same port and not on a port with other input pins (limits).
  #define CONTROL_DDR       DDRK
  #define CONTROL_PIN       PINK
  #define CONTROL_PORT      PORTK
  #define CONTROL_RESET_BIT         1  // Pin A9 - RAMPS Aux 2 Port
  #define CONTROL_FEED_HOLD_BIT     2  // Pin A10 - RAMPS Aux 2 Port
  #define CONTROL_CYCLE_START_BIT   3  // Pin A11 - RAMPS Aux 2 Port
  #define CONTROL_SAFETY_DOOR_BIT   4  // Pin A12 - RAMPS Aux 2 Port
  #define CONTROL_INT       PCIE2  // Pin change interrupt enable pin
  #define CONTROL_INT_vect  PCINT2_vect
  #define CONTROL_PCMSK     PCMSK2 // Pin change interrupt register
  #define CONTROL_MASK      ((1<<CONTROL_RESET_BIT)|(1<<CONTROL_FEED_HOLD_BIT)|(1<<CONTROL_CYCLE_START_BIT)|(1<<CONTROL_SAFETY_DOOR_BIT))

  // Define probe switch input pin.
  #define PROBE_DDR       DDRK
  #define PROBE_PIN       PINK
  #define PROBE_PORT      PORTK
  #define PROBE_BIT       7  // MEGA2560 Analog Pin 15
  #define PROBE_MASK      (1<<PROBE_BIT)

  // Advanced Configuration Below You should not need to touch these variables
  // Set Timer up to use TIMER4B which is attached to Digital Pin 8 - Ramps 1.4 12v output with heat sink
  #define SPINDLE_PWM_MAX_VALUE     1024.0 // 1024.0 Translates to about 1.9 kHz PWM frequency at 1/8 prescaler
  #ifndef SPINDLE_PWM_MIN_VALUE
  #define SPINDLE_PWM_MIN_VALUE   1   // Must be greater than zero.
  #endif
  #define SPINDLE_PWM_OFF_VALUE     0
  #define SPINDLE_PWM_RANGE         (SPINDLE_PWM_MAX_VALUE-SPINDLE_PWM_MIN_VALUE)

  //Control Digital Pin 6 which is Servo 2 signal pin on Ramps 1.4 board
  #define SPINDLE_TCCRA_REGISTER    TCCR4A
  #define SPINDLE_TCCRB_REGISTER    TCCR4B
  #define SPINDLE_OCR_REGISTER      OCR4C  //  OCR4C
  #define SPINDLE_COMB_BIT          COM4C1

  // 1/8 Prescaler, 16-bit Fast PWM mode
  #define SPINDLE_TCCRA_INIT_MASK ((1<<WGM40) | (1<<WGM41))
  #define SPINDLE_TCCRB_INIT_MASK ((1<<WGM42) | (1<<WGM43) | (1<<CS41))
  #define SPINDLE_OCRA_REGISTER   OCR4A // 16-bit Fast PWM mode requires top reset value stored here.
  #define SPINDLE_OCRA_TOP_VALUE  0x0400 // PWM counter reset value. Should be the same as PWM_MAX_VALUE in hex.

  // Define spindle output pins.
  #define SPINDLE_PWM_DDR   DDRH
  #define SPINDLE_PWM_PORT  PORTH  // PORTH
  #define SPINDLE_PWM_BIT   4 //  5 MEGA2560 Digital Pin 8

#endif
M3 M4 M5 命令 #1009
丹尼尔吉梅诺 评论了 2020 年 9 月 11 日  

您好,我从命令 M3 M4 和 M5 开始,在 Arduino Mega 上使用 RAMPS 1.5。我的问题是如何从 gcode 中选择斜坡中的不同端口(有 4 个)。有一种“M3端口1”吗?

谢谢丹尼尔。

更新。通过更深入的研究,我发现命令 M340 可以满足我的需要。我希望grbl明白

喜欢 (0)