开源改变世界!!

无法使用 $5 #432反转限位开关状态

推推 grbl 2年前 (2022-10-20) 234次浏览 0个评论
关闭
blaisebarrette 打开了这个问题 on 13 Jun 2020 · 13 条评论
关闭

无法用 $5 反转限位开关状态第432章

blaisebarrette 打开了这个问题 on 13 Jun 2020 · 13 条评论

注释

无法使用

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

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

任何帮助将不胜感激。

无法使用  blaisebarrette 添加了 漏洞 有些东西不工作标签 on 13 Jun 2020
无法使用
合作者

米奇布拉德利 评论 on 14 Jun 2020

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

无法使用

 评论 on 14 Jun 2020

在 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。不

无法使用
合作者

米奇布拉德利 评论 on 14 Jun 2020

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

无法使用

 评论 on 14 Jun 2020  

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

无法使用

你用的是哪个机器文件?该配置中 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

谢谢!

无法使用
合作者

米奇布拉德利 评论 on 14 Jun 2020

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

无法使用

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

无法使用
合作者

米奇布拉德利 评论 on 14 Jun 2020

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

    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);
无法使用

好的。我会看看,让你知道。

谢谢!

无法使用

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

所有三行(之前,之后和限制)总是相同的

跳这有帮助。

无法使用

现在我似乎有一个更严重的问题!一旦我尝试慢跑或发送 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]
无法使用

好的,我睡觉前的最后一次更新……
我擦除了闪存并在 ESP32 上进行了“清洁”并重新设置了所有设置,它的行为出现了星标。
限位开关按预期反转,$5=1。

我可以慢跑,控制主轴,探针等…

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

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

谢谢你的支持!

  • 布莱斯
无法使用

只是为了让您知道一切正常。不幸的是,我真的不知道我做了什么让它工作。我不确定,但我认为擦除 ESP32 上的闪存是修复它的方法。

还要看它的稳定性如何。

感谢您的宝贵帮助!

  • 布莱斯
喜欢 (0)

您必须 登录 才能发表评论!