編集履歴一覧に戻る
markのアイコン画像

mark が 2021年02月23日18時47分47秒 に編集

初版

タイトルの変更

+

IchigoJamで動くGrbl制御のペンプロッタを作ってみた。

タグの変更

+

ペンプロッタ

+

GRBL

+

秋葉原2021

+

IchigoJam

+

ステッピングモーター

メイン画像の変更

メイン画像が設定されました

本文の変更

+

**1. 前書き** IchigoJamで使えるプリンタが欲しい! というわけで、作ってみました。 昔は、小型のプリンタメカが手に入ったのですが、いまはありませんね。 というわけでメカから作ってみました。構造はペンプロッタです。 ペンプロッタの材料は、CNCや3Dプリンタと共通点が多く比較的材料が手に入りやすいです。 **2.基本構成** サインペンを使って線を描くペンプロッタ構造にします。 ざっくりこんな感じです。 | 項目 | 内容 | | |:---:|:---|:---| | アクチュエータ | X-Y軸 | ステッピングモーター NEMA17の2相バイポーラ型です。 | | アクチュエータ | ペン上下|RCサーボモーター。よくあるSG9Gという小型品。| | 軸 | スライド機構 | 8㎜径のシャフトとオイルレススライダー。構造体を兼ねます。 | |ペン上下|  |オリジナルでデザインします。| | モータドライバ | タイミングベルト6㎜幅 | 市販のモータードライバーモジュールを使います。 | |コントローラ|SBC|Arduino Nano. UNOを使うとモータードライバーを載せるシールドがありますが、今回は自作します。ATMega328Pの書き込み機が必要。| |伝動機構|力を伝える機構|X-Yはタイミングベルトを使いました。ギアは18歯です。20歯のものを使うときは$100と$101を書き換える必要があります。ペン上下は、RCサーボについてくるホーン(であってますか)でペンを押し上げます。| |ペン||「ZEBRA社製 クリッカート」 ペンプロッタなので、ペンは重要です。フエルトペンでキャップなしで乾かないというちょうどよさげなペンがあり使ってみました。発色もきれいです。| |電源||ステッピングモーターを使うので12V1.5AのACアダプタを電源にしました。Arduinoは12vでも使えるのですがRCサーボモータが5V程度で電流容量が必要です。5V1.5Aの降圧DC/DCコンバータで5Vを作りました。| **3.構造設計** 無料CAD([DesignSpark](https://www.rs-online.com/designspark/home-jp) Mechanical)で設計です。CADで造形して3Dプリンタでパーツを作ります。 ![ペンプロッタ全体構造](https://camo.elchika.com/6f9105562d674f12f7fb0be67d36a22edd08ed96/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f39373865313935322d646361372d343134632d616364342d3562313661323839633164612f33353133383864342d353039372d343232612d613963632d663334353935343934373334/) **4. コントローラ** Arduino Nano(ATMEGA328P搭載)にGRBLを書き込んでコントローラにします。 最新版は、GRBL1.1のようですね。 これなんですが、プログラムサイズが大きくなっていてブートローダが使えなくなっていますので、ATMEGA書き込み機が必要になります。書き込み機は色々販売されていますので、各自用意してください。 ハードリミット、ソフトリミット、ホーミングを使えるようにしています。 **5.GRBL 準備** ATmega328Pの書き込み機が必要です。Arduinoの書き込み機能は最新版では使うことができません。私はUSBASPというのを使っています。Aで始まる大手通販会社でも安く買えます。これは安いし自作も可能ですが、Windows10にインストールはちょっと面倒です。機会があれば、別途書きたいと思いますが、今日のところは「お気に入りの書き込み機を用意してください。」とさせていただきます。 Arduino IDEをインストールします。最新版が良いですね。Homeは[ここ](https://github.com/grbl/grbl)です。英語のページが開くので、SOFTWAREメニューのDOWNLOADSを選ぶと最新版がダウンロードできるページに移動します。寄付するなり、しないなりしてダウンロードしてください。できたらインストールしておきます。設定はディフォルトでいいはずです。 [ココ](https://github.com/grbl/grbl)から最新版がダウンロードできます。右上にある↓CodeボタンをクリックしてDownloadZIPを選びます。 解凍したら、中にあるGRBLフォルダをArduinoのライブラリの下にコピーまたは移動します。Win10ならこの辺りで見つかると思います。 - C:\Users\”ユーザー名”\Documents\Arduino\libraries 次にArduinoIDEを起動してファイルを開く→から先ほどのファイルにあるINOファイルを選んでください。 - C:\~~~~\Arduino\libraries\grbl\examples\grblUpload\grblUpload.ino 次にArduinoIDEのメニューのツールでボードをArduino Nano(またはUno)を選び、CPU をATmega328Pにします。書き込み機も選んでおきます。 そして、Ctrl-Rとタイプするとコンパイルが始まります。エラーとなっていなければOKです。 ```arduino:コンパイル結果(の最後) 最大30720バイトのフラッシュメモリのうち、スケッチが29760バイト(96%)を使っています。 最大2048バイトのRAMのうち、グローバル変数が1633バイト(79%)を使っていて、ローカル変数で415バイト使うことができます。 スケッチが使用できるメモリが少なくなっています。動作が不安定になる可能性があります。 ``` では、Arduino Nanoをつないで(書き込み用の6ピンコネクタ経由)ArduinoIDEのメニューから「スケッチ」→「書き込み装置を使って書き込む」で書き込みます。 正常に書き込むことができたら、今度はArduinoのUSBコネクタでPCとつなぎます。これでWindowsがシリアルポートを認識するはずです。お好みのターミナルソフトでポートを開いてみてください。 - ポート設定:115200BPS 8ビットパリティなし、1ストップビット 次のようなプロンプトが出ればOKです。 -Grbl 1.1h ['$' for help] ここまで出来たら、\$$(半角ドルマークを2個とEnter)を入力してみます。次のようなリストが出るはずです。数値は違っていてかまいません。同じ設定に変える場合は、これをターミナルにコピペすると設定できます。 ```arduino:Grbl設定例 ok $$ $0=10 $1=25 $2=0 $3=0 $4=0 $5=0 $6=0 $10=1 $11=0.010 $12=0.002 $13=0 $20=1 $21=1 $22=1 $23=1 $24=100.000 $25=500.000 $26=250 $27=5.000 $30=1000 $31=0 $32=0 $100=80.000 $101=80.000 $102=250.000 $110=2000.000 $111=2000.000 $112=500.000 $120=10.000 $121=10.000 $122=10.000 $130=180.000 $131=160.000 $132=200.000 ok ``` **6.使うコマンド** 当面必要になるコマンドを紹介しておきます。XとYに続く0は位置座標の数字に置き換えて使います。 - \$\$ 設定を読み出します。 -$数字=設定  設定の書き換えです。 - $X ロック解除 ホーミングをONにすると電源投入後これを入力しないと動きません。 - $H ホーミング 原点まで移動し、位置合わせをします。 - G0X0Y0  高速移動(直線に動く保証はない点に注意。) - G1X0Y0F100 指定速度で直線で移動します。 - G2     右回りで円弧移動 - G3     左回りで円弧移動 - G28.1 X0 Y0 XY点まで移動し位置を覚えます。 - G28     覚えた位置まで移動します。 - F100    G1~3の移動速度を設定します。一度設定すればOK - M3   スピンドル回転 - M5   スピンドル停止 - S500    スピンドル回転速度を指定。今回はRCサーボの位置設定に使います。 電源をいれたらM3コマンドを与えます。これでPWM信号が出るようになるので、その後次のように制御できます。上下の方向は取り付け方にもよりますので、適宜調整してください。 - S500 ペン下げ - S900 ペン上げ - Control-X リセット - ?    位置などの情報表示 - $#    設定読出し。 **7.回路図** ![キャプションを入力できます](https://camo.elchika.com/94ca796befb8b35432fb8e555d11dac3ff54679b/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f39373865313935322d646361372d343134632d616364342d3562313661323839633164612f38383061626262382d376235662d343539612d396464392d313161656661333736626363/) 手描きですが、CADを使うほどでもなかったので、こうなりました。これをユニバーサル基板に組みます。 **8.ギャラリー** ![機構部の全体はこんな感じです](https://camo.elchika.com/ca1383e1ea30a105dc4a2dd30e95ea57a2d7f704/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f39373865313935322d646361372d343134632d616364342d3562313661323839633164612f63366631376236352d316164362d346133352d616139312d356665623830383031346235/) ![回路基板 Arduino Nanoとモータードライバ](https://camo.elchika.com/988ab79899350475585156371f8c99b820577f62/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f39373865313935322d646361372d343134632d616364342d3562313661323839633164612f61323836323862392d656239622d343562372d396166612d346431623331616463343832/) ![ペン保持部 サーボモータがついています](https://camo.elchika.com/18ebff45579fef72c11bc4794d5df5171c0b66b1/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f39373865313935322d646361372d343134632d616364342d3562313661323839633164612f31663737313634312d666634392d346362612d383230372d353532646161316461646639/) ![X軸モーター取り付け部](https://camo.elchika.com/f7d62b5d9af48ee3708380be7892fa7eedb8ea3c/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f39373865313935322d646361372d343134632d616364342d3562313661323839633164612f38666138343937332d386137352d343538662d386536302d666665646264663435346331/) ![X移動するキャリアとY軸のリミットスイッチ](https://camo.elchika.com/7523ffe8fa734a4c65114a541928f39109c78229/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f39373865313935322d646361372d343134632d616364342d3562313661323839633164612f38383335373037662d626666652d343966332d613562322d366437313530613735386336/) サンプルのGコードと描いた四角です。1㎝x1㎝の正方形です。 ```arduino:サンプルGコード M3 S500 G91 G1X10F500 Y-10 X-10 Y10 S900 ``` ![1㎝の正方形を描いたところ](https://camo.elchika.com/b3ea1f16637a739f47aa9adf82b79f9fbcd8e71e/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f39373865313935322d646361372d343134632d616364342d3562313661323839633164612f66643065643466382d383632662d343236662d616438652d656462313931346330343563/) **9.最後に** 最後までご覧いただきありがとうございました。 これで、G-Codeをシリアルで書き込むと動くペンプロッタができました。表題のIchigoJamに限らずマイコンでお絵描きができますので、お試しtたいと思います。使いやすくするには制御するマイコンのプログラムに工夫が必要になります。 またステップモータはSBCと相性が良いので、他にもいろいろ使って遊べそうです。 **LINKs** ArduinoのHomeは[ここ](https://github.com/grbl/grbl)です。 GーCode/M-Codeの説明はこの[あたり](https://www.cnccookbook.com/g-code-m-code-reference-list-cnc-mills/)を参考にさせていただきました。 RCサーボモータの記事は[こちら](http://www2.plala.or.jp/k_y_yoshino/6legs/servo.html)を参考にさせて頂きました。