开源改变世界

破解 GRBL 来控制一个简单的自动机 #1429

推推 grbl 3年前 (2023-01-24) 130次浏览

关闭
biasedlogic 打开了这个问题 2018 年 8 月 25 日 · 2 条评论
关闭

破解 GRBL 来控制一个简单的自动机#1429

biasedlogic 打开了这个问题 2018 年 8 月 25 日 · 2 条评论

注释

破解 GRBL 来控制一个简单的自动机 #1429

您好,
这不是 GRBL 的问题或功能请求,而是对那些了解 GRBL 内部细节的人的问题。@chamnit我希望你有时间发表评论 ;-)
我正在破解GRBL 以供非 CNC 使用。

简短版(没有背景的问题):

  1. 有没有我可以使用的免费模拟引脚?我相信已经追踪到 A5/A6 未使用,但是否有任何不明显的东西会阻止我设置 ADC 以在其中之一上进行连续转换?
  2. 我需要根据转换后的 ADC 值即时调整进给率,忽略 Fxxxx 字设置的任何内容。我可以在每个 gc_execute_line() 的开头覆盖 gc_block.values.f 还是会严重破坏某些东西?有更好的地方吗?速度的变化会很慢,如果下一步的加速管理失败也没关系。
  3. 可以在 init 字符串中重新启用移动命令吗?特别是归巢。实际上,如果初始化字符串中的归位有效就足够了。我知道为什么它现在被禁用了。

背景:

好的,问题是,我有一个简单的自动机(1 个,也许 2 个步进器)需要无限期地重复一个非常简单的动作序列。对人没有危险,没有锋利的刀刃转动,手指放在最要害的地方,整个事情就可以停止。这是设计使然,原始驱动器是一个高齿轮传动的直流电机和一组令人讨厌的杠杆,其扭矩足以剪断撬棍,因此其余的运动机械装置都在滑动离合器等上。

我可以使用两个 Arduinos 来控制它,一个运行 GRBL,另一个用 gcode 喂它。我想用一个来完成它,这样我就可以将啄木鸟式电路板用作独立控制器,并可以免费使用 USB/串行接口对电路板进行系统内重新编程,而不会出现任何问题。

我已经破解了 GRBL 以不断重新读取串行输入缓冲区,该缓冲区现在已使用所需的运动序列进行了初始化,因此整个过程可以按预期进行。除了覆盖命令外,传入的串行数据被忽略,所以这东西大部分是愚蠢的,但在其基本方面完全按预期工作。

我面临两个挑战:

微调实际运行速度——这不是很关键,但必须由非熟练人员完成,并且适当的运行速度会根据其他因素而变化,所以我想要一个任何人都可以转动的旋钮 -> 因此模拟输入和进给的内部计算速度。

我也很想使用归位开关,现在第一个循环很艰难,因为整个过程都会遇到硬停,直到滑动离合器调整好。不过这是次要的,因为在正常操作中,观众互动无论如何都会使自动机失去同步,因此第一个周期的颠簸充其量只是美学。

破解 GRBL 来控制一个简单的自动机 #1429
危机 评论了 2018 年 8 月 26 日 通过电子邮件
破解 GRBL 来控制一个简单的自动机 #1429

好的,我让它运行起来了。所以我所做的是:

  1. 使用运行自动机的一串命令初始化 RX 缓冲区。每行都有一个 F 字,其伪参数为“0”,例如“F0G1X100\nF0G1X0\n”。
  2. 检查缓冲区中有多少字符的函数被修改为始终返回非零数字。
  3. 检查缓冲区可用空间的函数始终返回零。
  4. 从缓冲区获取数据的函数返回字符串中的下一个字符,并在遇到零值字符(C 字符串的最后一个字符)时回绕到零
  5. 在 main.c 中,ADC 被初始化并设置为连续运行转换 ADC5
  6. 在解析器中,在解释 F 代码的地方,忽略从缓冲区读取的值,并根据 ADC 值计算速度。

我还没有接触归巢。

喜欢 (0)