苦学生の道楽

面白そうなものを作る!

アプリや電子工作など、「楽しそう!」と思ったものに片っ端から触れていく人の活動記録です

CNCペンプロッターの作成 その2

前回の続きです。

前回はbCNCのインストールまで行ったので、次は実際にモーターを動かすところまでやっていきたいと思います。

まずは、SVGからG-Codeを生成するために、Inkscapeをインストールします。

Macの場合について書いています。Windowsではうまくいかない場合があります。

Inkscapeを使ってG-Codeを生成する

1. Xquartzのインストール (Macの場合のみ)

MacInkscapeを使う場合にはXQuartzが必要です。
ダウンロードしたら開いて、右下のボタンを押していけばインストールが完了します。

2. Inkscapeのインストール

以下のサイトから「Inkscape」をダウンロードします。

Inkscape 0.92.2 - macOS | Inkscape

Inkscape 0.92.2 - Windows | Inkscape

ここで、拡張機能「MI Inkscape Extension」を使うためには、古いバージョンをインストールしないといけないという情報もありますが、コードを少し書き換えれば最新版でも使えます。

Inkscape起動して「Where is X11 ?」と聞かれた場合は、「/Applications/Utilities/XQuartz.app」を選択すれば起動します。それでもうまく起動しなければ、PCを再起動してみてください。

3. Inkscape拡張機能MI Inkscape Extension」のインストール

ここからダウンロードします。

解凍すると、次のような4つのファイルが入っています。 f:id:tamu19:20190819112234p:plain ただ、このままだと最新版Inkscape0.92で動かないので、servo.pyを以下のように書き換えます。

//3085行目
- doc_height = inkex.unittouu(self.document.getroot().get('height'))
+ doc_height = self.unittouu(self.document.getroot().get('height'))

次に、これらの4つのファイル全てを「~/.config/inkscape/extensions/」の中に入れます。
ターミナルから次のようにすると楽です。

//解凍後のMI Inkscape Extensionに移動する
$ mv ./* ~/.config/inkscape/extensions/
//これで、4つ全てのファイルが移動する。

4. Inkscapeを起動してSVGからG-Codeを作る

拡張機能を入れたら、Inkscapeを再起動して、まず適当なSVGを作ります。試しに長方形を描いてみます。 f:id:tamu19:20190819115548g:plain

  1. 矩形ツールで長方形を描く
  2. メニュー「パス」から「オブジェクトをパスへ」を選択(何も変化はありませんが、パス化されています)
  3. メニュー「エクステンション」から「MI GRBLZ-AXIS Servo Controller/MI GRBLZ-AXIS Servo Controller」を選択する

すると、このようなウィンドウが出てくるので、「X軸の動く速さ」「Y軸の動く速さ」をどちらも「2000mm/min」に設定します(任意の値でいいが、初めは小さい方がいい)。

f:id:tamu19:20190819123605p:plain ファイルの保存先を設定したら、「Apply」を押してG-Codeを生成します。
生成されたG-Codeの中身をみてみると、こんな感じになっています。 f:id:tamu19:20190819124753p:plain

コマンド 機能
G21 座標の単位が「ミリ(mm)」であることを伝える命令。「G20」はインチである。
G04 一時停止」の命令。続けて「P〇〇」と書くと〇〇ミリ秒間停止し、「S〇〇」と書くと〇〇秒間停止する。 追記:私の環境ではPはミリ秒ではなく秒になっていました。サイトによって情報が違うので、設定によるのかもしれません。
F フィード率」といい、G1が実行されているときの動く速さを決める命令。「G1 F〇〇」と書くと、分速〇〇mmで移動する。

※その他のコマンドについては、前回の記事の最後に書きました。

さて、いよいよこのG-CodeをbCNCに読み込ませて、Arduino(grbl)に送信したいと思います。

と、その前に、モーターを動かすための12V電源を確保します!

12V電源の確保と半可変抵抗の調整

このCNCシールドには12V~36Vの直流電源を流すことができます(使用するモーターによって変える)。そのため今回は、12VのACアダプター、もしくは12Vのスイッチング電源が必要です。

ここで、今回用いたステッピングモーター「NEMA17」の規格をみてみると、

  • モーター型:双極性ステッパー
  • ステップ角度:1.8°
  • 保持トルク:26Ncm(36.8oz.in)
  • 定格電流/位相: 0.4A
  • 位相抵抗:30オーム

となっています。よって、今回はこのモーターを2つ使うので、最大2Aの電流を引き出せる12VのACアダプターがあれば十分と考えました。

そこで、使わなくなった12V-2A程度のACアダプタを探していたところ、WiiのACアダプターがちょうど12V-3.7Aであったので、これを使用しました。 f:id:tamu19:20190820034119j:plain f:id:tamu19:20190820034932p:plain ※ちゃんと熱縮チューブでカバーしないとショートする危険があるので注意してください。

また、モータードライバ「A4988」の製造元の「Pololu」のサイトを見ると、A4988は以下の式を満たすように使用するべきと書いてありました。

 V_{REF}=8\cdot I_{MAX}\cdot R_{CS}

  • V_{REF} : A4988の半固定抵抗とGND間の電圧
  • I_{MAX} : ステッピングモーターの許容電流
  • R_{CS} : A4988の電流検出抵抗の値 =  0.050[Ω](純正は0.068[Ω])

したがって、今回はモーターの定格電流0.4Aを I_{MAX}に代入して、V_{REF} =8\cdot0.4\cdot0.050=0.16\, [V]

となります。ということで、ArduinoのUSB電源を入れて、V_{REF}を測定します(12V電源は入れる必要ない)。V_{REF}は下の写真のように、半可変抵抗とGND間の電圧を測ります。 f:id:tamu19:20190820042730j:plain 測定してみると、0.646Vになっており、これだとモーターに過電流が流れてしまいます。そこで、半可変抵抗を反時計回りに回して抵抗値をあげると、0.176Vまで下がりました。これで準備OKです。 f:id:tamu19:20190820043448p:plain

追記 : サーボモーターの接続

サーボモーターについて書くのを忘れていました。私が使用するのは「SG92R」というサーボモーターで、ペンを上げ下げするだけなのでトルクはほとんど必要ないです。そのため、Arduino入門キットによく入っている「SG90」というサーボモーターでも問題ないと思われます。どちらも動作電圧は4.8Vであるので、問題なく使うことができます。

CNCシールドとの接続方法については、前回の記事で書いた通り、サーボモーターの中央の線を5Vに、端のオレンジ色の信号線をZ+に、残りのGND線をGNDに接続すればOKです。

bCNCからArduino(grbl)にG-Codeを送信する!

さて、いよいよモーターを動かしていきます!。ここまで思っていたよりもやることが多くて大変でした...。
まずは、bCNCを起動します。起動したら、上の方の「ファイル」というボタンを押します。すると、次のような画面がでるので、「Serial」の中の「ポーレート」を「115200」に設定します。(もしgrbl v0.8を使っているなら9600に設定する) f:id:tamu19:20190820052036p:plain 次に、ArduinoとPCを接続して、「Serial」の中の「ポート」から、Arduinoのポートを探して選択します。終わったら、その右の「開く」というボタンを押すと、上部の「Status」が「Idle」という状態に変わると思います。これで接続完了です。

そして、画面上部の「ファイルのアイコン」のボタンを押して、Inkscapeで作成した.gcodeのファイルを開きます。開くと、画面右に作成した図形が表示されると思います。(今回の例だと長方形が表示されるはず)

そうしたら、画面上部の「Control」というボタンを押します。そして、ここでCNCシールドの12V電源を入れます。(タイミングはいつでもいい)

ここで試しに、画面左下の矢印ボタンを左右に押してみて、モーターが滑らかに動けば問題ないです。(音を立てて激しく振動している、もしくは、わずかに振動しているだけの場合は、先ほどの電圧の調整を間違っている場合があります) f:id:tamu19:20190820053723p:plain ここまで、全て順調だったら、画面上部の「Start」ボタンを押します。すると、ステッピングモーターが動き出し、サーボモーターが適切なタイミングで上げ下げすると思います。

Y軸のステッピングモーターも取り付ければ、ハードウェアとソフトウェアの方は完成です。 あとは、ペンプロッターとして組み立てるだけですね!
それでは、次回は部品を組み立てていき、ペンプロッターを完成させたいと思います。