开源改变世界

用于点阵雕刻机的 GRBL #194

推推 grbl 3年前 (2023-01-21) 85次浏览

关闭
badidea 打开了这个问题 2013 年 3 月 1 日 · 5 条评论
关闭

用于点阵雕刻机的 GRBL#194

badidea 打开了这个问题 2013 年 3 月 1 日 · 5 条评论

注释

用于点阵雕刻机的 GRBL #194

我正在使用 GRBL 和 Arduino UNO 改造点阵雕刻机。我有一个问题,我相信你们可以帮助我。我正在尝试放置一个主轴控制,当步进器移动多个脉冲时,它会触发我的主轴启用输出 10 毫秒,然后关闭。我使用 M3 作为喷丸循环的起点。我有我的 Sxxx 代码,它与 M3 一起作为我的点间距变量。除了脉冲计数器工作之外,我可以得到所有的东西。

我是这些编程的新手,并且确信我遗漏了一些明显的东西。感谢您提供的任何帮助。

基本上我只需要知道如何放入一个计数器来监视 X 和 Y 并在我的输出触发或放入 M5 时重置。

用于点阵雕刻机的 GRBL #194
成员

棘手。没有真正好的方法可以做到这一点,但可以通过一些黑客攻击来实现。这里有一些选项。

您可以做的一件事是在主步进器模块中添加一个计数器,以跟踪它执行的步数。以某种方式启用主轴控制,然后启动一个定时器,该定时器将在 10 毫秒后禁用主轴引脚。

您可以做的另一件最直接的事情是将 g 代码转换为显式移动以及打开和关闭主轴。这将创建一个 g 代码程序的怪物,但这也应该有效。

最后一件事是将另一个 Arduino 连接到您的 X 和 Y 步进器引脚以及您的主轴启用。第二个 Arduino 只会控制你的雕刻机。因此,当您的主轴使能引脚变高时,它将开始跟踪 Grbl 的步进引脚输出的步进脉冲,然后打开和关闭您的雕刻机。这可能是您最好的选择,也是最少的工作。你可以很容易地在 Arduino IDE 中编写它。另外你的g代码不会很复杂。它只需要为您想要雕刻机的线条启用 M 代码主轴。

用于点阵雕刻机的 GRBL #194
作者

你的第一个想法是我一直在尝试的。我认为我的问题是我在做脉搏时。我明天要试试这个。

################################################## #####
st.counter_z -= st.event_count;
如果 (out_bits & (1<<Z_DIRECTION_BIT)) { sys.position[Z_AXIS]–; }
else { sys.position[Z_AXIS]++; }
}

st.step_events_completed++; // Iterate step events
gc.dot_step++;  //counter i set up
if (gc.dot_step == spindle_speed) {
      gc.spindle_direction = 1;
      delay_ms(10);
      gc.spindle_direction = 0;
      gc.dot_step = 0;

}

我在 spindle.c 中执行 spindle 命令,我认为这只是检查一次而不是每次计数。

用于点阵雕刻机的 GRBL #194
成员

我建议不要使用第一种方法,尤其是对于您的代码。
由于在步进中断中添加了 delay_ms,它会破坏步进模块。请注意
,我说过您需要设置另一个计时器来处理延迟。
这几乎是在不显着改变
步进算法性能的情况下执行此操作的唯一方法。

我再次建议您尝试第二种控制器方法。这是最简单的
方法。

在 2013 年 2 月 28 日晚上 9:53,badidea notifications@github.com写道:

你的第一个想法是我一直在尝试的。我认为我的问题是我在
做脉搏时。我明天要试试这个。

################################################## #####
st.counter_z -= st.event_count;
如果 (out_bits & (1<<Z_DIRECTION_BIT)) { sys.position[Z_AXIS]–; }
else { sys.position[Z_AXIS]++; }
}

st.step_events_completed++;// 迭代步骤事件
gc.dot_step++; //我设置的计数器
if (gc.dot_step == spindle_speed) {
gc.spindle_direction = 1;
delay_ms(gc.spindle_speed);
gc.spindle_direction = 0;
gc.dot_step = 0;

}

我在 spindle.c 中执行 spindle 命令,我认为这只是
检查一次而不是每次计数。


直接回复此电子邮件或在 GitHub 上查看它
https://github.com/ /issues/194 #issuecomment-14273102

用于点阵雕刻机的 GRBL #194
作者

我没有调查的最后一个坏主意是,因为我没有使用 z 轴,所以设置 z 步进位来触发销的螺线管并使用 zxxx 移动命令(我知道我必须找到不同的方法将每转脉冲转换为更慢的速率。)

我为这么多问题道歉。我对此还是很陌生,但已经编写了很多数控控制器,所以这与我习惯的完全不同。

用于点阵雕刻机的 GRBL #194
作者

我已经为雕刻机配备了第二个控制器。步进脉冲太快,无法计算我有多少,所以我只打算在邮票之间使用时间延迟。我要试着找到。通过 i2c 将 gc.spindle_speed 输出到第二个控制器的方式。.

喜欢 (0)