注释
如果你把 grbl 放在一块巨型 2560 板上,你将有多个可用的序列号。我使用这种方法将 Gcode 发送到运动控制器,并将一些 Mcode 和主轴数据发送到我的主轴控制器。协调的 MCU 通过 USB 连接到 PC。在此协调器上处理 gcode 行,然后将运动代码数据发送到运动控制器,将主轴数据发送到主轴控制器。我在主轴控制上使用编码器来确定真正的主轴速度,并且 PID 回路试图保持在主轴编程行中指定的 S 值速度。 您可以通过抓取主轴数据并将其从 grbl 发送到您的主轴控制器来执行类似的操作,例如 serial1、2 或 3。请注意不要让处理器过于频繁地发送数据。 这可能比尝试让 2 个 USB 设备通过主机 PC 上的应用程序通话更干净。 |
您可能对此感兴趣 |
谢谢,在我看来,两者都是有效的想法。如果没有其他方法,我倾向于倾向于嗅探方法。然而,有一个更简单的解决方案会很棒。我在想,通过配置选项和一些额外的 GRBL 代码,是否可以将引脚 11(PWM 主轴引脚)和 A4(未使用/保留)的功能更改为基本的 RX/TX?通信速度不必很高。哈克,我认为理论上它甚至可以只使用一根线(主轴 PWM)。它可能是单向的,而 GRBL 可以定期发送(比如每秒)。脉冲串需要一个长脉冲或类似的东西作为数据位的分隔符。每秒发送 16 位 + 分隔符信号应该不难。接收器可以小心过滤掉错误的位,如果一个包裹丢失没问题,等待下一个,我认为不需要确认。唯一的问题可能是 GRBL 板上的可用 MCU 资源(程序存储器、可用处理能力等)。 |
为什么不只是嗅探状态报告响应。当前主轴速度在报告中是正确的: <空闲|MPos:0.000,0.000,0.000|FS:0, 3500 > |
使用 A4 和针脚 11 可以发送 0 到 511 之间的值,其中 pwm = 0 到 255 https://www.youtube.com/watch?v=yjgZ3dQ-PFw 使用 arduino 16 位定时器来 bitbang pwm 可能是可能的,但我认为 sonny 已经将其充分利用了。 109JB 是 grbl 的权威,与 Sonny 密切合作(他还写了一个很棒的 GUI),真的值得采纳他的建议。 |
试试这个 – 你会看到它是多么容易 在 Arduino IDE 中打开串行监视器并将波特率设置为 115200,您将看到 109JB 的消息中显示的数据流 – <Idle|MPos:0.000,0.000,0.000|FS:0,3500> 我的第一篇文章中已经为您提供了第二个 arduino 的代码。 模拟输出的想法可以在使用电路时得到改进,以至于可能不需要第二个 arduino。 先进的 16 位 pwm 输出 https://hackaday.com/2013/01/17/making-better-noises-with-dual-pwm/ 您还可以查看仅需要 1 个传输引脚的 1-wire 设备解决方案 |
感谢您的所有反馈,这可能对将来研究此问题的其他人有用。 我想我喜欢@MeJasonT. 我会更进一步说我们可以使用 pwm 引脚和额外的 A4 发送 16 位,但我认为你描述的非常相似。 据我了解,我们可以这样做:如果 A4 为低电平,PWM 信号是一个 8 位值,可以在控制器 MCU 上解释为两个字节最终值的第一个字节 (MSB)。当 A4 为高电平时,PWM 信号也被 GRBL 改变以指示 16 位速度值 (LSB) 的第二个字节。这将导致 16 位输出而不是 512 个可能的值,从而导致最大主轴速度输出为 65536 rpm。我认为这不会在 GRBL 上消耗太多资源,改变 PWM 占空比和一个额外的引脚加上一些位移逻辑应该不会太慢。你怎么看,这有意义吗? 问题是我已经有了第二个 MCU,因为它控制无刷电机驱动器,并且还将接收来自光学传感器的反馈。电机已经为其控制器配备了霍尔传感器的速度和反馈回路,但我计划直接在主轴轴上添加一个额外的光学传感器以考虑传动比。MCU 还将负责在 LCD 上显示当前速度和其他一些逻辑内容,如手动速度或方向覆盖、警报触发等。 我看到的任何中间 MCU(嗅探器、中间人等)的问题是您不知道 GRBL 何时到达变速命令。它有一个用于平滑运动和规划的内部命令缓冲区。它可能很小,但从概念的角度来看,它仍然存在一些问题。从朝着这个方向发展的解决方案来看,我认为听取主机速度反馈的解决方案是最有意义的。但即使这样也有局限性,因为您不知道在 GRBL MCU 上实际执行启用和加速主轴的命令之后发送反馈之前经过了多少时间。 好主意,谢谢大家。 |
mmcristi1981 感谢您的反馈。 嗅探方法实际上在 200 毫秒内几乎是实时的非常快(比人类轻弹开关快)或您将回复消息设置为任何刷新率,也许您在结束时过于担心闭环系统有一天,您的第二个 MCU 可能会在电机甚至不旋转时撒谎 – 霍尔效应传感器不太可能,但如果您认为绝大多数用户正在使用 Dremmel 并发送 PWM 信号来驱动它而没有反馈给 GRBL那么你必须考虑你的腰带和牙套方法的成本。 主轴速度的变化往往在代码块之间,因此 rpm 的上升/下降并不是什么大问题 – 如果您以高速运行,则在您更改主轴速度时在后处理中添加延迟/等待。主轴转速将在整个操作过程中保持恒定,仅在转弯和摆线铣削等时降低进给率 开始制作筹码会更有趣。我慢慢开始释放野兽,我被推荐用于铣削铝等的速度吓到了,但最终长出了一对。还没有稳定的切屑流从工具中飞出,但几乎不幸的是,在我转换为 CNC 的旧 Elliot 铣床上,我只有 7500 RPM 可以玩。 |
不,大声笑,我不打算走那么高。我只是想说 16 位几乎涵盖了你能想到的所有场景,除了用 grbl 控制一个小型燃气涡轮发动机。有没有人考虑将其用作高速主轴;) |
如果您嗅探状态报告,您会在命令速度方面滞后的最长时间是状态报告之间的时间。我通常将状态请求之间的时间设置为 0.1 秒(?)。在我看来,这比主轴实际上可以改变速度要快。如果您在继续执行下一个命令之前需要更多保证主轴处于速度状态,您可以在 grbl 正在接收的 g 代码中编写一个小暂停。就像是: (主轴已经在 3000 rpm) 或者不是为此修改您的 g 代码,您可以修改或编写一个 GUI 以在每个 M3 或 M4 之后自动发送 G4 Px 命令。 或者,如果您想要更好,您可以编写或修改 GUI 以拦截任何 M3 或 M4 命令,并在发送更多命令之前等待主轴控制器的反馈。 |
@MeJasonT– 感谢您的插件。我实际上并没有在 Grbl 代码本身上工作太多。我只能提出改进建议和错误报告,因为我只是一个使用 Visual Studio 的业余程序员,并且没有实际使用 Grbl 固件的编码技能。我是一名前机械师,当时经营一些最先进的加工中心,所以我知道工业机器应该如何工作。至少我们是如何运行它们的。 我很高兴有人能够使用我的 GUI。我最初的 GUI 是为 V0.9 编写的,我一直在为 V1.1 进行重新设计,增加了许多探测功能,但仍然具有工具更换、工具表和其他我喜欢的功能。我正在简化代码,以便现在进行几件事并进行测试。它越来越接近了,一旦我完成并进行更多测试,我就会把它拿出来供所有人查看/尝试/使用。只需要在其他事情之间找时间专注于它。 |
@mmcristi1981仅供参考,如果您将主轴控制 RX 线连接到运动控制 TX 线以便前夕掉线,您可能无法尝试将固件更改上传到任一板上。当您需要更新时,只需解开主轴控制板的 RX 线即可。如果您打算使用 bit banging 或其他方法,请忽略它。 |
shooter64738 感谢您介绍我忘记提及的有关固件上传的内容。 |
我刚刚意识到,我们可能正在使用旧的 grbl 问题跟踪器。注意到还有另一个:https |
你是对的,修改 GRBL 固件是在 Arduino IDE 上完成的, 虽然我们引起了 109JB 的注意,但我想我会问一下 GUI(前端软件) 无论如何都不是一个完整的列表,而是一个合理的选择 由于 GRBL 对其可以处理的命令数量有限制,因此很高兴看到其中一个控制应用程序使用对话程序代码编写以涵盖钻孔和孔矩阵等操作,它的 GUI 无论如何都应该处理这些功能。 昨晚我正在测试我的可变驱动接口电路,因为它停止工作了。如果使用 VFD,您可能会发现的问题是高频噪声。Atmega328 IC (Arduino) 似乎很容易受到噪声的影响,以至于 IC 上的内存最终被擦除。我创建了一个 RS485 链接并使用一个 arduino 读取 grbl 消息并将它们在 rs485 链接上输出到另一个正在运行 VFD 远程功能的 arduino。(驱动器上没有 rs4485 端口)。 |
所以我看了一下代码。看起来它可以使用 A4 和 11。我看到的逻辑问题是如何定期发送这两个字节。当 GRBL 当前设置 PWM 时,很容易发送一次。我不是在函数中设置一个 PWM,而是首先将 A4 设置为 0,设置第一个字节 PWM,等待几毫秒让客户端 MCU 有机会选择 pwm 序列并将其转换回一个字节,将 A4 设置为 1 ,设置第二个字节PWM并完成。不幸的是,我们不会收到客户端正确接收字节的反馈。所以最好是在一个循环中重复这个,即使速度没有改变。我可以在报告电话中这样做,但作为一个概念,我认为这是 hacky。如果主轴速度在此特殊配置选项中,即使 GUI 不要求位置报告,我也希望定期执行此操作。 |
@mmcristi1981我对“较新”的 grbl 集线器提出了问题,但得到的答复很少或没有。我认为即使这是“较旧”的,它也获得了最多的流量。 @MeJasonT您可以从 MicroChip 获取 Atmel Studio 7.0 版。它是 Visual Studio,但包含了自己的关键字,专门用于为 atmel 芯片编写 asm/c/c++。当您开始一个项目时,配备一个方便的芯片选择器。从外观上看,我会说它基于 Visual Studio 2010 或 2013,但它很适合用于 atmel 芯片,最重要的是它完全免费。在visual studio中编写代码也很不错,编译它并使用调试器在windows上运行代码,一旦代码的核心工作,您可以使用硬件抽象在atmel中实现它。您甚至可以拥有一个包含多个项目的解决方案,并像 Visual Studio 那样引用它们。 我相信 109JB 的 gui 确实已经进行了固定循环转换。我认为还有另一个 UI 可以做到这一点。我已经在硬件上实现了这种类型的工作,所以看起来你发送了一个固定循环,但在幕后它只是将它分成多个动作,并且一次发送一个。我的“GUI”是一块带有按钮和开关的铝片。我似乎正在旋转我的轮子来完成。 |
您好 shooter64738 感谢您的回复。 不幸的是,cambam 没有飞机操作,我不知道是什么原因。有一种解决方法并不太麻烦,但是只需单击一个操作,然后单击一个面部就可以了。 |
@MeJasonT我不介意分享它。我打算让它是开源的。我在 GitHub 上有它,但我的 repo 发生了一些事情,它不再上传,所以我删除了它,并将再次上传它。 |
这是回购的链接:Talos-CNC。 固定循环和刀具半径补偿大部分都可以工作,但我的机器正在进行重建,我已经有一段时间无法在实际机器上运行固件了。我已经减少到在 Windows 中模拟运行固件并查看输出运动命令。如果您感兴趣,有关于如何编译固件以在 Windows 中运行的说明。 |
嗨,大家好。我只能偶尔进入这里,但我看到了有关 GUI 的最新帖子。我不想说太多,因为我们有点像线程劫持,但确实想回答关于我的 GUI 的两件事。
G81 X1 Y2 Z-1 R0.1 F3 在 (1, 2) (4, 5) 和 (7, 8) 处产生 3 个 1 英寸深的钻孔。您可以使用 G80 或任何其他运动模式(g1、g2、g3、g38.x)来取消固定循环,就像在工业机器上一样。
|
遗憾的是,Git 没有在页面顶部放置论坛选项卡,因此我们可以将对话从问题帖子中移开。我发现使用 Git 作为文件存储库从第一天起就很痛苦,你需要一定程度的编程来设置该死的东西,当你更改文件时,它有自动保存当前文档状态的习惯,即使你不想这样做. 即只是在您的程序中试验一些您无意保留的代码。好的,您可以退出它,但为什么要首先保存它。 mmcristi1981 为劫持您的帖子而辩护,事情只是有了自己的生命,并且在一定程度上似乎相关。如果我们都满意,也许我们应该考虑转移到一个新的分支。 |
@MeJasonT通常,您会打开一个与您的主题相关的新问题。您可以在您的 github 存储库或我的存储库中打开一个问题。 @109JB我在刀具补偿上花了很长时间。弧确实使事情复杂化。这是我写的,如果你从中找到一些用处。CRC @mmcristi1981我确实在 328P 上寻找了一个额外的计时器。我没有看到一个可用的。我认为您可以使用的那个已经被用于主轴 PWM。我能想到的唯一另一件事是从数字引脚上敲下来,而且时间安排可能很困难。祝你好运,我为线程千斤顶道歉。 |
不用担心劫持。我也对 GUI 感兴趣。你见过https://github.com/cncgoko/Goko吗?它对我来说看起来很有希望,特别是因为我非常熟悉它所构建的平台,因此更改/修复对我来说是可行的。这不是广告,我与它没有任何关系,也不受我所见。 所以我一直在思考如何解决我的主轴问题,因为我没有时间做任何其他事情,只能考虑它。 我错过了一些关于 MCU 如何处理中断的小而重要的细节,因为我对它们的经验并不多。我将不胜感激得到一些关于这方面的意见。我不知道的是:
|
听起来不错, 1 线选项看起来不可行吗,我想它的草图本身就是一个程序,并且可能也会阻塞。我知道温度传感器能够进行 2 路通信。即,您向地址处的设备询问其温度,您可以告诉它以 F 的 C 响应并读取它的内存 – 它显然会响应所要求的值。有延迟,因为它一次只能做一个方向。它会受到来自主轴的高频噪声的影响,因此需要使用 cat5/双绞线进行接线。 |
我不记得只使用一个信号的想法。不确定我理解正确。 无论如何,最初使用 A4 和 11 使用 A4 低/高来指示字节的问题存在重复发送的根本问题。我不知道如何轻松解决它。将 pwm 用作载波时钟信号并同时用作中断来实现 GRBL 板上的周期性发送似乎是一个明智的选择。当我意识到使用第二种方法我可以发送比我最初需要的更多的字节时,我只是想到了 CRC。 我已经有第二个 arduino 作为主轴箱的控制器。这将有很多事情需要处理,但它也可以监听来自 GRBL 板的信号。 这种交流的东西是在概念atm的水平上。我没有在身体上尝试过任何东西,只是在想它。 |
哦,想想,这很危险。哈哈。 据我所知,您要克服的问题是从 grbl 中获得更好的主轴速度分辨率。在 0-10,000 的 rpm 范围内,255 步真的很漂亮。 方向销仍然没有受到干扰,因此我们仍然可以使用它来提供方向信息。所以需要一种方法来使用已经编码和工作的引脚 11 传输 2 个字节(原则上 – 实际上你没有得到真正的 0 到 255 pwm,我经常发现它有点不准确)所以让我们保留引脚 11低字节。现在来了个大问题,如何让 A4 上传输的高输出表示 8 位值。如果任何代码位爆炸引脚 11 使用拆分值(现在为 16 位)在引脚 4 上发送 Hi 并在引脚 11 上发送低电平,使用类似音调库的东西,您可以接收 2 个脉冲输入并将它们合并为您提供 16位代表值。或者使用我之前描述的硬件选项将两个 pwm 值相加,得到一个 5v 模拟值,该值来自 16 位。有点痛苦,但是 Arduinos 模拟 i/p 只有 10 位分辨率,因此在设备/arduino 2 上需要具有 16 位分辨率的外部 ADC。他们调用引脚 11 pwm 的输出,但实际上它不是真正的 pwm它的频率输出有点猛烈(几乎相同,但不完全一样)。对我们来说,好消息是它已经有点崩溃了,没有绑定在默认的和规范的处理器命令中。 不要太在意时间和同步 2 个字节,它会发生的。您的另一个问题是您如何知道它何时传输速度,Grbl 在其激活时输出引脚 11 上的值,并在收到指令时使用 S****** G 代码命令更改速度,全部关闭它就死了,这行为不会改变,因此生成两个字节并在某种求和之后输出它们将产生一个我们可以使用的值。就我个人而言,我喜欢模拟电压或字符串命令、频率。如果您使用求和的硬件选项并将其馈入放大器(10v 电源),那么您将拥有工业公认的 0-10v 标准,用于直接馈入 VFD。 顺便说一句,什么信号驱动你的主轴,如果你说 RS422 或其他奇怪的东西,这一切都无关紧要。一切都取决于第二个 arduino 为您做什么。 我的想法可能是一堆裤子,我很想知道你是如何解决这个问题的。 |
@mmcristi1981回答您关于中断的一些问题。 在中断执行期间,其他中断被“禁用”。换句话说,在另一个中断中不能触发一个中断,但是如果您通过调用“sei()”启用它们,仍然可以设置全局中断标志。因此,当您在一个中断内时,可能会发生另一个中断,但它不会停止您当前的中断并跳转到下一个中断。它将完成当前的一个,然后移动到下一个。如果您在第一个中断中花费了太多时间,并且已经为另一个中断设置了标志,那么在您进入下一个中断之前它不会被清除。如果需要发生第三次中断,它将丢失。如果在当前 isr 中没有使用 ‘sei()’ 打开中断,中断可能会丢失。当 isr 完成时,会自动重新启用中断。 它不会比这更深地堆叠中断。如果设置了全局中断标志,则必须在需要下一个中断之前对其进行服务。如果标志已经设置并且您处于一个需要很长时间的中断中,那么任何进一步的中断都将消失。 因此,假设您正在查看 grbl,并且在 stepper.c isr ‘TIMER1_COMPA_vect’ 中,您会看到一些驱动步进器的代码。在该代码的顶部,中断被禁用,并且全局中断标志被清除,如果在此期间发生另一个中断,则全局标志将再次设置。(该中断将在我们完成此中断后触发)如果您进一步查看该代码,您会看到“sei()”正在重新启用中断。这通常会在中断完成时自行发生,但它会手动重新打开,以便步进重置计时器可以更快地触发。如果你看一下’sei()’下面的代码;它做一些缓冲和步进步进。现在你认为我可以在这里添加轴步骤。你可以,我有。但是让我们假设你增加了 15 个轴’ s 步进(疯狂数量的轴),现在这个 isr 需要比预期更长的时间。步进器重置将按预期触发,但由于使用 sei() 重新打开了中断,并且步进器重置触发全局中断标志的时间已经设置。我们在驱动程序 isr 中花费了很长时间,以至于也是时候移动另一步了,但现在我们将失去那一步,因为标志已经设置,并且它只能触发重置计时器。所以现在我们的步进时间变慢了,如果我们继续在那里堆积东西,它最终会停止,甚至回到他第一次启动这个东西时的主程序。但是由于使用 sei() 重新打开了中断,并且步进重置触发全局中断标志的时间已经设置。我们在驱动程序 isr 中花费了很长时间,以至于也是时候移动另一步了,但现在我们将失去那一步,因为标志已经设置,并且它只能触发重置计时器。所以现在我们的步进时间变慢了,如果我们继续在那里堆积东西,它最终会停止,甚至回到他第一次启动这个东西时的主程序。但是由于使用 sei() 重新打开了中断,并且步进重置触发全局中断标志的时间已经设置。我们在驱动程序 isr 中花费了很长时间,以至于也是时候移动另一步了,但现在我们将失去那一步,因为标志已经设置,并且它只能触发重置计时器。所以现在我们的步进时间变慢了,如果我们继续在那里堆积东西,它最终会停止,甚至回到他第一次启动这个东西时的主程序。 我已经阅读并编辑了几次,但可能仍然不清楚。但如果你不清楚,我会再试一次。:) |
哦,谢谢,我会尽力理解它。我也一直在对中断进行更多研究,然后我删除了认为那些尚未相关的问题,不应该担心它。但是您必须在编辑之前选择了该帖子。所以我把问题放回去以避免混淆。 |
嘿射手,这是两个桶。我认为这里的摩托车是龙要小心。 |
您只会丢失来自同一源的中断,完成后会运行其他中断 |
是的,你有它! Atmel 在他们的数据表中有一些非常好的文章。只需谷歌“atmel 328 数据表”、“atmel 2650 数据表”、“SAM3X8E 数据表”。关于它如何做某件事或另一件事的描述中的某些内容可能会在您的脑海中激发一个想法,以使您到达您需要的地方。它还将有助于解开一些 grbl 代码的奥秘。像定时器操作和步进脉冲。 是的,在再次阅读我的帖子之后..我确实有点糊涂了@langwadt. |
因此,我使用两个 arduino 对时钟和数据线的想法进行了初步测试。一种是发送 16 位数字的服务器,其中 15 个有用 + 16 个 1,表示位序列开始。客户端使用中断来获取位。经过测试,效果很好。没有注意到丢失的数字,但我还没有尝试过更长的电线和更高的速度。如果您有兴趣,可以查看当前的工作原型:https
在我看来,选项 1 更好,因为它不会添加在执行步进 ISR 时可能发生的另一个中断。我认为这更清洁。这也敲响了警钟,也许这个想法可以用来精确地同步步进运动和主轴旋转。只是一个想法,可能很愚蠢。我认为 GRBL 已经为激光做了类似的事情,但我对 GRBL 太菜鸟了,无法确定这一点。 今天我想起了现有 GRBL PWM 功能对我来说不够用的主要原因之一:因为我被迫在 GRBL 中指定最大速度。想象一下,我有一个主轴,我可以用一个在低位和高位之间的杠杆来改变速度。或者您可能具有更换皮带的能力。由于我要控制主轴转速,而这就是我要添加光学传感器的地方,因此每次更改齿轮比时都在 GRBL 中调整最大主轴转速非常不方便。我同意这不是嗅探器方法的问题。 |
我有没有听到有人提到我的嗅探器 – 你是在说我是罗马人(大鼻子)哈哈。 |
我想我可能会因为 uno 的极端内存限制而被迫使用巨型板。我在 grbl FAQ 中注意到 uno 完全不鼓励使用额外的功能。 而且我上传的测试不正确,我认为它只是因为我发送的数字在最低有效位上不以 1 结尾。自从我进行位级编码以来已经有一段时间了,并且在晚上这样做似乎效果不佳。 |
请忽略之前关于变速的帖子,我做了更多的测试,我完全错了,累了,变速似乎很快。 |
稍微更新一下进度,以防有人仍然感兴趣。所以我想我会选择 SPI。由于硬件支持,它不应该干扰 GRBL 步进 ISR 的性能。唯一的问题是在 UNO 上使用了本机 SPI 的引脚。所以我最初的想法是使用 MEGA,因为它有所有可用的 SPI 引脚。但是我认为UNO的SPI也可以使用:
我已经对这里讨论的所有解决方案进行了很多思考,不知何故这似乎是迄今为止最好的。似乎是故意选择了 GRBL 引脚,以便在需要时可以使用 SPI。 无论如何,如果它在 UNO 上不起作用,我仍然很确定它在 MEGA 上会起作用。但是我有点害怕在 MEGA 上运行 GRBL,因为该端口没有得到官方支持,不知道现在是什么状态。我在那里看到了相对较新的提交。 |
我仍然很感兴趣,别让我的沉默欺骗了你。 |
用于 mega 的 Grbl 1.1(和最新的 grbl 存储库)位于:https |
“由于某种原因,它并没有像原来的 repo 那样获得那么多的流量” |
最后,经过一天的工作,一个工作原型。我在这里上传了代码以防有人感兴趣:
|
看起来还不错。我没有为 spi 使用 1m 电缆,但我使用了一根很长的电缆(24 英寸)来发送 lcd 更新。那里可能只需要一根好的屏蔽电缆。 即使使用串行,您也可能最终受到干扰。我有点担心我可能在 grbl 和我的主轴控制之间也有这个问题。 |
以防万一您的计划失败并且作为对他人的良好参考,我忘记了另一个选择。除了硬件串行嗅探方法之外,您还可以在您的 PC 上安装一个应用程序来拆分串行端口的控制 – 它称为虚拟串行端口仿真器 VSPE https://freevirtualserialports.com/ http://www.eterlogic。 com/Products.VSPE.html 多么酷啊 |
@mmcristi1981你的工作对我帮助很大。我已经修改了你的SPISlave,以支持通过RS-845控制廉价的Hyunyang逆变器的速度……如果有人有兴趣,我可以发送文件- 我不时收到一些错误的速度发送 – 不确定这是否是 SPI 传输错误? 总之感谢。 |
@lolsifer很高兴听你这样说。 |
是的,笔误。。谢谢 使用此 RS-485 模块从 UNO 控制 VFD,运行 2.2Kw 水冷主轴。: 我有一个 Mega2560 -> Uno。Mega 不使用 CNC 防护罩,因为我有另一个项目遗留下来的 4*MA860H 步进驱动器,所以 Mega 直接连接到驱动器。 目前在桌面上使用 bCNC,稍后可能会更改为 pi.. 目前 – 我正在检查它是否在申请之前两次收到相同的速度。 |
这就是我的理解:Mega2560 -> UNO -> MAX485 -> VFD。 对每条连接线的一些建议:
对不起,如果可能看起来不对,我更多的是软件人,只是想提供帮助。如果我们设法以可靠的方式使用 VFD 进行这项工作,那么其他人也可能会感兴趣。 |
您可以在此处找到有关 RS485的信息https://www.gammon.com.au/forum/?id=11428 lolsifer – 我认为你的 VFD 有一个 RS485 连接,用于远程操作设备。 |
Mega -> Uno 之间的数据错误,故障率低。我几乎认为通过多次检查数据来解决它。电路板只是通过短面包板线连接。 在我测试这个配置时,我实际上并没有连接 VFD,所以噪音不会导致这个(目前?)..我刚刚完成这个,然后再把它们重新组合在一起.. @MeJasonT是的,我不确定将其直接添加到 Mega 中对 GRBL 的影响。因此,现在是单独的板。有一个外部主轴控制可能会很方便,它也可以从 GRBL 板上接收命令。如果它成为问题,将研究一些进一步的屏蔽,谢谢你的建议。 这些链接应该完成图片: 手册第 50 页 |
我同意第二块板增加了更多的灵活性,您还可以在其中覆盖 VFD 的控件,甚至拥有自己的自定义控制面板。 我最终可能会添加更多代码以尝试使连接更具容错性。我试图让 GRBL 板上的开销尽可能低。还在想一个好的解决方案。 |
后续,出于好奇,我做了更多测试。创建了一个小的 gcode 文件,将主轴速度更改为各种值,然后等待。在大约 15 分钟的测试中,我看不到任何错误。然而,一旦我断开两块板之间的直接接地连接,只留下通过 USB 端口的不正确接地,我经常得到错误值。 将两块板连接到同一台 PC 进行测试,它们之间有 4 根跳线:SS、MOSI、SCK 和 GND。我完全忽略了味噌。在当前的实现中,它是不需要的。 |
好信息,谢谢,我认为这对准确性也很有意义,当预热时温度也会升高,东西会稍微改变形状,最好在开始切割之前拥有它。尽管出于我们的主要爱好目的,这并没有太大的区别。 |
听起来进展不错。 |
您好, |
你的细节有点粗略,似乎是一个奇怪的用例。步进电机通常用于与位置精度相关的低 RPM 设置。随着速度的提高,扭矩会急剧下降。步进电机作为主轴电机似乎是一个不幸的选择。 无论如何,我会尝试给出一些建议:
|
你好,建议 1 建议 2 不可能,我需要更改 g 代码指令,我不确定库是否会理解“M3”指令作为在这种情况下运行的主轴,建议 3 我没有另一个 arduino。您知道如何更改 GRBL 代码来处理这种情况吗?
|
嗨, |
感谢您的回复和努力。
|
现在似乎有一个非常优雅的解决方案,将环阳 RS485 通信直接集成到 GRBL,如果您能帮助测试,我会很高兴: |
mmcristi1981 评论 on 7 Jan 2019 •
我有一个定制的主轴控制器,它带有一个与运行 grbl 的单独的 arduino 板。我想从 grbl 板上读取/获取当前的主轴速度。是否可以获取二进制格式的信息(例如模拟串行通信)?例如,一个两个字节的数字是真正编程的 gcode 主轴速度而不是当前的 pwm 信号?我可以尝试自己在 grbl 中更改它,但也许已经有类似的东西可用或计划好了。
尝试读取现有 pwm 并将其转换回数字的替代方法存在几个问题:
另一种选择可能是将两个 arduino 都连接到主机 PC 并更改 GUI 以不断地将当前主轴速度从一个板发送到另一个板。
然而,我认为如果可能的话,让董事会以某种方式直接沟通会更加优雅和准确。