Contact me: hankecnc@gmail.com

特定 NC 文件上错误放置 Z 的意外问题 #508

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

关闭
ThatGuy435 打开了这个问题 2014 年 10 月 11 日 · 37条评论
关闭

特定 NC 文件上错误放置 Z 的意外问题#508

ThatGuy435 打开了这个问题 2014 年 10 月 11 日 · 37条评论

注释

特定 NC 文件上错误放置 Z 的意外问题 #508

因此,我为我的 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 (步进启用反转,布尔)
$5=0(限制引脚反转,布尔)
$6=0(探针引脚反转,布尔)
$10=3(状态报告掩码:00000011)
$11=0.050(结偏差,mm)
$12=0.002(圆弧公差,mm)
$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 最大速率,毫米/分钟)
$111=5000.000(y 最大速率,毫米/分钟)
$112=1000.000(z 最大速率,毫米/分钟)
$120=250.000(x 加速度,毫米/秒^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 文件上错误放置 Z 的意外问题 #508
成员

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

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

特定 NC 文件上错误放置 Z 的意外问题 #508

奇怪的是,如果似乎在整个程序中都在发生。我已经运行了它的一部分,它最终与行数成正比。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

0deg导入:
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 文件上错误放置 Z 的意外问题 #508
成员

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

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

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

特定 NC 文件上错误放置 Z 的意外问题 #508

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

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

我还让它部分地运行在同一个文件中,减去 5 度的引入,到目前为止它看起来不错。

在文件的测试运行之间,我一直在以高速和高加速度对我的机器进行更简单的移动,并且我确信两件事:我的机器没有丢失步骤,并且我的设置有很大的余量。

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

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

特定 NC 文件上错误放置 Z 的意外问题 #508

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

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

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

特定 NC 文件上错误放置 Z 的意外问题 #508

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

特定 NC 文件上错误放置 Z 的意外问题 #508

@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 文件上错误放置 Z 的意外问题 #508

如果有帮助:除了删除空格外,GrblPanel 不会对发送的 gcode 进行任何更改。没有修剪小数位,替换 gcodes,arcs to segments 等。

特定 NC 文件上错误放置 Z 的意外问题 #508
贡献者

会不会是钻头/夹头问题而不是 Z 轴高度问题?比如,由于特定的角度/速度,钻头在夹头中变松了?

特定 NC 文件上错误放置 Z 的意外问题 #508

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

几天内我没有机会检查,但如果可以的话,我会的。

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

@ThatGuy435: 有趣的。感谢您的报告。不太清楚你所说的问题仍然存在是什么意思,它是 UGS 1.07。不同版本的 UGS 是否完全解决了问题?我还发现 GrblPanel 会复制这个问题很奇怪,因为它没有像 UGS 那样进行任何奇怪的舍入和预解析。问题与 UGS 完全相同,还是表现得比 UGS 高或低?

如果可以,请尝试将弧度公差设置从 0.002 毫米增加到 0.01 毫米或 0.005 毫米,看看是否有所不同。

特定 NC 文件上错误放置 Z 的意外问题 #508

@chamnit我只尝试了 UGS 1.0.7 和 GrblPanel,但两者都表现出相同的问题(据我所知)Z 上的偏差相同。这令人费解。

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

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

@ThatGuy435:关于您的导入和电弧问题的任何消息?

特定 NC 文件上错误放置 Z 的意外问题 #508

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

明天我应该可以回家并进行更多测试。

特定 NC 文件上错误放置 Z 的意外问题 #508

今天肯定能跑测试。这是我目前的电池:

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

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

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

特定 NC 文件上错误放置 Z 的意外问题 #508

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

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

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

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

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

@ThatGuy435: 好的,感谢您运行测试。您可以发布工作 gcode 程序和失败案例 gcode 程序吗?另外请确认您之前帖子中的设置与您测试的设置相同。我希望这个周末我能有时间研究这个,但这些天很难得到时间。

特定 NC 文件上错误放置 Z 的意外问题 #508

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

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

设置与原帖一致。

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

我完全理解暂时无法抽出时间——毕竟,我花了一周时间来运行测试!

特定 NC 文件上错误放置 Z 的意外问题 #508

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

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

特定 NC 文件上错误放置 Z 的意外问题 #508

@blinkenlight建议采纳!

今晚我会弄出一些收割台并剪下一些引脚以消除尽可能靠近 arduino 的信号。引脚 D2、D3、D5、D6 是否足够?

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

@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 文件上错误放置 Z 的意外问题 #508

@chamnit我在这里有点头大——这是为了在 Arduino IDE 中运行,通过串行连接到第二个 Arduino,它的 Z Pulse 引脚连接到 D2?

Arduino Leo 会为此工作吗?我手边没有第二台 Uno,但我有一台 Leo,我打算用它来做一个我什至从未开始过的项目……

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

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

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

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

特定 NC 文件上错误放置 Z 的意外问题 #508

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

特定 NC 文件上错误放置 Z 的意外问题 #508

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

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

特定 NC 文件上错误放置 Z 的意外问题 #508

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

特定 NC 文件上错误放置 Z 的意外问题 #508

@blinkenlight尽我所能。我测量了运行草图的 Leo 底部焊盘的电压——他们可能拥有任何东西的唯一方法就是连接它。我可以在数字万用表上看到 DIR 电压变化,但双桅帆船似乎从未记录下来。

特定 NC 文件上错误放置 Z 的意外问题 #508

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

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

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

特定 NC 文件上错误放置 Z 的意外问题 #508

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

特定 NC 文件上错误放置 Z 的意外问题 #508

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

特定 NC 文件上错误放置 Z 的意外问题 #508

@chamnit @blinkenlight找出草图的问题……在 Leonardo 上,中断 0 在引脚 3 上,中断 1 在引脚 2 上,与……其他所有东西相反。请参阅:http ://arduino.cc/en/Reference/AttachInterrupt

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

特定 NC 文件上错误放置 Z 的意外问题 #508

在完全连接的情况下运行几次后,看起来 GRBL 正在准确地执行步骤 – 尽管以前看起来不是这样,但我想这很可能是机电问题!

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

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

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

喜欢 (0)