开源改变世界!!

特定 NC 文件#508上 Z 错位的意外问题

推推 grbl 2年前 (2022-10-30) 125次浏览 0个评论
关闭
ThatGuy435 打开了这个问题 on 11 Oct 2014 · 37 条评论
关闭

特定 NC 文件上 Z 错位的意外问题#508

ThatGuy435 打开了这个问题 on 11 Oct 2014 · 37 条评论

注释

特定 NC 文件#508上 Z 错位的意外问题

因此,我为我的 ShapeOko 设计了一个项目(电子外壳),在使用一种新材料进行的一次测试中,我注意到一个非常奇怪的正 Z 漂移。让我震惊的是,我一直在使用相同的电子设备和粗略的 GRBL 配置(上个月从 0.8c 转移到 0.9g 的值)近一年没有出现任何问题。

我开始验证问题不是硬件问题,通过运行 G0 Z0/G0 Z50、G1 F400 Z0/G0 Z50 各约 100 次,然后以我通常使用的 150% 的加速度和步数限制再次运行,然后再次运行(针对每种情况)使用不同的 DRV8825 载板。每次它都按预期精确返回零 – 没有绑定,没有错过的步骤。

接下来,我运行了面板的第二个修订版,它保持 Z 为零。

这似乎只发生在我的面板的一个特定版本中,我专门在 CamBam 上的坡道中搞砸了我的铅,为每次通过生成一个引入螺旋(5 度) – 第二次修订,螺旋作品中的铅为 0 度正如预期的那样。它也只影响 Z 位置 – X 和 Y 成立。

这发生在铣削材料以及在主轴通电和断电的情况下在空中运行时。运行下面链接的文件后,Z 比应有的高约 6 毫米。

有问题的 nc 文件可以在这里的 pastebin 上找到:http: //pastebin.com/nESx6XQM

Arduino Uno R3
Buildlog.net Stepper Shield
eBay DRV8825 驱动器@ 1.7A 限制
1.7A / 56oz.in NEMA 17 步进器

我的 GRBL 0.9g 设置:
$0=10(步进脉冲,usec)
$1=255(步进空闲延迟,毫秒)
$2=0(步进端口反转掩码:00000000)
$3=0(dir 端口反转掩码:00000000)
$4=0 (step enable invert, bool)
$5=0 (limit pins invert, bool)
$6=0 (probe pin invert, bool)
$10=3 (status report mask:00000011)
$11=0.050 (junction deviation, mm)
$12=0.002 (圆弧公差,毫米)
$13=0(报告英寸,布尔)
$14=1(自动启动,布尔)
$20=0(软限制,布尔)
$21=0(硬限制,布尔)
$22=1(归位周期,布尔)
$23=3(归位方向反转掩码:00000011)
$24=25.000(归位进给,mm/min)
$25=250.000(归位寻道,mm/min)
$26=50(归位去抖动,毫秒)
$27=1.000(归位拉断,mm)
$100=100.000(x,步长/mm)
$101=100.000(y,步长/mm)
$102=188.947(z,步长/mm)
$110=5000.000(x 最大速率,mm/min)
$111=5000.000(y 最大速率,mm/min)
$112=1000.000(z 最大速率,mm/min)
$120=250.000(x 加速度,mm/sec^2)
$121 =250.000 (y 加速度, mm/sec^2)
$122=25.000 (z 加速度, mm/sec^2)
$130=296.000 (x 最大行程, mm)
$131=779.000 (y 最大行程, mm)
$132=65.000 (z最大行程,毫米)

特定 NC 文件#508上 Z 错位的意外问题
成员

尚尼特 评论 on 11 Oct 2014

从冗长的程序中很难看出是什么导致了这个问题。你能找出你认为在程序中发生这种情况的地方吗?

另外,您在程序中是否有任何完整的圆弧命令?这些有一个四舍五入的问题,它有时可以跳过这些块。无论如何,始终建议您使用 CAM 输出半弧来避免这种情况。这是所有CNC控制器的通病。

特定 NC 文件#508上 Z 错位的意外问题

如果似乎在整个程序中都发生了,那就奇怪了。我已经运行了它的一部分,它最终与行号成比例地略有下降。http://i.imgur.com/w8YZRag.jpg是该部分的实际外观。

唯一会使用完整弧线的部分可能是钻孔部分,但即使只切掉风扇格栅也会出现问题 – 再次与 gcode 行成比例。

然而,它几乎必须对部分弧线做一些事情,因为“坏”和“好”文件之间的唯一区别是引入的变化。0 度(工作)的 CamBam 螺旋导入通过整个通道来降低切割深度,其中任何更高的将使用线性斜坡下降到深度,然后在深度切割。

例如,50mm 方形,5* 螺旋导入,2mm 材料 1mm 切深:
G0 X0.0 Y11.4301
G1 F400.0 Z2.0
G1 F1200.0 Y0.0 Z1.0
G1 X50.0
G1 Y50 .0
G1 X0.0
G1 Y0.0
G0 Z10.0
G0 Y11.4301
G1 F400.0 Z1.0
G1 F1200.0 Y0.0 Z0.0
G1 X50.0
G1 Y50.0
G1 X0.0
G1 Y0。 0
G0 Z10.0

和0度导入:
G0 X0.0 Y0.0
G1 F400.0 Z2.0
G1 F1200.0 X50.0 Z1.75
G1 Y50.0 Z1.5
G1 X0.0 Z1.25
G1 Y0.0 Z1。 0
G1 X50.0 Z0.75
G1 Y50.0 Z0.5
G1 X0.0 Z0.25
G1 Y0.0 Z0.0
G1 X50.0
G1 Y50.0
G1 X0.0
G1 Y0.0
G0 Z10.0

但是,如果这些产生问题,我将无法测量我机器上的漂移

特定 NC 文件#508上 Z 错位的意外问题

唔。如果是机器漂移并且 grbl 报告了正确的位置,则很可能您的机器正在丢失步骤。Grbl 报告的位置是步进中断向您的电机触发的确切步数。

特定 NC 文件#508上 Z 错位的意外问题

哎呀,点击发送。正如我所说,您的 gcode 中没有任何弧线,只有 g0 急流和 g1 提要。Grbl 应该可以在此配置下正常工作。您可能需要调整轴加速度和最大速率。尝试将所有内容调低 50% 左右,然后重新运行。并增加它直到问题消失。

特定 NC 文件#508上 Z 错位的意外问题

好吧,自从我发布以来,我一直在这样做。我可以说,非工作文件在所有轴上 10mms^2 加速度和 100mm/s 速度上限时仍然存在相同的问题。

该测试需要一段时间才能运行。

我还让它部分地通过同一个文件减去 5 度的引导,到目前为止它看起来不错。

在文件的测试运行之间,我一直在用更简单的高速和高加速度移动我的机器,我确信两件事:我的机器不会丢失步数,而且我的设置有很大的余量。

特定 NC 文件#508上 Z 错位的意外问题

@ThatGuy435: 好的。你用的是UGS吗?如果是这样,请尝试同时使用不同的构建或 Gui。我记得UGS如何处理Gcode的预解析存在问题。这可以解释您的一些问题。

特定 NC 文件#508上 Z 错位的意外问题

@ThatGuy435:出于好奇,我运行了您的示例 g 代码(不是全部,只到 1955 年左右,“演习”部分开始的地方 – 轮廓的大小对我来说是个问题),虽然机器保持产生了很大的共鸣,似乎我没有失去任何步骤(我在主轴下经过的高度块几乎没有刮擦它,就像它在开始之前所做的那样 – 距离它只有 2-3 步,它要么不接触,要么不接触不适合)。不过要注意的一件事是,我的设置将机器限制在您的进给速率以下(即使它在“切割”期间像我以前从未见过的那样嗡嗡作响),因此可能存在行为差异。我使用了 Grbl 0.9,我可能相关的设置是:

  • 最大 X/Y/Z 速度:1500 毫米/分钟
  • 最大 X/Y/Z 加速度:80.0 毫米/秒^2
  • 电弧公差:0.002 mm
  • 结偏差:0.050 mm
  • 步进空闲延迟:25 毫秒
  • 步进脉冲:40 微秒
  • 步骤反转掩码:00000111
  • 目录反转掩码:00000010

您可能希望使用这些设置运行测试,以确认您是否仍然看到问题(当然,减去掩码,这些仅供参考)。编辑:发件人是UGS 1.0.4 …

特定 NC 文件#508上 Z 错位的意外问题

@ThatGuy435:我在发布后注意到您的 Z 参数与 X/Y 参数突然不同(以至于您甚至无法用我的参数进行测试),我想知道这是否与它有关;所以我今天再次运行代码,Z 仅降级为 1000 mm/sec 和 25 mm/sec^2。它仍然没有丢失任何步骤,但至少这是一个您可以根据需要实际尝试的配置。

特定 NC 文件#508上 Z 错位的意外问题

@chamnit我确实在使用 UGS 1.0.7。对于它的价值,我实际上尝试了 GrblPanel,因为我在完成工作后遇到 UGS 卡住的间歇性问题。问题依然存在。

此外,我能够使用 CamBam 的 0* 螺旋导入在另一件作品上复制该问题——即没有上述问题的作品。

完全禁用导入(切入深度 + 深度切割)并完全使其消失在我在最后 10 个小时的运行中尝试的所有操作中 – z 轴在一天中的任何时间都没有显示任何漂移,除非运行使用 CamBam 的螺旋导入生成的 g 代码。

我怀疑舍入问题是核心问题,尽管我不确定是 CamBam、UGS/GrblPanel 还是 GRBL 本身……这个问题在 gcode 中似乎最为明显,其中有许多短段,切割深度的小数部分。

@blinkenlight我的 X 和 Y 是标准的 Shapeoko GT2 皮带/16T 皮带轮,而我的 Z 是 12TPI ACME 螺钉,所以 Z 必然不同。对于它的价值,我也在所有轴上使用 1000mm/s 25mm/s^2 显示相同的症状。

特定 NC 文件#508上 Z 错位的意外问题

如果有帮助:GrblPanel 不会对发送的 gcode 进行任何更改,除非删除空格。没有修剪小数位、替换 gcode、弧线段等。

特定 NC 文件#508上 Z 错位的意外问题

与 Z 轴高度问题相比,它可能是一个位/夹头问题吗?例如,由于特定的角度/速度,夹头中的钻头松动?

特定 NC 文件#508上 Z 错位的意外问题

@kfoltman我想这是可能的 – 我没有专门检查过。也就是说,我有点怀疑它,因为即使在空气研磨时也会出现漂移。另外,我把钻头调得很紧,以前在 DW660 中我从来没有真正遇到过打滑问题。

几天内我没有机会检查,但当我可以时,我会的。

特定 NC 文件#508上 Z 错位的意外问题

@ThatGuy435: 有趣的。感谢您的报告。不太清楚您所说的问题仍然存在以及它是 UGS 1.07 是什么意思。不同版本的 UGS 是否完全解决了这个问题?我也觉得奇怪的是 GrblPanel 会复制这个问题,因为它不会像 UGS 那样做任何奇怪的舍入和预解析。问题是完全一样的,还是比 UGS 更多或更少?

如果可以,请尝试将电弧容差设置从 0.002 毫米增加到 0.01 毫米或 0.005 毫米,看看是否有区别。

特定 NC 文件#508上 Z 错位的意外问题

@chamnit我只尝试过 UGS 1.0.7 和 GrblPanel,但两者都表现出相同的问题(据我所知)Z 上的偏差相同。这很神秘。

几天后我不会回到我的机器上,但会在我的测试列表中添加 UGS 1.0.8-nightly 和弧容差设置。

特定 NC 文件#508上 Z 错位的意外问题

@ThatGuy435: 关于你的导入和弧线问题有什么消息吗?

特定 NC 文件#508上 Z 错位的意外问题

不幸的是,自从上次测试以来,我实际上并没有回家。是的旅行:|

明天我应该可以回家做更多的测试。

特定 NC 文件#508上 Z 错位的意外问题

今天肯定可以运行测试。这是我目前的电池:

对于 UGS 1.0.7、UGS 1.0.8- 的每个控制器,原始帖子中的 GCode 文件将以 (1000mm/m max, 25mm/s^2) 和 (500mm/m max, 10mm/s^2) 运行每晚,GrblPanel 1.0.0.0。每个组合都将重复,弧容差设置为 0.002 和 0.01。

根据之前的测试,我希望在 UGS 1.0.7 和 GrblPanel 上看到 Z 漂移在两种速度下都具有 0.002 的弧度容差,并且对于其他所有组合都是未知的。

这将导致每次测试约 20-30 分钟产生 12 种组合,因此测试可能会延迟 :)

特定 NC 文件#508上 Z 错位的意外问题

好吧。我运行了所有 12 次测试,并且在所有情况下都发生了完全相同的 Z 漂移。据我所知,每次的漂移都完全相同——5.4mm 大约是我能得到的最佳测量值。

除了上述 12 种情况,我还运行了一种,弧度公差设置为 0.02,z 加速度设置为 5mm/s^2,最大 z 速度设置为 200mm/m。我还使用不同的 DRV8825 板(交换 A 和 Z)运行相同的配置。

我还运行了 z0/z50(x100)(再次)并且没有遇到 Z 漂移。

当我升级到 0.9 时,是否有可能从 0.8c 遗留下来?我对嵌入式编程一无所知,但我有点不知所措。

特定 NC 文件#508上 Z 错位的意外问题

@ThatGuy435: 好的,感谢您运行测试。你能发布工作gcode程序和失败案例gcode程序吗?另外请验证您之前帖子中的设置是否与您测试的相同。我希望这个周末我能有一些时间来研究这个问题,但这些天来的时间太难了。

特定 NC 文件#508上 Z 错位的意外问题

@chamnit故障模式链接在原帖中。

http://pastebin.com/vbraCz4e是相同的部分(可能是较小的设计更改,但我不这么认为……)没有引入(插入 1 毫米,运行轮廓,重复)。

设置与原始帖子匹配。

我能在原始问题文件和我提到的另一个文件之间找到的唯一共同点是在弧段期间都有 Z 运动。

我完全理解有一段时间没时间——毕竟,我花了一周的时间来运行测试!

特定 NC 文件#508上 Z 错位的意外问题

@ThatGuy435:看,我的意思是最好的方式,但我很确定您的特定驱动板/机器在 x/y 和 z 轴之间存在某种干扰问题,这就是为什么它只在它们全部移动时才会发生 -要么逻辑信号弱到足以相互耦合,要么方向或时钟信号的某些方面足够边缘以至于在存在任何噪声时会被误解。

无论如何,您的问题只有两种可能发生的方式 – Grbl 只是输出错误数量的脉冲,或者它输出正确数量的脉冲但当其他轴也移动时它们执行不佳 – 最简单的决定方法这将是断开Grbl 输出和驱动电路输入之间的 X 和 Y 轴,尽可能靠近 Grbl 输出引脚(不仅仅是拔下电机)并再次运行程序,只有 Z 轴实际上在移动。这样 X 和 Y 就不会干扰,即使生成与以前完全相同的信号……

特定 NC 文件#508上 Z 错位的意外问题

@blinkenlight建议采纳!

今晚我会整理一些接头并剪下一些针脚,以消除尽可能靠近 arduino 的信号。针脚 D2、D3、D5、D6 应该够用吗?

特定 NC 文件#508上 Z 错位的意外问题

@blinkenlight: 谢谢建议!我记得很久以前检查过 Grbl 上的阶跃脉冲输出,因为有一个类似的问题。我编写/修改了一个快速脉冲计数器 .INO 程序,该程序采用备用 Uno 并将计数器引脚连接到 Grbl 步进和方向引脚。

这是程序。它只查看一组引脚,但这足以检查 Z 轴。只需通过串行终端连接即可。

/*
Arduino UNO reads rising edge trigger pulses on pin 2 
*/


#define REFRESH_INTERVAL_MS 100

/* Pin assignments */
#define INTERRUPT_INPUT 2
#define DIR_INPUT 3

int pulse_counter = 0;


void setup()
{
  Serial.begin(9600);

  // For noise suppression, enable pullup on interrupt pin
  digitalWrite(INTERRUPT_INPUT, HIGH);
  digitalWrite(DIR_INPUT, HIGH);
  attachInterrupt(INTERRUPT_INPUT - 2,
                  interrupt_handler,
                  RISING);
}


void loop()
{
  // Wait till a pulse comes in
  if (pulse_counter != 0)
  {
    Serial.println(pulse_counter);
    delay(REFRESH_INTERVAL_MS);
  }
}

void interrupt_handler()
{
  if (digitalRead(DIR_INPUT)) {
  pulse_counter = pulse_counter + 1;
  } else {
    pulse_counter = pulse_counter - 1;
  }
}
特定 NC 文件#508上 Z 错位的意外问题

@chamnit我有点不知所措-这是打算在通过串行连接到第二个 Arduino 的 Arduino IDE 中运行,该 Arduino 的 Z Pulse 引脚连接到 D2?

Arduino Leo 会为此工作吗?我手边没有第二个 Uno,但我确实有一个 Leo,我打算在一个我什至从未开始的项目中使用……

特定 NC 文件#508上 Z 错位的意外问题

@ThatGuy435: 是的。真的任何Arduino都可以。您只需要通过 Arduino IDE 上传程序。将引脚 2 连接到 Z-step 引脚,将引脚 3 连接到 Z-dir 引脚。Leonardo 引脚将通过其内部上拉电阻器进行保护。只需启动一个串行终端。Arduino IDE 中的那个就可以了。一旦你开始向 Grbl 发送程序,Leonardo 应该开始根据方向吐出脉冲计数。如果您在 Z=0 开始和结束,则在程序结束时读数应显示为零。如果不是,则读数应等于通过此计算得出的 Z 值(脉冲数/steps_per_mm)。

特定 NC 文件#508上 Z 错位的意外问题

@ThatGuy435: 如果这对你来说太多了,我今晚可以在家做。我不会花很长时间来安装它并运行它。

特定 NC 文件#508上 Z 错位的意外问题

@chamnit不,这听起来在我的能力范围内!我是一名 IT 人员,所以只要一英寸,我通常可以爬完剩下的一英里……只是完全不熟悉 BASH/PHP 类型脚本之外的编程。我要到今晚晚些时候才能回家,但一旦我回家,我就会把它装上。

特定 NC 文件#508上 Z 错位的意外问题

@chamnit我运行了草图,它正在检测和计算脉冲……但从不减去任何脉冲。

Z- 产生 5v,Z+ 产生 0V,从 Leo D3 引脚底部测量。

特定 NC 文件#508上 Z 错位的意外问题

@ThatGuy435: 你确定你从 Z 轴连接时钟dir 引脚吗?如果没有 dir 信号,计数的 Arduino 确实只会在一个方向上计数……

特定 NC 文件#508上 Z 错位的意外问题

@blinkenlight尽我所能。我测量了我正在运行草图的 Leo 底部焊盘的电压 – 他们可以拥有任何东西的唯一方法是连接它。我可以看到 DMM 上的 DIR 电压变化,但 ketch 似乎从未记录过它。

特定 NC 文件#508上 Z 错位的意外问题

这确实很奇怪 – 草图是如此简单,没有什么可以出错的。冒着听起来很愚蠢的风险——你看到的那个针改变了方向,确定是 Leo 的 D3 针吗?

特定 NC 文件#508上 Z 错位的意外问题

@ThatGuy435: 这变成了比它的价值更多的麻烦。今晚我可以试一试。设置并运行这个测试用例应该不会花费我很长时间。

特定 NC 文件#508上 Z 错位的意外问题

@blinkenlight在我的辩护中,它显然看到了一些变化,因为它只是在我移动 Z+ 时才算数,而 Z- 根本没有变化。我同意这个草图非常简单,不会出错,但出于某种原因,它只是拒绝减去步骤。

特定 NC 文件#508上 Z 错位的意外问题

@ThatGuy435:好吧,我想你总是可以再看一眼草图,只是为了确保所有大括号都在中断处理程序中应该在的位置(并且你没有混淆 clk 和 dir 信号线或其他东西)… :)

特定 NC 文件#508上 Z 错位的意外问题

@chamnit @blinkenlight找出草图的问题……在莱昂纳多上,中断 0 在引脚 3 上,中断 1 在引脚 2 上,与……相反。请参阅:http ://arduino.cc/en/Reference/AttachInterrupt

将针脚 3 拉高,将 DIR 更改为针脚 8,并正确插入所有内容,即可获得预期的结果。我现在正在运行有问题的 G 代码文件,首先断开 30V 电机电源,如果我在 Z 上得到一个净 0,我将使用 30V PSU 在线再次尝试。

特定 NC 文件#508上 Z 错位的意外问题

在完全连接的情况下运行了几次之后,GRBL 似乎正在准确地输出步骤 – 尽管以前看起来不是这样,但我想它几乎必须是一个机电问题!

非常感谢所有帮助缩小范围;我会将信息带回 Shapeoko 社区。

特定 NC 文件#508上 Z 错位的意外问题

@ThatGuy435: 很高兴听到你缩小了范围。感谢您做腿部工作并让我们都知道!这东西是无价的。

喜欢 (0)

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