へっぽこ、ミニマル、DIY
2020-02-07 footfoot (14)

Inkscapeで回路を描いてGコードを出力をする【CNCルーターでプリント基板製作】

InkscapeとGcodetoolsでプリント基板の回路のGコードを作る

前回組み立てたCNCルーターで作るプリント基板のGコードをInkscapeとGcodetoolsで書き出してみます。Inkscapeで回路を描いてる人は見かけませんができますよ (´ω` )

今回やるのは生基板(銅張積層板)にV型ビットで一定の深さで回路の溝を掘るG-code(CNCを動かすプログラム)を作る作業。GRBL制御ソフトのCandleを使った切削編はまた次回で。いずれは基板を切り抜いたり固定用の穴を開けたりもしたいです。

なんでInkscape?

ガーバーからGcodeに変換できるEagleやkicadのプリント基板用ソフトをいろいろ試してみましたのですが、配線方法がどれもパターンのみでパターンをGcodeに変換すると必ずアウトラインが切削ラインになってしまいます。CNCルーターと生基板で回路を作るなら回路の境界線を掘るほうが浮島(どこにも接続してないベタ)ができないし、CNCの動作が最小限なので効率もいいと思うのですが専用のソフトは見当たらず。それができたのはInkscape + Gcodetoolsぐらいでした。

▼ 左が通常のプリント基板ソフト。パターンの赤いラインが編集できないので思い通りの作図が難しいです。右のInkscapeは切削ラインを自由に繋いで配線できました。

プリント基板(PCB)ソフトとInkscapeの配線の違い。

Inkscapeのインストール

InkscapeはWindows, Mac, Linux対応のオープンソースのフリーソフトなので環境は選ばないかなと。

ぼくのPC環境はWindows10 64bit(CNCのためにOS入れ替え..)なのでWindows 64bit exeのインストーラーをダウンロードしました。インストールはデフォルトのままで問題なかったです。Gcodetoolsは入ってますしGcodetoolsはPython2.7で動きますがPython2.7もデフォルト設定でインストールしてくれるので特に何もすることはありません。

今の最新バージョンはInkscape 0.92.4, Gcodetools 1.7。Gcodetoolsはだいぶ更新がないようです。

InkscapeでCNC用の回路を描くTIPS

Inkscapeはベクトル画像を作成・編集する多機能な汎用ソフトなので慣れないと使いづらいところがあります。できるだけやったことをメモしておきます。

ページサイズとグリッドの設定

まずは最初にやっておく設定。上部メニューの「ファイル」->「ドキュメントのプロパティ」を開きます。

生基板のサイズを想定してページサイズを入力します。単位はmmになってることを確認。

回路は1マス単位で繋いだほう楽なのでグリットを有効にします。「グリッド」のタブで矩形グリッドの「新規」をクリック。同時にスナップも有効になります。初期のグリッド単位はpxなのでmmに変更。グリッドの間隔は想定してるピッチの半分がおすすめ(2.54mmなら1.27mm間隔)。直角の配線はよくないらしいので角がとれるようにするため。「メジャーグリッドラインの頻度」は「2」がわかりやすいかな。

Inkscapeのページサイズ・グリッドの設定。

ペンツールで回路の境界線を描く

回路の線を描くのはペンツールが適してます。ポチポチと左クリックで線を繋いでいって右クリックで切る。ペンツールで大雑把に描いてあとはノードツールで編集という感じ。実際ノードツールの編集作業のほうが大半かな。

このペンツールはフィルなしのストロークの線のみのオブジェクトですけど、このストロークの線が切削ラインなります。ストロークの幅はパスを右クリックで「オブジェクトのプロパティ」を開いて実際のツール幅にしておくとイメージしやすいかなと。なおストロークの幅はGcodetoolsには影響しません。

矩形ツールや円/弧ツールもペンツールと同じようにストロークをGcodeにできます。注意点は後程。

Inkscapeのペンツール

ちなみにこの「グリッドの交点」のテキストが小さくて読めませんでしたが、左のバーにあるアイコンのものさしツールのフォントサイズで大きくできます。

ノードツールでパスを編集

描いたパスの点(ノード)を編集するにはノードツールを使います。移動はノードを掴んでドラッグ、ノードの追加はライン上でダブルクリック、ノードの削除はノードをクリックしてDeleteキーか右クリックで「ノードを削除」。

Inkscapeのノードツール

直線しか使わない場合にやっかいなのがペジェ曲線。ノードをドラッグして移動しようとしたらラインを掴んでしまって曲線になることがよくあります。こんなときは上の青いマークに「選択セグメントを直線に」があるので選択したパスを全て直線に直せます。

あと初期設定ではノードを削除すると両端のノードが曲線になってしまうので、上部メニューの「編集」 ->「 Inkscapeの設定」 -> 「ノード」の「ノードの削除時に形状を維持」のチェックを外しておくといいです。

パスはある程度まとめる

1本で繋がってるノードを「パス(path)」というらしいですが、このパスが細かいとGコードにしたときにスピンドルを上げてから次へという移動が多くなります。無駄な動作が多くなるので繋がってる線はある程度まとめた方がいいです。ただノードをつなげる操作はややこしいので(よくわからない..)、繋がってない線を下書きにしてペンツールでなぞるのが簡単でした。下書きは削除で。

今回作った回路だと5つのパスでできてるのでスピンドルの上げ下げは5回で済みます。一部折り返していて同じところを通ってますがパスが多くなるよりいいかなと。

Inkscapeのパス

出力したGコードをCandleで開くとこんな感じ。赤いラインが次のパスに移るためにスピンドルを上げ下げする動作。テキトーに回路を作ったときは赤い線だらけでした。

Inkscapeとgcodetoolsで作ったのGコードをCandleで開く

パスを結合してサブパスに

サブパス化は必須ではないのですがやっておいたほうが扱いやすいです。パスを選択ツールで全て選択して、上部のメニュー「パス」->「結合」するとパスがひと塊になってサブパスになります。これでバラバラにならないしまとめてノードの選択ができるので編集もしやすいです。パスに戻したいときは「分解」でできます。

それと矩形ツールや円/弧ツールを使ったりして他のパスとストロークの幅が違うとGcodetoolsでエラーがでます。サブパス化すると強制的にストロークの幅が同じになるので、その意味でもサブパスにしておくと楽です。

サブパスは「統合」や「グループ化」と似てますが違うので注意です。▼ノードツールで選択するとこんな風になるのがサブパス。

Inkscapeのサブパス化

レイヤーで電子部品の配置をシミュレート

回路の線以外にレイヤーで何枚かにわけておくと便利。上部メニューの「レイヤー」->「新規レイヤー」で追加できます。今回作ったシンプルな回路だと回路のラインと電子部品の2枚で十分でした。電子部品の記号は矩形ツールで色分けしてるだけなので手抜きすぎますね..忘れる前に部品名と値は書いておこう。

Inkscapeのレイヤー

サイズはけっこう忠実に再現したので実際配置しても大体同じようにできました。(ダイオードが抜けてた..)ちなみにこの回路はPQ1CZ1を使ったDCDC降圧コンバーターで、電気メッキの実験に使おうかなと。

GcodetoolsでG-codeに書き出す

Gcodetoolsは回路掘るだけの2D的な動作ならそんなに難しくはないです。Gcodetoolsでやることは3段階ありますが、その前に回路以外のレイヤーは非表示とロックしておくといいです。

Orientation Points

やっとGcodetoolsを使います。まず上部メニューにある「エクステンション」->「Gcodetools」->「Orientation Points...」を起動。変更したところだけ太字にしてます。他はデフォルトのまま。

  • Orienntation Type : 2 points mode。"パスの変換を計算するために使用"と書いてますがいまいちよくわからず。このままでいいみたいです。
  • Surface : 0。素材の表面のZ軸の値。
  • Z Depth : -0.2。掘る深さ。プリント基板なのでこのぐらいに。(銅箔の厚みは0.035mmの生基板で、V型カッターの先端0.1mm 角度20° を使用)
  • Units : mm。単位は全てmmにしてます。

回路を選択ツールで選択して「適用」するとページの下に0と100の座標がでるのを確認します。

InkscapeのGcodetoolsのOrientation Points...

Tools Library

次に「エクステンション」->「Gcodetools」->「Tools Library」を起動。最初にツールタイプを選びますがV型のカッターを使うので似てそうなconeにしました。defaultは項目が多すぎてよくわからなかった..。緑色の枠が現れるのでテキストツールを使って値を編集します。デフォルトの値はMDFを想定してるらしいので生基板用に送る速度は半分ほどにしときました。

  • diameter : 0.1。ツールの直径。先端が0.1mmなので一応変えましたが、この値は影響しないと書いてあるので変えても意味はありません。
  • feed : 200。素材を切断するXY軸の速度。mm/min。
  • shape : w。ツールの形状?
  • penetration feed : 60。素材に切り込むZ軸の速度。mm/min。
  • depth step : 1(mm)。1回分の切削の深さ。もしZ Depthが-2mmなら1だと2回に分けて削ることになります。Z Depthを超えた数値なら1回でZ Depth分を削るだけです。
  • tool change gcode : (None)。ツールは変えないのでnone。

InkscapeのGcodetoolsのTools Library

Path to Gcode

最後に「エクステンション」->「Gcodetools」->「Path to Gcode」でGコードに書き出します。最初に[preferences]タブをクリック。

  • [preferences] Directory : C:\Users\fユーザー名。Gコードを保存するディレクトリを設定。
  • [preferences] Z safe height for G00 move over blank : 3(mm)。安全なZ軸の高さ。移動時の高さ。デフォルトの5mmも上げなくていいかなと3に。
  • [Path to Gcode] Maximum splitting depth : 1。最大分割深度?4から1にしてみたけど変化なし。
  • [Path to Gcode] Cutting order : Subpath by subpath。サブパス化ぜずパスのままの場合はPath by pathにしないと変なところにスピンドルが向かっていきました..。

太字が変えたことろで他はデフォルトです。「適用」をクリックする前にタブが[Path to Gcode]になってることを確認して回路を選択ツールで選択(しないととエラーがでる)。で「適用」をクリックするとGコードの出来上がり。

InkscapeのGcodetoolsのPath to Gcode

Gcodeを編集

これで完了かと思いきや、Candle 1.1.7でこのGコードを動かすと1行目からエラーがでます。この%は動作には関係ないコメント欄みたいなので1行目を右クリックして[Delete lines]で削除。最後の行にもあるので削除。あとスピンドルの速度の値が入ってないので5行目あたりに「M3 S500」と入力。以前は遅い200で掘ってましたが、500にしたら切削面にバリが出ずきれいでした。

いろいろ編集するならテキストエディター使ったほうが効率的。Windowsならメモ帳で十分です。

Candle1.1.7でGコードを編集。

CAMoticsで動作確認

作ったGコードの動作確認にはCAMoticsを使ってみました。Gコードのプログラムをシミュレーションして視覚化してくれます。CNCの動きを3Dでグラフィカルに見ることができて便利。CAMoticsはWindows, Linux, Macに対応してます。

CAMoticsでGコードを確認。

最後に

これで切削の準備が整いました。次回はCandleを使って掘ってみます。生基板はプローブで高さを補正できたりするのでその使い方も。

参考にさせてもらったサイト


14 コメント

#1  - 上西忠彬 💬 :

大変参考になりました。CNC3018Proを購入し組み立てた初心者です。プリント配線までできるように頑張りたいですが、試しに動かしましたがZ軸が上下逆に動きものになりません。修正する方法がわかりません、ご教授お願いできませんでしょうか。今お蔵入り直前です。

返信
#2  - footfoot 💬 :

上西さん訪問ありがとうございます。

調べてみたらCandleのスレッドにZ軸が上下逆になると書いてる人がいました。
https://github.com/Denvi/Candle/issues/290

Candleを起動してコンソール(右下)に$$と打ってGRBLの設定を確認してみてください。

$3が反転動作の設定なのでZ軸だけ反転する設定に変えればいいんでないかなと。コンソールに3$=~と打って変更できます。
スレッドの人は3$=4(Z軸のみ反転)で直ったようで、ぼくの設定は3$=5(X軸とZ軸が反転)になってました。知らなかった..

詳しいGRBLの設定はこのブログが参考になります。
https://cnc-selfbuild.blogspot.com/2017/02/grbl11g.html

ちなみにぼくのGRBL設定はこんなでした。
$$ < $0=10
$1=25
$2=0
$3=5
$4=0
$5=0
$6=0
$10=1
$11=0.010
$12=0.002
$13=0
$20=0
$21=0
$22=0
$23=0
$24=25.000
$25=500.000
$26=250
$27=1.000
$30=1000
$31=0
$32=0
$100=1600.000
$101=1600.000
$102=1600.000
$110=1000.000
$111=1000.000
$112=800.000
$120=30.000
$121=30.000
$122=30.000
$130=200.000
$131=200.000
$132=200.000
ok

返信
#3  - 上西忠彬 💬 :

早速のご返答ありがとうございます。72歳の全くの初心者ですので、素晴らしいご回答いただき、私の知る限り色々試みていますが要領が得ません。付属の「grbl」というプログラムを使って動作するのを確認しているレベルです。お教えいただいたCandleを起動してコンソール(右下)に$$と打ってGRBLの設定を確認でつまずいています。まだ「grbl」すら手探り状態です。そもそも「Candle」って何という無知な老人が頑張っています。よろしくお願いします。

返信
#4  - footfoot 💬 :

ご年配の方でしたか。CNCルーターは情報が少ないのでぼくも手探り状態です..

一度CNCを動かしてる環境を教えていただけますか?
パソコンのOS、CNC3018proに付属していたソフト、CNCのメーカーがわかれば対処しやくなるかなと思います。

返信
#5  - 上西忠彬 💬 :

無知な初心者でご迷惑おかけします。
指示されましたことのわかる範囲をお送りします。
OS=Windows10Pro 64ビット
CNC3018Pro=FTVOGVE
ドライバー=CH340SER
ソフト=grblcontrol
で先日アマゾンで購入しました。これでよろしいでしょうか。
老化防止のために挑戦しています。急ぎませんのでよろしくお願いします。

返信
#6  - 上西忠彬 💬 :

先ほどのメールでお伝えしましたが、メーカー名はMosticsだと思います。よろしくお願いします。あなたが使われているSainSmart Genmitsu CNCルーター3018-PROを買えばよかったのでしょうか。何もわからず半分衝動買いみたいに購入してしまいました。その結果大変ご迷惑をおかけし申し訳ありません。

返信
#7  - footfoot 💬 :

CNCは苦労されてる方が多いみたいですね。ぼくが買ったSainsmartのCNCはあまり苦労せずに動いたので運が良かったようです。
Mosticsはアマゾンのフライス盤で1位のやつでしょうか。オフラインコントロールが付いてますね。Sainsmartと比べるとX軸のモーターが左右逆に付いてて基板も少し違うようです。プローブの端子はZ limiteに取り付けるのかな?

PC環境は同じWindows10 64bitなのでやりやすいです。
最初にGRBLのバージョンとGRBLの設定を確認するために、CNCの基板とパソコンをUSBケーブルで繋いでgrblcontrol.exeを起動してみてください。接続設定は上部メニューのservice->settingでportの更新マークをクリックするだけでいいと思います。右上のStatusがConnectedになれば成功でCNCが動く状態です。
Connectedになってると右下Consoleの入力欄にコマンドが打てます。$Iと打つとGRBLのバージョン、$$と打つとGRBLの設定が表示されます。その結果をコピペしてもらえるでしょうか。

返信
#8  - 上西忠彬 💬 :

色々即答していただきありがとうございます。Mosticsはアマゾンのフライス盤で1位のやつでしょうか。ちょとややこしくなってしまいましたが、この製品は組み立ての時に、テーブルの下のLeadScrewがBakeliteに収まらず販売店に交換依頼中で、もう一台「FTVOGUE」を購入しいまそれを動かしています。あなたと同じ製品か、Snapmaker 3-in-1 3Dプリンター に買い換えようかとも思っていますが、今のところあまり必要性がないので、まず現状のもので勉強しようと思っています。
前書きが長くなりましたが、プローブの端子はZ limiteに取り付けるのかな?これは、X-Axisのコネクタに接続しています。右上のStatusは、Idleの表示です。Consoleの入力欄にコマンドで$Iを入力しましたら、$I < [0.9j.20180122:]と表示されました。ちなみにGRBLの設定が以下のように表示されました。よろしくお願いします。

返信
#9  - 上西忠彬 💬 :

大変お世話になります。GRBLの設定が少しわかるようになりました。試行錯誤で見つけました。$3=5になっていましたので3に変えましたらZ軸正常になりました。また$10=3にしないと現在の座標値が表示されないと解りました。でもまた問題点が出てきました。サンプルの文字を彫刻するようになって分かったのですが、文字が裏表逆に削られます。次の課題はこれを何とかしなければなりません。とりあえずZ軸の件をこれで解決かと思います。

返信
#10  - footfoot 💬 :

そんな経緯があったんですね。GRBLのバージョンはv0.9ですか。最初に貼ったリンクはGRBL v1.1のコマンドでv0.9とは多少仕様が変わってるようなので注意しておいてください。
設定をいじってると元の状態が分からなくなるので$$で今のGRBL設定を保存しておいたほうがいいかもしれません。付属のソフトにGRBL v0.9のhexファイルがあれば最初の状態に戻せると思いますが。

ちなみにCandleはgrblControlベースで作られてるソフトですがGRBL v1.1に対応してます。Sainsmartの3018proは元からGRBL v1.1でした。基板のファームウェアをv0.9からv1.1にアップグレードすることもできると思いますが、不具合がでる可能性があるのでどうかなと。

文字が裏表に削られるとのことですが、Jog操作では正常でサンプルコードを削ると裏表になるということですよね。う~ん..
試しにぼくがInkscapeで作ったGcodeで同じように裏表になるかやってみてください。サンプルコードの問題かもしれないので。図はただの右向きの矢印です。
https://www.footfoot.tokyo/data/medias/test_0001.zip

返信
#11  - 上西忠彬 💬 :

お世話になります。むつかしい言葉が出てきますが、少しづつ理解していっているつもりですので、少しお待ちください。何せ電気の基礎勉強をしていないもので、中学校で習った程度のレベルですので試行錯誤しています。
GRBLのバージョンは0.8.4のようです。又「Inkscape」のことも分かりましたしGcodeに変換する方法も勉強していきますので、ちょっとお待ちください。

返信
#12  - footfoot 💬 :

覚えることが多いと思いますがマイペースで進めてください😀

返信
#13  - 上西忠彬 💬 :

大変お世話になっております。
GRBLの設定で、X軸の動きが逆でお教えいただいたおかげで正常になりましたが、文字が裏表逆になるので質問させていただきましたが、送っていただいたサンプルコードでも同じでしたので、どうすればと思っていました。お教えいただいた「Grbl1.1の$コマンドやGコードについて」を読み直してこれはと思いつきました。いったん$3の設定を$3=0でデフォルトの値にしてみましたらうまくいきました。送っていただいたサンプルの矢印や、iphoneのサンプルなどきちんと彫刻できるようになりました。ただY軸の動きが逆でしたので変更しました。これから「Inkscape」を使ってデータを作り彫刻できるよう勉強していきます。ありがとうございました。今後も幼稚な質問するかと思いますがよろしくお願いします。不要かと思いますがGRBLの設定設定値を記しておきます。
$$ < $0=10 (step pulse, usec)
$1=25 (step idle delay, msec)
$2=0 (step port invert mask:00000000)
$3=2 (dir port invert mask:00000010)
$4=0 (step enable invert, bool)
$5=0 (limit pins invert, bool)
$6=0 (probe pin invert, bool)
$10=3 (status report mask:00000011)
$11=0.010 (junction deviation, mm)
$12=0.002 (arc tolerance, mm)
$13=0 (report inches, bool)
$20=0 (soft limits, bool)
$21=0 (hard limits, bool)
$22=0 (homing cycle, bool)
$23=0 (homing dir invert mask:00000000)
$24=25.000 (homing feed, mm/min)
$25=500.000 (homing seek, mm/min)
$26=250 (homing debounce, msec)
$27=1.000 (homing pull-off, mm)
$100=400.000 (x, step/mm)
$101=400.000 (y, step/mm)
$102=400.000 (z, step/mm)
$110=1500.000 (x max rate, mm/min)
$111=1500.000 (y max rate, mm/min)
$112=1500.000 (z max rate, mm/min)
$120=10.000 (x accel, mm/sec^2)
$121=10.000 (y accel, mm/sec^2)
$122=10.000 (z accel, mm/sec^2)
$130=200.000 (x max travel, mm)
$131=200.000 (y max travel, mm)
$132=200.000 (z max travel, mm)

返信
#14  - footfoot 💬 :

おお!軸が正常になったようですね。おめでとうございます😊
次はGcode作りですか、わからないことがあったら聞いてください。

返信

コメントを書く

最後のアルファベットを入力してください iohidj?

このコメントのRSS