Zプローブとオートベッドレベリング
Posted by arms22 on 2014年12月20日

3DプリンターatomにZプローブを取り付けてオートベッドレベリング機能を有効にしてみました。オートベッドレベリングとは自動的にプリントベッドの水平調整を行う機能で、ノズルがX・Y方向に移動した時にプリントベッドとノズルの距離が一定になるようZ方向に補正をかけるよう動作します。
Zプロービングの様子。オートベッドレベリングの前準備としてZプローブを使って指定した3カ所でベッドとの距離を計測しZ方向の補正値を求めます。1度計測を行えばベッドを交換したりしない限り再度計測する必要ありません。
オートベッドレベリング設定後のプリントの様子。ベッドとノズルの距離が一定になるように絶えずZ軸の高さが変化しています。
オートベッドレベリングのメリットは、
- プリントベッドの水平調整が不要になる
- 1層目の張り付きが良くなる(ABSの反りが抑えられる)
- Z軸の負担が増える
- 送りナットが摩耗する
Zプローブアダプタ


海外の作例を見るとサーボモータやバネを使って自動的にZプローブを上げ下げするタイプを良く見かけますが、今回はシンプルにノズル先端に手で取り付けて使えるZプローブを作りました。ベッドとの接触検知にはマイクロスイッチを使っています。
Z Probe Adapter for RepRapPro Huxley HotEnd
http://www.thingiverse.com/thing:594204
コンフィグレーションファイルの変更
ここではatomで使っているRepetier-Firmwareのコンフィグレーションファイル(Configuration.h)の変更方法について説明します。
/* Z-Probing */
#define FEATURE_Z_PROBE true
#define Z_PROBE_PIN 2
#define Z_PROBE_PULLUP true
#define Z_PROBE_ON_HIGH false
#define Z_PROBE_X_OFFSET 0
#define Z_PROBE_Y_OFFSET 0
#define Z_PROBE_BED_DISTANCE 5.0 // Higher than max bed level distance error in mm
// Waits for a signal to start. Valid signals are probe hit and ok button.
// This is needful if you have the probe trigger by hand.
#define Z_PROBE_WAIT_BEFORE_TEST false
/** Speed of z-axis in mm/s when probing */
#define Z_PROBE_SPEED 1
#define Z_PROBE_XY_SPEED 80
#define Z_PROBE_SWITCHING_DISTANCE 1.5 // Distance to safely switch off probe
#define Z_PROBE_REPETITIONS 3 // Repetitions for probing at one point.
/** The height is the difference between activated probe position and nozzle height. */
#define Z_PROBE_HEIGHT 0
/** These scripts are run before resp. after the z-probe is done. Add here code to activate/deactivate probe if needed. */
#define Z_PROBE_START_SCRIPT ""
#define Z_PROBE_FINISHED_SCRIPT ""
まず最初にZプローブを有効にして(FEATURE_Z_PROBE true)Zプローブで使用するピンを決めます(Z_PROBE_PIN 2)。atomに使用している制御ボード(RAMPS)のX_MAX(2)が空いていたので2番を指定しました。お使いの制御ボードに合わせて変更してください。適宜、プルアップ(Z_PROBE_PULLUP)と信号の反転(Z_PROBE_ON_HIGH)、X/Yオフセット(Z_PROBE_X[Y]_OFFSET)を設定してください。Z_PROBE_BED_DISTANCEの用途は不明。。
Zプローブをマニュアル操作で上げ下げする場合、Z_PROBE_WAIT_BEFORE_TEST trueに設定してください。Zプローブを計測ポイントに移動した後、ユーザーがZプローブのスイッチをオンにするのを待ちます。
Z_PROBE_SPEEDはZプローブを上げ下げする時の速度(mm/s)、Z_PROBE_XY_SPEEDはZプローブを移動する時の速度(mm/s)、Z_PROBE_SWITCHING_DISTANCEはZプローブがONになった後、完全にOFFになるまでZプローブを上げる距離、Z_PROBE_REPETITIONSは繰り返し回数。Z_PROBE_HEIGHTの用途は不明。。
Z_PROBE_START_SCRIPT、Z_PROBE_FINISHED_SCRIPTはZプローブ開始前後で実行したいコマンドを記述します。サーボモータでZプローブを上げ下げしている場合などココに記述すると良いと思います。
ここまではZプローブに関する設定でした。後はオートベッドレベリングを有効(FEATURE_AUTOLEVEL true)にして、計測を行う3カ所の座標を設定すれば完了です。
/* Autoleveling allows it to z-probe 3 points to compute the inclination and compensates the error for the print.
This feature requires a working z-probe and you should have z-endstop at the top not at the bottom.
The same 3 points are used for the G29 command.
*/
#define FEATURE_AUTOLEVEL true
#define Z_PROBE_X1 45
#define Z_PROBE_Y1 0
#define Z_PROBE_X2 90
#define Z_PROBE_Y2 90
#define Z_PROBE_X3 0
#define Z_PROBE_Y3 90
Zプローブの動作確認
Zプローブを動かす前にZプローブが正しく動作しているかテストします。次のコマンドはZプローブの現在の状態を出力します。ZプローブがOFFの時はL、ONの時はHと出力されます。
G31
Z-probe state:L
次のコマンドで現在の位置でベッドまでの距離を計測します。G30
Z-probe:2.84 X:0.04 Y:0.00
オートベッドレベリング(自動水平調整)
Zプローブの動作が確認できたらオートベッドレベリングを有効にします。次のコマンドでベッドまでの距離の計測とZ方向の補正値を求めます。以降、オートベッドレベリングが有効になります。
G32
Z-probe:2.98 X:60.00 Y:10.00
Z-probe:3.02 X:110.00 Y:110.00
Z-probe:2.87 X:10.00 Y:110.00
Info: 1.00000 0.00000 -0.00152 0.00000 1.00000 0.00035 0.00152 -0.00035 1.00000
次のコマンドでEEPROMに補正値とオートベッドレベリングの有効状態が保存されます。EEPROMに補正値を保存すれば電源を切っても消えないのでベッドを交換するまで再調整の必要はありません。M500
次のコマンドでオートベッドレベリングの有効・無効を切り替えることができます。M320 ; 一時的にオートベッドレベリングを有効にする
M320 S2 ; 恒久的にオートベッドレベリングを有効にする
M321 ; 一時的にオートベッドレベリングを無効にする
M321 S2 ; 恒久的にオートベッドレベリングを無効にする
M322 ; 補正値をリセットする
M322 S3 ; 補正値をリセットして保存する
マニュアルベッドレベリング(手動水平調整)
オートベッドレベリングは必要ないけどプリントベッドの水平調整を楽に行いたい!という時は次のコマンドが使えます。
G29
Z-probe:2.98 X:60.00 Y:10.00
Z-probe:3.02 X:110.00 Y:110.00
Z-probe:2.87 X:10.00 Y:110.00
Z-probe average height:2.95
このコマンドはコンフィギュレーションファイルで指定した3カ所でベッドまでの距離を計測しその平均値を出力します。3カ所すべての距離が同じになるようプリントベッドの傾きを調整すると良いでしょう。参考リンク
Z-Probing with Repetier-Firmware
http://www.repetier.com/documentation/repetier-firmware/z-probing/
G-code - RepRapWiki
http://reprap.org/wiki/G-code#G29-G32:_Bed_probing
該当の記事は見つかりませんでした。