2021年4月21日水曜日

石定盤 自作3Dプリンタ、homing、auto leveling

3Dプリンタを作ろう!

今回のお題は2つ.
1)BL-Touchの模造品を使ったhoming動作
2)BL-Touchの模造品を使ったauto leveling動作

homingというのは原点自動調整と思えばいいです.
auto levelingというのは、ステージの水平度自動調整と思えばいいです.

ところでBLで腐女子のBLを思い出してしまうのですがなんとかなりませんか?


【座標定義とMarlin config】
Marlinを自作3DPに適用した場合のステージの座標定義について述べておきます.これを理解しないと、Marlin Configurationにある各種寸法定義を記述できません.

↓ステージの土台には3点支持のスプリングが入っていて、ステージの水平を調整できるようになっています.人力で高さ調整するのが原始的なやり方ですが、ステージの傾きをMarlinで補正することも可能です.それをauto levelingと呼びます.
↓ステージ土台の上に、200x200mmのガラス(鏡)を載せます.これがステージになります.この上に加工物を成形します.
↓ガラスステージの座標はこのように定義されます.単位はmmです.ここまでは単純で判り易いのですが、、、ここから先がややこしいです.

実際には、200x200mmはXY軸可動範囲の一部にしか過ぎません.XY軸は200x200mmよりも少し広い可動範囲を持っています.つまり、アンダーラン寸法とオーバーラン寸法がなにがしか在るわけです.Marlin configにはアンダーラン寸法を記述する箇所があります.
↓その辺を図示したのがこれです.
黒い枠がXY軸の可動範囲を示します.
赤丸はノズルです.ブルーはステージ.
ノズルは赤のライン上を左右に動きます.すなわちX軸です.
ステージは青のライン上を前後に動きます.すなわちY軸です.

まずX軸について考えますと、x=0にノズルを移動させても、メカニカルにはそれよりも-20mmだけ動かす余地があります.動かす余地があるとは、min end stop SWが働くまでに20mmの余裕があるという意味です.この-20mmがXアンダーラン寸法です.

次にY軸について考えます.ノズルがy=0に位置するようにステージを移動させると、上図の左の配置になります.わたしの機ではこの位置からさらにステージを56mm移動可能です.移動可能の意味はmin end stop SWが働くまでに56mmの余裕があるという意味です.これはつまり、y=-56mmまでアンダーランさせ得ると言ってます.-56mmがYアンダーラン寸法です.

なお、オーバーラン寸法は、(max end stop SWを装備していないので)壁にぶち当たるまでにあと何mm余裕があるかで定義されます.しかしMarlin configにはこれを記述する箇所はありません.

以上を踏まえて、MarlinのCnfiguration.hを書き換えます.
ステージのサイズ
#define X_BED_SIZE 200
#define Y_BED_SIZE 200
原点調整後の可動可能範囲.
#define X_MIN_POS -20
#define Y_MIN_POS -56
#define X_MAX_POS 200
#define Y_MAX_POS 200

「max end stop SWを装備していない」と書きましたが、configではここです.
#define USE_XMIN_PLUG
#define USE_YMIN_PLUG
//#define USE_XMAX_PLUG     ←maxはコメントアウトしてあるから存在しない
//#define USE_YMAX_PLUG     ←maxはコメントアウトしてあるから存在しない

ステージの端部(200mm地点)よりも先に行かないようsoft的に制限しています.
#define MAX_SOFTWARE_ENDSTOPS


【BL-TouchについてのMarlin config】
BL-Touchのconfigは多くの箇所を変える必要があり、ここではその全部を網羅せずに要点だけです.

まず、このコメントアウトを外してBLTOUCHを活かします.
#define BLTOUCH

homing時にZ軸高さ測定する場所は(100mm,100mm)の場所、すなわちステージ中央でやってくれよなと指定します.
#define Z_SAFE_HOMING_X_POINT 100 // X point for Z homing
#define Z_SAFE_HOMING_Y_POINT 100 // Y point for Z homing

これは、ノズルを基準にしたBL-Touchの取り付け位置{x,y,z}を記述します.
#define NOZZLE_TO_PROBE_OFFSET { 0, -35, 0 }
わたしの3DPではノズルとBL touchはX軸線上なのでX=0です.Yは手前に35mmずれています.Zは2~3mmぐらいズレているのですがまだ追い込んでいませんのでとりあえずz=0.

【動画コーナー】
それではいつものようにメカトロを動画で楽しみましょう.

まずは、homing動作です.MarlinではG28コマンドです.
X→Y→Zの順でhome positionを決めています.
XとYはend SWがオンするまで走行して止まるのが基本動作です.
ZはBL Touchでステージ表面を捉えています.2度やってます.

BL Touchの動作がけったいなので拡大動画です.
BL Touchは、ピンの動きをセンスするホール素子と言えます.ただし、邪魔な時はピンが収納され、センスする時だけピンが飛び出してきます.そのストロークが6mmぐらいあります.
↓ノズルは6mmストロークの中間高さに配置されるので、高さセンス時にはピンが先にステージに衝突します.印刷時にはピンは収納されるのでノズルがステージに接触します.

次に楽しむのは、auto levelingの動作です.MarlinコマンドG29です.ステージの9点の高さを測定しています.測定完了するとserial monitorにはこのような表示が出ます.中央部を基準にした傾きをmmで表示してくれていると思われます.手動調整の助けにもなるでしょう.便利な機能です.
>       0      1      2
>  0 +0.900 +0.350 -0.710
>  1 +0.680 -0.020 -1.000
>  2 +0.230 -0.450 -1.400

今宵はこれまでにしとうございます.


かしこ


【おしらせ】
当ブログで書き散らかした3DPの投稿をまとめたノウハウ集を作りました.ダウンロード販売しています.¥660です.
pdfをダウンロードしていただけます.全36ページ.

3DP印刷部品のstlファイルを無料ダウンロードできます.
Marlinのvscode project folder詰め合わせも無料ダウンロードできます.

まずは無料立ち読み版をご覧になってはいかがでしょうか.(pdf)

よろしくでーす.

2 件のコメント:

  1. 凄い! 如何にもそれっぽくなって来ましたね!!。
    ヘッドをレーザーに替えてエングレービングや、カッター刃付けてカッティングシートを切り出したりなんかも出来そう。

    返信削除
    返信
    1. エングレーバーとしても使えるマルチ機種もありますね.

      なにしろMarlinに感謝です.

      削除