开源改变世界

双步进配置的归位 #604

推推 grbl 3年前 (2023-01-22) 81次浏览

打开
Antiheld86 开启了这个问题 2019 年 2 月 11 日 · 2 条评论
打开

双步进配置的归位#604

Antiheld86 开启了这个问题 2019 年 2 月 11 日 · 2 条评论

注释

双步进配置的归位 #604
安提海德86 评论了 2019 年 2 月 11 日  

你好呀,

我基于 MPCNC 构建了自己的 diy CNC 路由器。它适用于 X 轴和 Y 轴上的双步进器。我用一个 Ramps 1.4 板运行它,每个步进电机都有一个步进驱动器,每个电机都有自己的结束开关。目前它与 marlin 固件一起运行,归位用于通过击中末端挡块来使轴成直角。

我正在考虑切换到 grbl,因为 marlin 总是感觉像在使用 3d 打印机。

我想知道我的实际设置是否可以使用 grbl。是否有设置 X 和 Y 双轴并为每个步进电机提供自己的末端开关的功能,用它来归位?

谢谢你的帮助!

双步进配置的归位 #604

我认为这不是一个好主意:如果你在 y 轴上有两个电机,而你只移动一个,检测限位开关,然后对另一个电机重复操作,你会迫使它扭曲而不是移动垂直

双步进配置的归位 #604

目前我正在研究一个 grbl-Mega 叉子来实现 Y 轴的这个想法。
我已经基于 OpenBuilds OX(XY 是皮带驱动)构建了我的 CNC,在 Y 轴上有两个步进器,两个驱动器的 step/dir 端口连接到 arduino 端口。
问题是,当机器关闭时,它会失去 X 和 Y 之间的垂直度,我相信我无法机械地修复它。我想使用特殊的归位程序来恢复垂直度。
目前我已经调整了stepper.c中的代码,使两个步进器在不同的引脚上同时移动(让它们位于同一个 2560 端口上),如下所示:

if (st.counter_y > st.exec_block->step_event_count) {
  #ifdef SEPARATE_Y_AXIS 
    st.step_outbits |= ((1<<Y_STEP_BIT)|(1<<Y2_STEP_BIT));
  #else
    st.step_outbits |= (1<<Y_STEP_BIT);
  #endif
    st.counter_y -= st.exec_block->step_event_count;
  #ifdef SEPARATE_Y_AXIS 
    if (st.exec_block->direction_bits & ((1<<Y_DIRECTION_BIT)|(1<<Y2_DIRECTION_BIT))) { sys_position[Y_AXIS]--; }
  #else
    if (st.exec_block->direction_bits & (1<<Y_DIRECTION_BIT) { sys_position[Y_AXIS]--; }
  #endif

现在我正在尝试想出如何为两个步进器一起制作归位接近阶段,但是然后根据触发的限位开关(触发的限位开关最后一个以最小化扭曲)交替定位每个电机的相位。

我应该在哪里更改/添加源代码来实现它?

喜欢 (0)