开源改变世界!!

反弹 #389

推推 grbl 2年前 (2022-10-27) 416次浏览 0个评论
打开
奥斯汀布兰科 打开了这个问题 on 9 Apr 2014 · 35 条评论
打开

反弹第389章

奥斯汀布兰科 打开了这个问题 on 9 Apr 2014 · 35 条评论

注释

反弹 #389

我很好奇是否有人可以指出如何在主构建或 /edge 分支中引入反向间隙补偿。我已经使用一些 3D 打印齿轮和 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
成员

尚尼特 评论 on 10 Apr 2014

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

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

反弹 #389

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

反弹 #389
成员

尚尼特 评论 on 10 Apr 2014

@austinblanco:我会说大多数 CNC 切割系统都有齿隙,但不是全部。Grbl 及其衍生产品的大多数用户都使用皮带驱动系统。这实际上没有反冲,但以轴刚度为代价。您不能对这些进行太多的侧面加载,但它们非常适合 ShapeOko、3d 打印机和激光/等离子切割机等业余爱好者工厂。我确实有一个 Sherline 磨机,并且必须将消隙螺母保持得很紧。但是,我的轴上的齿隙小于 0.001″,但我的扭矩裕度略有牺牲。

反弹 #389

感谢您的快速回复!是的,我机器上的 acme 螺纹杆有很多作用,我的目的是将其垫片调整到一个可容忍的水平 – 我知道我可以选择典型的选项并将运动控制转换为滚珠丝杠设置,但我试图让我的蛋糕也吃 – 手动机器,顶部有 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 工作,希望能取代旧的电脑设置。我的工厂在 X 轴上有 1900 万的间隙,在 Y 轴的间隙有 1500 万。没有补偿,圈子是不对的。
请帮忙!
谢谢

反弹 #389

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

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

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

反弹 #389
反弹 #389

@cri-s– 惊人的!

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

我正在考虑仅在 X 和 Y 中进行反冲,并将其改变方向时的步数存储在 $ 变量中 – 但也可以硬编码。

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

雅克

反弹 #389
反弹 #389

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

反弹 #389
反弹 #389

恕我直言,强烈反对应该== #steps。这样,我们将其保留在 uController/电机空间中,而不是在机器空间上校准运动。
对于探测或任何其他操作,我可以想象它仅在反转当前方向时适用,因此 if(probe >target) 然后 reverse+include 反冲,否则 if(probe < target) ++ 步骤直到probe == target。

反弹 #389

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

反弹 #389

@cri-s您可以在某处上传您的反向间隙补偿代码吗?

反弹 #389
反弹 #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实际上,我很高兴已经在 1.1f ( https://github.com/mkaluza/grbl-Mega/commits/edge ) 上的 RAMPS+Mega 上使用它。配置和你想象的完全一样。还有一些其他功能(扩展的 g2/3 语法、倾斜校正、相对 u、v、w 坐标),但我不确定其中有多少被推送。

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

反弹 #389

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

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

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

@chamnit你怎么看?您是否愿意将其合并到 1.1,以防它在默认情况下被禁用config.h

反弹 #389

姆卡卢萨 评论 2019 年 3 月 11 日  

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

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

1.) 很多人都要求这个

不相关 – 他原则上不同意它,并说其他软件应该照顾它。虽然我不同意他的论点(因此我提出了我的分叉),但这是他的项目,他可以随心所欲。无论如何 – 如果他改变主意,我会让代码尽可能地合并

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

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

话虽如此 – 我对原始代码进行了一些优化,以减少代码大小,因此最终带有反冲和偏斜补偿的代码比原始代码占用更少的空间(尽管内存成本很小)

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

同意

反弹 #389

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

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

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

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

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

感谢代码!!!

反弹 #389

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

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

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

反弹 #389

@brianthornock – 你需要使用Uno吗?

我几乎一无所有地得到了一个 Arduino Mega 2560 Pro Mini,而且@mkaluza的代码在这方面效果很好!

反弹 #389

@jacquesbotha, 因为我是从一台并口 PC 搬来的,所以我的控制箱也是并口的。我买了一块 DB25 转 Arduino uno 转接板,但没有适用于 mega 或 mega pro mini 的。我想我可以设计和制造一个,我只是希望有不需要我购买或设计任何额外硬件的代码。

反弹 #389

@brianthornock– 您可以在 Arduino Mega 2560 Pro Mini 上 使用 DB25 到 Arduino 转换器(类似于:https ://www.cnc4pc.com/db25-motion-controller-arduino-shield.html)。它不适合它,但您可以使用跳线(https://www.amazon.co.uk/Droking-Dupont-Multicolored-Breadboard-Connector/dp/B07F8PZFWK)将 Arduino Mega 连接到 DB25转换器。
如果您需要我提供从 Mega 到 DB25 板的引脚映射,请告诉我。

反弹 #389

@jacquesbotha– 如果您能指出我的引脚映射,那就太好了!我最终可能会布置一个简单的电路板,只是因为我喜欢一切都干净整洁!

反弹 #389

@jacquesbotha– 如果您能指出我的引脚映射,那就太好了!我最终可能会布置一个简单的电路板,只是因为我喜欢一切都干净整洁!

肯定瘦@brianthornock – 我会在周末抽出一些时间为你拍些照片和做一些别针布局。

反弹 #389

@jacquesbotha– 如果您能指出我的引脚映射,那就太好了!我最终可能会布置一个简单的电路板,只是因为我喜欢一切都干净整洁!

肯定瘦@brianthornock– 我会在周末抽出一些时间为你拍些照片和做一些别针布局。

好的,引脚布局按照 Wiki 遵循 Arduino Mega:https ://github.com/gnea/grbl-Mega/wiki/Connecting-Grbl-Mega

所以一切都正确,应该是:

DB25
ARDUINO, FUNCTION, DB25
24, STEP _X_AXIS, 2
25, STEP_Y_AXIS, 4
26 STEP_Z_AXIS, 6
30, DIRECTION_X_AXIS, 3
31, DIRECTION_Y_AXIS, 5
32, DIRECTION_Z_AXIS, 7
10, LIMIT_X_AXIS, 11
11, 12, MIT_YLI_AXIS,_1ISAXIS,
12, MIT_YLIAXIS,_1ISAXIS 13
6, 主轴启用, 14
5, 主轴方向, 16
8/9, 冷却液启用, 1
GND, GND, 18-25

喜欢 (0)

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