ホーミング設定のちょっとしたTips
ホーミングとリミットスイッチに関わる座標原点の設定です。
$21ハードリミットをON($21=1)にしておくと、Gコード動作中にリミットスイッチを叩くと異常で停止します。
ホーミングで座標0をリミットスイッチのON位置にすると、
プログラム中でも座標0に来ると異常で停止してしまいます。
簡単なのは$21=0にしてハードリミットをホーミング時だけ使うことですが、
機械リミットの意味合いからしてちょっと違和感があります。
この、座標0でハードリミット異常停止を回避する方法は、座標原点をずらしておくことですが、
この方法がなかなか分かりづらいです。
まずは、$27のホーミング後リミット回避距離を設定します。
(例えば$27=5)
このままでは、Grblは原点から5mmずれた位置を座標として持っているだけでこの5mmの位置を0にはしてくれません。
(あくまでリミットスイッチを叩いた位置が0)
ここで、Defaults.hファイルの下の方、DEFAULT_X_HOMING_MPOSとDEFAULT_Y_HOMING_MPOSの設定を
初期値の0ではなく回避距離分マイナスを入れます。
# ifndef DEFAULT_X_HOMING_MPOS
# define DEFAULT_X_HOMING_MPOS -5.0
# endif
# ifndef DEFAULT_Y_HOMING_MPOS
# define DEFAULT_Y_HOMING_MPOS -5.0
# endif
こうすると$27で設定したリミット回避距離だけ進んだ位置が、座標原点(0,0)になります。
よって、Gコードで(0,0)を指定したとしてもリミットスイッチは叩かず
$21のハードリミットをEnable(1)にしていても問題なく座標(0,0)を指定できます。
もちろん何らかのミスでリミットスイッチを叩くと異常で停止します。