まずはこちらをどうぞ。
このマシンはZonestar P802QR、ウチの最初の3Dプリンタです。
いまウチでは3台の3Dプリンタを使い、φ38mmの紙管ですべての正多面体を作るべく、多数のジョイント部品を印刷しています。
十二面体ジョイント20個のプリントがようやく終わり、いまは二十面体ジョイント12個のプリント中です。
この動画のジョイントも正二十面体のもので、プリント幅が160 x 155 x 58mm、軽量なABSでプリントしても130g程あるという大物です。十二面体も70g弱とか。
こういうものを山ほどプリントしてると、フィラメントもあっという間に無くなっていきますが、ありとあらゆるプリント事故も起きます。
うちの3Dプリンタの中で、もっとも正確で高速なのはKingroon KP-3という機種なんですが、これは造形台サイズが180x180mmしかありません。おかげでこの巨大なABS物体をプリントしたところ、マグネットの造形シートがABSの反りに負けて剥がれてしまうという惨事が起きました。ABSで作ったオブジェクトが剥がれる、というのはよく聞くと思いますが、オブジェクトではなく造形台がゆっくり剥がれたので、だいぶえらいことになるまで気が付きませんでした。
上の方で右に曲がっているのがわかると思います。
もう一台、これは最近購入したTronxy X5SAという巨大な3Dプリンタもありまして、これは最大造形サイズが330 x 330 x 400mmもありますから、この巨大なオブジェでも4つ同時にプリントできたりします。
しかしこのマシンの造形台はツルシのままのプラシートで、ABSは張り付きがよくありません。安くて品質の安定したABSフィラメントが入手できたので、できるだけABSでプリントしたいわけですが、ともあれPLAでプリントしていたところ…。
おいしそうな卵焼きができました♪(ちがう
この機種、Z軸に問題があるようで、たまにZ軸だけ止まるということが判ってしまいました。大物印刷用に買ったのに…。0.6mmノズルも付けたのに…。こんな安定しないマシンではデカいプリントは怖くてできません。
そんなわけで消去法的に古いP802QRが第一選択となってます。この機械はステンレスフレームのPrusa i3互換機という触れ込みで、220 x 220 x 220mmの造形ボリュームを持ってます。2色プリント機の草分け的なP802QR2が有名なんですが、自分のやつはエクストルーダが1本しかないQRです。
ステンレスフレームならさぞかし頑丈だろうと購入したんですが、板材の曲げ方向やフレームレイアウト、はてはネジ穴の位置までイマイチな設計で、板厚の割にグニャグニャでした。自分のやつは補強を入れたり、ステッピングモータードライバチップをTMC2208に替えたり、造形台のプレートをPEI鋼板というバネ材の鋼板に定着用樹脂コートを施したものに替えたりしてあります。
さて、このP802QRですが、上の二十面体ジョイントのプリントには9時間ほどかかります。3Dプリンタの置いてある場所で寝てるので夜中は止めておきたい、ということで、1日に1個くらいしかできません。
それで今日も昼にプリントを仕掛けて、夜になって「そろそろ終わったかな〜」と見に行ったところ、こんな状態になってました。
終わってないw
どういうわけか、上の方がまったくプリントされてません。
しかしこれ、ごく初めの方で失敗とかなら潔く捨てるだけだし、完成間近だったらそのまま、あるいは軽く修復して使ってしまうところですが、半分ちょっとという絶妙にモッタイナイところで終わっちゃってます。
見る限り断面はきれいだし、造形台からも剥がれてないので、復活できそうです。
復活の手順
- 停止した高さを特定する
- G-Codeを編集する
- 編集したG-Codeでプリントする
これだけです。それではやってみましょう。
停止した高さを特定する
これは3Dプリンタで計測します。操作パネルのマニュアル操作でオブジェクト中央部に合わせ、Z軸を操作してギリギリまで近づけます。このときパネルに表示されるZの値が、プリントの止まったZ高さです。この値をメモしておきます。
可能であれば、この操作の前にはまず3Dプリンタの操作パネルからホームポジションを取ってください。ホームポジションのズレがないことを保証するためです。
何らかのトラブルがあったわけですから、どれかの軸のステッピングモータが脱調し、ズレた値を保持していることがありえます。このままプリントすると、ズレた場所に樹脂を吐いてしまうので台無しということになりかねないので、最初と同じゼロ座標を確保したいわけです。
G-Codeを編集する
プリント中のG-Codeファイルのコピーを取り、このZの位置からプリントを開始できるように編集します。これは:
に分かれます。
まずスタートGコードの余計な動きの排除です。コピーしたGコードをテキストエディタで開いてください。巨大なテキストファイルは検索置換が案外厄介なので、良質なエディタが良いです。
さて、スライサで出力したG-Codeには、出力前の下準備としてさまざまな操作が指定されています。この大部分は座標系の設定やヒートベッド/ホットエンドの加熱など必要なものですが、ノズルの初期化のために樹脂を吹くイントロラインのコードなど、かなりの動きを伴うものもあります。プリント済みの部分にヘッドが衝突したりしないよう、これらを排除します。
具体的には、スタートGコードの部分から
- XやYやZを伴うG1やG0(移動命令)
- ホームが取れない場合はG28(全軸ホーム命令)
の行を削除してください。
XYZを伴うG1やG0というのは、要するにE(エクストルーダ)以外の移動命令を削除するということです。 またG28は全軸をホームポジション(0, 0, 0)に移動して座標系をリセットする命令で、できれば残したいものですが、プリント済みのオブジェクトが大きすぎてホームが取れない(ホームポジションまで移動できない)場合は削除します。
次に、既にプリントしてある部分のGコードを削除します。
これはPrusa Slicerの場合ですが、あるレイヤーのプリントが終了して次のレイヤーのプリントに移る際にはレイヤーチェンジGコードが実行されます。この中にレイヤーの高さを記録してくれる部分があります。
レイヤー変更部分のGコードは次のようになっています:
;LAYER_CHANGE
;Z:29.45
;HEIGHT:0.25
;BEFORE_LAYER_CHANGE
G92 E0.0
;29.45
G1 Z29.450 F9000.000
;AFTER_LAYER_CHANGE
;29.45
これは高さ29.20mmのレイヤーから、29.45mmのレイヤーに移る際のGコードです。
上から2行目、;Z:29.45という部分が高さを記録している部分です。これを手がかりにします。
- テキストエディタでコピーし、特定した停止時高さを含むように検索(29.2mmなら「;Z:29」などとする)
- 検索結果から、次にプリントすべきレイヤーの高さを選ぶ
- スタートGコードの末尾〜選んだレイヤー高さの;LAYER_CHANGE行までを削除
とします。
これで再開用Gコードの出来上がりです。編集が終わったら「00restart.gcode」のような間違えようのない名前でセーブします。
編集したGコードでプリントする
要するにプリントすればいいです。注意としては:
- ノズルが温まったら手動でパージする
- レイヤーが合っているか観察する
があります。
前者はイントロラインを消してしまったために必要な部分です。ノズル内に滞留している古い樹脂の排除とノズルの初期圧確保がしたいので、ノズルがプリント温度に達するタイミングで手でフィラメントを押し込み、樹脂を何センチか吐出させておきましょう。
後者はGコード編集時に決めた「次のレイヤー」が合っているかどうかの答え合わせです。1レイヤー飛ばして高い位置にプリントすると汚くなりますし、低い位置にプリントすれば、ノズルがオブジェクトにめり込みます。
もともとの層厚が0.1mmなど非常に薄ければ、どちらも問題にならないかもしれませんが、今回の例のように層厚が0.25mmもあると、1層飛ばすだけで層間の定着が非常に悪くなり、このようなことになります:
逆に1層足りなかった場合、ノズルがオブジェクトを引きずって回復不能のダメージを与えることもあります。いずれにしても、すぐに止めればなんとかなるので、プリント再開だけで安心せず、ちゃんとしばらく観察するのがよいように思います。
そんなわけで午前4時。そろそろ再開したプリントも終了です。けっきょくえらい時間になってしまった…。
再開した部分、はっきり筋が入ってますね。
まあ無理やり再開しても、だいたいこんな感じではありますw