ペンプロッターのZ軸を作る

<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

#はじめに
ペンプロッターを作る方法はインターネット上で溺れるほど紹介されています。
しかしZ軸の作り方だけ詳しく書かれているものが少なかったのと、メカ的に面白そうだったので作ってみることにしました。
ここでは制作過程で得た知見を共有したいと思います。

#完成品
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">ペンプロッターで名車VW Beetleをお絵かき <a href="https://t.co/D6yEQ2DJFT">pic.twitter.com/D6yEQ2DJFT</a></p>&mdash; ダイヤモンド電電 (@diamond_denden) <a href="https://twitter.com/diamond_denden/status/1257371007293194240?ref_src=twsrc%5Etfw">May 4, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">ペンプロッターのZ軸の機構 <a href="https://t.co/zUx1effMog">pic.twitter.com/zUx1effMog</a></p>&mdash; ダイヤモンド電電 (@diamond_denden) <a href="https://twitter.com/diamond_denden/status/1257371215175573505?ref_src=twsrc%5Etfw">May 4, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

![plotter01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286787/88252caf-e539-36bb-bcab-54abe533cf7b.jpeg)
![plotter07.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286787/097df58c-cdff-157c-61c1-f287d58e66df.jpeg)

#必要なもの
##材料
![plotter04.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286787/abc111e2-c792-6991-30ba-2844706075a4.jpeg)

|材料|詳細|価格（円）|
|:---:|:---:|:---:|
|3Dプリンター用フィラメント|ABS 1kg|3000円程度|
|[ステッピングモーター](http://akizukidenshi.com/catalog/g/gP-05372/)|SM-42BYG011|1380|
|[プーリー&タイミングベルトセット](https://www.amazon.co.jp/gp/product/B07N2ZB4GJ/ref=ppx_yo_dt_b_asin_title_o02_s01?ie=UTF8&psc=1)|GT2 幅6mm|799|
|[スライドレール](https://www.monotaro.com/p/3789/6932/?displayId=5)|スガツネ工業 <br> ARL2-16-100|619|
|[リニアブッシュ](https://www.monotaro.com/p/0723/1551/?displayId=5)|内径8mm,全長24mm|369|
|[シャフト](https://www.monotaro.com/p/3747/3807/?displayId=5)|外径8mm,全長50mm|359|
|[ベアリング](https://www.monotaro.com/p/0825/0243/?displayId=5)|604ZZ＊2|218|
|[インサートナット](https://wilco.jp/products/B/HSB-Z.html#page7)|M4*5mm（方向指定なし）＊2|82|
|[M4ネジ](https://wilco.jp/products/F/FC.html#page6)|M4*20mm＊2|70|
|[M3ネジ](https://wilco.jp/products/F/FC.html#page5)|M3*25mm＊2 <br> M3*12mm＊4|70 <br> 140|
|[M2.5ネジ](https://wilco.jp/products/F/F-EB.html#page2)|M2.5*8＊10|250|
|輪ゴム|--|--|
|ペン|--|--|

##工具類
- 3Dプリンター
    - 加工範囲は150mm*150mm*150mmがあれば十分だと思います
    - フィラメントはABSとPLAを試しましたが、ABSのほうが柔らかいのでリニアブッシュなどのはめ込み工程が楽になったのでおすすめです
- 半田ごて
    - インサートナットの埋め込みに必要です
- 六角レンチ
    - ネジ類を締めるのに必要です

#製作工程
##設計
今回はZ軸の制作方法なので、XY軸の制作方法については省略します。
私は不要になった[Oh-Laser社のレーザーカッター](https://www.oh-laser.com/products/hajime)を分解し、XY軸を取り出しました。[格安の3Dプリンタ](https://www.aliexpress.com/item/32911047328.html?spm=a2g0o.productlist.0.0.501a29e4weUm6E&algo_pvid=95a7777e-f455-4348-ad55-fbb598e4af4b&algo_expid=95a7777e-f455-4348-ad55-fbb598e4af4b-6&btsid=0ab6d69f15885061423918680e4c22&ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_)を購入して分解し、XYZ軸を利用するのも一手だと思います。

立体のものを考えるときは3D CADを使うと何度も画面内で作り直せるので便利です。今回はAutodeskさんのFusion 360を利用して設計しました。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">Fusion 360でペンプロッターの設計 <a href="https://t.co/fMVHHAShhe">pic.twitter.com/fMVHHAShhe</a></p>&mdash; ダイヤモンド電電 (@diamond_denden) <a href="https://twitter.com/diamond_denden/status/1257361676959170565?ref_src=twsrc%5Etfw">May 4, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


###ステッピングモーター
まずZ軸を動かすために必要な**ステッピングモーター**を選定します。
ステッピングモーターにはNEMAと呼ばれる大きさの規格があります。よく使われる2種類を表にしてみました。重量と価格はおおよそのものです。

|規格|外径（mm）|軸径（mm）|重量（g）|価格（円）|
|:---:|:---:|:---:|:---:|:---:|
|NEMA17|42|5|400|2000|
|NEMA23|57|6.35|1000|4000|

今回の要件はペンを上下させるだけなので、大きなトルクと分解能は必要ありません。私は秋月電子通商で[安価なもの](http://akizukidenshi.com/catalog/g/gP-05372/)を選びました。

###タイミングベルト・プーリー
![plotter05.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286787/3b461e56-594b-22f1-bbbd-4f8d69ee5ea2.jpeg)

モーターが決まれば軸の太さも決まるため、タイミングベルトとプーリーを選定できます。
まずタイミングベルトの幅を考えます。
今回はベルトに力がかかる設計ではないので、最低限のベルト幅にします。今回は6mmにしてみました。
ベルトにも規格があります。バックラッシュ（車がかみ合うときのすき間）を気にするような要件でなければ、どの規格でもそんなに変わらないと思います。今回はゲイツ・ユニッタ・アジア株式会社が規定している[GTベルト](https://www.unitta.co.jp/products/industry/power/gt)という規格のものを使ってみました。
ベルトが決まればタイミングプーリーも自ずと決まります。
今回選定したモーターはNEMA17にあたるので、軸径は5mmです。ベルト幅が6mmのもので、ベルトと同じ規格のものを選びました。
受け軸のプーリーは3Dプリントしました。必要になる2つのベアリングは604ZZにしました。[ベアリングの規格](https://www.monotaro.com/s/pages/productinfo/bearing_number/)は簡単なので一度目を通してみてください。

###リニアスライダ
機械を使って水平にものを動かしたいとき、必要な精度と求められる強度、コストによって使う部品を使い分けます。

|部品名|精度|強度|コスト|
|:---:|:---:|:---:|:---:|
|ボールねじ|○|○|✗|
|ローラースライダー|○|△|○|
|リニアブッシュ|○|△|◎|
|スライドレール|✗|✗|◎|

今回は予算が限られていたことから、スライドレールとリニアブッシュを使った設計にしました。
スライドレールは引き出しにも使われる汎用品で、低い価格帯が魅力的な部品です。精度はあまり良くありませんが、複数個を併用して使うとガタが少なくなり、精度を上げることが出来ます。
今回は描画面とペンの位置関係を合わせるためだけに使うので、可動範囲は10cmもあれば十分です。今回はモノづくりのAmazonとも評されるモノタロウで購入しました。即日発送可能な品物が多く、全国の大都市圏にはそれぞれ倉庫があるので注文から2日以内に届く場合が多く、重宝します。
今回、リニアブッシュはペンが描画面に必要以上に押し付けられたときの衝撃緩衝用に使いました。精度もよく、ガタも少ないのに安い優等生です。

##加工・組み立て
3D CADで設計したデータをSTLに出力し、3Dプリンタで出力します。
今回設計した3Dデータは[Thingiverse](https://www.thingiverse.com/thing:4337020)にアップロードしたのでご活用ください。
![penplotter06.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286787/52d4d62b-5af0-3f18-3331-d3a380c1b0e5.jpeg)

3Dプリントした部品にインサートナットを埋め込みます。埋め込むコツについて[記事](https://qiita.com/diamond_denden/items/f5b598ad058ab145c322)にしました。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">3Dプリント部品にインサートナット（ビットインサート）を埋め込む <a href="https://t.co/2kFnTtaYhd">pic.twitter.com/2kFnTtaYhd</a></p>&mdash; ダイヤモンド電電 (@diamond_denden) <a href="https://twitter.com/diamond_denden/status/1257336353404092416?ref_src=twsrc%5Etfw">May 4, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


次はプーリーを組み立てます。ラジアルベアリングは通常2個1組で使います。本来は専用に作られたスペーサーで挟み込むことが多いのですが、高いのでナットで代用しました。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">3Dプリント部品でプーリーを組み立てる <a href="https://t.co/8gFNwbZ5jS">pic.twitter.com/8gFNwbZ5jS</a></p>&mdash; ダイヤモンド電電 (@diamond_denden) <a href="https://twitter.com/diamond_denden/status/1257687239955320833?ref_src=twsrc%5Etfw">May 5, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


同じように3Dプリントした部品に購入した部品を装着していきます。
円柱形のものは、ABSの弾性を利用してピッタリの大きさの穴に圧入することで固定することができます。強度が必要ないときに使います。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">3Dプリント部品に規格品を圧入する <a href="https://t.co/46kFIkcand">pic.twitter.com/46kFIkcand</a></p>&mdash; ダイヤモンド電電 (@diamond_denden) <a href="https://twitter.com/diamond_denden/status/1257697298739429376?ref_src=twsrc%5Etfw">May 5, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


タイミングベルトを使ってものを動かそうとするとき、どうやって対象物に固定しようか一度は悩まれると思います。今回は3Dプリント部品の構造を工夫するだけでタイミングベルトを止める方法を採用しました。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">3Dプリント部品の構造だけでタイミングベルトを止める <a href="https://t.co/zgVU3UJxCr">pic.twitter.com/zgVU3UJxCr</a></p>&mdash; ダイヤモンド電電 (@diamond_denden) <a href="https://twitter.com/diamond_denden/status/1257699294766755842?ref_src=twsrc%5Etfw">May 5, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

最後にスライドレールを取り付けて完了です。輪ゴムを使って、ペンが必要以上に描画面に押し付けられても緩衝される仕組みにしました。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">ペンが必要以上に描画面に押し付けられても緩衝される仕組み <a href="https://t.co/fiYJfDAyO7">pic.twitter.com/fiYJfDAyO7</a></p>&mdash; ダイヤモンド電電 (@diamond_denden) <a href="https://twitter.com/diamond_denden/status/1257706013429383168?ref_src=twsrc%5Etfw">May 5, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

#Z軸以外の構成
この記事には長過ぎるので、ググラビリティ高めな文章で完結に示します。
##ハードウェア
- 電源
    - [安定化電源(30V10A)](https://www.amazon.co.jp/gp/product/B07D33GM1D/ref=ppx_yo_dt_b_asin_title_o05_s00?ie=UTF8&psc=1)
- [CNC制御基板](https://www.amazon.co.jp/gp/product/B06XHSXM4G/ref=ppx_yo_dt_b_asin_title_o07_s00?ie=UTF8&psc=1)
    - Arduino Uno
    - CNC Shield V3
    - ステッピングモータードライバ
        -  A4988

##ソフトウェア
![cncjs.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286787/1d1e5b68-0f2d-25f9-2443-80636d63221c.jpeg)

- SVGデータ作成
    - Adobe Illustrator
- Gコード変換
    - Autodesk Fusion 360
- Gコード送信
    - cncjs
        - bCNCも試しましたが、MACだとcncjsのほうが安定して動作しました
- Gコード受信
    - grbl 0.9j
        - Arduino Unoに書き込みます

#おわりに
3Dプリンターが家にあるとプロトタイピングし放題で頭の中が3D CAD状態になり、世界が変わって見えます。迷われている方はぜひ手に入れてみてはいかがでしょうか。
![plotter10.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286787/622a4f4e-ac56-6044-24b3-3b66a3e7410f.jpeg)


##参考
- [自作CNCマシン・レーザーカッターについて](https://cnc-selfbuild.blogspot.com/) さん
    - 日本語で書かれたWeb上のサイトのなかで一番まとまっているサイトでした。大変お世話になりました。
- [Make: CNCを知ろう：G-Codeの読み方](https://makezine.jp/blog/2017/01/get-to-know-your-cnc-how-to-read-g-code.html) さん
    - Gコードの基礎を学ぶことが出来ます。
- [Make.oldcyclist.com](https://make.oldcyclist.com/2017/07/grbl-test2/) さん
    - CNC Shieldの設定について詳しくまとめてくださっています。