2017年6月3日土曜日

小型工作機CNC2418 その15(bCNCのAutoLebel機能)

やっとbCNCに乗り換える時期がやってまいりました。
まずは、「Autolevel」から
CNC2418付属のGRBLcontrol(Candle)でいうHeightMap機能です。
以前ここで解説しています。

GitHubのここに解説があります。
22 Feb 2016とあります。

TLO (Tool Length Offset)の解説もありますが
使いこなせないので無視です。

一応、Autolevelの所を訳します。
順にやっていきます。
bCNCを起動し[Menu]の[Probe]-[Autolevel]をクリックします。
まず、CNC2418にPCBをセットして
スピンドルを原点に持っていき、
Z軸はPCB表面ぎりぎりで
XYZリセットします。
[X=0][Y=0][Z=0]ボタンでWpos(作業位置)だけを
全て「0.0」にします。

2. Enter the values of the working area you wish to probe on X/Y min and maximum coordinates. 
(探索する作業領域を X/Y minとmaximumに座標値を入力します)

この画面では、最後に入力していた値が記憶されています。
上の方の欄から
【Common】部
[Probe feed:]10.0
 これくらいが丁度いいかと。
 早すぎると精度が落ちるらしい。
[TLO]0.000
 使い方わからず
[Probe Command]
 「G38.2 Stop on contact else error」のままでいいです。
 Probeが接触したら停止。 失敗時エラー信号が出ます。

 G38.3は、G38.2と同じですが、失敗時にエラーがでません。
 恐らく、G38.2とG38.4、G38.3とG38.5は対で
 接触した時にONで検出するかOFFで検出するかの違いのようです。

【Autolevel】部
サンプルとして入力しています。
[X:]の[Min]に0、[Max]に40、[N]に6
 X軸方向は、0~40mmの間を角を含めて6点測定する意味です。
[Y:]の[Min]に0、[Max]に30、[N]に3
 Y軸方向は、0~30mmの間を角を含めて3点測定する意味です。
[Step]の所に測定点の間隔が表示されます。
 Nを変えないとStepの所は変化しません。
[Z:]の[Min]に-5.0、[Max]に2.0
 Z軸をこの範囲で探索します。
 例えばMinの値より凹んでいるとこがあると
 Min値までZ軸が下がった所で接触がないのでエラーで止まります。

この場合、右欄に6x3のマスが黄色ででています。
設定が完了したら
GRBLコントロールボードの
A5端子をエンドミル、GNDをPCB表面、に接続しているのを確認して
[Scan]アイコンをクリックします。
測定の順番は、原点から右方向に始まり
次は、Y軸を上げて右から左へ、とジグザクです。
ここは、GRBLcontrol(Candle)と同じです。
全ポイントの測定が完了したら原点に戻ります。
全18ポイントで5分程かかりました。
最初にPCB表面から0.5mm辺りを[Z=0]でリセットしていて
実際の測定結果が0より低いのでブルーになっています。
そこで高さの基準にしたい所(原点にしました)で
[Zero]アイコンをクリック。
そのポイントが高さ「0.0000」になって
他のポイントはその差の値に正規化されます。
原点が「0.0000」になりました。
他のポイントは、原点より高い方向に歪んでいるので
今度は、全体が赤いマップになっています。
高さの数値が表示されているだけで
歪み方はビジュアルには反映されません。
Candleの様なグラディエーションの等高線と思っていたので
ちょっと物足りない感じ。
[Zero]ボタンを押さないと
この様な警告が出るらしいです。
「マシンの破壊を防ぐ機能」ということです。
ちなみに、中央付近 X:16  Y:15のポイントに移動して
[Zero]ボタンを押すと、こうなりました。
左が沈んで、右が浮く方向に歪んでいる色合いになっています。
加工する時は、原点基準がいいので
また原点に戻って[Zero]ボタンを押します。
メーニューから[File]-[Save]で
「*****.probe」というファイル名で保存します。
拡張子は自動では .probeにはなりません。手入力します。
ファイルの中身は以下のようになっていました。
GRBLcontrol(Candle)では、測定した順番に
Z値だけの羅列になっていましたが
bCNCでは、測定した順番ではないですね~
X,Y,Zの順で記述されています。
互換性は無いということになります。
**********
0 40 6
0 30 3
-5 2 10

0 0 0
8 0 0.106
16 0 0.192
24 0 0.23
32 0 0.252
40 0 0.254

0 15 0.076
8 15 0.136
16 15 0.175
24 15 0.204
32 15 0.226
40 15 0.229

0 30 0.097
8 30 0.136
16 30 0.17
24 30 0.199
32 30 0.201
40 30 0.21
**********
[Clear]で最初の黄色のマス目だけに戻して
やり直すこともできます。
前回と同じテストランドを読み込んでみます。
【Autolevel】の各項目は前のままです。
ここで[Margins]ボタンを押すと
[X:][Y:]の[Min][Max]が自動的に
切削部分を囲むピッタリの四角に設定されます。
[N]は前のままなので、ここを適当な数値にするだけでよくなります。
今回は、「3」にします。
エンドミルぎりぎりでZ=0しているので
[Z:]の[Max]は、1.0でいいでしょう。プロービングが早くなるし。
[Scan]ボタン押します。
始まりました。
スピンドルがじわじわーっと下がってきて
PCBに接触すると止まって、また上がって次のポイントへ移動します。
これは、いつもエンドミルが折れないかとドキドキです。
下の欄に進行状況がでます。
完了しました。
切削領域の最左下X:5 Y:5に戻っているので
このポイントを高さ0として他のポイントの高さを計算します。
 [Zero]ボタンを押すと、それが行われます。
赤丸のポイントが0.0000になっています。
メニューから[File]の[Save]で一旦ファイルに保存します。
拡張子を.probeにするとAutolevelの数値が保存されます。
Gcodeファイルと同名にしていると
.probeファイルが自動的に読み込まれるので
同名にはしない方がいいかもです。
原点でZ点調整をします。
[Probe]-[Probe]に行って
[Pos]5、5、-2にして[Probe]ボタンでプロ-ビングします。
この時、エンドミルの位置も同じ位置、X:5、Y:5である必要があります。
そうしないと移動しながら接触した所で止まるのです。
[Z=0]ボタン押して[WPos]のZ軸を0にします。
これで切削開始できます。
この時点でGcodeファイルをSAVEしても中身は変わっていません。
コメントが追加されるだけです。
GitHubの解説を少し抜粋すると
*****
Autolevelで測定したファイルを読み込んでGcodeを実行すると、
実行時にGcodeを変形しながら加工します。
G1コマンドは、必要に応じて複数のセグメントに分割されます。
G2 / G3コマンドはマルチラインセグメントに変換されます(残念ながら)。
変換の精度は、コンフィグの[variable accuracy](可変精度)で制御されます。

警告:Gコードと同じファイル名の「.probe」拡張子ファイルが存在する場合、
   自動的に読み込まれます。
   誤って行った場合は危険です!
*****
ようなことが書かれています。

1ポイントだけのプロービングです。
メニューの[Probe]-[Probe]アイコンをクリックします。
【Probe】部の[Pos]にプローブする座標を入力します。
このBOXには、X、Y座標とZ軸のプローブする深さを入力します。
必ず入力した座標に移動してから[Probe]ボタンをクリックします。
そうしないと現在位置から指定した座標まで移動しながら
Z軸を徐々に下げてプロービングする動作をします。
妙な動きです。
何か別の目的があるのでしょうか。よくわかりません。
プロービング深さが足りない(この深さまでに接触できない)と
このようなエラーがでます。
左上の[Reset]ボタンを押しても復帰しません。
GRBLコントロールボードのハードリセットボタンを押してから
この赤くなっているバー所をクリックすると復帰します。
ゼロ基準にしたいポイントに移動し
ゼロ点をプロービングします。
接触すると止まるので
[Z=0]ボタンでWPosのZ軸を0にします。

工具長補正までできるようになっているので
操作はCandleのように簡単ではないようです。
GRBLcontrol(Candle)の様に一発でゼロ探索できるボタンが欲しい所です。

小型工作機CNC2418 その14(USBスコープ試動)

USBマイクロスコープ固定治具ができたので
テストに入ります。
まずは、木材に照準を当ててみます。
この木材の左上の角に合わせます。
一見、鋭そうな角ですが
拡大すると意外と角が丸まっていて合わせ難いです。
0.01mmステップの動きでもどうにか確認できます。
左に0.1mm、上に0.1mm移動するとこんな感じ。
PC上では、もっと大きな画面なのでかなり微妙なズレまでわかります。
次は0.6mmの穴に合わせています。
たまたま青の円にサイズが近かったので穴の輪郭と合っています。
丸穴は合わせ易いです。
左に0.1mm、上に0.1mmズラすと。
0.5mmピッチのスケールと並べると。
木の角に合わせるのは、ちょっと合わせづらいけど
照準を3重の円(たまたま)にしたのもあり
穴に合わせるのはやり易いです。

そうだ、閃きました!
円の中心を求めることができそうです。
「円に内接する直角三角形の斜辺は必ず中心を通る」定理を利用します。

次の図で円周上の適当な点①に照準を合わせ、X,Xをリセット。
X軸上を移動し円と交わった点②から垂直にY軸上を移動、
円と交わった点の座標③( X , Y ) がわかると
 中心:( Cx , Cy ) = ( X/2 , Y/2 )
で求められるはずです。
ちょっとやってみます。
紙にコンパスで適当な大きさの円を描きました。
CNC2418にセットして。
まずポイント①に合わせてXYリセット。
コンパスの線幅は0.3mmです。
ポイント②を通過してポイント③に合わせました。
座標は、X:48.88 Y:34.06になっています。
そこで座標 X:48.88/2=24.44 Y:34.06/2=17.03に移動します。
真中の穴径は0.3mm程。
微妙にズレていますが、許せる精度です。
目視よりは確実にいいです。
これで円筒でも正確な中心がだせます。
もうひとつ閃いたのは
斜めにセットした部材の傾きを測る方法です。
傾きを測りたい辺の適当な点①に合わせ、X、Yをリセットします。
X軸上を適当な距離X移動し、そこから垂直に移動して
該当辺と交わる点②(X , Y)がわかると
傾き Θ=arctan(Y/X) で求まります。
そこでFusion360に戻り、モデルをΘ傾けてGcodeを出力すれば
傾いたままでもうまいこと加工できるはずです。
これもちょっとやってみます。
Fusion360で長さ50mm 幅1.5mm 深さ1mmの溝を描きます。
1.0mmエンドミルで0.5mmずつ輪郭を2周して掘るようにします。
CNC2418に部材を故意に傾けてセットします。
カメラで部材の下辺の左辺りに照準します。
ここで座標をリセット。
カメラを右に50mm移動して部材の下辺の右の方に照準します。
座標を見ます。
X:50、Y:13.8 となっています。
傾き Θ=arctan(Y/X)を計算します。
残念ながらWindows10付属の電卓では関数電卓にしても
arctanはできません、と思ったら。
 ボタンを押すと


この様に[tan-1](-1は上付です)が出てきました。
なぜこんな変なアイコンにしたのだろうか?
では、計算します。
arctan(13.8/50)=15.429...度とでました。
Fusion360に戻って
15.4295° (ここまで少数を入れなくてもいいでしょうが)
モデルを回転させます。
ストックは「相対サイズボックス」でこうなります。
後からわかったのですが
[モード]:ソリッドから
[ストック ソリッド]でボディをクリックすると
この様にストックとモデルが同じになります。
[2D]-[輪郭]で輪郭を選択します。
このGcodeで切削します。
単なる溝ですが、動画で。
思惑通り動いてくれています。
できました。
板の下辺と平行になっています。
あまり出番はないかもですが
どうしてもステージへ部材を傾けて固定しないといけない場合は便利かも。
X軸を平行にする方法としてはスマートではないので
別途考えないといけないです。
カメラは色々便利なことできそうです。

そういえば、bCNCをちょっと使って気になっていたのが
カメラのマークです。
その時は、USBカメラがなかったのでほっておいたのですが
どうやらゼロ点調整ができるようなのです。

bCNCのカメラ機能、ちょっと使ってみます。
中央付近の上方の右にカメラのアイコンがあります。
このボタンを押すとUSBマイクロスコープの映像がでてきます。
0.6mmの穴に合わせました。
左に0.1mm、上に0.1mmズラすと。
[Probe]メニューでCameraアイコンをクリックすると
照準の設定やらがでてきます。
[Crosshair]の欄を3.175 ⇒ 10にしてみると
照準がこの様に大きくなります。
[Scale]の数値を変えても照準円の大きさが変わります。
たぶん、校正すると穴の径を確認できたりするのでしょうか?
[Crosshair]:1 にすると。
照準円は小さくなります。
他にも[Location][Offset][Register]とありますが
使い方はわかりません。
スピンドルとカメラの位置関係が[Offset]なのでしょう。
それを登録するのが[Resister]かと思われます。
カメラで照準を合わせると、どれかボタン一つで
スピンドルがそのポイントにに移動してくれるのではないかと推測されます。
ちなみに[Tools]で[Camera]ボタンを押しても
[Config]ボタンと同じ項目しか出てきません。
バグだろうか?
ということで
使い方がよくわかりません。
GRBLcontrol(Candle)の様に簡単な仕組みではないようです。
bCNCは、まだこれくらいにしておきます。

と言いながらも、ちょっと「bCNC Camera」で検索して見ると
GitHubにこんな情報があるではないですか!
英語ですが画像つきで詳しく書かれていそうです。
想像以上に便利な機能が入っていそうですが
ちらっと読んでもよくわからないです。
真面目に英語訳さないといけないようです。
先に作ったOpenCVのスクリプトは無駄になりそうな予感。
結局ここまで書いて、別の投稿にすることにしました。

精度が今一と眺めていたら
USBマイクロスコープの頭側のUSBケーブルが入っている所を
回してフォーカスを合わせるのですが
ケーブルを傾けたりすると画像が傾くのです。
本体の安定性を一生懸命悩んでいたのに
こんな所に落とし穴が!
ケーブルを動かないようにするしかなさそうです。
もっと精度を求めるとこのカメラのガタツキでは厳しいかも。