注释
@alpharesearch: 有很多你必须改变的,它会涉及一些编码。一方面,Grbl 假设您使用的主轴需要在继续之前达到最高速度。因此,改变激光强度时的驻留。更改最小结速度不应该有任何影响。它会一直存在。 制作 LazerBlade 的DarklyLabs人员已经完成了您想要做的事情。他们使用的是 Grbl 的修改版本,但它是通过 MIT 许可证封闭源代码的。要执行此类操作,您基本上必须通过规划器和步进算法保留主轴速度设置。在执行规划器块时,您需要即时更新主轴 PWM。实现起来并不难,但也不是微不足道的。 |
它已经很好地与 CNC 设置配合使用。此次升级不到 100 美元,安装和调试仅需 2 小时。这是一个有趣的周末项目,它为 ShapeOko 添加了更多选项。 |
@PicEngraver感谢您的链接!这些版画非常漂亮,人们用 ShapeOko 做什么总是让我感到惊讶! |
@PicEngraver: 很狡猾!一个问题。您是否观察到 Z 轴移动与特定点的预期激光功率之间的任何滞后? @alpharesearch:我愿意为 Grbl 添加实时主轴控制,但我认为它会比看起来更复杂。至少做对了。就个人而言,我不喜欢在已发布的命令之外添加新的 g 代码命令。你最终会得到像 Marlin 这样的东西,其中有几十个很难学习的专用 g 代码,你必须为它们定制你的程序。CAM 程序也不知道这些代码是什么,因此您每次都必须手动修改它们。 一个想法是创建一个 Grbl |
@alpharesearch: 谢谢!是的,这是我几年前使用连接到 Z 轴的 MA3 磁轴编码器开发的即时可变激光强度 8 位照片雕刻工艺。使用 Z 轴可以让我根据材料高度将激光移动到正确的焦点。 我从使用 Mach3 的 CNC 路由器开始,现在在 Arduino、9g grbl 和 Shapeoko 2 上进行测试。感谢 Sonny 所做的所有开发工作! 我更喜欢使用 MA3,因为它为我提供了 10 位分辨率的变化 0-5 模拟电压到 8 位 Z 轴深度设置中的调制。我用的是Z0。将 PicLaser Lite 或 PicEngrave Pro 5 beta 图像中的 Z-.0256 设置转换为我使用的 gcode 程序。 US Digital 确实制作了这些编码器的 10 位和 12 位 PWM 版本,但我从未尝试过。我觉得模拟是调制驱动器以控制激光二极管的不同强度的最佳方式。 @chamnit:没有我可以检测或观察到的滞后。我必须小心不要过度锐化图像并保持进给率适中(大约 60IPM),这样 Z 轴步进器就不会松动任何步骤。我将所有三个轴上的加速度设置为 1000,毫米/秒,连接偏差设置为 0.010 毫米。 |
我在模拟器中有一些工作,请参阅情节屏幕截图:http ://alpharesearch.de/?p=259 |
做得很好 |
@alpharesearch: 很好!我很高兴您能够如此快速地运行它并且看起来它正在工作。 不过有几件事:
否则,看起来不错! |
我从谷歌代码中分叉了一个图像雕刻程序,并做了一些改动以将 Z 轴映射到 S 值。这是代码:https ://github.com/alpharesearch/imagetolaser ,这是模拟的屏幕截图:http ://alpharesearch.de/?p=267 @chamnit: 谢谢。是的,对于所有传递这些值的 mc 和 planner 函数,#defines 开始变得越来越大。我不是一个 AVR 人,我不知道节省内存的所有技巧,但如果你认为这会正常工作,那将使代码更具可读性。如果不使用这些值,编译器不应该不小心吗?我想这就是你在暗示的? |
@PicEngraverToo我使用 Linux……但如果你能发布一个邮票大小的雕刻 g 代码文件,我想用新固件对其进行测试。只有 XY 动作和 S0 到 S255 来设置 pwm。谢谢你的帮助。 |
@PicEngraverToo:谢谢,我确实用 grbl 模拟器对其进行了测试,我可以看到一个戴着帽子的女人。它很小,对吗? @chamnit:我将它从 ISR 的准备中移出,我可以看到很大的不同。但是我仍然认为还有改进的空间。但至少现在我用新的快速和旧的慢速方法得到了相同的结果。但仍有一个非常小的偏移量。我也需要在真正的微控制器上进行测试。 |
@alpharesearch: 你是对的。尺寸为 12.7 毫米 X 12.7 毫米,X 和 Y 步距为 0.254 毫米。我首先以 25.4mm X 25.4mm 的尺寸生成了它,但有大约 100,000 行代码,我不知道如何附加文件。新手来了 |
@alpharesearch: 惊人的。这方面进步很大!:) 至于定义,我检查了编译器是否忽略了传递给函数的未使用变量。它没有,但在这一点上,我认为保存每个字节并不重要,因为我们很快就会转向功能更强大的处理器。更重要的是代码库 IMO 的可读性。现在保持原样,但我将开始研究传递 gcode 解析器结构,这将需要对代码进行一些重构。 无论如何,让我们保持在循环中!我很喜欢你如何使用 grbl_sim 来完成这一切,并获得 Grbl 正在做的那些伟大的可视化! |
@PicEngraverToo: 现在这个文件运行很慢。是否可以选择仅具有整个 S 值,而不是仅具有 S69.56 的 S69.56。PWM 只有 8 位,我确实将 0 映射到 255,所以任何小数位都不重要。如果 S 值没有变化,则不需要处理。 @chamnit:当我将变量复制并粘贴到所有函数时,我也在考虑一个结构…… |
@alpharesearch: 我很快看了你的源代码。如何实现主轴控制并不完全正确,因为您正在调用主轴运行()。该函数执行的许多额外内容与步进 ISR 不兼容。相反,我会创建一个单独的函数,只在 ISR 中设置 PWM OCR 寄存器。执行起来非常快。如果可能的话,应该先验地计算正确的 OCR 值,但现在没有它你可能会很快让它工作。 |
@chamnit感谢您的输入!我能够将 run 函数分开并在 prep 函数中移动计算,并且只在 ISR 中设置位。 这是来自 grbl 模拟器测试的日志,其中只有 ISR 中的 OCR:
我不确定模拟器中的块编号有多精确,但我猜(或希望)这是真的。当然,我得到的错误越多,进给速度越快。但最让我感到惊讶的是,更新看起来像是落后了。我期待在新区块开始之前更喜欢更新? 这是我用来测试的g代码
|
@PicEngraverToo:感谢您的文件…如果这是相同的数据,它看起来像剃掉小数位节省了 1.9MB…如果相同的 S 值没有改变,主版本中的 g 代码解析器现在可以跳过. 这使得旧代码中的速度更快,因为 S 中的更改会触发整个缓冲区每次都被清空…… |
嗨, 我的问题与齿隙和车床夹头正时有关。 谢谢特里 从三星移动发送 – – – – 原始信息 – – – –
来自:Markus Schulz notifications@github.com
日期:22/09/2014 00:24 (GMT+00:00)
致:grbl/grbl grbl@noreply.github.com
@PicEngraverToo:感谢您的文件…如果这是相同的数据,它看起来像剃掉小数位节省了 1.9MB…如果相同的 S 值没有改变,主版本中的 g 代码解析器现在可以跳过. 这使得旧代码中的速度更快,因为 S 中的更改会触发整个缓冲区每次都被清空…… — |
@alpharesearch:(如何)根据运动速度调整激光功率?或者假设激光以恒定速度移动是否足够好?S 值不应该调整“每毫米的激光能量输出”和 grbl 管理激光输出的上升/下降与加速/减速和“地速”同步吗? @chamnit:还记得我们关于“流式 S 值”的讨论吗?我非常喜欢在更新主轴值时不必总是清空缓冲区的想法。对于正常的 cnc 操作,我们必须提供一种方法让机器等待主轴达到所需的转速…可能取决于变化率:如果变化小于 10%,则无需等待,否则每 1000rpm 等待 1 秒… @PicEngraverToo: 顺便说一句,你不能把“X …”压缩成同样的X值吗?应将数据/文件大小再减少约 40%。
|
嗨
|
@samsungite:然后停止评论每个帖子并“取消关注”这个项目。 |
嗨,我为我的无知道歉
|
@mschorer:我根本不处理它,现在我只是在新块启动时设置 PWM 寄存器,但根据速度在规划器中处理这些值可能是个好主意。 对于激光雕刻,我的解决方法是在速度加快的区域为图像添加一个白边框。从模拟器看来,之后速度非常一致。 我没有可变主轴,所以我不知道向上或向下倾斜需要多长时间,我只有一个 Dremel。现在,我只是在设置中添加一个布尔值,将其从旧的做事方式转变为新的方式。我想可以将其设为 int 并使用此数字来计算主轴加速加速所需的延迟。有算法吗?我确信我可以想出一些东西,但我不是数学天才。 我猜想使用 CNC 和主轴,最好在提高主轴速度的同时减慢运动速度。但是对于激光,它需要在机器加速时降低激光的功率。有点相同的功能,但仍然有点不同。 @PicEngraverToo:我能够运行你的大文件,并且运行良好,直到我妻子关闭我的电脑 在 imagetolaster 程序中,我确实压缩了未移动的轴,并且我还压缩了所有具有相同 S 值的线。下一步是删除所有空格字符。 |
@mschorer: 是的,我记得我们的谈话。对于工厂来说,这仍然存在。您必须在恢复之前停止,否则位会中断。对于激光切割机来说,这是一种不同的情况,需要实时更新主轴输出。但是,这必须是仅设置类型的功能,根据速率进行暂停或实时更新仍然会对工厂产生问题,因为您无法可靠地涵盖所有场景。 @alpharesearch:正如我之前所说,安装实时主轴控制并非易事。你需要做更多的事情。一方面,您仍然需要编写一个单独的函数来仅更新主轴 PWM OCR 值,并且其中没有任何计划同步调用(如果您还没有这样做的话)。您还需要更改 g 代码解析器,以防止规划器在 |
@chamnit:关于任何计划同步调用,前面有 IF 函数(但在 #ifdefs 内部,所以你想查看 2 行并注意没有分号),它们只在需要时调用同步。这是在 gcode 解析器中,并在 run 函数中使用,因此不会导致 ISR 出现问题。它是这样工作的,但为了使其更具可读性和可理解性,我开始向主轴控制添加额外的功能。 |
我不知道 0.8 PWM 功能(我只测试了 0.9),也许更有经验的人可以帮助你。但是您可以发布 GCODE 文件以丢弃文件生成问题。 |
@Dikabro: 那是什么媒介?在图片中它几乎看起来像玻璃纤维或类似的东西?可能只是图片。 一些材料具有非常好的灰度能力……其他材料非常敏感,需要快速进给速度。以杨树为例,我发现很容易获得灰度,尽管更快的进给速度扩大了范围。另一方面,我发现的一些白色木材(不确切知道它们是什么)几乎只是一种 1 位介质,很难获得任何颜色的变化。基本上,一旦它烧了它就烧了。 它可能是介质,也可能只是您需要更快地提高进给速度? |
@rusirius76 尝试测试 PEP5 和 PicSender 并将您的激光二极管视为油漆和喷雾器,然后将其降低并将其对准您的材料,而不是在空中挥舞它并抱怨它的性能不如您想要的那样。:-D 一位客户的批评不保证改变。;-) |
@rusirius76看看我的 imagetolaser 项目……也许你可以帮助一些真实世界的数据……我可以制作一个 QT GUI,我们也可以让它在 Windows 上可用,但我需要改进它,但我不确定确切的要求。我只是为了一个快速工具来测试模拟器(或者更好地分叉它),因为我不想花任何钱…… https://github.com/alpharesearch/imagetolaser |
说到前端和 QT GUI,我也在研究相关的东西——PCB CAM 和 Python GRBL 发送器/前端——https://github.com/kfoltman/wharrgrbl——发送器部分还没有功能,但非常接近. 字符计数发件人已经实现,并且似乎可以工作。 所以,很有可能,如果我们结合这些努力,我们最终可能会得到可以做 PCB、激光雕刻图片甚至激光曝光(想想 UV 阻焊膜)并让它直接驱动 GRBL 的东西。由于集成,这提供了一些额外的可能性,例如,自动 Z 探测或根据要求重做蚀刻不足的区域。 |
@rusirius76我不知道我在什么材料上雕刻,但它有点光泽,可能是烤漆的。我会尝试在不同的材料上雕刻,并将结果发布在这里。:) 您是否在较旧的 0,8c 激光模式版本上使用 0,9 grbl 版本? 上次当我在我的 NANO 上刷入 0.9g 主版本时 – 我的归位功能不像 0.8c 那样正常工作…… |
@alpharesearch: 非常酷… 很有趣,实际上我这个周末才开始编写一些代码,这将是 FOSS。我正在为 Windows 平台工作,但我正在 Visual Studio 中工作。.NET 已经包含许多用于图像处理的强大功能。从字面上看,我花了大约 10 分钟的时间来获得一些功能正常的“胆量”,这些“胆量”可以让你打开任何图像(.gif、.jpg、.bmp、.wmf、.png 等),将其转换为灰度(平均红色,每个像素的绿色、蓝色分量),然后将这些值重写为该平均值。然后可以根据这些像素的值和位置执行相同的操作来生成 gcode。 在改进它、使其流畅和直观以及添加许多功能方面有很多工作要做,但它确实不应该花费太多的开发时间。 我喜欢我在这里看到的……这正是这个社区所需要的。有很多选项和工具可以使这些项目尽可能容易访问。 我很乐意测试 imagetolaser 并抛出任何出现的想法! @kfoltman: 这很棒!实际上,我自己有点像电子迷,正在等待一些干燥的紫外线胶片的到来。我想做到这一点,探索PCB制造能力。 @Dikabro: 是的,肯定会改变材料。杨树和桦树对我来说效果很好。我还确保在蚀刻之前打磨表面。通常至少 320 砂砾……通常用大约 600 砂砾打磨。 我使用 0.9 小时。两个都@alpharesearch而且我的版本已经为“实时”主轴控制进行了修改(即通过 S 命令调整激光功率不会减慢速度。)我建议使用他的,因为老实说我不记得了上次我推我的,我一直在努力清理它。 |
@rusirius76. 昨天我开始了一个类似的项目!目前我已经完成了 GUI(非常简单)。我可以将任何图像转换为灰度,通过友好的滑块调整亮度、对比度和伽玛,然后根据所需的分辨率和所需的输出图像尺寸(以毫米为单位)生成正确尺寸的位图我只需要获取每个像素并转换为gcode..也许明天我可以开始生成第一个 gcode。我还计划添加某种类型的配置文件以最小化非线性输出功率。 |
@villamany: 惊人的!我期待着它被冲走时看到它! |
好的,我在空闲时间做了一些工作来添加一些图像处理。目前它会翻转、旋转、反转(为镜面蚀刻制作负片等)等等……我刚刚完成了抖动程序……我设置它以便可以使用其他方法(它使用一个抖动矩阵,可以根据您希望如何应用错误分布来定义),但老实说,我认为使用 Floyd-Steinberg 可能是最好的(从最终用户的角度来看当然更简单)。以我的经验,它通常会产生最好的结果。 整个概念是让最终用户尽可能简单。他们不必担心图像大小等。只需告诉它您想要的像素大小、您希望完成的 gcode 刻录的高度和宽度等… |
我正在开始一些图像到 gcode 转换的测试,如果我使用正确的逻辑来最小化 PC-GRBL 之间的数据流,有人可以确认我吗? – 删除行中的所有空格 – |
@villamany: 对我来说听起来不错! |
@villamany:另外,您必须小心,以免超出任何限制..但我计划为图像周围的“缓冲区”区域合并一个用户可选择的选项。因此,例如,运动两侧周围有 5 毫米的“空白空间”……这样机器在实际开始燃烧像素时就“加速”了……在燃烧过程中没有加速…… |
@kfoltman听起来是一个非常有趣的项目,我想我需要重新开始学习 KiCad ……我曾经用它制作了我的小 PC 键盘:http : //alpharesearch.de/?page_id=53 但当时我使用的是 batchPCB。 @rusirius76我喜欢 .net 和 C#,但如果您想支持的不仅仅是 Windows,请确保使其与单声道兼容。 关于 Raspberry Pi 2,它现在快了很多,我确实通过 VNC 使用了最新版本的 UGS,它启动良好,并且可以从我的另一台 PC 访问网页挂件功能。要复制文件,我使用 scp(linux 下的 mc 或 windows 下的 winscp)我认为它现在更有用,我很满意。 如果您从 raspberry pi 网页获取最新的 raspbian 映像,则您已安装 Oracle Java,但您需要获取 rxtx 库以进行串行通信。
现在您可以像这样启动 UGC(将 start.sh 中的 linux 起始行更改为如下所示):
PS:下一个测试是看看http://octoprint.org/如何与 grbl 一起工作,或者让它与 grbl 一起工作。 |
很不错的作品!!!简单又好。;) |
@villamany: 看起来不错!我实际上是在 VB.Net 中编写我的代码。对于我在工作中所做的事情,我最终不得不更多地使用它,所以对我来说,使用它的开发速度要快得多。无论如何,使用 .NET 并没有太大区别!抖动是一个重要方面,但有时图像会通过我发现的抖动“更好”出来,而对于镜子或其他本质上是 1 位的介质,这只是必须的。这是我使用的代码……应该让你的生活更轻松……
|
好的!我将尝试实施它。 |
好的伙计们。这个话题已经偏离了方向,已经失控了。我正在关闭这个问题。如果您想打开另一个关于 Grbl 激光 GUI 特定主题的文章,请继续。 |
我实际上也在想同样的事情……我继续为这里的每个人创建了一个论坛,讨论几乎与激光雕刻有关的任何事情。它位于http://www.engraving-lasers.com。设置它还有很多工作要做,但至少它在那里,它会让我们在更合适的地方讨论这些东西。抱歉跑过了你的问题线程@chamnit. |
大家好。我会把我的五枚硬币留在这里 使用它您可以在雕刻过程中调整参数。应用程序在 2015 年 2 月 4 日使用 AlphaResearch 版本和常规 grbl v0.9i 进行了测试,用于 Z 头模式。希望有人发现这很有用。 |
无法导入8bit图片… |
应用程序仅接受 8 位 *.BMP。 |
你能做16位修改吗? |
如果你查看 grbl 源代码(config.h),你会发现下一行 仅由可变主轴输出使用。这些参数设置 所以制作 16 位图像分辨率是没有意义的,因为 16 位意味着 |
我明白那个。但问题是我无法在您的软件上打开任何图像。由于某种原因,它不允许。 |
http://lmgtfy.com/?q=8+bit+grayscale+bmp 2015-10-22 20:56 GMT+03:00 Dikabro通知@github.com :
自由地生活或努力死去 |
您必须先单击 GRBL 按钮并连接到 COM 端口。然后单击 GCODE 按钮,打开图像按钮可用。 |
阿尔法研究 评论 on 16 Sep 2014
就像这里的大多数评论一样,这不是问题,但我想获得一些意见并提供一些反馈。
为了玩一点,我确实在我的 ShapeOko+grbl 上安装了一个 2W 蓝色激光+MOSFET,它正在工作。
我确实为可变主轴销设置了它,但一开始并没有注意到最小/最大 RPM 设置(我想我应该阅读所有评论)。这会引起一些混乱,因为我期望 8 位作为默认值,而不是 0-1000。
在改变激光强度时我确实注意到了一些停顿,但我想 MINIMUM_JUNCTION_SPEED 应该对此有所帮助(什么值对激光来说是一个好的开始?)。
现在我的主要问题是激光设置还有其他重要的设置吗?