3Dプリンター作る!

3Dプリンターを作る。3Dプリンターで作る。

  • HOME
  • 3Dプリンタ
  • プリントアウト
  • Delta作る
  • Mendel作る
  • その他
Here: Home > その他 > スライサーが出力するGコードのパスと実際のプリントを比較

スライサーが出力するGコードのパスと実際のプリントを比較

28 Feb 2015 Categories: その他 / Tags: g-code, slic3r

Gコード某掲示板の3Dプリンターのスレッドで、少し前にスライサーの外周がどこを通っているかの話題が上がっていました。実際のところ本当はどこを通っているのか理解していなかったので確認して、実際にプリントしたものと違いを比較してみました。

Gコードのパスはどこを通ってるの?

某掲示板にある個人向け3Dプリンターのスレッド。そこであるものをプリントしてみたら少しだけ大きいという投稿があって、スライサーで出力したGコードは、実際どこを通っているの?という話題が上がっていました。
CNCなどではGコードが描くパスをミルの中心が通るので、ミルの太さの半分だけ内側にオフセットしなければいけないといったことを聞いたことがあります。じゃあ、3Dプリンター用のスライスソフトではどうなっているんだろうか?実際のところ自分でもそのへんを理解していなかったので、これを機会に調べてみることにしました。

Gコードとは

Gコードは、もともとNC機械で座標系を使って軸の移動を処理するコードです。軸の移動以外にも処理出来るコードがあります。3Dプリンターで使用するGコードには、このもともとの標準のGコードコマンド以外にRepRapが定義したMから始まるコードもあり、使えるコードも使用するファームウェアによって弱冠の違いがあるようです。

基本のGコードは「G1」から始まるノズル移動の為のコードで下の様になっています。

G1 X102.000 Y94.500 E3.24518

「G1」はノズルの移動のコマンド。[X,Y]=[102.000 , 94.500]の点に移動して、その間にエクストルーダーはフィラメントを[E]=[ 3.24518 ]の長さに押し出しなさいというコマンドです。単位はミリメートルです。このコマンドに従って3Dプリンターは前の点から移動し、同時にフィラメントを前の長さから押し出します。

3DプリンターのGコードに付いてはRepRapの「G-code/ja」に詳しく載っています。
G-code-ja-RepRapWiki・RepRap G-code/ja

またばーちゃわーるどさんの「38 3Dプリントの為のG-CODE」に大変分かりやすくまとめられています。僕も以前に参考にさせていただいました。ありがとうございます。
世界遺産模型のばーちゃわーるど・ばーちゃわーるど

スライスソフト「Slic3r」のGコードを調べてみる

僕はスライスソフトをSlic3rしか使ったことが無いので、今回調べたのはSlic3rです。まずOpenSCADで横20mm×奥20mm×高さ5mmの直方体の中心に直径10mmの穴をあけたモデルを作りました。

openscad

そしてSlic3rでスライスしてGコードを出力します。それをフリーソフトのNCVC(NC Viewer and Converter)でGコードを確認します。(出力されたGコードは拡張子を.txtに変更すればテキストエディタで開くことが出来ます。)またNCVCはGコードのデータをdxfファイルで書き出せるので、CADで開いてそれぞれの寸法も確認してみました。

上のモデルをスライスしたGコードを[G-code]のページで見ることが出来ます。Slic3rの設定は(A)(後述)です。(3千行近くあります。)

G-code

NCVC・NCVC

Slic3rの設定

スライスソフトSlic3rの主な設定は以下の通りです。ノズル径は0.4mmです。

■Print Settings

  • Layers and perimeters
    Layer height
    : 0.2mm
    First layer height
    : 0.2mm
    Perimeters
    : 3
    solid layers
    : top:3 bottom:3
  • Infill
    Fill density
    : 20%
    Fill pattern
    : rectilinear
  • Speed
    Perimeters
    : 50mm/s
    External perimeters
    : 70%
    Infill
    : 50mm/s
    Solid infill
    : 50mm/s

■Filament Settings

Diameter
: 1.75mm
Extrusion multiplier
: 1
Extruder
: 195℃

■Printer Settings

Gcode flaver
: RepRap
Nozzle diameter
: 0.4mm

Gコードが指定する座標

GコードのパススライスソフトSlic3rが出力した座標を確認してみます。直方体の外周部、中心にあけた穴の外周部、infill部分に分けて見てみます。確認したのは下から2層目のレイヤーで、Solid Infill(100%のinfill)の部分です。また分かりやすくする為に、ヒートベッドの中心(=立方体の中心)を[X100 Y100]としています。

直方体の外周部

直方体の外周部のうち、一番外側の角4点の座標は下の通りです。
外周部のGコード

モデルの直方体は20mm×20mmだから設計上の外周のラインは
 [X110.000 Y 90.000]
 [X110.000 Y110.000]
 [X 90.000 Y110.000]
 [X 90.000 Y 90.000]
の4点。なので、ノズル径の半分だけオフセットされています。すなわち「プリントしたモデルの大きさ」=「設計したモデルの大きさ」となるように計算されていますね。

外周部のパスの間隔は0.4mm。こちらはノズル径の太さだけずらして並んでいます。
外周部のピッチ

中心にあけた穴の外周部

中心にあけた穴の外周のうち、一番外側(穴の中心に近い部分)の座標は下の通りです。
穴の外周部

ピッタリの数字では無いけれど、穴の直径は10mm(半径5mm)なので、こちらもほぼノズル径の半分だけオフセットされています。ただ円は直線で分割されているので、穴の最小部分は設計したモデルよりも少しだけ小さくなります。

穴の外周部も直方体の外周部と同じようにパスの間隔はノズル径の太さだけずれています。
穴の外周部のピッチ

infill部分

infill部分はパスの間隔だけ見てみます。
infillのピッチ
2層目のソリッドレイヤー(Solid layer)を見ているので100%の充填をしていますが、パスの間隔は、0.64mmとノズル径の約1.5倍になっています。逆に外周部とinfillが接する部分の間隔は0.315~0.321mmとなっていて、こちらはノズル径よりも小さくなっています。なるほど。

プリントしたものの大きさを測定してみる

Gコードが出力する座標とパスがわかったので、今度は実際に3Dプリントしたものの大きさを見てみます。フィラメントを押し出す部分の順番を変えて、いくつかプリントしてみました。

(A)外周部→infill

まずは一番ノーマルな設定。「外周部」→「infill」の順番でのプリントです。外周部は内側(infillに近い方)からプリントしています。

test-A1立方体の幅を測ってみると20.09mmでした。設計したモデルよりも0.09mm大きいけど、思っていたよりも誤差は小さかったです。

test-A2 中心の穴の直径は9.59mm。スケールを当てるのが難しくて、測る部分によって数値が違ってくるからあまり正確では無けれど、穴は少し小さめですね。

(B)infill→外周部(infill before perimeters)

次は「infill」→「外周部」と逆にしてみます。Slic3rの設定で「Print Settings」→「Infill」→「Infill before perimeters」にチェックを入れます。外周部は前回と同じく内側(infillに近い方)からプリントしています。

test-B1

test-B2立方体の幅は20.14mmでした。穴の大きさは9.63mm。Gコードのパスを見てみて分かったようにinfillと外周部が接する部分のパスの間隔が狭くなっているので、infillを先にプリントするとその分だけ外側に押し出されているのでしょうか。立方体の幅は大きくなっています。穴は少し大きくなっているけど(A)とほぼ同じでした。

(C)外周部の一番外側を最初にプリント(External perimeters first)

こんどは(A)と同じく「外周部」→「infill」の順だけど、外周部の一番外側をまずプリントするようにしています。Slic3rの設定で「Print Settings」→「External perimeters first」にチェックをいれます。

test-C1

test-C2立方体の幅は20.03mm。穴の大きさは9.73mm。幅に関してはもう誤差の範囲ですね。ほぼ設計通りの幅になっています。外周部の一番外側を始めにプリントしているので、他のパスの影響を受けていないですからね。穴に関しては改善はしているけれど、やっぱり小さくなってしまいました。

(D)押出量90%(Extrudion multiplier 0.9)

もう(C)でほぼ誤差の範囲になっているので良いのだけど、こんどはフィラメントの押出量を90%に減らしてプリントしてみました。Slic3rの設定で「Filament Settings」→「Extrusion Multiplier」を「0.9」にします。他の設定は(A)と同じで、「外周部」→「infill」の順番でプリントしました。

test-D1

test-D2立方体の幅は20.05mm。穴の大きさは9.75mm。(A)よりも少し良い結果ですが、押出量を減らしても大きさには余り影響していないですね。ノズル径の大きさでしかフィラメントが押し出されないから、少なくしても幅は変わらない。その代わり密実な充填では無くなってしまっているんじゃないかなと思います。憶測ではあるけれど。
でも中心の穴に関してはやっぱり少し小さくなってしまいます。Gコードはきちんとオフセットされた位置のパスになっているけど、(A)~(D)まで全て小さくなっています。これはノズルが円を描く時に曲がる方向、すなわち円の中心の方に押し出したフィラメントが引っ張られていて、その影響で円が小さくなっているんじゃないかな。

(E)中心の円を四角にする

それじゃあ次は、押し出されたフィラメントが曲がる方向に押し出されないように、中心の穴を四角形にしてみます。四角形の穴の大きさは10mm×10mm。設定は(A)と同じです。

test-E2測る位置が難しすぎてこれこそ正確では無いと思うけれど、四角形の穴の幅は9.98mmでした。円よりも誤差は小さくなっていますね。やっぱり円の場合は穴が小さくなる傾向にあるみたいです。

(A)~(E)までの結果

(A)~(E)までの立方体の幅と穴の大きさ、誤差を表にまとめました。

  全体の幅(mm) 穴の大きさ(mm)
A
外周部→infill
20.09 Δ0.09 9.59 Δ0.41
B
infill→外周部
20.14 Δ0.14 9.63 Δ0.37
C
External perimeters first
20.03 Δ0.03 9.73 Δ0.27
D
押出量90%
20.05 Δ0.05 9.75 Δ0.25
E
中心の円を四角
ー ー 9.98 Δ0.02

スライサーが出力するGコードと実際のプリントのまとめ

スライスソフトSlic3rが出力するGコードは、ノズル径を考慮してオフセットされたパスが出力されます。ただ円形(曲線も)に関しては、その曲線の分割数や分割場所によっては大きさが異なる部分も出てくる部分もあります。
OpenSCADは円の分割数を設定することが出来るので、より正確な円にしたい場合はその分割数を多くすれば良いと思いますが、その他のCADとかモデリングソフトはどうなっているのでしょうか。
Slic3rだけしか見ていないけど、100%のinfillは、実は密に並んだパスを描いていない。infillと外周部は少し重なっている。ということも分かりました。

そのオフセットして出力されたGコードでプリントすると、ほぼ設計通りの大きさでプリントされますが、円などは小さくなってしまいます。
ただ、外周部よりも先にinfillをプリントすると、infillの影響で外周部が少し大きくなる。ということですね。

正確な大きさや穴があいたものをプリントしたい時の為に、事前に幾つか大きさの異なるモデルを作っておいて、実際にどのくらいの大きさになるか把握して置くのが良いですね。そうすれば例えばM3のボルトを通す穴を開けたい時に、きつい穴、ちょうどの穴、すこし遊びのある穴など、適宜使い分けられます。ベアリング用の穴とかも、きつく固定出来る穴とすぐに取り外せる穴とかも出来ます。
ただ今回はXY平面の場合でしか見ていないので、横向きとか斜めの場合はまた違ってくるだろうと思います。

今回もこのブログを書くのに時間がかかってしまい、もう掲示板ではこの話題はすっかい無くなっていました。でもSlic3rが出力するGコードを確認することが出来たし、プリントの精度も分かったので良かったです。

Rlated Posts:

Slic3r日本語マニュアルスライスソフトSlic3rの日本語マニュアル

Categories: その他 / Tags: g-code, slic3r

« スライスソフトSlic3rの日本語マニュアル
新しい”高級”フィラメントを買いました(3) Polymakr PolyPlus PLA 1.75 白 »

Comments

  1. ばーちゃわーるど says

    2015年3月2日 at 3:10 PM

    なるほど~
    勉強になります♪

    返信
    • AKIRAAKIRA says

      2015年3月4日 at 12:35 AM

      ばーちゃわーるどさん。
      コメントありがとうございます。
      ばーちゃわーるどさんのGコードのページをリンクさせて頂きました。

      返信
  2. yama4ta says

    2015年3月3日 at 3:55 PM

    またまた、参考になります。
    ありがとうございます。
    よくスペーサーのカラーを作りますが、内径はやはり小さめに出来上がります。
    S-CADの場合、出来上がりを見て数値をいじってます。
     (蛇足ですが、円は$fん=100で滑らかな円にしてます。)

    返信
    • AKIRAAKIRA says

      2015年3月4日 at 12:41 AM

      yama4taさん。
      コメントありがとうございます。
      僕はいつも$Fn=32にしていますよ。

      返信
  3. ぐ~と says

    2016年2月10日 at 11:11 AM

    大変参考になりました。
    CNCの誤差は知っていたのですが、3DプリンタのG-codeはどうなっているのか気になっていました。

    返信
    • AKIRAAKIRA says

      2016年2月12日 at 12:51 AM

      ぐ~とさん、コメントありがとうございます。
      スライサー(Slic3r、CURA、kisslicerなど)によって同じモデルを同じような設定でスライスしても出力するGコードが少しずつ違ってくるみたいですので、いろいろと試してみてください。

      返信
  4. 羽等 says

    2016年11月6日 at 1:45 PM

    内円は・・・分割頂点の対角距離が設計距離になり、各分割頂点をつなぐ直線は必然的に設計距離より内側を通ります。
    なので内径は分割数を上げて限りなく真円に近くするか、頂点間直線部分の2等分線で作った対角線が設計距離になるように円を拡大しなければなりません。

    返信

コメントを残す コメントをキャンセル

メールアドレスが公開されることはありません。

CAPTCHA


Follow Me on Twitter
Follow Me on Twitter
Follow Me on Instagram
Follow Me on Instagram

Instagram

Sorry:

- Instagram feed not found.

Slic3r日本語マニュアル

Slic3r日本語マニュアル

Latest Posts

  • AutodeskのFusion360で”ローレット加工”を作るAutodeskのFusion360で”ローレット加工”を作る
  • デルタ型3Dプリンターを作る。(5) -フレーム完成デルタ型3Dプリンターを作る。(5) -フレーム完成
  • 100円ショップのアクリルスタンドでLCDコントローラーのケースを作る100円ショップのアクリルスタンドでLCDコントローラーのケースを作る
  • デルタ型3Dプリンターを作る。(4) -垂直キャリッジ完成(←まだココ)デルタ型3Dプリンターを作る。(4) -垂直キャリッジ完成(←まだココ)
  • 新しいフィラメントを買いました(4) VerbatimバーベイタムPLA 1.75mm 1kg シルバー新しいフィラメントを買いました(4) VerbatimバーベイタムPLA 1.75mm 1kg シルバー

Popular Posts

  • 接着剤をいろいろ試す -PLAの接着 接着剤をいろいろ試す -PLAの接着
  • 強力・瞬間-PLAにはアクリル用接着剤がベスト!アクリサンデー接着剤 強力・瞬間-PLAにはアクリル用接着剤がベスト!アクリサンデー接着剤
  • AutodeskのFusion360で"ローレット加工"を作る AutodeskのFusion360で”ローレット加工”を作る
  • 3Dプリンターの動きをスムーズに!Marlinの加速度AccelerationとジャークJerkの変更・調整 3Dプリンターの動きをスムーズに!Marlinの加速度AccelerationとジャークJerkの変更・調整
  • スライスソフトSlic3rのFill Pattern充填パターンの比較 スライスソフトSlic3rのFill Pattern充填パターンの比較

Tags

123D Design A4988 Arduino Arduino MEGA fill pattern Fusion360 g-code Hobbed Bolt INDIEGOGO J-head hotend LCDコントロールパネル Marlin OpenSCAD Printrun Prusa Mendel Python Ramps Reprap Silentstepstick slic3r STLファイル Thingiverse Xキャリッジ アイコン アルミフレーム エクストルーダー クラウドファンディング ステッピングモーター タイミングベルト ノズル パーツ ヒートベッド ビット ファン フィラメント ベアリング ホットエンド リニアシャフト リニアベアリング ルーター 充填パターン 塗料 寸切りボルト 接着剤 改良

PROFILE

AKIRA
AKIRA

 3Dプリンターを自作したり、改良したり、それで好きなモノをプリントしたりして遊んでいます。
 なかなか上手く行かないことが多くて試行錯誤してます。

このサイトについて

Popular Posts in 30days

  • 接着剤をいろいろ試す -PLAの接着 接着剤をいろいろ試す -PLAの接着
  • 強力・瞬間-PLAにはアクリル用接着剤がベスト!アクリサンデー接着剤 強力・瞬間-PLAにはアクリル用接着剤がベスト!アクリサンデー接着剤
  • AutodeskのFusion360で"ローレット加工"を作る AutodeskのFusion360で”ローレット加工”を作る
  • 3Dプリンターの動きをスムーズに!Marlinの加速度AccelerationとジャークJerkの変更・調整 3Dプリンターの動きをスムーズに!Marlinの加速度AccelerationとジャークJerkの変更・調整
  • スライスソフトSlic3rのFill Pattern充填パターンの比較 スライスソフトSlic3rのFill Pattern充填パターンの比較
  • 100円ショップのアクリルスタンドでLCDコントローラーのケースを作る 100円ショップのアクリルスタンドでLCDコントローラーのケースを作る
  • デルタ型3Dプリンターを作る。(1) -アルミフレームとか デルタ型3Dプリンターを作る。(1) -アルミフレームとか
  • スライサーが出力するGコードのパスと実際のプリントを比較 スライサーが出力するGコードのパスと実際のプリントを比較
  • Prusa Mendelの躯体(7) ~プーリーとタイミングベルト Prusa Mendelの躯体(7) ~プーリーとタイミングベルト
  • ピラミッドのキャリブレーション・モデルでプリントの質を改善 ピラミッドのキャリブレーション・モデルでプリントの質を改善
Copyright © 2017 3Dプリンター作る! All Rights Reserved.
Powered by Genesis Framwork ・ WordPress