SSブログ

日記代わりのまったりブログ。

PSO2はShip5にMILAIでよく現れる。 話しかけると中の人が反応するかも?
『PHANTASY STAR ONLINE 2』公式サイト
http://pso2.jp
-------------------------------------------
[コピーライト]SEGA 『ファンタシースターオンライン2 ニュージェネシス』公式サイト
https://new-gen.pso2.jp/
<お断り>
当ブログの記事は商用・非商用に関わらず引用および転載、URL貼り付け等を一切禁止させていただきます。

Marlinのベッドサイズとホームオフセット値の関係。 [Ender-3系]

さて、本日はお時間取れるので書いてすぐ出しちゃいますか。
まだ記事にしていませんが、先に書いておかないといけないかなと思ったので。

10月に届いたPrinterMods.comの「Xchange」ですが、その後組み付けができずに寝かせていまして、やっと今月組み付けを終わらせました。
DSC_0155.JPG
組み付けの話はまた後日別記事で。

これの動作確認のためにツールチェンジを実際にやってみたところ、問題発生している感じです。
というか、Marlinの仕様に翻弄されているといった方が良いかもしれません。

Marlinのメニューにツール変更を追加するのを以前記事にしていますが、追記で修正すると入れました。
実は「全く間違っていない」のでアレで大丈夫ですが、Marlinの使い方というか3Dプリンターの使い方でヘッドにレーザー刻印機をつけたりできるようになり、メニューの位置をコンフィグより前に出すことができるようになってるので、改めて書くときは新規で記事にします。


で、何が問題になっているかというと「ツール間の構造差による数値を反映させた結果、X軸のMAXがどうしても減少してしまう」という状態を直せないというところ。

通常、Marlinのリミットスイッチを使って原点出しをするときに、スイッチが押されたところを最小にしてそこの座標を「0」にするのかどうかという設定を入れます。
基本は「0」で良いのですが、ツール変更をするとなると切り替えなきゃいけない。
ということでメニューでgcodeの「M206」を使って「ホームオフセット」を入れて対応させるわけですが…
このホームオフセットの値の扱い方がMarlinではエラい癖があるのに気がついちゃった感じです。

結果から言うと、

ベッドサイズで移動範囲を指定した状態でX軸(もしくはY軸)の最小値を設定した場合、
「ベッドサイズの座標系が指定した数値で全体的に移動してしまう」

という感じです。
…余計な計算してるよもう;
Marlinの記述で回避できるコードがないか調べたりしたんですが見つからず、gcodeでなんとかならないか調べても見たんですが現在まだ解決していません。

で、ここからはツールチェンジメニューを入れるときのgcodeで指定した座標系数値の扱いの癖をば。

Configuration.hの各軸の最小値・最大値で基本の機構としての動作範囲がまず置かれます。
これに対して、gcodeで指定して出すM206(ホームオフセット再設定値)やM218(ホットエンドオフセット)の値は「ベッドサイズ指定の数値に加算されて処理される」という状態になります。

つまり、M206で指定してツールヘッドを変更する場合は最初の「最小値」からその分を引いた数字で入力する必要がある(リミットスイッチを最小値として扱う場合)ということです。
この状態でSoftware Endstopが有効になっていると…なんと「リミットスイッチで与える数値を最大値に加算して設定」してしまうのです;

イメージで言うとX軸のみに限定して例を示しますと…

ベッドサイズを235mmで指定して、最小値を「0」とする
   →「0~235」でX軸が動作する
 ↓
ベッドサイズを235mmで指定して、最小値をヘッドの位置に合わせて「-20」とする
   →「-20~215」でX軸が動作する

という、全体の動作範囲がスライドする状態になってしまうのです。
アレですな、最近のホビーRCカーの調整項目にある「サブトリム」みたいなお話。
なので、使いたい範囲が外にまだあるのにそこまで行ってくれないのですよ;

地味にこれが困る;
今どうやって回避するか考えていますが、最終的には物理的な処理をする可能性があります。
どうするかというと…「Xchangeの交換プレート側にそれぞれのリミットスイッチ用のあて板を取り付ける」ですね。
これが一番手っ取り早い。
というかXchangeがKickstarterで出たことを紹介するyoutube動画で最初はツールヘッド側にBL Touchをつけず、本体側にリミットスイッチを押すブロックごと印刷して挟み込んでるんですよ。
それに合わせて各種ツールの構成が決まってた感じなので、何でこんなことを?って思ってたんですがどうやらMarlinの仕様のせいじゃないかなと。

これでやるのであれば、Marlinに記述しなくてもモデルで出力させておけば勝手に良い位置に合ってしまうわけで問題ないですし、Cura側も気にして設定別に作る必要もない。

というわけで、とりあえず今どうやって直すかを考えつつという感じです。

0点調整で与える座標値を単純にくっつけるだけで良いのに、なんで範囲ごと動かす計算式入れてしまっているのか、ちょっと理解に苦しむなと思っているところです;

どーにか簡単にできないだろうか…;


<2021/12/18 追記>
対策を考えているうちに、その間印刷ができない状態なのも問題になってしまうので、
BMG+V6のダイレクトマウントの構成変更ついでに、Hemera共々リミットスイッチを押すブロックを個別に作成することにしました。
やはりあのMarlinの処理を見ていると「X_MIN_POS」に数字を入れて修正したくありません;
悩むくらいなら使える方が先、という考え方をとることにします。

まさかのATOMがピンチヒッターで登場という、作っておいて良かった結果が出ました(^^;
ホントどうしようかと思いましたよ;

<2021/12/21 追記>
その後調整を繰り返していて気がついてリミットスイッチの位置以前の問題を確認したので、Hemeraの取り付けブラケットを新設しました。
というのも、Xchangeの専用取り付け穴を使ってEnder-3に取り付ける場合、ノズルの位置の関係でX軸右端でリニアガイドの移動範囲が足りなくなり、210mm付近で移動距離が足りなくなります。
※つまりHmemeraのノズルはEnder-3にXchangeを介して載せた場合、位置が合わないのでgcode以前の問題を起こします。

またXchange組み付けの記事の時に詳細を書きますが、今回はBMGエクストルーダー+V6ホットエンドのダイレクトドライブを基準に使っているので、そちらに合わせたHemera用ブラケットを作成してオフセット搭載としました。

結構つじつま合わせが多いですなぁ;



コメント(0) 

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。
スマートフォン専用ページを表示