Contact me: hankecnc@gmail.com

不能用 5 美元反转限位开关状态 #432

推推 grbl 3年前 (2023-01-30) 175次浏览
关闭
blaisebarrette 打开了这个问题 2020 年 6 月 13 日 · 13条评论
关闭

不能用 5 美元反转限位开关状态#432

blaisebarrette 打开了这个问题 2020 年 6 月 13 日 · 13条评论

注释

不能用 5 美元反转限位开关状态 #432

当我在没有激活限位开关的情况下通过 MDI 发送问号时,我得到“Pn:XYZ”。
如果我激活 X 轴限位开关,我会得到“Pn:YZ”,所以我知道我的限位开关正在工作。所有限位开关都一样。它们都工作正常,但当它们不工作时显示为已激活。所以我将 $5 设置为 1 ($5=1) 但没有任何变化。我总是得到“Pn:XYZ”,其中 $5 设置为 1 或 0。

我的限位开关是 NO 并连接到以下 GPIO:
X -> GPIO17
Y -> GPIO4
Z -> GPIO15

任何帮助将不胜感激。

不能用 5 美元反转限位开关状态 #432 blaisebarrette 添加了 漏洞 有些东西不工作标签 2020 年 6 月 13 日
不能用 5 美元反转限位开关状态 #432

你用的是哪个机器文件?该配置中 LIMIT_MASK 的值是多少?

不能用 5 美元反转限位开关状态 #432

在 config.h –

// By default, Grbl sets all input pins to normal-high operation with their internal pull-up resistors
// enabled. This simplifies the wiring for users by requiring only a switch connected to ground,
// although its recommended that users take the extra step of wiring in low-pass filter to reduce
// electrical noise detected by the pin. If the user inverts the pin in Grbl settings, this just flips
// which high or low reading indicates an active signal. In normal operation, this means the user
// needs to connect a normal-open switch, but if inverted, this means the user should connect a
// normal-closed switch.
// The following options disable the internal pull-up resistors, sets the pins to a normal-low
// operation, and switches must be now connect to Vcc instead of ground. This also flips the meaning
// of the invert pin Grbl setting, where an inverted setting now means the user should connect a
// normal-open switch and vice versa.
// NOTE: All pins associated with the feature are disabled, i.e. XYZ limit pins, not individual axes.
// WARNING: When the pull-ups are disabled, this requires additional wiring with pull-down resistors!
//#define DISABLE_LIMIT_PIN_PULL_UP
//#define DISABLE_PROBE_PIN_PULL_UP
//#define DISABLE_CONTROL_PIN_PULL_UP

我的 GRBL $5 = 1…如果我将其更改为 0,我将得到 Pn:XYZ,即没有连接任何开关。IE。不

不能用 5 美元反转限位开关状态 #432

我说的是机器文件,不是配置文件。而且我还问了LIMIT_MASK的值。

不能用 5 美元反转限位开关状态 #432
 评论了 2020 年 6 月 14 日  

而且问问题的人没有回答你。我的 LIMIT_MASK 是 B0,我使用的是 v1.2a,但话又说回来,我的限位开关工作正常。

不能用 5 美元反转限位开关状态 #432
作者

你用的是哪个机器文件?该配置中 LIMIT_MASK 的值是多少?

我制作了自己的 PCB,因此我创建了一个自定义机器文件来匹配。

这是我的机器文件的代码:

#define MACHINE_NAME            "Cyclone PCB Factory"

   #define X_STEP_PIN              GPIO_NUM_12
   #define X_DIRECTION_PIN         GPIO_NUM_14
   #define Y_STEP_PIN              GPIO_NUM_27
   #define Y_DIRECTION_PIN         GPIO_NUM_26
   #define Z_STEP_PIN              GPIO_NUM_25
   #define Z_DIRECTION_PIN         GPIO_NUM_33

   #define X_LIMIT_PIN             GPIO_NUM_17
   #define Y_LIMIT_PIN             GPIO_NUM_4
   #define Z_LIMIT_PIN             GPIO_NUM_15

   #define STEPPERS_DISABLE_PIN    GPIO_NUM_32

   #define SPINDLE_OUTPUT_PIN      GPIO_NUM_2   // labeled SpinPWM
   #define PROBE_PIN               GPIO_NUM_35  // labeled Probe

   #define CONTROL_RESET_PIN       GPIO_NUM_34  // labeled Reset, needs external pullup
   #define CONTROL_FEED_HOLD_PIN   GPIO_NUM_36  // labeled Hold,  needs external pullup
   #define CONTROL_CYCLE_START_PIN GPIO_NUM_39  // labeled Start, needs external pullup

如果“LIMIT_MASK”应该在机器文件中定义,我一定是错误地删除了那个设置。

我还附上了我的自定义“盾牌”的示意图,以防万一,以便您了解所有信息。
GRBL_ESP32 shematic.pdf

谢谢!

不能用 5 美元反转限位开关状态 #432

如果您没有在机器文件中定义 LIMIT_MASK,则它默认为 0,表示没有限位开关。那会导致你的问题。查看 Machines/template.h 中的描述。这对我来说似乎很清楚。

不能用 5 美元反转限位开关状态 #432
作者

我尝试将 LIMIT_MASK 设置为“B111”,但没有看到任何变化。

不能用 5 美元反转限位开关状态 #432

您可以将一些“grbl_sendf”调试代码添加到 grbl_limits.cpp,靠近第 366 行,所以它看起来像这样。

    grbl_sendf(CLIENT_SERIAL, "before %x\r\n", pin);
    if (bit_istrue(settings.flags, BITFLAG_INVERT_LIMIT_PINS))
        pin ^= LIMIT_MASK;
    grbl_sendf(CLIENT_SERIAL, "after %x\r\n", pin);
    if (pin) {
        uint8_t idx;
        for (idx = 0; idx < N_AXIS; idx++) {
            if (pin & get_limit_pin_mask(idx))
                limit_state |= (1 << idx);
        }
    }
    grbl_sendf(CLIENT_SERIAL, "limit %x\r\n", limit_state);
    return (limit_state);
不能用 5 美元反转限位开关状态 #432
作者

行。我会看看,然后告诉你。

谢谢!

不能用 5 美元反转限位开关状态 #432
作者

我按照你的建议做了,这是我的结果:
如果 3 个开关都没有被激活,我得到“7”
X 激活 = 6
Y 激活 = 5
Z 激活 = 3
X + Z 激活 = 2
X + Y 激活 = 4
Y + Z 激活 = 1
X + Y + Z 激活 = 0

并且所有三行(之前,之后和限制)始终相同

跳这有帮助。

不能用 5 美元反转限位开关状态 #432
作者

现在我似乎有一个更糟糕的问题!一旦我尝试慢跑或发送 M3 以启用主轴,ESP32 就会重新启动并提供以下信息:

Guru Meditation Error: Core  1 panic'ed (IntegerDivideByZero). Exception was unhandled.
Core 1 register dump:
PC      : 0x4021eb3f  PS      : 0x00060b30  A0      : 0x800d2dff  A1      : 0x3ffd0cb0  
A2      : 0x00000000  A3      : 0x00000001  A4      : 0x00000000  A5      : 0x00000000  
A6      : 0x00002000  A7      : 0x3ffcf000  A8      : 0x00000000  A9      : 0x00000000  
A10     : 0x00000000  A11     : 0x3ffba868  A12     : 0x00000005  A13     : 0x00000020  
A14     : 0x00000020  A15     : 0x00000000  SAR     : 0x00000014  EXCCAUSE: 0x00000006  
EXCVADDR: 0x00000000  LBEG    : 0x4000c46c  LEND    : 0x4000c477  LCOUNT  : 0xffffffff  

Backtrace: 0x4021eb3f:0x3ffd0cb0 0x400d2dfc:0x3ffd0cd0 0x400d2f5a:0x3ffd0cf0 0x400d2d0b:0x3ffd0d10 0x400db308:0x3ffd0d30 0x400de7e0:0x3ffd0db0 0x400d3617:0x3ffd0f30 0x400fa79d:0x3ffd0f50 0x4008f3f1:0x3ffd0f70

Rebooting...
ets Jun  8 2016 00:22:57

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:8896
load:0x40080400,len:5828
entry 0x400806ac

[MSG:Grbl_ESP32 Ver 1.2a Date 20200613]
[MSG:Compiled with ESP32 SDK:v3.2.3-14-gd3e562907]
[MSG:Using machine:Cyclone PCB Factory]
[MSG:Axis count 3]
[MSG:RMT Steps]
[MSG:PWM spindle Output:2, Enbl:-1, Dir:-1, Freq:5000Hz, Res:13bits]

[MSG:Client Started]
[MSG:Connecting Principale]
[MSG:Connecting.]
[MSG:Connected with 192.168.1.75]
[MSG:Start mDNS with hostname:http://cyclone.local/]
[MSG:SSDP Started]
[MSG:HTTP Started]
[MSG:TELNET Started 23]

Grbl 1.2a ['$' for help]
不能用 5 美元反转限位开关状态 #432
作者

好的,我上床睡觉前的最后一次更新……
我擦掉了闪光灯并在 ESP32 上做了一个“清洁”并重新设置了所有设置并且它开始表现了。
限位开关按预期反转,$5=1。

我可以点动、控制主轴、探头等…

现在唯一奇怪的是它只通过 WiFi 连接,没有 USB 并且 z 轴的归位是在触摸限位开关之前归位。

看来我的设置有点脾气!哈哈!

谢谢你的支持!

  • 布莱斯
不能用 5 美元反转限位开关状态 #432
作者

只是为了让您知道一切正常。不幸的是,我真的不知道我做了什么让它发挥作用。我不确定,但我认为擦除 ESP32 上的闪存是解决问题的方法。

还有待观察它的稳定性。

感谢您的宝贵帮助!

  • 布莱斯