X

【3Dプリンター改造】Ender-3でセンサーレスホーミングを試してみた(TMC2130)

 51,227 total views,  4 views today

モータードライバのTMC2130TMC2209では、センサーレスホーミングに対応しているということなので、試してみた。

ホーミング(原点復帰)

3DプリンターのX軸キャリッジとY軸キャリッジはそれぞれの原点を基準として、あらかじめ定められた範囲内(ベッドの各辺の長さ)を移動することになる。

これらの原点は、その位置に取り付けた何らかのセンサー(機械式スイッチ、光電センサなど)により検出される。

原点を検出するために、各軸を原点位置まで移動させるのがホーミング(原点復帰)である。

センサーレスホーミング

TMC2130では、StallGuardいうモーターの負荷検出機能を用いることで、センサーなしに原点位置の検出を行うことができるようになっている。

例えば、X軸キャリッジを移動させた際、原点位置まで到達すると、それ以上移動することができないため、モーターには移動時に掛かっていた負荷よりも高い負荷が掛かることになる。

センサーレスホーミングでは、StallGuardによりモーターの負荷の変化が検出された時点でモーターの動作を停止させることで、センサーなしのホーミングを実現している。

センサーレスホーミングの実際

動画を見てもらえばわかる通り、X軸・Y軸ともにリミットスイッチからボード上のエンドストップピンへの配線がない状態で、ホーミングできている。

なお、もともとのエンドストップ用リミットスイッチを取り外さずにそのまま取り付ているが、これはホーミング時の衝撃緩衝用として残しているものである。

センサーが原点位置にある場合と異なり、センサーレスホーミングの場合、障害を検知するごとにモーターが停止する。

まだベータ機能ではあるが、Marlin-bugfix-2.0.xではTMC2130に限り、モータードライバからエンドストップ用のピンへの配線なしにセンサーレスホーミングが有効となる「SPI ENDSTOPS」の機能が用意されている。

SPI ENDSTOPSモード

このモードのメリットは、配線が多少すっきりすることである。

TMC2130の配線

私が使用したTMC2130はBIGTREETECHのV3.0(SPIバージョン)である。

また、メインボードには、同じくBIGTREETECHのSKR V1.3を使用した。

配線は、ジャンパーワイヤーをTMC2130の DIAG1ピンから、

TMC2130側

メインボードのエンドストップのピンのうちSピンへと繋げる。

メインボード側

※SPI ENDSTOPSを有効にする場合、TMC2130のDIAG1ピンとメインボードのエンドストップピンをつなぐ必要はない。

なお、ボードにBigtreetechのSKR1.3を使用する場合、TMC2130のSPIモードでは、ジャンパーピンを画像の通りに取り付ける。

TMC2130 SPIモードのジャンパーピン設定

Marlin-bugfix-2.0.xの設定

Marlin-bugfix-2.0.xセンサーレスホーミングを有効にするための設定について書いておく。

Configuration.hの設定

ENDSTOPPULLUPS

  • //#define ENDSTOPPULLUP_XMIN →  #define ENDSTOPPULLUP_XMIN
  • //#define ENDSTOPPULLUP_YMIN → #define ENDSTOPPULLUP_YMIN

ENDSTOP_INVERTING

  • #define X_MIN_ENDSTOP_INVERTING false → #define X_MIN_ENDSTOP_INVERTING true
  • #define Y_MIN_ENDSTOP_INVERTING false → #define Y_MIN_ENDSTOP_INVERTING true

Configuration_adv.hの設定

HOME_BUMP

エンドストップ到達後の再ホーミングをなくす。

  • #define X_HOME_BUMP 5 → #define X_HOME_BUMP 0
  • #define Y_HOME_BUMP 5 → #define Y_HOME_BUMP 0

SENSORLESS_HOMING

センサーレスホーミングを有効にする。

  • //#define SENSORLESS_HOMING → #define SENSORLESS_HOMING

STALL_SENSITIVITY

X軸とY軸のセンサーレスホーミングの感度を設定する。

感度が低すぎると、原点到達時にモーターが停止せず感度が高すぎると、原点到達前にモーターが停止してしまう

  • #define X_STALL_SENSITIVITY 8 →  #define X_STALL_SENSITIVITY  20
  • #define Y_STALL_SENSITIVITY 8 →  #define Y_STALL_SENSITIVITY 18
センサーレスホーミングの感度調整
LCDメニューによる感度調整

Marlinファームウェアでセンサーレスホーミングを有効にすると、LCDメニューにセンサーレスホーミングの感度設定の項目が追加されるので、そこから感度の調整を行うことができる。

Configuration」→ 「Advanced Settings」→ 「TMC Drivers」→ 「Sensorless Homing

ターミナルによる感度調整

LCDメニューからでも調整することはできるが、この方法では値を変更するごとに、ホーミングの項目と感度調整の項目とをいちいち行ったり来たりしなければならない。

これはあまりにも面倒なので、ターミナルから直接G-codeを指定して調整するほうが効率的である。

ターミナルに接続して、次の手順により感度調整を行う(X軸の場合)。


  1. M914 X? (感度の入力※)
  2. G1 X0(Xホーミング)
  3. 最適な感度になるまで値を変えながら手順1と手順2を繰り返す
  4. M500(感度の設定を保存)

※?には-64~63の間の任意の整数が入り値が小さいほど高感度となる

Y軸についても同様の手順で感度調整を行う。

SPI_ENDSTOPS

配線を極力減らしたいというような場合に有効にする。

なお、この機能はTMC2130限定のものでTMC2209やTMC5160などでは有効にできない。

  • //#define SPI_ENDSTOPS → #define SPI_ENDSTOPS

まとめ

  • TMC2130でセンサーレスホーミングを試した。
  • センサーレスホーミングを有効にすると配線が多少すっきりする。
  • さらに配線が少なくなるSPI ENDSTOPSも試してみた。
管理人:

コメントを見る (2)

    • ファームウェアで感度の設定をしないことにはエンドストップとしてまともに機能しないので、配線だけつないでも意味がないと思います。
      LerdgeのボードはモーターのSPIモードやUARTモードに対応していないのが残念ですが、タッチパネルからステップ数など様々な項目を直接設定できるのはいいですよね。