开源改变世界

限位销的随机错误读数 #547

推推 grbl 2年前 (2023-02-05) 180次浏览
关闭
3 个任务中的第 1 个
Avataar120 开启了这个问题 2022 年 7 月 30 日 · 20条评论
关闭
3 个任务中的第 1 个

限位销的随机错误读数#547

Avataar120 开启了这个问题 2022 年 7 月 30 日 · 20条评论

评论

限位销的随机错误读数 #547
贡献者
阿凡达120 评论了 2022 年 7 月 30 日  

控制板

自己设计
的Limit脚并联一个100ohm的电阻
100nF的电容

董事会供应商的帮助

  • 是的
  • 不适用

机器描述

测试设置(4 个步进器,丙烯酸板上有末端开关)

配置文件

name: K40_AvaShield
board: 4_Test_Ava_Shield_7.x_XYZ

kinematics:
  Cartesian:

stepping:
  engine: I2S_STREAM
  idle_ms: 255
  dir_delay_us: 1
  pulse_us: 4
  disable_delay_us: 0

axes:
  shared_stepper_disable_pin: NO_PIN

  x:
    steps_per_mm: 78.74
    max_rate_mm_per_min: 20000.000
    acceleration_mm_per_sec2: 2000.000
    max_travel_mm: 310.000
    soft_limits: false
    homing:
      cycle: 1
      positive_direction: false
      mpos_mm: 5.000
      feed_mm_per_min: 200.000
      seek_mm_per_min: 2500.000
      settle_ms: 250.000
      seek_scaler: 1.500
      feed_scaler: 5.000

    motor0:
      limit_neg_pin: gpio.39:low
      limit_pos_pin: NO_PIN
      limit_all_pin: NO_PIN
      hard_limits: false
      pulloff_mm: 5.000
      stepstick:
        ms3_pin: I2SO.3
        step_pin: I2SO.2
        direction_pin: I2SO.1
        disable_pin: I2SO.0


  y:
    steps_per_mm: 78.74
    max_rate_mm_per_min: 20000.000
    acceleration_mm_per_sec2: 2000.000
    max_travel_mm: 210.000
    soft_limits: false
    homing:
      cycle: 1
      positive_direction: false
      mpos_mm: 5.000
      feed_mm_per_min: 200.000
      seek_mm_per_min: 2500.000
      settle_ms: 250.000
      seek_scaler: 1.500
      feed_scaler: 5.000

    motor0:
      limit_neg_pin: gpio.34:low
      limit_pos_pin: NO_PIN
      limit_all_pin: NO_PIN
      hard_limits: false
      pulloff_mm: 5.000
      stepstick:
        ms3_pin: I2SO.7
        step_pin: I2SO.6
        direction_pin: I2SO.5:low
        disable_pin: I2SO.4

  z:
    steps_per_mm: 1000.000
    max_rate_mm_per_min: 400.000
    acceleration_mm_per_sec2: 2000.000
    max_travel_mm: 20.000
    soft_limits: false
    homing:
      cycle: 2
      positive_direction: true
      mpos_mm: 0.500
      feed_mm_per_min: 100.000
      seek_mm_per_min: 100.000
      settle_ms: 250.000
      seek_scaler: 1.500
      feed_scaler: 5.000

    motor0:
      limit_neg_pin: gpio.35:low
      limit_pos_pin: NO_PIN
      limit_all_pin: NO_PIN
      hard_limits: false
      pulloff_mm: 0.500
      stepstick:
        ms3_pin: I2SO.11
        step_pin: I2SO.10
        direction_pin: I2SO.9:low
        disable_pin: I2SO.8
    motor1:
      null_motor:

i2so:
  bck_pin: gpio.22
  data_pin: gpio.21
  ws_pin: gpio.17

spi:
  miso_pin: gpio.19
  mosi_pin: gpio.23
  sck_pin: gpio.18

sdcard:
  cs_pin: gpio.5

control:
  safety_door_pin: gpio.27:low:pu
  reset_pin: gpio.12:low:pu
  feed_hold_pin: gpio.14:low:pu
  cycle_start_pin: gpio.13:low:pu

coolant:
  mist_pin: gpio.4
  delay_ms: 50.000

probe:
  pin: gpio.36:low
  check_mode_start: false

macros:
  startup_line0: 
  startup_line1: 
  macro0: 
  macro1: 
  macro2: 
  macro3: 

start:
  must_home: true
  check_limits: true
  deactivate_parking: false

user_outputs:

laser:
  tool_num: 0
  speed_map: 0=0.0% 1000=100.0%
  output_pin: gpio.15
  enable_pin: gpio.16:low
  disable_with_s0: true
  s0_with_disable: false
  pwm_hz: 15000

arc_tolerance_mm: 0.002
junction_deviation_mm: 0.010
verbose_errors: false
report_inches: false
enable_parking_override_control: false
use_line_numbers: false

启动消息

[MSG:INFO: FluidNC v3.5.1-pre]
[MSG:INFO: Compiled with ESP32 SDK:v4.4.1-1-gb8050b365e]
[MSG:INFO: Local filesystem type is SPIFFS]
[MSG:INFO: Configuration file:config.yaml]
[MSG:DBG: Running after-parse tasks]
[MSG:DBG: Checking configuration]
[MSG:INFO: Machine K40_AvaShield]
[MSG:INFO: Board 4_Test_Ava_Shield_7.x_XYZ]
[MSG:INFO: I2SO BCK:gpio.22 WS:gpio.17 DATA:gpio.21]
[MSG:INFO: SPI SCK:gpio.18 MOSI:gpio.23 MISO:gpio.19]
[MSG:INFO: SD Card cs_pin:gpio.5 detect:NO_PIN]
[MSG:INFO: Stepping:I2S_stream Pulse:4us Dsbl Delay:0us Dir Delay:1us Idle Delay:255ms]
[MSG:INFO: Axis count 3]
[MSG:INFO: Axis X (5.000,315.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     stepstick Step:I2SO.2 Dir:I2SO.1 Disable:I2SO.0]
[MSG:INFO:     Neg Limit gpio.39:low]
[MSG:INFO: Axis Y (5.000,215.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     stepstick Step:I2SO.6 Dir:I2SO.5:low Disable:I2SO.4]
[MSG:INFO:     Neg Limit gpio.34:low]
[MSG:INFO: Axis Z (-19.500,0.500)]
[MSG:INFO:   Motor0]
[MSG:INFO:     stepstick Step:I2SO.10 Dir:I2SO.9:low Disable:I2SO.8]
[MSG:INFO:     Neg Limit gpio.35:low]
[MSG:INFO:   Motor1]
[MSG:INFO: safety_door_pin gpio.27:low:pu]
[MSG:INFO: reset_pin gpio.12:low:pu]
[MSG:INFO: feed_hold_pin gpio.14:low:pu]
[MSG:INFO: cycle_start_pin gpio.13:low:pu]
[MSG:INFO: Kinematic system: Cartesian]
[MSG:INFO: Laser Spindle Ena:gpio.16:low Out:gpio.15 Freq:15000Hz Res:12bits Laser mode:On]
[MSG:INFO: Using spindle Laser]
[MSG:INFO: Mist coolant gpio.4]
[MSG:INFO: Probe Pin: gpio.36:low]
[MSG:INFO: Connecting to STA SSID:MySSID]
[MSG:INFO: Connecting.]
[MSG:INFO: Connecting..]
[MSG:INFO: Connecting...]
[MSG:INFO: Connected - IP is 192.168.x.xxx]
[MSG:INFO: WiFi on]
[MSG:INFO: Start mDNS with hostname:http://fluidnc.local/]
[MSG:INFO: SSDP Started]
[MSG:INFO: HTTP started on port 80]
[MSG:INFO: Telnet started on port 23]

用户界面软件

Fluidterm 或 Lightburn

发生了什么?

我用 lightburn 按钮或通过在 Fluidterm 中发出 $H 触发了几个 HOME 在
15/20 次尝试中,我收到一条 home 错误消息:

[MSG:DBG: Homing XY]
[MSG:DBG: PrePulloff]
[MSG:DBG: Fast approach]
[MSG:DBG: X target -465.000 rate 2500.000]
[MSG:DBG: Y target -315.000 rate 2500.000]
[MSG: DBG: Pulloff0]
[MSG:DBG: X target 5.000 rate 200.000]
[MSG:DBG: Y target 5.000 rate 200.000]
[MSG:ERR: Homing fail]
ALARM:8
Homing fail。拉动时循环未能清除限位开关。尝试增加牵引设置或检查接线。
好的
Grbl 3.5 [FluidNC v3.5.1-pre (wifi) ‘$’ 寻求帮助]
[MSG:INFO: ‘$H’|’$X’ 解锁]

如果我发出 ? 命令,我得到:


<报警|MPos:5.004,5.004,0.500|FS:0,0|Pn:X|WCO:5.004,5.004,5.200>
好吗

<报警|MPos:5.004,5.004,0.500|FS:0,0|Pn:X|Ov:100,100,100>
好吗

<报警|MPos:5.004,5.004,0.500|FS:0,0|Pn:X>
好吗

但是,限位开关激活(请查看我附带的视频)
它随机出现在所有 4 个限位开关上。

其他信息

限位销的随机错误读数 #547

 VID_20220730_121104_1024x576_20220730122216.mp4 

限位销的随机错误读数 #547

限位引脚上有上拉电阻吗?

限位销的随机错误读数 #547
贡献者作者

是的,我的原理图如下:
限位销的随机错误读数 #547

限位销的随机错误读数 #547
贡献者作者

我做了一些示波器跟踪……
我没有注意到什么是有效的,什么是无效的。
下图为 ESP32 引脚上的 Y 输入 1) 不工作 2) 工作

注意:我必须手动触发开关才能解除阻塞(因此将 ESP32 触发为 0V)
换句话说,输入被读取为 1,直到我手动触发开关。

限位销的随机错误读数 #547

限位销的随机错误读数 #547

限位销的随机错误读数 #547

上升沿是什么样子的?

限位销的随机错误读数 #547
贡献者作者

限位销的随机错误读数 #547
限位销的随机错误读数 #547

限位销的随机错误读数 #547
贡献者作者

关于什么可能导致此问题的任何线索?

限位销的随机错误读数 #547
贡献者作者

嗨,我已经稍微改变了我的输入布局,以便为上升沿或下降沿提供干净的边缘。
现在,它们都是完美的,没有任何峰值、弹跳……

但是,我仍然有问题。
它非常容易重现,只需使用限位开关,直到 FluidNC 冻结,例如 X 限位开关检测……
它只需要 10-15 次重现它

关于那个问题的任何线索?
使用相同的硬件,GRBL ESP32 没有这个问题

限位销的随机错误读数 #547
贡献者作者

通过检测 LimitPin.cpp(void IRAM_ATTR LimitPin::read() 函数)进行了一些测试

读书没问题的时候,

  • 我有一个下降沿中断,读数为逻辑1 -> OK
  • 我有一个上升沿中断,读数为逻辑0 -> OK

阅读时如果NOK,

  • 我有一个下降沿中断,读数为逻辑1 -> OK
  • 我有一个上升沿中断,读数为逻辑1 -> NOK

看起来中断是在一个输入电平上触发的,而读取不完全在同一电平

我将中断中的读数推迟了 10us(我知道这很糟糕)->不再有问题
也许我的 RC 有点太慢了?驱动中断和读取不一致?
你怎么认为 ?

谢谢

限位销的随机错误读数 #547

好的,这是很好的信息。中断检测器可能有一个独立于读取电路的阈值电路,中断的阈值略有不同。延迟可能暂时有效;我也会尝试一些替代修复。

限位销的随机错误读数 #547

我相信我昨天遇到过这个问题。我正在尝试将 fluidnc 和 6 件装控制器用于我的数控路由器。发生的事情是在拉出失败后我收到了相同的消息——机器显示 X 和 Y 传感器处于活动状态。这些都不是。我尝试用手激活 Y 传感器,控制器终于注册了它。X 信号仍显示为阳性。$bye 后机器也正确检测到 X 信号。我正在使用电感式传感器。很抱歉没有分享问题所需的所有详细信息。我使用的是最新版本1950bd0,没有收音机。

限位销的随机错误读数 #547

这个问题是从v3.4.4版本开始的。在这个版本中,问题不存在。供参考

限位销的随机错误读数 #547

是的,我们知道。

限位销的随机错误读数 #547

我应该读过我花了两天时间认为这是我的董事会的“问题”。我一定是焊接了这么多过滤帽。我是一个假笑。

限位销的随机错误读数 #547

通过减慢边缘,上限实际上使情况变得更糟。慢边沿增加了在引脚读取电路检测到新值之前触发变化检测中断的机会。

限位销的随机错误读数 #547
mac7988 评论了 2022 年 8 月 8 日  

我注意到了。我也在尝试在没有范围的情况下解决这个问题。

谢谢你的及时回复

限位销的随机错误读数 #547

显然这不是信号质量问题,而是 ESP32 输入硬件设计方式的人为因素。我做了我认为是对检测引脚值变化的方式的改进,但被那个工件绊倒了。

限位销的随机错误读数 #547

你有办法测试吗?我可以帮助我的董事会似乎很容易出现这个问题。
限位销的随机错误读数 #547

限位销的随机错误读数 #547

嗨米奇,这似乎解决了它。我会做更多的测试,然后让你知道。

限位销的随机错误读数 #547

我想我们已经修好了。