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


※ 当ページには【広告/PR】を含む場合があります。
2020/05/28
[プロトタイプ電子基板 x CNC切削加工] 電子基板のプロトタイピング① ~ アイソレーション加工




卓上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クライアントでラズパイをリモートで利用する記事を書きました。


合同会社タコスキングダム|蛸壺の技術ブログ
【Raspberry Piセットアップ方法(旧式)】ラズパイ & Remmina on Linuxで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 導入方法をメインに解説しました。
次回の機会があれば何かガーバーデータを使って、実践的の削り出しをやってみようと思います。