昨年の夏ぐらいからずっとやっていた CNC コントローラの Machinekit 化 がようやく一段落しつつあります。夏の時点で「動く状態」ではあったのですが、筐体に入れておらず雑に組んだまま運用していました。

まぁこれで使えてしまっていたので余計に筐体を作るモチベーションが落ちていたのですが、ようやく作りました。

筐体全体の設計


ベース

ベースは1mmのアルミ板を6枚組合せたもので、machinekit化以前から使っていたものを流用しています。アルミ板6枚はアルミ板で作ったアングルで相互に固定されています。1枚1枚はただの板のままなため、NC 切削する際の Z 軸の余裕を考慮する必要がなく都合が良いです。

方針

方針として Beagle Bone Black から出ているコネクタはできるだけ筐体の外に引き出すことにしました。HDMI や LAN や USB などです。また USB に関しては筐体内に4ポートハブを内蔵して、前面・背面に2つずつ引き出すこととしました。パネル用のコネクタはほぼ ebay 経由で入手できます。どうもこういうのは国内だと売ってません。

またスピンドル電圧と電流を表示するためにアナログメーターをつけることにしました。切削抵抗の目安になるのではにか?という意図と、あとは単に格好が良いのでつけたいという感じです。

ほかにも細かいことがいろいろありましたが忘れました。

モデリング

3D CAD の Fusion 360 で収めたい部品を全てモデリングし、CAD 上で部品配置を検討しました。「うっかり干渉して入らない……」ということを防ぎ、穴開け用の CAM としても使う意図です。

あとになって作ってみると、大丈夫だろうと思ってモデリングを省いた部分で案の定干渉して、1つのコネクタ (LAN) を入れることができませんでした。今のところ使っていないので致命的ではありませんが代替方法を考え中です。

穴あけ

穴あけは CNC フライスで行いました。配置検討した Fusion 360 からそのまま穴あけもモデリングして筐体の各面の CAM データを作成し、Gcode を出力して加工しました。

加工は φ1mm のエンドミルで切り込み 0.1mm、フィード 50mm/min でやりました。最近ようやく切り込みは限りなく小さくしてフィードレードをあげたほうが安全(折れにくい)ということがわかってきました。もっと太いエンドミルを使ったほうが早いですが、ちょっと細かいところもあって面倒だったので基本一括 1mm としました。

ただ、φ1mm のエンドミルだと Fusion 360 は φ1mm の穴のパスを作ってくれないので、該当部分だけ φ0.8mm で加工しました。

頑張って組む

設計ミスをリワーク

テスト中の様子

中はケーブルがかなりを占める

配線が結構多いので大変でした。100V を引き込むようにしたので、そのへんははんだ付け後にビニールテープで覆って、うっかり触れないようにしてあります。

電圧計・電流計 (どちらもスピンドル用) をどうしても付けたかったので余計配線が複雑化しました。

その他

筐体前面に出ている LED は BBB の USR LED そのままにしたかったので、光ファイバーで引き出しています。

非常ボタンはもともとツバがついていませんが、これも削り出してつくっています。

感想

かなり初歩的ではありますが 3D CAD を活用して筐体設計もそこそこ簡単にできることがわかりました。あとやはりモデリングは細部まで行うことが大事だという教訓を得られました。

自分用メモ:使いかた

  1. 主電源を入れる
  2. 自動的に BBB にも電源が入り、電源 LED が点灯する。起動プロセスに入るので USR LED 4つも明滅する
  3. 起動するまで少々待ってから、VNC で接続する (Finder で Cmd+K)
  4. (加工する)
  5. 電源ボタンを押すと BBB はシャットダウン開始される
  6. しばらく USR LED が明滅したのち、完全に消灯すれば主電源を切ることができる

追記 スピンドルコントロール



こういうのをPWM経由で制御している。

  1. トップ
  2. tech
  3. Machinekit 用の筐体

いちいちモニタ繋いで確認とかするのは面倒ですが同じネットワーク内なら簡単に調べることができます。

まず ifconfig で所属するネットワークのブロードキャストアドレスを調べます。

$ ifconfig
...
broadcast: 192.168.0.255

broadcast 向けで ping を数回打ちます。ARP テーブルを埋めるためなので結果は気にしません。ネットワーク内の接続機器が多いと大量にかえってくるのでほどほどにしましょう。

$ ping 192.168.0.255
...

arp -a で ARP テーブルを表示し、Raspberry Pi Foundation の OUI ( b8:27:eb) を持つものを列挙します。

$ arp -a | grep b8:27:eb

簡単です。

  1. トップ
  2. tech
  3. ネットワーク内の Raspberry Pi の IP アドレスを調べる

思いたって USB 3.1 Gen2 のハブを探してみたけど、存在していなかった。

ところで、USB 3.0 というのは既に消滅している。過去の USB 3.0 は USB3.1 により置き換えられ USB 3.1 Gen1 となっている。USB 3.0 と USB 3.1 Gen1 は同じなのだ。

ということで単に「USB 3.1 対応」と書いてあるものは、予想に反して合法的に USB 3.0 と同一の製品である可能性がある。Gen2 対応が明記されていなければだめ。

「USB 3.1」と表示されている製品には注意が必要。

  • Type-C コネクタを採用しているだけで USB 2.0
  • USB 3.1 Gen1 (=USB 3.0)
  • USB 3.1 Gen2 (10Gbps)

が混在している。

なぜ USB 3.1 Gen2 のハブ を探していたか

USB 3.1 Gen1 (USB 3.0) は伝送路における基本波が 2.5GHz なため、ISM バンドの 2.45GHz 帯 (2.4GHz〜2.5GHz)で電波障害が起きやすい。Gen2 なら問題ないはずなので、どうせ買うなら Gen2 に置き換えていきたいと思ったのでした。しかしまだ早かった。

USB 3.1 Gen1 = USB 3.0 ?

USB 3.1 Specification Language Usage Guidelines from USB-IF には以下のような記述がある。

USB 3.1 Gen 1 and USB 3.0 terms are synonymous

http://www.usb.org/developers/ssusb/USB_3_1_Language_Product_and_Packaging_Guidelines_FINAL.pdf
  1. トップ
  2. tech
  3. USB 3.1 Gen2 のハブは現時点ではないみたい