CNCペンプロッターの作成 その2
前回の続きです。
前回はbCNCのインストールまで行ったので、次は実際にモーターを動かすところまでやっていきたいと思います。
まずは、SVGからG-Codeを生成するために、Inkscapeをインストールします。
※Macの場合について書いています。Windowsではうまくいかない場合があります。
Inkscapeを使ってG-Codeを生成する
1. Xquartzのインストール (Macの場合のみ)
MacでInkscapeを使う場合には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つのファイルが入っています。 ただ、このままだと最新版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を作ります。試しに長方形を描いてみます。
- 矩形ツールで長方形を描く
- メニュー「パス」から「オブジェクトをパスへ」を選択(何も変化はありませんが、パス化されています)
- メニュー「エクステンション」から「MI GRBLZ-AXIS Servo Controller/MI GRBLZ-AXIS Servo Controller」を選択する
すると、このようなウィンドウが出てくるので、「X軸の動く速さ」「Y軸の動く速さ」をどちらも「2000mm/min」に設定します(任意の値でいいが、初めは小さい方がいい)。
ファイルの保存先を設定したら、「Apply」を押してG-Codeを生成します。
生成されたG-Codeの中身をみてみると、こんな感じになっています。
コマンド | 機能 |
---|---|
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のスイッチング電源が必要です。
【電源の家】12V5A汎用スイッチング式安定化電源 ACアダプター最大出力60W PSE取得品 出力プラグ外径5.5mm(内径2.1mm) ノイズフィルターつき
- 出版社/メーカー: 【電源の家】
- メディア: エレクトロニクス
- この商品を含むブログを見る
直流安定化電源 AC DC 12V コンバーター 安全保護 回路 装置 最大 (10A)
- 出版社/メーカー: NoBrand
- メディア:
- この商品を含むブログを見る
- モーター型:双極性ステッパー
- ステップ角度:1.8°
- 保持トルク:26Ncm(36.8oz.in)
- 定格電流/位相: 0.4A
- 位相抵抗:30オーム
となっています。よって、今回はこのモーターを2つ使うので、最大2Aの電流を引き出せる12VのACアダプターがあれば十分と考えました。
そこで、使わなくなった12V-2A程度のACアダプタを探していたところ、WiiのACアダプターがちょうど12V-3.7Aであったので、これを使用しました。 ※ちゃんと熱縮チューブでカバーしないとショートする危険があるので注意してください。
また、モータードライバ「A4988」の製造元の「Pololu」のサイトを見ると、A4988は以下の式を満たすように使用するべきと書いてありました。
したがって、今回はモーターの定格電流0.4Aを に代入して、]
となります。ということで、ArduinoのUSB電源を入れて、を測定します(12V電源は入れる必要ない)。は下の写真のように、半可変抵抗とGND間の電圧を測ります。 測定してみると、0.646Vになっており、これだとモーターに過電流が流れてしまいます。そこで、半可変抵抗を反時計回りに回して抵抗値をあげると、0.176Vまで下がりました。これで準備OKです。
追記 : サーボモーターの接続
サーボモーターについて書くのを忘れていました。私が使用するのは「SG92R」というサーボモーターで、ペンを上げ下げするだけなのでトルクはほとんど必要ないです。そのため、Arduino入門キットによく入っている「SG90」というサーボモーターでも問題ないと思われます。どちらも動作電圧は4.8Vであるので、問題なく使うことができます。
CNCシールドとの接続方法については、前回の記事で書いた通り、サーボモーターの中央の線を5Vに、端のオレンジ色の信号線をZ+に、残りのGND線をGNDに接続すればOKです。
bCNCからArduino(grbl)にG-Codeを送信する!
さて、いよいよモーターを動かしていきます!。ここまで思っていたよりもやることが多くて大変でした...。
まずは、bCNCを起動します。起動したら、上の方の「ファイル」というボタンを押します。すると、次のような画面がでるので、「Serial」の中の「ポーレート」を「115200」に設定します。(もしgrbl v0.8を使っているなら9600に設定する)
次に、ArduinoとPCを接続して、「Serial」の中の「ポート」から、Arduinoのポートを探して選択します。終わったら、その右の「開く」というボタンを押すと、上部の「Status」が「Idle」という状態に変わると思います。これで接続完了です。
そして、画面上部の「ファイルのアイコン」のボタンを押して、Inkscapeで作成した.gcodeのファイルを開きます。開くと、画面右に作成した図形が表示されると思います。(今回の例だと長方形が表示されるはず)
そうしたら、画面上部の「Control」というボタンを押します。そして、ここでCNCシールドの12V電源を入れます。(タイミングはいつでもいい)
ここで試しに、画面左下の矢印ボタンを左右に押してみて、モーターが滑らかに動けば問題ないです。(音を立てて激しく振動している、もしくは、わずかに振動しているだけの場合は、先ほどの電圧の調整を間違っている場合があります) ここまで、全て順調だったら、画面上部の「Start」ボタンを押します。すると、ステッピングモーターが動き出し、サーボモーターが適切なタイミングで上げ下げすると思います。
bCNCからGコードをgrblに送って、ステッピングモーターとサーボモーターを制御できた! pic.twitter.com/RFHNdHtYT3
— たむ@大学垢 (@tamu60) August 19, 2019
Y軸のステッピングモーターも取り付ければ、ハードウェアとソフトウェアの方は完成です。
あとは、ペンプロッターとして組み立てるだけですね!
それでは、次回は部品を組み立てていき、ペンプロッターを完成させたいと思います。