开源改变世界!!

Home 不会在我的 deltabot 上收回 #524

推推 grbl 2年前 (2023-02-05) 174次浏览
关闭
hg42 打开了这个问题 2013 年 6 月 16 日 · 18条评论
关闭

Home 不会在我的 deltabot 上收回#524

hg42 打开了这个问题 2013 年 6 月 16 日 · 18条评论

评论

Home 不会在我的 deltabot 上收回 #524
贡献者

你好,

我的 Rostock 打印机目前正在运行 jcrocholl/Marlin,效果很好。
现在我正在尝试您的回购,并且在归巢时出现奇怪的行为。
轴碰到终点挡块就停下来,仅此而已。
我认为它们应该缩回(*_HOME_RETRACT_MM 对于 X、Y、Z 为 5)并以较慢的 (1/2) 速度再次返回。但他们没有。
我可以离开终点站。

我将我的更改复制到 configuration*.h 和 Marlin_main.cpp 中的更改以强制 home_all_axis = true 到您的代码。

我比较了两棵树,对我来说,在查看 DELTA 归位代码和假设 home_all_axis = true 的 !DELTA 代码时,它们看起来是一样的。两个回购协议中的 !DELTA 归位代码几乎相同。

然后我未定义 DELTA 并强制 home_all_axis = true(并禁用了 #if Z_HOME_DIR > 0 HOMEAXIS(Z) 部分),这导致了相同的行为。

我查看了资料来源,但不知道是什么导致了这种行为。
任何指针?有任何想法吗?

有人有同样的问题吗?
-> 我会尝试通过使用 bi-sect 找到导致此问题的补丁
任何人都有带工作归位的 delta 打印机?
-> 我会搜索我自己的更改

Home 不会在我的 deltabot 上收回 #524

感谢您的测试。我上周合并了 jcrocholl 分支。但我没有 delta 来测试它。wolfmanjm 做了一些测试。也许他知道的更多。(他还对归位功能做了一些修改)

Home 不会在我的 deltabot 上收回 #524
贡献者作者

感谢您的回答,我可能会调试自己。
如果代码适用于其他人,我主要想要一些反馈。所以我可以缩小调试范围。

我认为 homing 的代码是正确的,但可能在某个较低的级别上必须有另一个变化导致这个。
我只需要找出如何跟踪操作(用于调试目的的打印类型,注意我是 Marlin 和 Arduino 以及 3D 打印的新手,但是“现实”生活中的软件开发人员)。

正如我所说,与 jcrocholl/Marlin 的区别并不大。
顺便提一句。哪个repo才是Marlin真正的主线?你的?

除此之外,我想知道代码是否适用于非 delta 打印机?基本上这两种变体基本相同,增量代码强制始终归位所有​​轴。

Home 不会在我的 deltabot 上收回 #524

你好@hg42.
您可以在 IRC #Rostock 上联系 wolfmanjm
他做了第一个测试。他可能知道更多。

Home 不会在我的 deltabot 上收回 #524
贡献者作者

我未定义 DELTA 以将行为与 deltabot 分开。我想我也会用笛卡尔机器人得到它。
当仅归位 X 轴时,我插入了一些回声并得到以下结果:

12:02:50.410:轴:0向上:240.00
12:02:50.414:轴:0进给率:12000.00
12:02:50.414:规划梯形steps_x:9600
12:02:50.418:规划梯形steps_y:0
12:02: 50.422:规划梯形steps_z:0
12:02:50.422:axis:0 down:-5.00
12:02:50.426:规划梯形steps_x:200
12:02:50.431:规划梯形steps_y:0
12:02:50.431:规划梯形steps_z: 0
12:02:50.435 : axis: 0 up: 10.00
12:02:50.439 : axis: 0 feedrate: 1200.00
12:02:50.443 : planning trapezoid steps_x: 600
12:02:50.443 : planning trapezoid steps_y: 0
12 :02:50.447 : 规划梯形 steps_z: 0

“轴线”线来自 plan_buffer_line 之前的 HOMEAXIS_DO(LETTER) 宏。
“规划梯形”来自 calculate_trapezoid_for_block 之前的 planner.cpp。

所以,计划似乎没问题。通常,计划的移动会正确执行,我可以使用 RepetierHost 中的按钮移动每个轴(但就像笛卡尔机器人)。
顺便提一句。我的打印机完全适用于 jcrocholl 固件,因此不会丢失步骤等。

那么,什么可以阻止执行计划的步骤呢?

我注意到,如果我点击“Home X”,步进电机会发出短促的声音,大约来回移动 0.2 毫米。所以它正在执行那些计划步骤的“某事”。我假设此举因某种情况而停止。

Home 不会在我的 deltabot 上收回 #524
贡献者作者

好的,解决了问题:

enable_endstops(false);  // Ignore Z probe while moving away from the top microswitch.
current_position[axis] = 0;
plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
destination[axis] = -home_retract_mm(axis) * home_dir(axis);
plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder);
st_synchronize();
enable_endstops(true);  // Stop ignoring Z probe while moving up to the top microswitch again.

两条注释的 enable_endstops 线是驶出终点站所必需的,如果出于其他目的而不是归位启用了终点站(这对于增量来说似乎是个好主意,因为归位后你不能水平移动,因为所有轴都在顶部并且不能进一步向上移动,但对于水平移动,一些轴向上移动,一些向下移动)。

我想知道,为什么我之前在差异中没有看到这些线?我已经看过 endstop 功能。

Home 不会在我的 deltabot 上收回 #524

你能提出拉取请求吗?

Home 不会在我的 deltabot 上收回 #524
贡献者作者

抱歉,我没有使用 git,而是使用了 mercurial,它的扩展目前在另一个方向上不起作用。
而且我对 git 不是很熟悉。

除此之外,我认为,当您与 j​​crocholl 合并时,更改将自动出现。
这些行只是通过手动合并软件(在 linux 上为 meld)从 jcrocholl 固件中复制。

Home 不会在我的 deltabot 上收回 #524

我认为您的终点站配置错误。你能把你的配置文件发给我吗?
仅当您有 z 探针时才需要禁用止动器。

Home 不会在我的 deltabot 上收回 #524
贡献者作者

我看到我什至已经定义了

#define ENDSTOPS_ONLY_FOR_HOMING

我以为我有这个未定义的(我过去试过),这可能
是原因,但我没有。

Home 不会在我的 deltabot 上收回 #524
贡献者作者

步进中断中的代码看起来应该检查停止点 (CHECK_ENDSTOPS),但只检查正确方向的停止点(对于我的增量:down->min_endstop,up->max_endstop)。
我过去删除了我的 min_endstops,因为恕我直言,它们在增量上没有意义,可能是它们被配置并且“打开”电缆意味着“激活”(上拉)。
我会在晚上检查。
使用 ENDSTOPS_ONLY_FOR_HOMING 也解释了为什么我只在归位时遇到这个问题,但在其他情况下可以四处行驶。使用此#define,它们在归位后被禁用。
所以我认为,你是对的,我可能必须禁用 min_endstops。但是怎么办?
没有 DISABLE_MIN_ENDSTOPS,对吧?我看到有一个功能请求…
我可以禁用上拉,
或者我可以反转它们的活动状态,但我不知道该怎么做。
或者我应该在我的 RAMPS 1.3 上用跳线将它们短路吗?
您的打印机上的所有这些是如何配置的?

Home 不会在我的 deltabot 上收回 #524
贡献者作者

除了找到发生这种情况的原因之外,我认为在驶出终点站时禁用终点站是合乎逻辑的。
如果我们可以单独启用/禁用每个终点站,那就更好了。

Home 不会在我的 deltabot 上收回 #524

我将添加一个 DISABLE_MIN_ENDSTOPS。
这可能是导致您遇到的错误的原因。

Home 不会在我的 deltabot 上收回 #524
贡献者作者

当我再次思考时,如果只检查行驶方向的终点站,则没有必要禁用终点站以将其驶出。所以是的,DISABLE_MIN_ENDSTOPS 是正确的解决方案。

Home 不会在我的 deltabot 上收回 #524
贡献者作者

我刚刚从归位中删除了 enable_* 并在 DISABLE_MAX_ENDSTOPS 之后在 pins.h 中添加了以下内容,并在 Configuration.h 中定义了 DISABLE_MIN_ENDSTOPS

#ifdef DISABLE_MIN_ENDSTOPS
#undef X_MIN_PIN
#undef Y_MIN_PIN
#undef Z_MIN_PIN
#define X_MIN_PIN -1
#define Y_MIN_PIN -1
#define Z_MIN_PIN -1
#endif

并且有效

Home 不会在我的 deltabot 上收回 #524

我已经添加了 DISABLE_MIN_ENDSTOPS
感谢您进行测试。