私の使っているレーザー彫刻機は以前コントローラーを交換していました。
その記事はこちらですが
Laseraxe DIY Desktop Mini Laser Engraver の改造
その後ハードウェアリミットスイッチを使いホーミングできるようにしたくて再度交換していました。
今回は既成のコントローラーではなく、Arduino Nano に CNCシールドV4 を使うことにしました。というのは2軸用のコントローラーにはリミットスイッチの端子が無いものが多く、3軸用を使って試すとZ軸も機能するためソフトウェアの書き換えが必要になります。書き換えるなら汎用パーツでやってみることにしました。
購入したのはこちら。
CNCシールドはV4となっていましたがZリミットとPWM出力が逆転、モーターのENとDirが入れ替わっているなど結線が異なっていました。PWMはケーブルを差し替えるだけですがEN/Dirはソフトで変更するか、結線しなおす必要がありました。私はソフトの更新時に修正が不要になるのでジャンパー線で結線しなおしました。
またモータードライバーのステップ率を変更するジャンパーにプルアップ抵抗がなく変更不可でしたので抵抗を追加しました。
Arduino Nano に組み込むソフトですが当初 1.1f を導入しました。
Arduino IDE をインストールし、Grbl 1.1f をダウンロード、ホーミングを3軸から2軸へ書き換えてインストール。
ここが3軸用の設定。すでにコメントアウトしています。
// NOTE: Defaults are set for a traditional 3-axis CNC machine. Z-axis first to clear, followed by X & Y.
// #define HOMING_CYCLE_0 (1<<Z_AXIS) // REQUIRED: First move Z to clear workspace.
// #define HOMING_CYCLE_1 ((1<<X_AXIS)|(1<<Y_AXIS)) // OPTIONAL: Then move X,Y at the same time.
// #define HOMING_CYCLE_2 // OPTIONAL: Uncomment and add axes mask to enable
ここから2軸用の設定
// NOTE: The following are two examples to setup homing for 2-axis machines.
#define HOMING_CYCLE_0 ((1<<X_AXIS)|(1<<Y_AXIS)) // NOT COMPATIBLE WITH COREXY: Homes both X-Y in one cycle.
// #define HOMING_CYCLE_0 (1<<X_AXIS) // COREXY COMPATIBLE: First home X
// #define HOMING_CYCLE_1 (1<<Y_AXIS) // COREXY COMPATIBLE: Then home Y
X,Y軸が同時に移動するようにしています。
本体の方もリミットスイッチを取り付けどうにかホーミングできるようになりました。
ところがホーミング後のホーム位置の設定がうまくいかず、左下に移動しているのに座標がマイナス側になり、原点に移動すると右上に移動してしまう状態でした。いろいろ設定を変えてもうまくいかず、ホーミング後に手動で原点を設定していたのですが、どうもうまく動作しません。
しばらくはそのままで使っていたのですが Grbl の中をよく見ると、どうもそれらしい設定がありました。
// After homing, Grbl will set by default the entire machine space into negative space, as is typical
// for professional CNC machines, regardless of where the limit switches are located. Uncomment this
// define to force Grbl to always set the machine origin at the homed location despite switch orientation.
#define HOMING_FORCE_SET_ORIGIN // Uncomment to enable.
ここのコメントを消して再インストールしてみようと思い、 Arduino IDE とGrbl も1.1h をダウンロードしてきました。
修正後 予備の Arduino nano にインストールし交換、Grbl の設定をやりなおして動作。
今度はちゃんとホーミング後の左下が原点に設定され、その後の動作も問題なくなりました。
良かった。