Contact me: hankecnc@gmail.com

请求输入引脚功能 #615

推推 grbl 3年前 (2023-01-22) 147次浏览

打开
markbotics 打开了这个问题 2015 年 3 月 3 日 · 1条评论
打开

请求输入引脚功能#615

markbotics 打开了这个问题 2015 年 3 月 3 日 · 1条评论

注释

请求输入引脚功能 #615

目前,Arduino Uno 有专门用于“循环开始/恢复”、“进给保持”和“重置/中止”的输入引脚。我们目前将它们连接到分别带有绿色、黄色和红色按钮的吊坠上,常开开关连接到 GND 以创建低电平有效信号。我们将 $14(自动启动,布尔值)设置为 0,以便在发送程序后,机器不会移动,直到用户使用机器进入工作区并通过按下绿色悬垂按钮启动程序。它对我们来说工作正常,除了需要为每个 M4 和 M5 命令再次按下“循环开始”(我们的绿色按钮)。

在之前的讨论中 ( #614 )@chamnit表示“循环开始/恢复”将更改为仅“恢复”。这将影响我们的功能。

此外,如果我们也可以从吊坠启动“$h”归位操作,那就太好了。

一些吊坠可能有一个微控制器,可以发送串行命令,或者像我们的一样,可以是一组简单的无源开关。

我们要求,或者至少建议这样的想法,即从微控制器引脚上的低电平有效信号中调用一些功能,例如“循环开始、恢复”和归位。由于引脚供不应求,而且此功能对于许多用户来说并不是必需的,也许一个想法是通过“$”设置来打开此功能。

最好直接从信号运行功能。或者,如果我们可以通过串行命令读取微控制器引脚,我们也可以实现相同的目的,但这需要对特殊的 GUI 进行自定义编程。

我们还想要一种方法来重复使用悬垂按钮加载到 GUI 中的程序。由于微控制器不记录程序(如果我理解正确之前的评论)能够用悬垂按钮重复,这不是我们可以要求的。并且可能指出我们无论如何都必须编写自己的 GUI。

谢谢,
马克

请求输入引脚功能 #615
贡献者

毕竟这是开源的,我为什么不深入研究代码并自己添加此功能,这里有一些入门指南:

在此文件https://github.com/grbl/grbl/blob/edge/grbl/cpu_map.h中,您会发现:

#define RESET_BIT         0  // Uno Analog Pin 0
#define FEED_HOLD_BIT     1  // Uno Analog Pin 1
#define CYCLE_START_BIT   2  // Uno Analog Pin 2
#define SAFETY_DOOR_BIT   1  // Uno Analog Pin 1 NOTE: Safety door is shared with feed hold. Enabled by config define.

接下来看看这个文件,第 41 到 62 行:https ://github.com/grbl/grbl/blob/edge/grbl/system.c

ISR(CONTROL_INT_vect) 
{
  uint8_t pin = (CONTROL_PIN & CONTROL_MASK);
  #ifndef INVERT_CONTROL_PIN
    pin ^= CONTROL_MASK;
  #endif
  // Enter only if any CONTROL pin is detected as active.
  if (pin) { 
    if (bit_istrue(pin,bit(RESET_BIT))) {
      mc_reset();
    } else if (bit_istrue(pin,bit(CYCLE_START_BIT))) {
      bit_true(sys.rt_exec_state, EXEC_CYCLE_START);
    #ifndef ENABLE_SAFETY_DOOR_INPUT_PIN
      } else if (bit_istrue(pin,bit(FEED_HOLD_BIT))) {
        bit_true(sys.rt_exec_state, EXEC_FEED_HOLD); 
    #else
      } else if (bit_istrue(pin,bit(SAFETY_DOOR_BIT))) {
        bit_true(sys.rt_exec_state, EXEC_SAFETY_DOOR);
    #endif
    } 
  }
}

现在只需按照您的方式完成代码…

我认为您也可以将 CYCLE_START_BIT 用作归位起始位,但前提是 grbl 在通电后处于警报启动状态。比这个按钮做一个归位周期。归位完成后,此按钮仅适用于进给保持后的恢复。我认为这是一个非常可能/很容易实现的实现,它对大多数人都有用。我认为对你来说是一个很好的开始项目。

问候,
马库斯

喜欢 (0)