3Dプリンターのテーブルの水平を確認するG-codeを作ってみた

E指令がだいたい分かったので、テーブルの水平を確認するプログラムを作ってみる

テーブルの8割ぐらいの外周から、フィレメントを出しながら

内側に3周するようなプログラム

均一にフィレメントが載れは、水平だしは、問題ないとします

私のFinder は、角140mmのテーブルなので、100mmの四角から内側に入るような

動きにしよう。

FlashPrint が吐き出すコードと同様に、最初の外周のみは、

通常の3倍程度フィレメントを多く出すことにします。

作成したG-codeはこんな感じ

;start gcode
M118 X50.00 Y50.00 Z10.00 T0
M140 S0
M104 S210 T0
M107
G90
G28
M132 X Y Z A B
G1 Z50.00 F400
G161 X Y F3300
M6 T0
M907 X100 Y100 Z40 A80 B20
M108 T0
G1 X40.00 Y40.00 F4800
;preExtrude:0.20
G1 Z20.0 F400
G1 Z2.0 F100
G1 Z0.20 F40
;preExtruder:0.145L
G1 X50.00 Y50.00 F1800
G1 X-50.00 Y50.00 E14.5 F1200
G1 X-50.00 Y-50.00 E29.0
G1 X50.00 Y-50.00 E43.5
G1 X50.00 Y50.00 E58.0
;start:0.05L
M106
G1 E56.7 F1800
G1 X40.0 Y40.0 F1800
G1 E58.0 F1800
G1 X-40.00 Y40.00 E62.0 F800
G1 X-40.00 Y-40.00 E66.0
G1 X40.00 Y-40.00 E70.0
G1 X40.00 Y40.00 E74.0
;0.05L
G1 E72.7 F1800
G1 X20.0 Y20.0 F1800
G1 E74.0 F1800
G1 X-20.00 Y20.00 E76.0 F600
G1 X-20.00 Y-20.00 E78.0
G1 X20.00 Y-20.00 E80.0
G1 X20.00 Y20.00 E82.0
;end
M107
G1 E80.7 F1800
;end gcode
M104 S0 T0
G162 Z
G28 X Y
M132 X Y Z A B
G91
M18

これを、FlashPrint にドロップすれば、思惑通りの動きがシミュレートされます

でも本当は最初はうまくいかなかった。

実は、G-code を入力するとき、各指令のワードをくっ付けていました

そうするFlashPrint はうまく読み込めないみたい。ワードはスペースで区切ったほうがいいみたい

早速プリント。

最初の外周は、フィレメント量も3倍なので、結構いい感じで進んでいます

内側に入ると、はがれてきた。

再度、内側だけスピードを落として

ちょっとZを下げて(Z0.2 ⇒ Z0.15)みたけどあまりかわらなかった

でも、まぁ、外周がこれだけ張り付いていれば、テーブルの水平はOKじゃないかなぁ

これで、ランニング運転用と、テーブル水平だし用と、テーブル確認用のプログラム完成

Finder は一度実行すると、本体側にプログラムは保存されているので

いつでも、実行できます。

3DプリンターGコードのE指令とは?

調べると、Eはフィラメントを押し出す長さを指令するアドレスみたい
そこで、FLASHFORGE Finder に同梱されている、
20mmブロックのサンプルコードのE指令の部分を抜粋して見てみると




;preExtrude:0.20
G1 Z.20 F400
;preExtruder0
G1 X-15.00 Y15.00 F4800
G1 X-15.00 Y-15.00 E4.3504 F1200
G1 X15.00 Y-15.00 E8.7009
G1 X15.00 Y15.00 E13.0513
G1 X-15.00 Y15.00 E17.4017
;raft
;layer:0.28
G1 Z.28 F400
;shell
M106
G1 E16.1017 F1800
G1 X-9.40 Y-9.40 F4200
G1 E17.4017 F1800
G1 X-9.40 Y-9.40 F4200
G1 X-8.40 Y-9.40 E17.4525 F1200
G1 X-7.40 Y-9.40 E17.5032
G1 X-6.40 Y-9.40 E17.5540


G1 X-9.40 Y-9.30 E25.1971 F300
;infill
G1 E23.8971 F1800
G1 X-9.03 Y-9.06 F4200
G1 E25.1971 F1800
G1 X-9.03 Y-9.06 F4200
G1 X-9.06 Y-9.03 E25.1992 F1200
G1 X-9.06 Y-8.47 E25.2276



どれくらい出しているのか?
まず、「preExtrude」部から計算すると
軸移動量 30mm で、E4.35mmの押し出し
1mmで換算すると、0.145mm

次に「shell」部
1mm -> 0.05mm

「infill」部
0.0424mm -> 0.0021mm
0.56mm -> 0.0284mm
1mmで換算すると、0.05mm

ここまでで考えると、通常の印刷では
1mm の移動量に対して、押し出しは 0.05mm
最初の押し出しは、通常印刷時の約3倍

1mm で、0.05mm の関係は?
フィレメントの素材径と印刷時の径から考えてみる
フィレメントφ1.75mmが0.05mm押し出された体積からみると
1mmの長さになる時の径は、約φ0.4mm
う~ん、これは、エクストルーダの穴径と同じ
そういう事なのかな?

そうだとすれば、
φ1.75のフィレメントでエクストルーダーの穴径φ0.4の場合
移動距離×0.05 でE指令の値が算出できそう!

後気がついたのは

G1 X-9.80 Y-9.70 E25.1875
G1 X-9.40 Y-9.30 E25.1971 F300
;infill
G1 E23.8971 F1800
G1 X-9.03 Y-9.06 F4200
G1 E25.1971 F1800
G1 X-9.03 Y-9.06 F4200
G1 X-9.06 Y-9.03 E25.1992 F1200


印刷しない場所を移動する時には
E23.8971 – E25.1971 = -1.3mm

1.3mmバックさせてるみたい

FLASHFORGE Finder テーブル水平だし用 G-code を作成してみた

テーブル水平だしG-code 、結局途中で一時停止する方法がわからなかったので

4個のプログラムを作成しました

  1. 左手前、ゲージ高さ20mmで停止するプログラム
  2. 右手前、ゲージ高さ20mmで停止するプログラム
  3. 中央奥、ゲージ高さ20mmで停止するプログラム
  4. ホームポジションへもどるプログラム

この4個

1.で停止したら、20mmのゲージをノズルの下側へ持って行き、調整ネジでノズル先端を合わせます
直接だと怖いので、紙を間にはさんで、左右に動かしながら、若干あたりを感じる場所で調整

2,3も同様に調整ネジで調整し、4で終了
確認として、20mm_BOXを印刷してみました

最初から、ほとんど問題なさそうなので、強制終了しましたが、正常に印刷できてます

なんとなくですが、本体の半自動の水平だし機能よりも水平精度はよいように思えます

作成したG-code は下記

指定Z値は、挟む紙(厚さ0.1mm)を考慮して、Z20.1mmで設定

1.

;start gcode
M140 S0
M107
G90
G28
M132 X Y Z A B
;bigin data
G161 X Y F3300
G1 Z20.100 F400
;end data
M107
M104 S0 T0
M132 X Y Z A B
G91
M18

2.

;start gcode
M140 S0
M107
G90
G28
M132 X Y Z A B
;bigin data
G162 X F3300
G161 Y F3300
G1 Z20.100 F400
;end data
M107
M104 S0 T0
M132 X Y Z A B
G91
M18

3.

;start gcode
M140 S0
M107
G90
G28
M132 X Y Z A B
;bigin data
G01X0 F3300
G162 Y F3300
G1 Z20.100 F400
;end data
M107
M104 S0 T0
M132 X Y Z A B
G91
M18

4.

;start gcode
M140 S0
M107
G90
G28
M132 X Y Z A B
;bigin data

;end data
M107
M104 S0 T0
M132 X Y Z A B
G91
M18

FLASHFORGE Finder 水平だし用 G-code検討

Finder には水平だし機能があるから、あえて作る必要はないですが、先日作成したソフトを使ってセンサーを使わずに水平だしするようなG-code を試みてみました。

どんな風に動かしたいか・・・

  1. ヘッドをテーブルの左手前まで移動させ、テーブルを任意の高さまであげる
    たとえば、サンプルで作った20mmブロックをゲージとして使用する場合、指令値はZ+20mm
  2. ここで停止させ、20mmブロックに、調整ネジでヘッド先端を合わせる
  3. 次に、右手前まで、移動して停止
  4. ここでも、20mmブロックに合わせる
  5. X軸センター、Y軸一番奥へ移動して停止
  6. 同様に、20mmブロックに合わせる
  7. ホームポジションにもどり終了

こんな感じの、G-code を作りたい

G-code 的には簡単なので、すぐにできると思っていたけど、途中で停止するコードがわからない

NCコードの場合は、停止は、M0かM1なので、それでやってみたけど、それを読むと、その場所で停止しないで、ホームポジションまでもどって停止する。

う~ん、これじゃ、20mmブロックにヘッドを調整する事ができないなぁ~

ネット調べると、M25 や M226 でもいけそうだったけど、これも同様に動き

M116 もやってみたけど、このコードでは、センサーが出てきた。

ダメかぁ~

一箇所、ごとに、3個のプログラムにしなければだめかなぁ?

今日は、眠い。ここまで・・・

もし、ご存知のかたいらっしゃったら、教えてください

FlashPrint エディター

FlashPrint 用のG-codeデータを編集できるソフトを作成してみました

基本的には、データを保管するフォルダを新規作成して、そのフォルダをドロップして適当に編集後、「Create」ボタンを押すだけです

入力したG-codeのテキスト分の先頭に、FlashPrint 特有のヘッダー情報を自動挿入しファイルを作成します

このファイルは、FlashPrintで直接読み込めるようになります

すでに作成されている、G-codeデータをドロップすれば、編集可能となります

サンプルとして、FINDER のランニング用データを作成し同梱してみました

エクストルーダを暖めた後、テーブルを下げ、テーブルの最大最小を移動し、最後に若干フィレメントを押し出して終了となります

ソフトはVector に登録しましたが、まだ古いバージョンです

Vectorでも更新されました

[Vector] ライブラリ公開のお知らせ

こちらのほうが新しいです

こちらからでも、ダウンロードできます

http://www.geocities.jp/sako_sho_kei/temp/EditorForFlashPrint.zip

もし興味あれば、ダウンロードしてみてください

次回はこいつを使って、テーブルの水平だしをする、G-codeを作ってみようかと思っています

FLASHFORGE FlashPrint が吐き出した G-Code を覗いてみた。

NC工作機械のGコードは仕事でも携わってきたので
3DプリンターのG-codeにも興味がありテキストエディタで覗いてみた
テキストエディタでは、ヘッダー部分はたぶんバイナリデータなんだろうね?
文字化けの文字が並んでて、その後、G-code部分はテキストで出てくる
改行文字は通常のWindowsのテキストの「CR,LF」ではなく「LF」のみ・・
これは、FANUC系の工作機械と同じだね
なので、「メモ帳」では改行されないで、連続文字に見えるかもしれない
私の使ってる秀丸エディタは自動認識で正常に表示してくれた
さて、FLASHFORGE FINDER に同梱されていたサンプルデータ「20mm_Box.gx」
を覗いてみると、下記の感じ

;start gcode
M118 X15.00 Y15.00 Z10.00 T0
M140 S0
M104 S210 T0
M104 S0 T1
M107
G90
G28
M132 X Y Z A B
G1 Z50.00 F400
G161 X Y F3300
M6 T0
M907 X100 Y100 Z40 A80 B20
M108 T0
G1 X-15.00 Y15.00 F4800
;preExtrude:0.20
G1 Z.20 F400
;preExtruder0
G1 X-15.00 Y15.00 F4800
G1 X-15.00 Y-15.00 E4.3504 F1200
G1 X15.00 Y-15.00 E8.7009
G1 X15.00 Y15.00 E13.0513
G1 X-15.00 Y15.00 E17.4017

…実際のプリント動作指令

G1 X9.03 Y-9.06 E737.1908
G1 X9.06 Y-9.03 E737.1922
M107
;percent
G1 E735.8922 F1800
;end gcode
M104 S0 T0
G162 Z
G28 X Y
M132 X Y Z A B
G91
M18

G1やG90など、NC工作機械にも馴染みのコードもあるけど
主に機械の補助的機能を指令するMコードはあまり互換性がない
調べてみると下記サイトが見つかった
http://reprap.org/wiki/G-code

これみると
G00 位置決め(早送り)
G01 直線補間(切削送り)
G02 円弧補間・時計回り
G03 円弧補間・反時計回り
G04 ドウェル・一定時間停止
G28 機械原点復帰(指令軸のホームへ移動)
G90 絶対座標系(アブソリュート指令)
G91 相対座標系(インクレメンタル指令)
M06 工具交換
ここらは、NC機械と同じですね

プリンタ特有なのは
M118 ?よく分からない。プリントの最大値なのかな?
M140 ベット温度設定。これはFINDERではあまり関係なさそう
M104 エクストローダー温度設定。
M107 ファンOFF
M132 軸のオフセット設定?よく分からないが初期設定みないなものかな?
G161 指令軸の最小点に移動させる
G162 指令軸の最大点に移動させる
M907 軸のモータ電流設定?これもよく分からないがおまじない?
M108 エクストルーダ速度設定
M106 ファンON
M18 すべてのモーター無効(終了コード?)
E指令 フィレメントを押出す長さ指令(mm)
; 記号 コメント行
こんなところか。

まぁ、分からない指令は、おまじない的に書くとして
「G0」「G1」「G28」「G161」「G162」あたりの組合せで
ある程度の動作は、させられそうですね。
会社では新しいNC機械が入ってくると、ランニング運転用として
機械の最大最小付近を動作するようなNCデータを作成するのですが
そんなイメージのFINDER用G-Codeを作成してみたいと思います

っと思い、適当にテキストエディタでヘッダーの後にコードを編集し
そのデータを、FlashPrint へロードしてみたけど、読込んでくれない!

う~ん、たぶん、ヘッダー部分をエディタが壊したんだなぁ?
秀丸のバイナリモードで、オリジナルデータと壊れたデータを比べると
なるほど・・・
オリジナルの[0x00]ヌル文字が[0x20]スペース文字に変換されてた。
たぶんテキスト的には、ヌル文字なんて意味がないので
テキストエディタは勝手に変更しちゃうんだろうね
おそらくwindowsのメモ帳も同じような処理をするんじゃないかな?
これじゃ、テキストエディタでは、FlashPrintのG-codeの編集は無理!
そうなると、バイナリエディタで編集するしかないか?
と言う事でネットで探してみるとバイナリエディタ自体は
いろいろ見つかった。その一つを試してみると、
16進表示での編集になりそう。これでG-codeを入力するのには、
ちょっと面倒だなぁ
しょうがない、ヘッダーはバイナリのままで、G-code部分は
テキスト入力で、改行は「LF」にするプログラムを
暇つぶしに作ろうか~
使う人はあまりいないかもしれないけどね~
もしかすると、他のスライサーで出力したデータをコピペで
利用できるようになるかもしれない

HANAKOさんを印刷してみる!

サポート材の練習にもなるかと思い、HANAKOさんを印刷してみた

原寸は私のプリンタからは、かるく飛び出てしまうサイズ
時間とフィレメントの経済性を考えて、身長100mmぐらいまで縮小
とりあえず、FlashPrint の枝状サポート自動サポート
デフォルトでは大きそうだったので、太さは2mmに設定

サポート材はかなり少ない。こんなんで、綺麗に印刷できるならいいなぁ

太もも付近までは、ラフトが少し反ったぐらいで、順調だったけど、

それ以上になってくると、だんだん揺れ始めた

左手首がかなり揺れてるけど、どうにか通過。

でも右手側で、もう限界。腕がべたべたになってしまって。強制終了!

う~ん、ケチって小さくしすぎたのかもしれないが、難しいなぁ

それで、今度は、自動サポートの後で、手動で追加。

なるべく、手先付近は多めにして、さらに、サポート材をさらにサポートするようになるべく土台を強くするようなイメージで追加

ちょっと、多すぎたか?

でも今度は、かなり安定している。手首でもほとんど揺れない

ただ積層を標準(0.18mm)にしたからか、少し粗かったかな!

でもどうにか、終了!

サポート材は、注意しながら、ニッパで外したけど、それほど大変ではなかった

でも、この魅力的なスタイル。腕が結構細かった。

写真を撮ろうと、立てているときにちょっと指があたって、左腕が折れてしまったぁ

ごめんなさい。HANAKOさん。どうにか接着剤で治療したけど、くっ付くかな?

まぁ、いずれにしても、サポート材は難しいね~

もっと、経験が必要ですね

フィラメント詰まり

フィラメント交換。

前回交換したときも、なかなか出てこなくて、何度もやっていたらそのうち出てきたけど
今日はなかなか出てこない。

う~ん、こりゃエクストルーダーをばらさないとだめかな?

とりあえず、FLASH FORGE のブログにバラし方載ってたけど、面倒だなぁ

休みの日昼間なら、やってもいいけど、晩酌後の寝る前じゃやりたくない!

どうにかならないか?

とりあえず、交換するフィラメントの先っぽを、カッターで尖らせてみる

こいつを再度突っ込んで・・・・

おぉっ、さっきより奥へ入ったような感じ。

「押出し」をやってみると、最初は前の樹脂がグルグルと出た後、正常に押し出された!

やった、成功

いつもこれで解決するのか疑問だけど、とりあえずバラさずに済んでよかった

ボトルキャップの漏れ!

結構硬いのに、どうして漏れるのだろう?
印刷方向とサポート

やっぱり、ネジの断面形状か?と思って簡単にネジの幅を計ってみると、結構品物によって溝幅は違うんだね~

じゃぁ、やっぱり汎用的な蓋は難しいのかな?
っと思いながら、キャップを覗いていると、おっ、これかぁ~

キャップの天井には、漏れ防止の円柱突起があるじゃないか・・・

ボトルの内径を蓋するような、突起をつければいいのかな?

次回、この対策をやってみよう!

印刷方向とサポート

ペットボトルキャップの頭にカメラ用のボルトを立てて、簡易カメラスタンドを作ってみようと思う

調べるとカメラ用のネジは、UNC 1/4-20 と言うことなので、外径は約Φ6.3、ピッチ1.27 ぐらい・
結構小さいし、ピッチも大きいなぁ。すぐに折れそう!

モデリングはFusion360のネジ作成で簡単にできたけど、どっち側から印刷したほうがいいか?

横と言うわけにいかないだろうな?縦にしても、どっち側でもアンダーになるからサポートが必要だろうなぁ。

とりあえず、ボトル側を上、カメラボルト側を下にして、サポートはスライスソフトの自動サポートで印刷してみるが、うまくいかない。

やっぱり、PLAだと弾力がないし、ボルト部がきゃしゃなので、はがす時に折れてしまった

サポートも一緒にモデリングしたほうがよさそうだ

どんなサポートがいいのか?ネジに接触させると、結局折れてしまいそう

よくわからないが、ネジからは、半径で0.6程度はなして、リングを何本か作成

こんなんで、再度印刷。ちょっと、離しすぎたかな?

バリがすごい。でも今度は、すんなり外れた。リングは綺麗な輪になってる。

とりあえず、ペットボトルにも装着できて、カメラもすんなり取り付いた。

でも・・・・

横にすると、もれるんだよねぇ~

もう少し、ネジの断面をキチンと描かなきゃだめなんだろうなぁ

まぁ、カメラの簡易スタンドには、なりそう。