[ラズパイ x 卓上CNC] ラズパイにいれたbCNCを使って卓上CNCを動作テストするまでの手順


2020/05/28

卓上CNCルータを使うと、ちょっとした電気回路基板を試しをすぐに手元で試せるのでDIYレベルのプロトタイピングに非常に重宝します。

今回はネットショップでも購入できる卓上CNCルータを利用して、ラズパイのリモートから操作しながらの基板起こしする準備のお話を取り上げます。


bCNCのインストール

まずはラズパイにログインして、インストールしているpythonのバーションを確認をします。

なお今回の動作確認は
Raspberry Pi 3B+で行ったものですが、pythonさえ正常にインストールできていればラズパイのどの機種でも正常に動作すると思います。

            $ python --version
Python 2.7.16
        
デフォルトで入っているバーションが2.7系であることを確認すると良いです。

では、公式にあるように必須のライブラリごと
pipをインストールします。

            $ sudo apt-get install python-pip python-setuptools python-dev python-tk libjpeg-dev zlib1g zlib1g-dev
[sudo] blue-taco のパスワード:
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
python-dev はすでに最新バージョン (2.7.16-1) です。
python-dev は手動でインストールしたと設定されました。
python-setuptools はすでに最新バージョン (40.8.0-1) です。
python-setuptools は手動でインストールしたと設定されました。
python-tk はすでに最新バージョン (2.7.16-2) です。
zlib1g はすでに最新バージョン (1:1.2.11.dfsg-1) です。
zlib1g-dev はすでに最新バージョン (1:1.2.11.dfsg-1) です。
zlib1g-dev は手動でインストールしたと設定されました。
python-pip はすでに最新バージョン (18.1-5+rpt1) です。
以下の追加パッケージがインストールされます:
  libjpeg62-turbo-dev
以下のパッケージが新たにインストールされます:
  libjpeg-dev libjpeg62-turbo-dev
アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 0 個。
236 kB のアーカイブを取得する必要があります。
この操作後に追加で 543 kB のディスク容量が消費されます。
続行しますか? [Y/n] Y
        
手元の環境では、既にいくつかのライブラリが過去に入れていたようです。インストール完了したらpipのバーションを観てみます。

            $ pip --version
pip 18.1 from /usr/lib/python2.7/dist-packages/pip (python 2.7)
        
それでは、pipからbCNCを導入します。

            $ pip install bCNC
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting bCNC
  Downloading https://files.pythonhosted.org/packages/d9/51/7cbe26701d0e5d0a991802d7847851426038fdd191201a083623b1a070dc/bCNC-0.9.14.306.tar.gz (1.3MB)
    100% |████████████████████████████████| 1.3MB 95kB/s
Requirement already satisfied: Pillow>=4.0 in /usr/lib/python2.7/dist-packages (from bCNC) (5.4.1)
Requirement already satisfied: numpy>=1.12 in /usr/lib/python2.7/dist-packages (from bCNC) (1.16.2)
Requirement already satisfied: pyserial in /usr/lib/python2.7/dist-packages (from bCNC) (3.4)
Building wheels for collected packages: bCNC
  Running setup.py bdist_wheel for bCNC ... done
  Stored in directory: /home/**********/.cache/pip/wheels/d8/42/2a/5273e7e4252dfea6e39ea17862798f675e7c46cfb94cadcc9c
Successfully built bCNC
Installing collected packages: bCNC
  The script bCNC is installed in '/**********/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed bCNC-0.9.14.306
        
これでラズパイにbCNCがインストールできました。

sshのターミナルからはここまでで、次はリモートデスクトップ側からGUI操作になりますので、一旦sshを抜けます。


Remmina (Debian OS)からRDPで接続してbCNCを起動する

以前、ラズパイ & Remmina on LinuxでRDP接続してリモートデスクトップさせてみる方法の記事で、RemminaというRDPクライアントでラズパイをリモートで利用する記事を書きました。

ラズパイのRDPの導入方法はそちらの記事を参照していただくとして、先程のラズパイにインストールした
bCNCをDebianのパソコンからリモート操作します。

それではRemminaクライアントからラズパイに接続し、
python -m bCNCでコマンドを入力します。

合同会社タコスキングダム|蛸壺の中の工作室

すると
bCNCが正常に起動したらインストール完了です。

合同会社タコスキングダム|蛸壺の中の工作室


CNCと接続してみる

それでは、きちんと通信できるか、ラズパイとCNCをUSB接続してみます。

CNCをUSB接続させたときに与えられるラズパイ側のデバイス名はそれぞれの環境で違うと思いますが、手元のラズパイ3B+では
/dev/ttyUSB0で認識していたので、これを選択します。

合同会社タコスキングダム|蛸壺の中の工作室

シリアルのボーレートは
115200bpsでそのままにしておいて、コントローラーはgrblのファームウェアのバーションに応じてGRBL0/GRBL1がどちらか適宜選択できます。準備が完了したら、開くボタンで接続しましょう。

合同会社タコスキングダム|蛸壺の中の工作室

うまく接続できたら、
閉じるという緑のボタンアイコンに変わり、Idleの状態になっているのが分かります。

合同会社タコスキングダム|蛸壺の中の工作室

それではマニュアルで動くかどうかだけxy軸を移動させてみます。

Controlタブを開き、左下側にあるControlエリアの矢印をクリックします。

合同会社タコスキングダム|蛸壺の中の工作室

スムーズにCNCが並行移動していたら、リモートでの通信開始テストは完璧です。これでネットワーク上のどこのパソコンからでもラズパイにアクセスして、基板加工ができる環境が整いました。


プローブのテスト

いきなり基板の削り出しを行う前に、Auto levelingをやってみようと思います。

ピン配置の確認

オートレベリング機能とは、プローブと金属表面が導通したときを検知して加工の高さを補正していくことを指します。ということで、CNC本体が自動でやってくれる訳ではなく、自分でプローブとPBC基板表面を、CNCの基板側に配線を接続する必要があります。

現在利用している格安の中華製CNCは
Woodpecker CNC GRBLの基板です。だいたい格安で出回っているCNCはAtmelMega328PベースのArduino GRBLが入っているので、オートレベリング用の電圧検知はA5ピンに割り振られています。

合同会社タコスキングダム|蛸壺の中の工作室

オートレベリングでエンドミルを折ってしまうのは残念ですので、心配な人は、前もって取説に書かれている内容か、ソースコードからビルドしてインストールする際にはコードを見て確認しておいた方が良いでしょう。

A5端子の接続先はプローブ、GND端子の接続先はPCB基板表面とします。

合同会社タコスキングダム|蛸壺の中の工作室

可動部分に接続させるため、プローブが動いている途中で引っかからないように余裕をもった配線の長さにしましょう。

合同会社タコスキングダム|蛸壺の中の工作室

オートレベリング前の手動調整

今回はオートレベリングの解説だけに絞っているので、本番用のエンドミルは使わず、太めの鉛筆の芯を加工したもので代用してみます。材料的に柔らかくしかも伝導性をもち、なおかつ安いのでコスパ最高です。最悪でも芯が弾け飛ぶだけでCNC本体にはノーダメージなこともあり、予備動作を試験するには最適なんではないかと思います。

合同会社タコスキングダム|蛸壺の中の工作室

これをCNCのスピンドルに固定し、ワニ口などでプローブの固定具を掴んでおきます。他方、PBC基板表面を導線などで接触させて固定したものをGND側の配線に持ってきます。

合同会社タコスキングダム|蛸壺の中の工作室

この時点で、テスターなどに接続して導通具合は見れるようにしておきます。

しっかりと配線が固定できているのを確認してから、プローブを加工原点にしたい場所の上空までxy座標を手動で移動させます。

移動は
[Control]タブ --> [Control]で手動操作パネルがあります。右のコンボボックスからクリック1回あたりの移動量を選択できるのですが、移動させる前には必ず大きすぎる値になってないか気を配っておきましょう。

合同会社タコスキングダム|蛸壺の中の工作室

そこからゆっくりと確実にプローブをz軸方向に降下させていきます。

合同会社タコスキングダム|蛸壺の中の工作室

目視でそろそろ基板表面に接するようなところまで降ろしたら、テスターで導通具合を確認しながら更にプローブを下げます。

合同会社タコスキングダム|蛸壺の中の工作室

慎重にプローブを降ろしていくと、導通した瞬間に止めます。

合同会社タコスキングダム|蛸壺の中の工作室

接触したこの座標を作業用のゼロ座標として登録しておきましょう。

Wpos(ワーク座標)のXYZをすべてゼロリセットします。

合同会社タコスキングダム|蛸壺の中の工作室

これで原点出しできました。

オートレベリング

ここから実際のオートレベリングを行います。

まずオートレベリングを実行する前に、必ずプローブ側をA5端子、PBC基板側をGND端子に接続したか確認します。

先程の加工原点のゼロ出しのままでテスターに配線しっぱなしの状態でオートレベリングを行うと、エンドミルならびにCNC本体にダメージが行くので、うっかりどころで無くなるかも知れません。必ず接続確認をしましょう。

合同会社タコスキングダム|蛸壺の中の工作室

配線の接続確認をしたら、
[Probe]タブ --> [Auto Level]の画面に進み、プローブ領域やフィード速度などの設定をします。

Common設定

プローブに関する諸設定です。

設定値

備考

Fast Probe Feed

30.0

早送り時のプローブフィード速度

Probe Feed

30.0

測定時のプローブフィード速度. 遅い速度ほど高精度に測定できる

TLO

0.000

予めチップの長さが判明している場合に設定する表面からのオフセット量. 通常はゼロで良い

Probe Command

G38.2 Stop on contact else error (Default)

エラー発生時の挙動

Autolevel設定

その時のワークの大きさや固定したレイアウトによって異なります。ここでは参考程度ですが、プローブのXYZ範囲を設定を以下のようにしました。

下限(Min)

上限(Max)

ステップ数(N)

X

0.0

40.0

10

Y

0.0

30.0

8

Y

-1.0

1.0

--

例えばMinの値より凹んでいるとこがあるとMin値までZ軸が下がった所で接触がないのでエラーで止まります。

作業領域は原点(0,0,0)を左下に見た時の右に進む方向を
+x、上に進む方向を+y、鉛直方向上に進む方向を+zとしてイメージすると良いと思います。

XY軸のステップ数刻みで測定点を決めているので、ステップ数の刻みを多くするごとに高解像度な表面の補正マップが作成されますが、あまり刻みすぎると今度はオートレベリングがかなり長時間掛かってしまうもの考えものです。ステップ数の設定はほどほどの値にしましょう。

今回はプローブの準備にテスターを見ながら表面を接触した高さで
z=0を取っているので、よほどの凹凸に富んだ表面でもない限りは±1.0程度の歪み範囲設定で良いと思います。この範囲を外れるとエラーが発生します。

以上、安全確認後
Scanを押すとオートレベリングが始まります。

合同会社タコスキングダム|蛸壺の中の工作室

オートレベリング中は、リアルタイムで進捗状況が確認できます。画面下に現れるプログレスバーには、大体の予想作業完了時間もでますのでなかなか便利です。

合同会社タコスキングダム|蛸壺の中の工作室

今回の設定ではだいたい80点の測定で、10分程度かかるようです。

測定結果の保存

オートレベリング完了後の測定データを利用するには、データを保存する必要があります。

合同会社タコスキングダム|蛸壺の中の工作室

測定した生データは現在のプローブからのz軸方向の絶対座標です。

なので、プローブ原点出しの際にプローブの接触したときの高さを前もって
z = 0にしていない場合、例えばz = 0.5のあたりを原点として登録して測定した生データのままでは、本当の表面歪みデータにはなっていません。

ということで、測定したどこかの点を基準をゼロとしてそこから相対的な高さデータに補正してくれるのが、
[Zero]ボタンの機能です。これを原点位置(x = 0, y = 0)上で実行すると、

合同会社タコスキングダム|蛸壺の中の工作室

原点位置からの相対高さでデータが再計算されます。

測定データは
probeという拡張子で保存する必要があります。

合同会社タコスキングダム|蛸壺の中の工作室

加工時にこの
***.probeファイルを読み込んで、表面歪みを加味したプロセスが走るようになるようです。


まとめ

今回は加工作業というよりは、ラズパイへのbCNC導入方法をメインに解説しました。

次回の機会があれば何かガーバーデータを使って、実践的の削り出しをやってみようと思います。
記事を書いた人

記事の担当:taconocat

ナンデモ系エンジニア

電子工作を身近に知っていただけるように、材料調達からDIYのハウツーまで気になったところをできるだけ細かく記事にしてブログ配信してます。