开源改变世界

反弹 #389

推推 grbl 3年前 (2023-01-21) 202次浏览
打开
austinblanco 打开了这个问题 2014 年 4 月 9 日 · 35条评论
打开

反弹#389

austinblanco 打开了这个问题 2014 年 4 月 9 日 · 35条评论

注释

反弹 #389

我很好奇是否有人可以指出如何在主版本或 /edge 分支中引入反冲补偿。我已经使用一些 3-D 打印齿轮和 NEMA 19 步进器将旧的圆柱铣床转换为 CNC,但是机器上的 ACME 螺钉永远不会调整到 0 背隙,因此我必须在轴的控制中引入背隙补偿,而不是试图机械地消除它。我正在考虑是否在自定义 gcode 编辑器中执行此操作(即在 CAM 中生成,然后运行转换脚本)但这似乎是一个补丁,而传统系统(LinuxCNC、Mach3 等)直接处理机器配置设置中的反弹. 无论如何,如果我能得到一些关于它在当前版本中应该去哪里的输入,我愿意编写反冲补偿代码。任何建议将不胜感激!

反弹 #389

“motion_control.c”中的注释表明它可以添加到mc_line(). 但它们也暗示了跟踪目标位置与报告位置的潜在并发症。

plan_buffer_line()我想知道planner.c中是否有更好的位置。通过对新block->direction_bits值与先前值进行异或运算,您几乎可以免费获得位置反转检测。当检测到逆转时,只需将反弹添加到block->steps_x而不是添加到pl.position。 (这是基于 0.8 – 看起来 0.9 已经重新排序了该函数中的一些操作,但我认为总体思路仍然成立。)

反弹 #389
成员

@ashelly: plan_buffer_line() 的目的是与系统的其余部分隔离开来,以便它可以保持独立。这就是为什么在 mc_line() 区域中提到 backlash comp 的主要原因。它很简单,可以跟踪您在那里需要的东西。

在 backlash comp 上有许多已关闭的问题线程。请查看那里以获取更多信息。简而言之,它在我的优先级列表中并不高,我们在 Uno 上也没有太多空间来做复杂的事情。

反弹 #389

可以肯定的是,uno 是内存有限的!我相信我已经阅读了所有试图解决我的问题的反冲/grbl 相关线程。
所以我想我遇到的问题是 GRBL 代码假设外部反冲可以在 CAM 中处理,从我看到的包来看,通常不会在那里处理,并且 CAM 工具假设反冲是在 CAM 中处理的gcode 阅读器/机器控制器端,通常用于典型的老式 linuxcnc/mach3 设置。所以我想我被难住了。我真的不想放弃 grbl 盾牌,因为它在其他方面都很好用,所以至少对于软件解决方案,我可能会简化为编写一个 nc IO 程序来处理移动和解释反弹,但我认为它应该注意的是,在 CNC 社区中,期望控制机器的系统能够解决这个问题,因此任何希望使用 GRBL 防护罩在大型铣床上进行精确工作的人,

反弹 #389
成员

@austinblanco:我会说大多数 CNC 切割系统都有反弹,但不是全部。Grbl 及其衍生产品的大多数用户都使用皮带驱动系统。这几乎没有反冲,但以轴刚度为代价。您不能在这些设备上承受那么多的侧面负载,但它们非常适合业余爱好者使用,例如 ShapeOko、3d 打印机和激光/等离子切割机。我有一个 Sherline 磨机,必须保持防间隙螺母非常紧。但是,我的轴上的反冲小于 0.001″,但略微牺牲了我的扭矩余量。

反弹 #389

感谢您的快速回复!是的,我机器上的梯形螺纹杆有很多间隙,我的目的是将它调整到一个可以接受的水平 – 我知道我可以选择典型的选项并将运动控制转换为滚珠丝杠设置,但我试图让我的吃蛋糕也吃 – 手动机器,顶部有 CNC 操作 :-)

我想我已经读了足够多的书,确信第一要务应该是解决机械反冲,看看它能把我带到哪里。我有一台车床,所以我可以转动一些精确的垫片来解决梯形螺钉间隙问题——至少现在应该提供一个有用的系统:-)

我确实了解功能蠕变和资源限制,并且想对代码的当前状态表示非常感谢,用大约 200 美元的设备移动大型磨坊真是太棒了,虽然不完美,但嘿,这比转动手轮要好目前!

如果您感兴趣,这里是 GRBL 控制器的当前设置,请注意您可以听到跳过的步骤,这已经解决,并且电机现在已经完全安装以及 Y 轴解决方案….
https://www. youtube.com/watch?v=vDq4JLbkJ84

反弹 #389
贡献者

@austinblanco有可用的后处理器脚本,从这个线程开始http://forums.reprap.org/read.php?154,178612,182380#msg-182380

但最终最好还是先尽可能地减少物理反冲。

反弹 #389

感谢推荐!我确实下载并尝试了这个脚本,但出于某种原因它没有咀嚼我的 Gcode 文件 – 嗯,也许我应该针对这个问题,因为如果我能让它工作它应该解决问题。好决定。

附带一提——我拆掉了磨机并收紧了驱动器,并且已经能够将反冲降低到大约 0.020″。

反弹 #389

ashelly – 感谢您提供实际实施的指导。我为大学项目做了类似的事情。我在该代码中也有一个自动反冲识别逻辑。算法如下:

  1. 归位后,朝限位开关移动,使其关闭。
  2. 现在改变所有轴的方向并远离限位开关,使限位开关打开。
  3. 记下离开每个轴的限位开关所需的步数。这些步数是反弹步数。
  4. 每当方向改变时,使步进器额外移动反冲步骤。

我是这个社区的新手。谁能帮我在 GRBL 中实现这个算法?我想自己做,但我还处于学习阶段,还没有完全掌握整个代码流程。
这是我自己的想法,如果感觉足够好/新,任何人都可以随意使用它。

反弹 #389

这对我的限位开关
不起作用,它们有滞后现象,所以触发点不一样

2016-02-12 13:13 GMT-03:00 abhijithcr notifications@github.com

ashelly – 感谢您提供实际实施的指导。我
为大学项目做了类似的事情。我在该代码中也有一个自动反冲
识别逻辑。算法如下:

  1. 归位后,朝限位开关移动,使其
    关闭。
  2. 现在改变所有轴的方向并远离限位
    开关,使限位开关打开。
  3. 记下离开
    每个轴的限位开关所需的步数。这些步数是反向步数。
  4. 每当方向改变时,使步进器额外移动反冲步骤。

我是这个社区的新手。谁能帮我
在 GRBL 中实现这个算法?我想自己做,但我还处于
学习阶段,还没有完全掌握整个代码流程。


直接回复此电子邮件或在 GitHub
#389(评论)上查看。

反弹 #389

然后尝试光学限位开关

反弹 #389

你不需要在 GRBL 上实现它,归位后你可以在
同一个引脚上使用 G38 并检查差异。

2016-02-12 18:42 GMT+00:00 abhijithcr notifications@github.com

然后尝试光学限位开关


直接回复此电子邮件或在 GitHub
#389(评论)上查看。

反弹 #389

大家好,
想知道是否有人在他们的 GRBL 代码中添加了反冲补偿。我有一台铣床,我的 cnc 控制器使用带有并口 mack3 软件的旧电脑,该软件具有反向间隙补偿功能。我让 bCNC RPi3 和 GRBL arduino 工作,希望能取代旧的 pc 设置。我的工厂在 X 轴上有 1900 万,在 Y 轴上有 1500 万。没有补偿,圆圈就不对了。
请帮忙!
谢谢

反弹 #389

@bjao1– 我已经成功地编写了一个 g 代码修改器(适合直线操作,最重要的是;弧形操作(G2&G3)) – 我有一个小错误,很快就会解决。我需要更多的 G 代码来适当地测试它。(到目前为止,它已经使我的反弹从 0.35mm 下降到小于 0.01mm :)

理想情况下,它会被添加到 GRBL – 最近几天我一直在努力熟悉代码。我有一些想法如何在 GRBL 中实现它——但仍在努力。

如果有人将此添加到代码库中 – 请分享一下?

反弹 #389
危机 评论了 2017 年 12 月 4 日 通过电子邮件
反弹 #389

@cri-s– 惊人的!

我使用的是最新的 v1.1f (2017-08-01) 版本

我正在考虑仅在 X 和 Y 中产生反弹,并在 $ 变量中改变方向时存储步数 – 但也可以硬编码。

如果您更改了 stepper.c 或只是告诉我您做了哪些更改,那么我可以查看它们并将它们添加到我的版本中 :)

雅克

反弹 #389
危机 评论了 2017 年 12 月 7 日 通过电子邮件
反弹 #389

我也对反冲补偿感兴趣,愿意在我的 CNC 铣床上测试/调试代码,@cri-s/@jacquesbotha.

反弹 #389
危机 评论了 2017 年 12 月 16 日 通过电子邮件
反弹 #389

恕我直言,强烈反对应该 == #steps。这样我们就可以将其保存在 uController/motor 空间中,而不是在机器空间中进行校准运动。
对于探测或任何其他操作,我可以想象它仅在反转当前方向时适用,因此 if(probe >target) then reverse+include backlash, else if(probe < target) ++ step until probe == target.

反弹 #389

@austinblanco以 mm 或 um 为单位输入反冲是有意义的,但随后根据该值计算步数并在脉冲 STEP/DIR 的代码中处理它。这样我们就不会丢失任何关于位置的信息。

反弹 #389

@cri-s你能在某处上传你的反冲补偿代码吗?

反弹 #389
危机 评论了 2019 年 2 月 10 日 通过电子邮件
反弹 #389

@cri-s哦,我已经失去了希望你会回答,终于让它工作了。但无论如何还是谢谢 :) 我会研究你的实现,也许会改进我的。

反弹 #389

@cri-s @mkaluza凉爽的!你认为你可以将你的解决方案合并在一起并添加一些方法来配置它而无需重新编译。例如。:

$150=0.211 (x backlash, mm)
$151=0.052 (y backlash, mm)
$152=0.001 (z backlash, mm)

是否可以将其移植到 grbl 1.1?

反弹 #389

@Harvie实际上,我已经很高兴地在我的 RAMPS+Mega on 1.1f ( https://github.com/mkaluza/grbl-Mega/commits/edge ) 上使用它了。配置与您想象的完全一样。还有一些其他功能(扩展的 g2/3 语法、倾斜校正、相对 u、v、w 坐标),但我不确定其中有多少被推送。

移植到 Uno 正在进行中,但由于我还没有任何机器,它会有点慢。但我最终会解决的。它可能不会与上游合并,因为作者再次反对它,而 Uno 的资源非常有限,几乎已经用完了。那里的代码不是很干净(二进制文件没有更新,所以你需要编译它),因为我认为它只适合我。但如果需要,我会清理它并发布更新版本。

反弹 #389

它可能不会与上游合并,因为作者再次反对它,而 Uno 的资源非常有限,几乎已经用完了。

有一些原因让我认为这可能会合并:

1.) 很多人要求这个
2.) Arduino 内存不足,但最近人们开始使用 Optiboot 引导加载程序,它为用户程序留出更多内存,即使使用相同的旧 Atmega328p 芯片也是如此。
3.) 它可以默认禁用!我们可以使用#ifdefs 有条件地启用此功能,因此它只会为那些在 GRBL 中取消注释某些内容的人构建config.h。这与他们处理有限数量的引脚的方式相同。所以默认情况下它会被禁用,但如果你想使用它,你必须在 config.h 和 flash optiboot 中取消注释,以适应你的 arduino。

@chamnit你怎么认为?你愿意将它合并到 1.1 以防它在 中默认被禁用config.h吗?

反弹 #389
姆卡卢扎 评论了 2019 年 3 月 11 日  

有一些原因让我认为这可能会合并:

还有其他一些,这让我觉得它可能不会 :)

1.) 很多人要求这个

无关紧要 – 他原则上不同意它,并说其他软件应该处理它。虽然我不同意他的论点(因此我做了我的叉子),但这是他的项目,他可以用它做任何他想做的事。无论如何 – 如果他改变主意,我会让代码尽可能合并

2.) Arduino 内存不足,但最近人们开始使用 Optiboot 引导加载程序,它为用户程序留出更多内存,即使使用相同的旧 Atmega328p 芯片也是如此。

我不知道它是什么以及如何使用它,但可能没关系 – Uno 太小了,AVR 有点慢 – Arduino Due 是解决问题的方法所有当前的资源问题。

话虽这么说——我对原始代码进行了一些优化,以减少代码大小,因此最终带有反冲和偏移补偿的代码占用的空间比原始代码少(尽管 ram 的成本很小)

3.) 它可以默认禁用!我们可以使用#ifdefs 有条件地启用此功能,因此它只会为那些在 GRBL 中取消注释某些内容的人构建config.h。这与他们处理有限数量的引脚的方式相同。所以默认情况下它会被禁用,但如果你想使用它,你必须在 config.h 和 flash optiboot 中取消注释,以适应你的 arduino。

同意

反弹 #389

@mkaluza– 首先 – 很棒的工作!

将您的 grbl-Mega 叉装到新的 Arduino Mega 2560 Pro Mini 上。

我完全同意这是机器特定的,应该是控制机器的软件的一部分!

我的工作流程的一部分是通过我创建的 gcode 修改器运行它,唯一的问题是,我可以看到反冲随着时间的推移而增加,这意味着我必须继续修改 gcode,并保留多个版本,也意味着我的 gcode 不会不要在其他机器上运行…

到目前为止有一个奇怪的问题(我有解决办法),否则一切都很好。
我只有我的 X 有反弹,所以在归位之前,我必须设置 $141=0,否则,归位“冻结”)
[ 解决方法是,归位宏:设置 $141=0,然后设置 $141=0,然后设置 $141=0.32] – 是的, MF70 上的背隙接近 0.32mm…

感谢代码!!!

反弹 #389

@Harvie实际上,我已经很高兴地在我的 RAMPS+Mega on 1.1f ( https://github.com/mkaluza/grbl-Mega/commits/edge ) 上使用它了。配置与您想象的完全一样。还有一些其他功能(扩展的 g2/3 语法、倾斜校正、相对 u、v、w 坐标),但我不确定其中有多少被推送。

移植到 Uno 正在进行中,但由于我还没有任何机器,它会有点慢。但我最终会解决的。它可能不会与上游合并,因为作者再次反对它,而 Uno 的资源非常有限,几乎已经用完了。那里的代码不是很干净(二进制文件没有更新,所以你需要编译它),因为我认为它只适合我。但如果需要,我会清理它并发布更新版本。

有关于到乌诺港的消息吗?刚刚在周末启动并运行了我的第一个 GRBL 系统,但我的铣床有一些反冲,机器补偿需要拆除大约 200 磅的铸铁才能得到它。我很乐意帮助测试或其他什么,我只是还不够擅长这些东西的编码。另外,为什么要重新发明轮子,对吧?:) 感谢您的所有努力!

反弹 #389

@brianthornock – 你需要使用 Uno 吗?

我几乎免费得到了一个 Arduino Mega 2560 Pro Mini,而且@mkaluza的代码在这方面非常棒!

反弹 #389

@jacquesbotha , since I moved from a parallel port PC, my control box is parallel port also. I bought a DB25 to Arduino uno interposer board, but there aren’t any available for the mega or mega pro mini. I suppose I could design and fab one, I was just hoping there was code that wouldn’t require me to buy or design any additional hardware is all.

喜欢 (0)