注释
Grbl 从未设计用于运行 delta 机器。只有笛卡尔机器。如果您对代码进行了修改,那么我帮不了您。如果您没有这样做,则可能是 Grbl 通过无效的 gcode 命令抛出 gcode 错误,或者您在计算发送的消息时不小心更改了串行缓冲区大小。后者会导致数据损坏。或者这是您的 EMI 问题的症状,它也可能会破坏数据。为此,通常是设备接地不当或屏蔽不充分。 |
我没有修改 grbl 代码,而是将 delta 机器人位置转换为 pc 上的笛卡尔轴步长,并将 gcode 流式传输到 grbl。运动是在 xyz 还是离散的三角角表面都无关紧要。 def write_to_serial_gcode(serial_port, text, debug = ”): serial_port.write(l_block + ‘\n’) # |
你是如何编写 G4 命令的?他们可能无效。您还可以提供您的问题程序的片段以了解您发送的内容吗? |
这是一个在 xy 表面上做正方形的例子,在每个角落等待 0.3 秒。 G1 X500 Y2113 Z998 F160000 |
除了多次进给率外没有什么不寻常的。除非你在反时限模式下运行,否则你只需要在它发生变化时发送一个be one。如果你断开你的 Arduino,所以它只有 Grbl 在运行,流的行为是否相同?这将排除您的电子产品。 |
您的步进空闲延迟是否设置为 255 以外的值? |
我尝试使用不同的 USB 控制器并在每个流的末尾添加 M2 命令,问题似乎消失了。中继也不再重置 USB。感谢帮助 |
@birkov: 行。感谢更新。 |
我正在测试 Grbl 以运行带有 3 个步进器和东芝驱动程序的 delta 机器人。它在大多数情况下都运行良好,但我注意到很少有奇怪的行为,其中一个几乎毁掉了机器人。
我使用 python 脚本将 gcode 流式传输到 arduino(基于来自 steam.py 脚本的缓冲的方法)。
我在脚本中准备了一个应该完成的 gcode(例如 20 行立即运行的代码)。下一个 gcode 准备好并在例如 10 秒后发送到 arduino。Grbl 似乎跳过了一些行(并且有效地改变了末端执行器的移动路径,这可能会导致物体或框架崩溃)。我注意到这种奇怪的代码行跳过只有在我在代码中使用 G4 命令时才会发生(或者只是巧合?)。例如,如果我在空间中有点并在连接到 grbl 串行端口后第一次运行代码,则效应器将变为:ABCD。当我下次运行相同的轨迹时,它会跳过一个 gcode 行。这是通过相同的串行端口连接完成的,发送和接收相同的 gcode(由 grbl 响应确认)。我是否缺少用于结束/启动当前流的 gcode 命令之类的东西?每次 gcode 传输开始时都应该刷新串行缓冲区吗?(尽管似乎并非如此)。是否有使用G4命令的特殊方法或报告的问题?
希望问题的描述不要太复杂难懂。
我注意到的第二个问题是,当我使用 5v 继电器启动/停止 12v 真空泵时,它似乎有时会弄乱 USB/串行连接。我为继电器使用单独的电源,为 arduino 使用单独的电源,为所有东西制作铝箔屏蔽,目前我唯一的线索是 PC 中的 USB 端口不知何故挂了。你们有类似问题的经验吗?