自从娃出生以来,一直没有时间,今天算是忙里偷闲,开始研究如何在 Cohesion3d-Remix 这块主控板上实现「无传感器归零」(sensorless homing)。所谓无传感器归零功能,使用的是 TMC2130 步进驱动的智能控制功能,可以根据步进电机失速的表现来对电机所处的状态进行分析。1

固件设置

  • 将 X, Y 方向的_归零回弹_ (home_bump) 设为 0

    #define X_HOME_BUMP_MM 0
    #define Y_HOME_BUMP_MM 0
    
  • 开启 Sensorless_homing

    #define SENSORLESS_HOMING // TMC2130 only
    

    注意到后面有固件默认的归零敏感度:

    #if ENABLED(SENSORLESS_HOMING) || ENABLED(SENSORLESS_PROBING)
        #define X_STALL_SENSITIVITY  8
        #define Y_STALL_SENSITIVITY  8
        //#define Z_STALL_SENSITIVITY  8
      #endif
    

    将来可以使用 M914 X/Y/Z 去实时调整这个敏感度,不必再使用固件调整。

  • 在 configuration.h 文件中找到 X_MIN_ENDSTOP , 将其设置为 true, Y 也同理

    // Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
    #define X_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
    #define Y_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
    

硬件部分的改变

  • 将 TMC2130 上的 Diag1 pin 与 C3D 板子上的限位开关 signal pin 连起来。我这里使用的是 X_MIN_ENDSTOP 和 Y_MIN_ENDSTOP,C3D 上的 pin 的位置见下图Endstop pins

上传固件

这一步是显然的。

上电测试

  • 使用 G28 X, G28 Y 可以让 X, Y 轴单独归零,输入后观察归零情况。若撞到边框还不停止,则要调整归零灵敏度(使用 M914 命令)。在我这里的情况是 X 轴 归零正常,Y 轴没有归零就停住了。
  • M914 命令的使用方法是:若只输入 M914,则显示当前灵敏度,marlin 规定的灵敏度范围是从 -63 到 64,数值越大越不敏感;初始时的灵敏度应该都为 0;
  • 我将 X Y 方向的灵敏度设置为 1: M914 X1 Y1; 发现 Y 轴可以正常归零了。
  • 最后记得用 M500 保存设置。
  • 不知是否是因为 CoreXY 的 X, Y 方向是联合控制的,我这里独立归零没有问题,但当 X 和 Y 同时归零时,似乎只有 X 归零了,Y 并不归零,看来还需要进一步研究固件,加以调整。

更新

  • 可以在 Configuration.h 里面激活如下命令以记录运行时系统反馈的信息:

    #define DEBUG_LEVELING_FEATURE
    
  • 使用 M111 S32 或 M111 S247 使系统信息能够被最大程度的记录下来

  • 使用 G28 归零。

更新 (二)

经调试,发现主要问题是:当 X Y 同时归零时,总是 X 可以归零,但 Y 在归零途中就会停下;如果分别归零,当 Y 归零后,X 可以顺利归零;反之则不行。量了一下 X 导轨与前边框的间距,发现左侧比右侧稍大。左侧是归零方向。以此判断,不能实现同时归零的原因是线性导轨与框架不完全平行,导致 X 方向归零后, Y 在归零途中撞到框架而提前归零。

由于调节导轨平行度工作量实在太大,无奈之下,只好先在固件 Configuration_adv.h 中设置归零顺序为先 Y 再 X

#define HOME_Y_BEFORE_X

临时解决问题。


  1. 本文参考了 YouTube 视频:TMC2130 Guide - stepper motors driver upgrades part 3 - Sensorless homing https://www.youtube.com/watch?v=OUadiW5QLBE ↩︎