开源改变世界

通过加速度缩放主轴 PWM(激光功率)? #15

推推 grbl 2年前 (2023-01-21) 438次浏览

关闭
jsb1 打开了这个问题 2016 年 10 月 20 日 · 20条评论
关闭

通过加速度缩放主轴 PWM(激光功率)?#15

jsb1 打开了这个问题 2016 年 10 月 20 日 · 20条评论

注释

通过加速度缩放主轴 PWM(激光功率)? #15

我想要的是在加速/减速时降低激光功率。我认为这将解决深度烧伤边缘和其他小图形的问题。
它可以在 st_prep_buffer() 中轻松完成。
公式为:新 PWM = 计算出的 PWM * [来自加速代码的 current_speed] / 参考速度。(简单版本,应该有一个可配置的最小值)
“参考速度”的最佳值是多少?
我想 plan_compute_profile_nominal_speed() 的输出是可以的,但我不确定。

通过加速度缩放主轴 PWM(激光功率)? #15

没有加速时间只用一个速度切不是更容易吗?

在 2016 年 10 月 20 日上午 10:20,“jsb1” notifications@github.com写道:

我想要的是在加速/减速时降低激光功率。
我认为这将解决深度烧伤边缘和其他小
图形的问题。
它可以在 st_prep_buffer() 中轻松完成。
公式为:新 PWM = 计算出的 PWM * [来自
加速代码的 current_speed] / 参考速度。(简单版本,应该有一个
可配置的最小值)
“参考速度”的最佳值是多少?
我想 plan_compute_profile_nominal_speed() 的输出是可以的,
但我不确定。


您收到此消息是因为您订阅了此线程。
直接回复此电子邮件,在 GitHub
#15上查看它,或将线程静音
https://github.com/notifications/unsubscribe-auth/AQlzDBUbDhHPawx_5JTjXi0cg7d0r6XMks5q12qUgaJpZM4KcHir

通过加速度缩放主轴 PWM(激光功率)? #15
贡献者
香奈儿 评论了 2016 年 10 月 20 日  

@jsb1: 这很容易添加到 Grbl。我的笔记里有,但它被埋在几十页的待办事项中。然而,我能看到的主要问题是如何将速度标量设置为功率。这可能不是线性的。

首先要尝试的是假设每行进的激光输出功率恒定。因此,主轴速度除以当前速度 (S/F) 在整个单线运动中必须相同。任何时候进给率较低,主轴速度也必须按比例下降。

编辑:参考速度将是块 ( F_0) 的标称速度,更新 PWM 的方程式将是S = S_0*F/(F_0),其中 S_0 是编程的主轴速度,F 是当前速度。如果您必须考虑主轴速度覆盖,这也会变得复杂。你增加每毫米的功率吗?或者您是否使用主轴速度倍率、进给倍率或两者来缩放它?

如果这确实效果更好,那么我们可以在这里讨论将它正式添加到主仓库中。如果不是,则需要进行更多测试以确定它的非线性程度、非线性程度以及用户需要拨入多少配置选项。这可能会变得混乱,如果是这种情况,这可能是我埋葬的原因很久以前添加的注释。

通过加速度缩放主轴 PWM(激光功率)? #15
作者
jsb1 评论了 2016 年 10 月 21 日  

@chamnit:我认为主轴和速度覆盖是全局因素,不受影响。建议的功能只是计划块内的更正。我试图在当前移动中保持每毫米的功率恒定。
已经在 v0.9 中测试过:https
://github.com/jsb1/grbl 另外我引入了一个最小值来考虑一些工具的非线性(想想拖刀)
所以我的公式是这样的:
让 0<= M < =1 为最小因数。
S = M * S0 + (1-M) * S0 * F / F_0
(我使用 M 按 1000 缩放使其成为整数)
这似乎适用于我的激光器上的 m=0.1。从本质上讲,它意味着从零速开始时至少有 10% 的功率。
刚记起:我在 Smoothieware 中读到了一些关于功率校正的内容。我会试着弄清楚他们在做什么。
PS:我建议的所有更改都已在 v1.1 中?特别是 pl_block 中的平方进给率造成了一些麻烦。

通过加速度缩放主轴 PWM(激光功率)? #15
作者

@jahnj0584: 抱歉,在某些情况下机器无法全速运行。有一些物理定律需要遵守。可以通过在切换激光之前加速来切割直线。但是小弧呢?

通过加速度缩放主轴 PWM(激光功率)? #15
作者

@jahnj0584: 考虑一下,是的,这是可能的。
假设你用圆边切割一个矩形:一些线 + 90 度弧 + 下一行
要以恒定速度切割,gcode 必须这样做

  1. 排在前面
  2. 加速到线速度
  3. 切割线
  4. 行后减速
  5. 回到弧线之前的地方
  6. 调整激光功率
  7. 加速到弧速
  8. 切弧
  9. 在下一行之前返回
  10. 调整激光功率
  11. 加速到线速度
  12. 切割线

对完整的矩形执行此操作 4 次。很多无用的时间和动作!
为了避免这种情况,grbl 中有一个前瞻性的规划器。它在切割第一条线的末端时减慢到弧速。在电弧之后,它在切割下一条线时加速到全速。

通过加速度缩放主轴 PWM(激光功率)? #15
贡献者

@jsb1:规划器中的平方速度是故意的。它们将浮点运算的数量减少了很多。您可能知道,浮点数在 8 位 AVR 上非常昂贵。在 v1.1 中,那些特定的操作不再存在,因此速度方块恢复为速度。

Grbl 中已经有一个称为 SPINDLE_PWM_MIN_VALUE 的最小因子,它与您的M变量相同。

对于超控,我的意思是进给和主轴速度超控应该如何处理功率/毫米?这意味着它们中只有一个应该能够改变功率/毫米,而另一个只能改变切割速度。您可能希望进给覆盖仅改变切削速度,保持功率/毫米相同,而主轴速度覆盖将直接缩放功率/毫米。此外,您还必须考虑如何处理运动的最大/最小值和主轴速度。如果您正在刻录光栅图像,会发生什么情况?缩放功率/mm 会截断激光功率的上限或下限,导致图像丢失暗部或亮部细节。其他类型的激光器怎么样?他们的行为方式相同吗?您如何最好地处理所有这些情况?这些是我之前研究这个问题时想到的问题。

实际上,一个好的激光切割机以非常高的加速度运行,就像 3d 打印机一样。所以你不必处理这些类型的问题。我觉得如果 Grbl 引入恒定功率/mm 选项,那么所有这些事情都需要解决。也许,他们可以,但我仍然有很多问题。

通过加速度缩放主轴 PWM(激光功率)? #15
作者

在 Smoothieware 的 Laser.cpp 中找到它:
据我所知,有一个固定的最小 PWM,它已配置但未由 gcode 缩放。其余 PWM 范围与 S0 * F / F_0 成正比。似乎没问题:https
://github.com/openhardwarecoza/LaserWeb3 我不知道哪个配方更好:冰沙还是我的?

通过加速度缩放主轴 PWM(激光功率)? #15
贡献者

@jsb1: 你之前写的公式和那个S0*F/F_0是一样的,如果你考虑最小PWM的话。这仍然没有回答处理激光覆盖的标准是什么。我刚开始接触激光切割机,我认为这仍然是未定义的。

通过加速度缩放主轴 PWM(激光功率)? #15
作者

@chamnit: 抱歉,在发送最后一条评论之前我没有看到您的回答。

关于覆盖:我认为在这里实现太多自动操作是危险的。
我只有一个2.5W的激光器。通常我以全功率运行它并调整速度以控制切割深度。但是具有 100w 管和薄材料运动速度可能是极限,必须降低功率。有不同的用例。我认为最好让事情保持简单。链接速度和功率可以是可选的 – 并在以后实施。

最大/最小限制:每毫米的能量(不是功率 – 对不起,我的错)应该从 gcode 计算(应用覆盖后)并始终在单个命令中保持不变。与 3d 打印机上每移动毫米的挤出长度相同。
应用运动限制时,应按比例缩放功率。
当无法满足计算出的最大功率要求时,真正酷的是减慢运动速度。这将自动解决覆盖率过高或过低的问题。

我对固件速度限制没有太多经验。通常我不会让我的机器碰到它们。你永远不知道当他们被击中时会发生什么……

公式:我认为它们不一样:我的最小值乘以传入的 S 值。Smoothie 的下限与 gcode 无关。也许更好 – 并节省了一次乘法。

通过加速度缩放主轴 PWM(激光功率)? #15
贡献者

@jsb1: 有了覆盖,我整天都在想这个问题。也和我们的机械师谈过了。我认为实现它的最佳方法是将主轴速度覆盖定义为激光功率/mm 调整,而进给率覆盖是仅保持激光功率/mm 的进给调整。这为您提供了两种独立的方式来改变您的激光切割方式而不会造成太多混淆。

但是,我认为看看一些专业激光切割机如何处理覆盖是个好主意。我不完全确定他们通常是否有任何覆盖。

对于最大/最小限制,我在很大程度上同意,但这可能是一个滑坡。Grbl 始终可以尝试保持编程的激光功率/mm。如果无法实现进给,Grbl 将尝试按比例降低激光功率。然而,这在某些情况下可能会导致一些奇怪的操作。

在 CNC 车床上,有一种叫做恒定表面速度的东西。根据切削半径,车床主轴将自动调整其 RPM 以保持刀具的表面速度。通常,当您在车床轴附近切削时,当 RPM 达到最大值时,您会发现车床仅保持相同的最大 RPM 和相同的进给速率来完成切削。它不会自动减慢刀具的进给速度以进行补偿。解决这个问题通常是机械师的工作。

也就是说,让 Grbl 在内部自动进行功率/毫米调整可能会降低它的用处,并且更难知道它的行为方式。我不完全确定当你达到进给或速度限制时不做任何不同的事情是否更好。周末我得再考虑一下。

至于公式,好吧。有点不同。FWIW,Grbl 还设置了独立于 g 代码的下限。我认为您要求的是某种改变线性模型或主轴输出的更多可配置性的方法。你不是第一个问这个问题的人,但它在我的待办事项清单上。我认为这是与恒定激光/毫米和覆盖不同的问题。我宁愿把它放在一边,因为它独立于其他。

通过加速度缩放主轴 PWM(激光功率)? #15
作者

@chamnit
有了覆盖,我可以问大学实验室的朋友他们的刀具在做什么。

对于公式,我同意,工具线性化应该是另一个讨论。

CNC车床则不同:切削速度对工件最终形状的影响较小。它要么有效,要么工具坏了。但是当速度下降时,激光雕刻机切割得更深。

不同的观点:安全
Grbl 对保护机械有限制:尺寸、速度、加速度。
激光切割机有什么危险?低速!工件可能着火,底板可能被烧毁。
每当 grbl 决定放慢动作时,它就超出了用户的控制范围。我认为它还应该降低激光功率。

通过加速度缩放主轴 PWM(激光功率)? #15
贡献者

@jsb1: 是的。安全是一个巨大的问题。它一直都是,但 Grbl 无法解释每台机器上的每一个场景,即使机器不适合这项任务,比如使用加速非常慢的 CNC 并使其适应激光切割。无论如何,这不是一个好主意。

就像我之前说的,提供恒定的激光功率/mm 一直在我要添加到 Grbl 的清单上。它没有进入 v1.1 beta 版本,但现在应该很清楚我们正在尝试确定所需内容的基本参数。如果有意义,那么我会安装它。当我说,如果它有意义,我的意思是有一个清晰、简单的实现来管理它的行为。我的直觉是,考虑到所有类型的罕见情况和非线性,这很容易失控。

通过加速度缩放主轴 PWM(激光功率)? #15
作者

@chamnit: 我提到安全是因为它指向同一个方向:-)。

好的,谢谢讨论!我将对我的激光器进行我想要的最小更改:按(当前速度)/(应用覆盖后的标称速度)缩放功率。完成测试后,我将提供拉取请求。好的?
该功能是否可以在以下位置配置:

  • 运行?
  • 或在 configuration.h 中进行简单切换?(将是我的选择)
  • 还是总是在激光模式下激活?

一件事让我有点不安。
你说的是恒定功率/mm。我想要的是恒定能量/mm。
能量/距离=功率/速度(以恒定速度)
或单位:
焦耳/毫米=瓦特/(毫米/秒)
准确地说。

通过加速度缩放主轴 PWM(激光功率)? #15
贡献者

@jsb1:激光功率(瓦特 = 伏特*安培)通常用于描述切割能力,并且与主轴 PWM 输出成比例。如果你真的想对这个高度有争议的问题过于技术化,那么,是的,能量/距离是正确的测量单位,但我认为更恰当的术语是瓦特/速率。无论哪种方式,我们都在努力解决同样的问题。

通过加速度缩放主轴 PWM(激光功率)? #15
作者

@chamnit: 请包涵。我知道我们在谈论同一件事。那是我在自然科学方面的训练——很久以前:单位永远要精确!

您可能会问我为什么坚持使用该功能。好吧 – 我认为没有它激光模式就不那么值得了。完成后我会发送图片。但首先我必须焊接一点。那个中国硬件上的激光并不是真正可控的。目前,我可以设置功率的 pwm 范围非常小。而且它似乎取决于温度(哪个温度?环境?激光模块?开关晶体管?))。我认为用软件来补偿几乎是不可能的……

通过加速度缩放主轴 PWM(激光功率)? #15
贡献者

@jsb1: 没必要一直提醒和坚持。就像我之前说的,我完全理解原因。但请记住,如果激光器安装在能够以高加速度移动的正确制造的机器上,这就远没有那么重要,因为大多数专业 CNC 激光器都是为此而制造的。我在这个项目上的工作不仅仅是为了帮助人们修复和调整他们设计和构建不佳的硬件。如果我有时间,我会的,但这不是我的首要任务。

也就是说,我确实有时间研究如何实施它。显然我已经准备好了一切,可以轻松做到这一点。该等式也很简单,假设存在线性关系:S_updated = (spindle_speed_ovr * programmed_spindle_speed) * (current_speed / programmed_speed)。我可能今晚就可以安装它并在不久之后进行测试。

弹出了两个问题:

  • 主轴不移动时 PWM 输出的行为是什么?有两个有效的论点。一个只是将其完全关闭。另一个是设置最小 PWM 电平,这将表明它处于活动状态。否则,直到它开始移动你才会知道。两者都可能以不同的方式造成安全风险。
  • 其次,您(或其他人)能否测试固件更改并报告其工作原理?我对激光切割机没有太多经验,我依赖与 JTech 等 OEM 直接沟通的用户反馈和建议。
通过加速度缩放主轴 PWM(激光功率)? #15
贡献者

@jsb1: 行。我推了 Grbl 的新动态激光功率功能。您需要取消注释 config.h 文件底部的 #define 以启用它。它称为 LASER_CONSTANT_POWER_PER_RATE。

它是实验性的,这意味着它的行为方式尚未完全确定或定义。因此,根据用户反馈,情况可能会发生变化。需要注意的一件事。当机器不运动时,激光将保持关闭状态,即使您使用 M3S1000 之类的东西启用了激光。它只会打开,如果它在运动中。我可能会更改此设置以在启用时打开最小 PWM 输出以帮助指示其打开。

进给速率覆盖 (FRO) 不会改变激光功率/速率。激光功率将随 FRO 缩放以保持一致。如果 Grbl 开始口吃,这很有用。你可以放慢工作速度,激光应该保持相同的燃烧速度。(由于激光输出的非线性,可能会有一些轻微的变化)。

主轴速度覆盖 (SSO) 直接改变激光功率/速率。因此,如果机器减速,它会增加或减少激光功率并考虑功率变化。

通过像这样设置 FRO 和 SSO 行为,您应该能够实时动态地调整您的工作,即使激光功率是非线性的。

通过加速度缩放主轴 PWM(激光功率)? #15
作者

@chamnit: 非常感谢你!目前很忙。我会尽快测试!

通过加速度缩放主轴 PWM(激光功率)? #15
作者

@chamnit: 真的很抱歉,我还不能给你任何反馈。但似乎其他人已经测试过 – 非常好。
我在“现实世界”里很忙,直到明年。我的激光器目前处于重建状态。炸掉二极管,加水冷,新的 PWW 驱动器,等待备件……
但我有一个有趣的项目想法,想和你讨论。将是我的下一个问题……

最诚挚的问候,

约尔格

通过加速度缩放主轴 PWM(激光功率)? #15

亲爱的朋友,我那里有完全相同的问题!

arkypita/激光GRBL#1044

grbl/grbl#1637

喜欢 (0)