3D-PRT25)テスト印刷&ソフトウェア調整
2016.09.19
デルタ型3Dプリンターについて、
今できるハード的調整はやりつくしました。
疑わしいところはまだありますが、
これ以上はキャリッジやエフェクターの交換になりますので、
部品調達を行ってますが、それまで間が開きますので
一度区切りをつけます。
ということでテスト印刷をしたくなってきました。
どれくらい精度が上がっているのか気になりますよネ

調整用にいろいろ変更してますからね、
元に戻すのもちょっと面倒ですよ。

ノズルに交換して、さて動作確認。
って、アレアレアレ? ( ˘•ω•˘ ).。oஇ
液晶に「MINTEMP ERROR」
が出て先に進まない・・・・・。
また故障かよぉーーー

ヒートブロックを巻いてたカプトンテープを剥し、
綺麗に束ねていた配線とチューブをほどく・・
そして、サーミスタを交換。
正常に動作を確認。
そしてまた綺麗に纏める。メンドクサイ・・・
サーミスタが壊れやすいとは聞いていましたが、
まさか本当に壊れるとは思ってもいませんでした。
予備のサーミスタを買っておいてよかったよ
こまったときの予備はやはり必要だね!・・( ・ㅂ・)و ̑̑ グッ !

これで印刷できるわー。
では90mmX90mmの評価用モデルを印刷してみます。

http://www.thingiverse.com/thing:13441
XYZ-Circle_Cal_-_90mm.stl
印刷を実行!・・・・・・・  ん? ( ˘•ω•˘ ).。oஇ

ん?吐出されるフィラメントの量が異様に少ない
またもやトラブル発生です。オオスギダヨ!
ノズル詰まってるのかな?と疑ってみましたが、
原因はすぐ判明、モータードライバをA4988からDRV8825にしたことで
エクストルーダーのステップ量が変わってしまっていたこと。

XYZ_MICROSTEPSを32にするだけで
エクストルーダーも大丈夫だべ?とタカをくくっていたら
MarlinのConfiguration.hに
DEFAULT_AXIS_STEPS_PER_UNIT   {XYZ_STEPS, XYZ_STEPS, XYZ_STEPS, 150}
って書いてあることに気が付きます。エクストルーダーだけ数字が直書きじゃないですかー orz
XYZ_STEPって本当に軸だけの設定だったのね・・・
150を倍の300にして直接修正っと。これで解決。

気を取り直して再印刷です。
吐出量も安定して印刷が始まりました・・・が、またもやトラブル発生。 ( ˘•ω•˘ ).。oஇ
途中でエクストルーダーが止まったり動いたり不安定だ。
このような症状は、ドライバーの熱暴走ですなぁ・・・。
電圧の調整を行って・・
今は0.4Vまで下げてます。


はぁ、もう大丈夫だろう。
挫けず印刷っと。

そのときの動画はこちら(長いので最初だけ)


おおお、なんか精密感が増してる気がする。
印刷終了後、前に出力したものと比べてみます。
どちらも0.2mm積層でCuraEngineでスライスしました。
設定はデフォルトのまま。特に弄ってません。



左が古い物、右が今回印刷した物
明らかにきれいに印刷されてますね。
角もキレイにまとまってますし、反ってもいません。
塗りつぶしの処理も粗がなく見事に整列していますね。

ついでにタワー部分も拡大してます。



前作のタワーは、積層がはっきりしていて、まさにシマシマ。
調整後のは、同じ0.2mm積層にもかかわらず、
正確に積みあがっている感がしっかりしています。

ロッドの遊びが少なく、求める座標へ的確に動いているのがこれでよくわかりますね。
所々にブツブツができてますが、これはスライサーの調整でなんとかなるでしょう。

造形物の美しさは十分満足いくところまで来ました。
あとは、設計通りの再現性ですが、これは組み立て直後に行った、
角度チェックをもう一度やってみましょう。



スキマあるやん! ガッカリダヨ!  (´・ω・`)ショボーン
きっちり90度になり切れてない・・・
およそ0.5mmほどかな。
あれだけ、ハード周りを弄ったのに、結局最初の問題は解決できてないのか・・・ orz

だが、メゲナイよ!
最終手段のソフト調整で何とかするさね。
数学的なことは苦手なのであまり手を出したくなかったのですが、
そうも言ってられなくなってきました。

デルタ系のプリンターで高精度目指すのなら、三角形の寸法を測る必要があります。
そこで先人が作ったSTLを利用してデータを取得してみたいと思います。
それがこちら。
http://www.thingiverse.com/thing:745523
早速印刷してみます。
STLの作者が同梱している角度チェッカーが少々見にくいので、
そこだけ自分で作りました。
http://randol-news.net/download/checker.pdf
で、照らし合わせてみたのがコレ
 


写真でみると正確に出ているようにも見えますが、
肉眼でじっくり見ると、Y軸の角度が120.5に、
つまり0.5度ほど傾いているように見えます。
こちらをソフト的に修正してみましょう。

MarlinのConfiguration.hを開いて、

#define DELTA_TOWER1_X -SIN_60*DELTA_RADIUS
#define DELTA_TOWER1_Y -COS_60*DELTA_RADIUS
#define DELTA_TOWER2_X SIN_60*DELTA_RADIUS
#define DELTA_TOWER2_Y -COS_60*DELTA_RADIUS
#define DELTA_TOWER3_X 0.0
#define DELTA_TOWER3_Y DELTA_RADIUS


この部分を修正します。
その前に、どのように修正するかを考えます。
DELTA_TOWER1はX軸、DELTA_TOWER2はY軸、DELTA_TOWER3はZ軸を意味します。
私の場合はY軸が傾いてるので、SIN_60、COS_60と書いてあるところを
変更する必要があるわけです。
SIN_60、COS_60とは定数です。
数学の教科書の末尾に表になっていたのを覚えてますか?あれの値のことなんですよ。
同じConfiguration.hの中にそれを定義しているところがあります。

#define SIN_60 0.8660254037844386
#define COS_60 0.5


この部分がそうです。ここに60度以外の値を追加します。
今後のことも考え、周辺の角度も多めに追加しておきます。

#define SIN_58 0.8480480961564259
#define COS_58 0.5299192642332049
#define SIN_59 0.8571673007021122
#define COS_59 0.5150380749100542
#define SIN_59_5 0.8616291604415257
#define COS_59_5 0.5075383629607041
#define SIN_60 0.8660254037844386
#define COS_60 0.5
#define SIN_60_5 0.8703556959398996
#define COS_60_5 0.4924235601034671
#define SIN_61 0.8746197071393958
#define COS_61 0.4848096202463370
#define SIN_62 0.8829475928589269
#define COS_62 0.4694715627858907


ちょっと多すぎたかな?(笑)
でも、これだけ角度の設定があれば困らないでしょ?(笑)
STLを作成した方の説明を読むと、
180° - 軸の角度 = 修正角度
で導くらしい。180°というのはZ軸からの角度を意味しているらしい。
昔勉強した気がしたけど、脳が固くなって働かないので、素直にそのまま信じます。
つまりは、180 - 120.5 = 59.5
なので、私が用意した定数 SIN_59_5、COS_59_5を使います。

#define DELTA_TOWER1_X -SIN_60*DELTA_RADIUS
#define DELTA_TOWER1_Y -COS_60*DELTA_RADIUS
#define DELTA_TOWER2_X SIN_59_5*DELTA_RADIUS
#define DELTA_TOWER2_Y -COS_59_5*DELTA_RADIUS
#define DELTA_TOWER3_X 0.0
#define DELTA_TOWER3_Y DELTA_RADIUS


こんな感じかな。
ファームを焼いてテスト印刷。
角度が合っていれば次の工程に行きます。
私の場合は何故か一致せず、
59.5では求める120°から逆に離れていき121°になってしまいました。
ならば設定する値を逆の60.5にして印刷してみると、
なぜか角度が合致。
私の英語翻訳が間違っているのでしょうかね?ちょっと不安になります。


角度があったところで長さをチェックします。


X方向の長さ 59.66mm
Y方向の長さ 59.87mm
Z方向の長さ 60.34mm

60mmが設計上の値です。結構誤差ありますね。
寸法が狂うのはロッドの長さが狂っているというのが定番ですが、事はそう簡単ではありません。
ロッド長の精度に自信がある上に、ロッドごとエフェクターを回転させてテストさせたときに
全く同じ歪みを確認したこと。さらに、ロッドも前とはちがって交換した物です。
ロッド長に問題があったとしたら、全てが同じ結果になるわけがありません。

結局はキャリッジが原因ということです。まぁ、予想はついてましたけどね。
(現在、金属成形のキャリッジを注文中です。)
具体的に言いますと、3つのキャリッジの厚みがそれぞれ違う。
というか正確な四角を保って無く、歪んでいる。
3Dプリントで作られたパーツなので仕方ないのですが・・・・
(これから買う方は押出成形を最低条件にした方がいいでしょうね)
特にX軸のロッドを固定する左右の穴が目視レベルで傾いている。

この問題はX,Y,Z軸に接続されているロッドの長さにも影響を与え、
X軸に至っては、最悪なことに2本繋がっているロッドの片方だけ
極端にズレていると想像できます。
これはキャリッジの交換以外には完全に直しきれないなと諦めつつも、
ロッド長が狂っていたと仮定して処置を一応してみます。

ロッドは、X、Y、Z、それぞれ2本ずつ、計6本ありますが、
それらがすべて同じ長さであることが大前提となっています。
その為Marlinはロッド長をX,Y,Z軸、個別に設定できるようにはなっていないので、
ここを改造する必要があります。

まず、marlinのConfigration.hの
#define DELTA_DIAGONAL_ROD 217.3
を探します。217.3っていうのは現在定義されてるロッド長です。

そして、以下のように3行追加します。

#define DELTA_DIAGONAL_ROD 217.3  //元のロッド長
#define DELTA_DIAGONAL_ROD_X 217.3
#define DELTA_DIAGONAL_ROD_Y 217.3
#define DELTA_DIAGONAL_ROD_Z 217.3


元のロッド長の行全部をコメントアウトしてもしなくてもどちらでも構いません。


次に、Marlin_main.cppの中の

delta[X_AXIS] = sqrt(DELTA_DIAGONAL_ROD_2
- sq(DELTA_TOWER1_X-cartesian[X_AXIS])
- sq(DELTA_TOWER1_Y-cartesian[Y_AXIS])
) + cartesian[Z_AXIS];
delta[Y_AXIS] = sqrt(DELTA_DIAGONAL_ROD_2
- sq(DELTA_TOWER2_X-cartesian[X_AXIS])
- sq(DELTA_TOWER2_Y-cartesian[Y_AXIS])
) + cartesian[Z_AXIS];
delta[Z_AXIS] = sqrt(DELTA_DIAGONAL_ROD_2
- sq(DELTA_TOWER3_X-cartesian[X_AXIS])
- sq(DELTA_TOWER3_Y-cartesian[Y_AXIS])
) + cartesian[Z_AXIS];


この記述を探します。
結構後半ですので、検索機能を利用したほうがいいですね。
見つけたら以下のように変更します。
古い記述は消すのではなく、バグったときに戻しやすくするために
コメントアウトしておくといいですね。

delta[X_AXIS] = sqrt(DELTA_DIAGONAL_ROD_X2
- sq(DELTA_TOWER1_X-cartesian[X_AXIS])
- sq(DELTA_TOWER1_Y-cartesian[Y_AXIS])
) + cartesian[Z_AXIS];
delta[Y_AXIS] = sqrt(DELTA_DIAGONAL_ROD_Y2
- sq(DELTA_TOWER2_X-cartesian[X_AXIS])
- sq(DELTA_TOWER2_Y-cartesian[Y_AXIS])
) + cartesian[Z_AXIS];
delta[Z_AXIS] = sqrt(DELTA_DIAGONAL_ROD_Z2
- sq(DELTA_TOWER3_X-cartesian[X_AXIS])
- sq(DELTA_TOWER3_Y-cartesian[Y_AXIS])
) + cartesian[Z_AXIS];


これで軸ごとに長さを設定することができます。
さて、それぞれのロッド長がそれぞれどれくらい狂っているか
調べる必要があります。
それは、Excelに式をいれて値を導きましょう。

rod_adjustment.xlsx

雑に作ったので見た目は不細工ですが、結果がでればいいので十分です。
ここで導いた値をさっきの用意した定数に入れ込みます。
私は少数第4位まで設定しました。

#define DELTA_DIAGONAL_ROD_X 216.6834
#define DELTA_DIAGONAL_ROD_Y 217.0645
#define DELTA_DIAGONAL_ROD_Z 217.9148


これでファームウェアを焼き付けて、同じようにテスト印刷。


Z軸の長さ 59.93mm
X軸の長さ 60.04mm
Y軸の長さ 59.99mm
かなり補正されましたね。

最後にhttp://www.thingiverse.com/thing:13441
XYZ-Circle_Cal_-_90mm.stl
これを印刷してみます。

結果の写真を取り忘れてしまいましたが、
完全に隙間を取り切ることは出来ず。
しかし、目視で隙間を0.2mmほどまで詰めることが出来ました。

あと一息です。

- CafeNote -