Z軸の自動原点設定機能の追加

| コメント(3)
記事日付: 2013/01/15
先に購入した中華卓上CNCフライス盤 「CNC3040」について
Z軸の自動原点設定をできるようにした。
※本記事は筆者の購入した「CNC3040」の作りにあわせて書かれているが、
同じ「CNC3040」でも同じ仕様とは限らないので注意いただきたい。

【!】注意

・本稿で紹介する方法は、何らかの理由でタッチセンサが反応しなかったとき (接触不良やプローブ付け忘れなど)、
 ヘッドが過走してカッタが折れる可能性があります。十分に注意してください。
 また、場合によっては装置自体を破壊する可能性があります。

・Z軸の送り速度は、タッチセンサが反応したあと瞬間的に停止できる速度で送りをしてください。
 慣性で過走すると、カッタや装置を破壊する可能性があります。

1. Z軸の自動原点設定

加工前に、Z軸の原点を加工対象の表面ぴったりにあわせたいことがある。
特に、基板切削を行うときはZ軸方向に切削する深さを正確にコントロールすることが必要である。

Z軸の原点あわせは目視で行うと大変なので、自動で行えるようにする。

CNC3040の制御器内部をみてみると基板に「Probe」の信号入力があり、タッチセンサとして使用できる。
この端子をワークとカッタにそれぞれ接続すると、
カッタとワークが接触したときに導通することを検知できる。

※最近のCNC3040「Z」では、制御装置にこの機能が標準でついている模様。

2. 接続

「Probe」の2端子を、以下のように接続する。黒丸と赤丸はミノムシクリップの意味である。
カッタとワーク(またはジグ)が触れると、信号が出る仕掛けである。
筆者は、制御器の全面にバナナ端子用のジャックをつけてプローブを接続できるようにした。
写真中央の、緑と黄色の端子がそれ。
ワークが不導体である場合は、電極用のジグが必要である。
筆者は不導体(プラスチックとか)の加工用に、以下のジグを用意した。
一辺が約20.0mmの銅のキューブである。
マイクロメータ (中国製。ebayで900円)で測定したところ、ある面の中央付近で19.99[mm]であった。
近所のホームセンターで売っていたものだが、意外に正確な作りである
表面が酸化しないよう金メッキしたが、特に必要はないかもしれない。

3. 制御用PC側の準備

制御側は以下のような処理をすればよい。
  1. Z軸の送り速度を低速に設定する。
  2. G31 (タッチセンサからの信号で止まる移動命令) で、Z軸を少しずつ下げていく。
  3. Z軸が止まるまで待つ。
  4. ドリルの先端とワークが接触するとZ軸が止まる。
  5. そのときのZ軸の位置を原点にする。
筆者はMach3を使っているので、スクリーンに専用ボタンをつけてVBマクロで実装した。

4. Mach3のマクロ

MachScreen Editorを使ってMach3の操作画面にボタンを足した。
画面右下の「Set Z org on~」のボタンがそれ。
ボタンにひも付けしたコードは以下のとおり。
'はじめから接触しているときは何もしない。
If GetOemLED (825) <> 0 Then
 Code "(The probe is already gournded.)"

Else
 Code "(Finding surface...)"

 '① Z軸の送り速度を低速に設定する。超低速。
 CurrentFeedRate = GetOemDro(818)
 Code "F100" 

 '② G31 (タッチセンサからの信号で止まる移動命令) で、Z軸を少しずつ下げていく。
 '移動量は現在の位置から20mm下とする。(タッチセンサが反応しなくても20mm移動したら終わる)
 ZNew = GetOemDro(802) - 20 
 Code "G31Z" &Znew

 '③④ Z軸が止まるまで待つ。
 While IsMoving() 
 Wend

 ' Z軸が止まった段階で、プローブ信号があるかどうか確認する。
 Probed = GetOEMLED (825) 

 ' プローブが接触した時点の位置を覚えておく。
 Znew = GetVar(2002)

 '※1 ヘッドがまだ止まってなかった時のため、プローブが接触した時点の位置に戻る指令をする。
 Code "G0 Z" &Znew

 '最終的に、ヘッドが「プローブが接触した時点の位置」に行くまで待つ。
 While IsMoving() 
 Wend

 '⑤ そのときのZ軸の位置を原点にする。
 Call SetOemDro(802, 0)

 '少し待つ (おまじない)
 Code "G4 P0.25"

 'ヘッドを機械原点まで上げておわり。
 Code "G28 Z0"

 'Z軸が停止した段階で、プローブ信号がなかった時
 '(20mm下がってもタッチセンサが反応しなかった時)はErrorと表示する。
 If Probed <> 0 Then
 Code "(Done.)"
 Else
 Code "(Error.)"
 End If
End If

ただし、

① ワーク側に電極のジグを使ったときは、その高さを補正する必要がある。
  上記コードではやっていない。
  (基板加工する場合、ワーク表面自体が銅箔張りなのでジグ不要である)
② G31で止まった後、G0で戻っているコード (※1周辺) は不要かもしれない。

5.まとめ

以上の方法により、Z軸原点の自動設定を行えるようになった。
基板加工を行うときはツールを何回か変える必要があって原点設定が大変であるが、
上記の方法により正確かつラクラクとなった。

コメント(3)

管理さん、初めまして。
どうしても分からないので、教えて下さい。

それは、
「ヘッドを機械原点まで上げておわり。」
この動作の次に、マッハ3の機械原点の値を0にする方法です。
ご教授の程、宜しくお願いします。

訂正
マッハ3の 機械原点を0 ではなく刃物原点を任意の数値に置き換える方法です。

Perfect webpage you have at this website! Precisely how could i add in this blog's feed into my Rss reader?

コメントする

本ページの管理人

Likipon

埼玉在住の一応エンジニア。最近はシステムエンジニア気味で回路が本業でなくなってしまった。

うなりくんのファン。

メニュー

広告