2021年6月27日日曜日

プロクソンのMF70をCNCにする ー ソフトウェア編

プロクソンのMF70をCNC化し生基板からPCBを切削加工することに成功したので、忘備録として流れを列挙します。 ハードウェア編はこちら。 

使用しているソフト

全部フリーかつWindows, Linuxで使用可能です。

KiCAD

回路図面、PCB図面設計ソフトです。こちらからダウンロード

Freerouter

KiCADと連携してPCB図面の配線をしてくれます。説明はこちらダンロードはこちら

FlatCAM

CAMソフトです。KiCADより出力したガーバーデータをG-codeに変換します。ダンロードはこちら

Candle

PC上で動作するGRBL制御ソフトです。G-codeをアップロードしたり、ツールパスの表示、機械座標、ワーク座標の表示、JOG, パルス移動制御等ができます。ダウンロードはこちら
(後に制御用のショートカットがあるbCNCに変更しました)
 

図面からG-CODE,加工までの流れ

1. KiCADで図面を作成、PCBレイアウトを作成します。
2. Freerounterや自力で配線し、ベタ塗りします。
3. KiCADよりガーバーデータを出力します。
4. FlatCAMでガーバーデータを工具データを元にしてG-CODEに変換します。
5. CandleでG-CODEを読みとります。
6. ワーク座標を決定し、切削開始します。
7. 続いてドリル加工、切り離し加工を行って完成。

1. KiCADで図面を作成、PCBレイアウトを作成します。



 

2. Freerounterや自力で配線し、ベタ塗りします。 


 この時原点と補助座標の設定を行うのを忘れないでください。私は基板の左上を原点、補助座標にしています。

3. KiCADよりガーバーデータを出力します。

 カーバーデータは, ファイル-> プロットから出力できます。
 "原点に補助座標を使用"にチェックを入れます。これでガーバーデータの座標系は補助座標を原点にして作成されます。
 "製造ファイル出力"で作成できます。
ドリルデータも作成します。

 
 

4. FlatCAMでガーバーデータを工具データを元にしてG-CODEに変換します。

FlatCAMでガーバーデータを読み込みます。
 
 Projectタブにて、読み込んだガーバーデータを選択します。
 
基板裏側を加工する場合は反転する必要がありますので、Toolタブに移動し、Bottom layer、Point/Boxを反転したいデータにし、Mirror Objectにて反転します。Mirror Axis : Y, Axis Location: Boxにしています。
 

 
 
Selectedタブに移動します。
1. Isolating Routingに配線を作成する工具のデータを入力して、Generate Geometryをクリックします。
2. 基板カットも行うには、Board cutoutに工具データを入力し,Generate Geometryをクリックします。
 
 Projectタブに移動すると、今作成したデータが追加されていますので、ISOを選択してSelectedタブに移動します。
 
 ここではG-Code用のデータを作成します。Create CNC Jobに、工具の切り込み深さ、G00時のZ軸クリアランス、切削速度、工具径を設定し、Generateをクリックします。 
 Projectタブにcncというデータが作成されていますので、これを選択し、Selectedに移動します。
 
 工具径を入力し、Export G-Codeをクリックすることで、G-codeデータの作成が完成です。
 

基板切り離しについても同様に行います。

次にドリルデータを作成します。
File-> Open Excellon ...を選択し、ドリルのガーバーデータを読み込みます。
穴開け部分が赤くプロットされます。
穴がズレている場合は、Offestに移動距離を入力しOffsetをクリックすると、穴位置が移動します。フォーマットは"x,y"とカンマ区切りにします。

後は同様にG-codeを出力します。


 

5. CandleでG-CODEを読みとります。

 OpenでG-codeを読み取ると工具パスが表示されます。
 
 

6. ワーク座標を決定し、切削開始します。

 加工原点は矢印の場所になります。工具先端を基板上の加工原点に移動させ、下記ボタンを押下することで加工原点が設定されます。
 
工具径分移動させたい場合や、Z軸設定治具を使用しているなど、現在位置からXmm離れた場所に原点がある場合は、MDIにてG92コマンドを使用します。
例えば、工具先端が加工する基板の0.5mm上に有る場合は
    G92 Z0.5
と入力することで、現在位置が加工原点+0.5mmにいるように加工原点が設定されます。
 
準備ができたら、Send を押すとG-codeの送信が開始されます。MF70の場合は主軸を回転させるのを忘れないでください。
 

7. 続いてドリル加工、切り離し加工を行って完成。

同様に工具交換、Z軸加工原点調整し、ドリル加工、切り離し加工を行なって完成です。
 

 

 Z軸の原点出し

 私はシンワの直尺ステンを使用しています。この定規は厚さが0.5mmなので、工具と基板の間に挟み、接触していれば工具先端は0.5mm上方にあるということになります。

工具を基板に近づけます。Jog送りを1pulse10や50にし、Z軸を1pulse分下げては定規を差し込み、下げては定規を差し込むを繰り返します。接触した場合はガタツキがなくなります。 接触、非接触の違いは感覚でわかりますので試してみてください。
 

2021年6月20日日曜日

プロクソンのMF70をCNCにする ー ハードウェア編

 プロクソンのMF70をCNC化し生基板からPCBを切削加工することに成功したので、忘備録として流れを列挙します。 

購入ハードフェア

 1. Proxxon MF70

 フライスが必要となります。中華CNCであれば2万円程度から購入できますが、Proxxonの物はコラム型であり剛性に優れているのではと考えています。またテーブルがミルの位置がXY方向に固定されているため、平面度が良好になるかと思います。
 

2. CNCキット

CNCのドライバとモータのセットを購入しています。Arduino UNOとCNC Sheild, NEMA17のモータのセットです。MF70にはNEMA17規格のモータで十分なようです。
UNOにGRBLドライバソフトを書き込み、PCにインストールしたGRBL対応のソフトから制御します。

 



 

NEMA17のモータ規格です。 付属のモータは17HS4401というモデルでした。


 

 3. モータマウント

NEMA17用のものを購入します。

4. 電源

モータ駆動用の電源を用意します。24Vで2Aは必要です。

 

準備

CNC Shieldの準備をします。

 

マイクロステップ設定

 M0-2のジャンパで設定します。1/8にしました。

MS0 MS1 MS2 Motor res
OPEN OPEN OPEN FULLL STEP
JUMP

HALF STEP

JUMP
¼ STEP
JUMP JUMP
1/8 STEP
JUMP JUMP JUMP 1/16 STEP


電流制限

A4988ドライバボードのボリュームで電流制限の設定をします。このボードの電流検出抵抗は0.1Ωですので、制限電流I maxとVrefの関係は下記のようになります。

I max = Vref x 1.25

モータの定格は1.7Aでしたので、1V程度にしています。1.25Aが制限電流となります。


スイッチ

サイクルスタート、フィードホールド、リセット、E-STOPのボタンを用意します。

無くても動作確認は可能ですが、PCソフト側からは一時停止できないのでかなり怖いです。おもいがけない動作するとパニックになりかけます。

Resume, Hold, Abort, E-STOPから信号を引き出し、スイッチでグランドに落すようにします。E-STOPがA接点なのが気になります。あとE-STOPはAtMegaのリセットです。

上記では各軸端のリミットSw信号も引き出ししています。(原点復帰動作確認のため)


GRBLファームウェア準備

Arduino UNOにGRBLのファームウェアを書き込みます。

こちらからソースをダウンロードし、"grbl"以下をArduinoの"libraries"フォルダにコピーします。

Arduino開発環境を起動し、スケッチ例からgrbl->grblUploadを選択。

ビルドしてAurdino Unoに書き込みします。書き込みはArduinoの書き込みとなんら変わりありませんので割愛します。

 

 モータ接続

 マウントを使用してモータを接続します。Y軸はベースやダイヤルと干渉していたので3Dプリンタで作成しなおしました。

なお、MF70を正面にみて、左右方向がX軸、前後方向がY軸、上下方向がZ軸です。

右方向が+X、手前方向が+Y、上方向が+Zとなります。

 GRBLパラメータ設定

GRBLのパラメータ設定を行います。設定内容はこちらに説明があります。

GRBLとの接続 

Arduino開発環境のターミナルで可能です。後程制御ソフトをインストールしてからの設定でもOKです。GRBL ver1.1では接続速度は115,200bpsで8-N-1となります。

今回設定するのは、モータの回転方向($3)、パルス数設定($100-103)、原点復帰関係($21, $24,25)です。

モータ回転方向

YとZが反転していますので、

$3=6となります。

Setting Value Mask Invert X Invert Y Invert Z
0 0000 0000 N N N
1 0000 0001 Y N N
2 0000 0010 N Y N
3 0000 0011 Y Y N
4 0000 0100 N N Y
5 0000 0101 Y N Y
6 0000 0110 N Y Y
7 0000 0111 Y Y Y

パルス数設定

1mm移動するのに必要なパルス数を設定します。200ステップで1回転のモータを1/8マイクロステップ動作させていますので、$100-103=1600となります。

原点復帰

原点復帰動作では、$25の速度で原点リミットスイッチを探し、SWがONしたら$27で設定した分だけ戻り$24の速度で精密に原点位置を検出します。

$21でハードリミットを有効にしました。軸端のリミットスイッチを踏むと強制的に軸移動が停止します。 まだリミットスイッチを付けていませんので動作確認のみです。

最終的な設定は下記となりました。

$1=25

$2=0

$3=4

$4=0

$5=0

$6=0

$10=1

$11=0.010

$12=0.002

$13=0

$20=0

$21=1

$22=1

$23=0

$24=25.000

$25=100.000

$26=250

$27=1.000

$30=1000

$31=0

$32=0

$100=1600.000

$101=1600.000

$102=1600.000

$110=500.000

$111=500.000

$112=500.000

$120=10.000

$121=10.000

$122=10.000

$130=200.000

$131=200.000

$132=200.000


以上でハードウェアの設定が完了しました。

次はソフトウェアの設定に入ります。



2021年6月19日土曜日

中華時計CX-220の水晶発振子交換

 AlixepressにてCX-220として売っている温度湿度計付きの時計を購入したのですが時計が狂いが大きい。月に2-3分遅れる感じです。

時計調整は+側にのみ修正できるため、あえて遅れるようにしているのだろうか。二つ購入ししてどちらも同じ位狂うし、狂う方向性も同じだった。

ロットアウトした水晶発振子でも使用してるんだろうか?32.768kHzの在庫を持っているので交換してみることにした。

 

ネジを外せば簡単に分解できる。水晶発振子が見えますね。

 


交換しました。大きいのがオリジナルです。


こちらが交換前で
こちらが交換後。32.99kHz -> 32.93kHzになっていますが、周期から計算しているだけなので信用にはならないかと思います。

効果はバツグンで、2週間経過した今マイナス3秒となりました。

2021/12/24追記

2021/06/06 から 2021/12/24の約6ヶ月間で +1分4秒の誤差でした。なかなか優秀かと思います。最初の2ヶ月では-20秒程度でした。なお、6ヶ月で電池が切れますので最後の1-2ヶ月電圧が低下してきて大きく狂いはじめたのではと思われます。