prusa-slicerでG-CODE変換とコードを眺めてみた
OpenSCADで図形作って、3Dプリンタ買っちゃおうか考えてたが、
可動部品の多い機械で壊れやすそうだし、デカイから壊れたときに直せなかったら捨てるのも難しいし困る。
市販品買っちゃうと壊れたときに直すのも難しいだろう。
安いのでも2万くらいするからゴミになったら痛いし。
あと、安い3DプリンターってwifiなしでSDカードかUSBケーブルで接続するんだよね。wifiで制御したい。
というわけで、OpenSCADで簡単な図形を作ってG-CODEに変換して、
G-CODEが理解できそうならやっぱ木かなんかそこらで入手できる安い素材で構造作って簡易プリンタ自作しちゃうか。
ってことにした。
G-CODEに変換するのはスライサーってアプリで、OpenSCADでSTL形式でエクスポートしたファイルをgcodeに変換できる。
Arch Linux標準では prusa-slicer ってのと cura ってのがあった。
curaってのが有名みたいで、prusa-slicerってのはあまり情報ない感じだが、prusa-slicerはslic3rってのがベースみたいでslic3rは有名みたい。
curaの方が複雑な造形するときに良いみたいだが、slic3rは簡単ぽい。
模型作りたいとかじゃなくて箱とか部品を作りたいし、curaに比べてprusa-slicerの方が依存が少なかったんでprusa-slicerを入れてみた。
簡単な図形をgcodeにしてみたわけだが、gcodeはテキストファイル。
;の後ろは行末までコメントで、
最初がP0で最後にP100があってパーセントで進歩状況を設定してる。
途中経過は設定されてないから、無視して機械の方で計算しちゃっえば良さそうな気がする。
Eはエクストルーダー
初速?
温度が達する前に次へ。
温度が達する前に次へ。
ファンの%か?
こんな感じのコードが使われてた。
M系のコードは大量にあって全部網羅できないし、無視して機械の方で処理しちゃえば良い気がする・・・
プリント中はG1の直線移動が大量に並ぶ感じ。
移動と座標設定さえできれば動くものができそうな気がする。
可動部品の多い機械で壊れやすそうだし、デカイから壊れたときに直せなかったら捨てるのも難しいし困る。
市販品買っちゃうと壊れたときに直すのも難しいだろう。
安いのでも2万くらいするからゴミになったら痛いし。
あと、安い3DプリンターってwifiなしでSDカードかUSBケーブルで接続するんだよね。wifiで制御したい。
というわけで、OpenSCADで簡単な図形を作ってG-CODEに変換して、
G-CODEが理解できそうならやっぱ木かなんかそこらで入手できる安い素材で構造作って簡易プリンタ自作しちゃうか。
ってことにした。
G-CODEに変換するのはスライサーってアプリで、OpenSCADでSTL形式でエクスポートしたファイルをgcodeに変換できる。
Arch Linux標準では prusa-slicer ってのと cura ってのがあった。
curaってのが有名みたいで、prusa-slicerってのはあまり情報ない感じだが、prusa-slicerはslic3rってのがベースみたいでslic3rは有名みたい。
curaの方が複雑な造形するときに良いみたいだが、slic3rは簡単ぽい。
模型作りたいとかじゃなくて箱とか部品を作りたいし、curaに比べてprusa-slicerの方が依存が少なかったんでprusa-slicerを入れてみた。
簡単な図形をgcodeにしてみたわけだが、gcodeはテキストファイル。
;の後ろは行末までコメントで、
G1 パラメータ
みたいな感じでスペース区切りで先頭が関数で続く値が引数な感じ。M73 P0 R1
M73 P100 R0
最初のコードがM73だったが、進歩状況のようで、M73 P100 R0
最初がP0で最後にP100があってパーセントで進歩状況を設定してる。
途中経過は設定されてないから、無視して機械の方で計算しちゃっえば良さそうな気がする。
M201 X1250 Y1250 Z400 E5000 ; sets maximum accelerations, mm/sec^2
最大加速度Eはエクストルーダー
M203 X180 Y180 Z12 E80 ; sets maximum feedrates, mm/sec
最大送り速度M204 P1250 R1250 T1250 ; sets acceleration (P, T) and retract acceleration (R), mm/sec^2
標準加速度M205 X8.00 Y8.00 Z2.00 E10.00 ; sets the jerk limits, mm/sec
M205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec
詳細設定M205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec
初速?
M107
ファンOFFG90 ; use absolute coordinates
すべてを絶対座標に設定
M83 ; extruder relative mode
エクストルーダーを相対座標に設定M104 S170 ; set extruder temp for bed leveling
エクストルーダー目標温度設定温度が達する前に次へ。
M140 S60 ; set bed temp
ベッド目標温度設定温度が達する前に次へ。
M109 R170 ; wait for bed leveling temp
エクストルーダー温度が達するまで待機M190 S60 ; wait for bed temp
ベッド温度が達するまで待機G28 ; home all without mesh bed level
原点に移動G29 ; mesh bed leveling
Z軸を調べる?G92 E0.0
現在位置を指定座標に設定するG1 Y-2.0 X179 F2400
直線移動M221 S95 ; set flow
不明ファンの%か?
G21 ; set units to millimeters
単位をミリメートルに設定M900 K0.2 ; Filament gcode
フィラメントの送り係数?M84 ; disable motors
停止こんな感じのコードが使われてた。
M系のコードは大量にあって全部網羅できないし、無視して機械の方で処理しちゃえば良い気がする・・・
プリント中はG1の直線移動が大量に並ぶ感じ。
移動と座標設定さえできれば動くものができそうな気がする。
市販プリンタはAVRマイコンで制御してるみたいだが、wifi出やりたいしorange piかなんかでステッピングモーター制御してみたい。
ステッピングモーターの制御はドライバICを使うのが一般的らしいが、piのGPIOで直接制御しちゃいかんのか?
というか、まずGPIOでLチカからだな。
ステッピングモーターの制御はドライバICを使うのが一般的らしいが、piのGPIOで直接制御しちゃいかんのか?
というか、まずGPIOでLチカからだな。