BS01+にABL(オートベッドレベリング)を搭載する。その2。
前回は、IRセンサーを取り付けましたが、私のBS01では精度が出ないので取り付けを諦めました。
それでもやっぱりABLはやりたいので、しょうがないので、余っていた電磁誘導型のセンサーを取り付けてみることにしました。
ただ、このセンサー取り付けると他と干渉してしまうので、造形可能サイズが小さくなってしまいます。
電磁誘導センサー
LJ12A3-4-Z/BX New Inductive Proximity Sensor Detection Switch NPN DC 6-36V – AliExpress
今回使ったのは、このセンサーです。
これはEnder-3でABLする時にAliexpressで購入したのですが、買ったことすら忘れてずっと放置していました。
今回ふと「あれ?あの時買わなかったっけ?」と思い出して部屋中をかき分けて発掘した次第です。
このセンサーは、Ender-3で使っているセンサーより直径が少し小さく12mmとなっています。
このセンサーの検出距離は公称4mmとなっていますが、私の環境では2mm弱です。
Ender-3で使っているセンサーは直径18mm、検出距離は公称8mmですが実測4mm弱。
電磁誘導センサーは公称検出距離より短くなる傾向を感じます。
私のBS01はアルミの板にビルドタックを貼り付けているので、検出距離2mm以下でもなんとか使えますが、もう少し余裕が欲しいところ・・・
マウント
BS01へは、このようなマウントを作って取り付けました。
結構シンプルなマウントになりました。
M6のネジ1本でヘッドのブロックに取り付け、センサーはM3のネジで締め付けて取り付ける感じです。
BS01+にはデュアルノズル用のネジ穴が開いているので、その穴を利用して、ヘッドの後ろ側に取り付けました。
ノズル用の穴はM6のネジが始めから切られてあります。
この位置にセンサーを取り付けると、Y軸を一番後ろに移動させた時、Z軸のロッドを支えている天板に干渉してしまいます。
ここは、ファームウェアの書き換え時に3mm程造形エリアを小さくすることで対処しました。
他にもY軸のモーターにセンサーが干渉しますが、ここをファームウェア書き換えて造形エリアを小さくすると20mm程小さくしないといけません。
BS01でそんなに大きな物をプリントすることは無いですが、でも造形エリアが小さくなるのはなるべく避けたいので、ここは造形エリアはそのままで、ヘッドがこの位置に行かないように気をつけるようにします。
接続
今回使ったセンサーもEnder-3に使ったセンサーと同様、出力はNPN-NOとなっています。
センサーの電源電圧も6~36Vと同じなので、Ender-3に使ったフォトカプラを使った接続回路と同じものを作りました。
Ender-3用との違いは、BS01の電源が12Vと言うこと。
電圧が下がったのでフォトカプラ用の抵抗を1Kに変更しました。
写真左のBR,BK,BUをセンサーに接続して、+12,S(Limit Z-),GNDをBS01のメインボードに取り付けます。
この写真だと分かりにくいですが、BS01のRAMPS基板のこの辺りに接続しました。
電源の+12Vは、E1(2ndエクストルーダー)のモータードライバー用の端子から取り出しました。
どこでも良かったのですが、ここが一番簡単そうだったので
ファームウェア
取り付けが終わったので、ファームウェアを書き換えます。
ファームウェアは前回のBS01にMarlin1.1.9を書き込んだ時の物をベースに編集しました。
編集した箇所の詳細書こうか悩みましたが、とりあえずファイルだけアップしておくことにしました。
どこを書き換えたかは、Diffツールとかで見れば分かると思います。
MarlinConfiguration_for_BS01p_ABL.zip
中のファイル3つをMarlin1.1.9に上書きすればそのまま使えると思います。
精度
ファームウェアも無事書き換えられたので、早速M48コマンドを使ってテストしてみました。
M48 Z-Probe Repeatability Test Positioning the probe... Bed X: 73.000 Y: 63.000 Z: 0.003 1 of 10: z: -0.011 mean: -0.0109 sigma: 0.000000 min: -0.011 max: -0.011 range: 0.000 2 of 10: z: -0.011 mean: -0.0108 sigma: 0.000156 min: -0.011 max: -0.011 range: 0.000 3 of 10: z: -0.011 mean: -0.0107 sigma: 0.000147 min: -0.011 max: -0.011 range: 0.000 4 of 10: z: -0.011 mean: -0.0107 sigma: 0.000135 min: -0.011 max: -0.011 range: 0.000 5 of 10: z: -0.011 mean: -0.0107 sigma: 0.000125 min: -0.011 max: -0.011 range: 0.000 6 of 10: z: -0.011 mean: -0.0107 sigma: 0.000116 min: -0.011 max: -0.011 range: 0.000 7 of 10: z: -0.011 mean: -0.0107 sigma: 0.000109 min: -0.011 max: -0.011 range: 0.000 8 of 10: z: -0.010 mean: -0.0106 sigma: 0.000156 min: -0.011 max: -0.010 range: 0.001 9 of 10: z: -0.010 mean: -0.0106 sigma: 0.000177 min: -0.011 max: -0.010 range: 0.001 10 of 10: z: -0.010 mean: -0.0106 sigma: 0.000188 min: -0.011 max: -0.010 range: 0.001 Finished! Mean: -0.010562 Min: -0.011 Max: -0.010 Range: 0.001 Standard Deviation: 0.000188
電磁誘導センサーなので、なかなかの精度ですが、Ender-3で電磁誘導センサーをテストした時よりもさらに良い結果です。
これは多分、BS01のZ軸の分解能がEnder-3よりも高いからじゃないかと思います。
ちなみに、BS01のZ軸の分解能は 0.0003125mm、Ender-3のZ軸の分解能は 0.0025mm
続いてG29コマンドの実行結果を見てみると・・・
実行結果 | 1回目との差 | 2回目との差 | |
---|---|---|---|
1回目 |
Bilinear Leveling Grid: 0 1 2 0 -0.058 +0.046 +0.066 1 -0.078 -0.026 -0.049 2 -0.082 -0.070 -0.079 |
||
2回目 |
Bilinear Leveling Grid: 0 1 2 0 -0.048 +0.057 +0.083 1 -0.064 -0.019 -0.039 2 -0.072 -0.062 -0.068 |
0 1 2 0 0.01 0.011 0.017 1 0.014 0.007 0.01 2 0.01 0.008 0.011 |
|
3回目 |
Bilinear Leveling Grid: 0 1 2 0 -0.044 +0.057 +0.076 1 -0.070 -0.022 -0.038 2 -0.071 -0.056 -0.062 |
0 1 2 0 0.014 0.011 0.01 1 0.008 0.004 0.011 2 0.011 0.014 0.017 |
0 1 2 0 0.004 0.0 0.007 1 0.006 0.003 0.001 2 0.001 0.006 0.006 |
1回目と2,3回目の結果の誤差が大きくて、これはEnder-3&BFPTouchと同等かそれ以下。
2回目と3回目の誤差はかなり小さく、これはEnder-3&電磁誘導センサーと同等かそれ以下。
と言うような結果がでました。
1回目と2,3回目の結果の誤差が大きくて再現性が悪いなと思いますが、これはもしかするとBS01特有のヘッドのぐらつきが有るからかなと思ったりします。
でも、全ての結果は許容範囲内の数値なので、しばらくはこれで様子を見ようと思います。
と言う訳で、
BS01でもABLが使えるようになりました。