はじめに
基板切削機として運用しているiModelaに、Z軸加工原点自動設定を実装しました。それを発展させて、Z軸自動補正のプログラムを作りました。
問題点:切削深さが一定にならない
CNCで基板を作るときは、刃物で銅箔を削って溝を作ります。この銅箔を削る深さ、切削深さが一定でないと溝の太さが変わり、パターンが切れたりパターン間が導通してしまったりといった不具合が発生します。そのため、切削深さは一定にする必要があります。
参考:http://www.originalmind.co.jp/products/kitmill_cip#2
解決法1:捨て板の面出し
テーブルの上に捨て板を置きます。捨て板の平面出しを行います。いくら平面出しをしたといっても、どうしても誤差は残る。
この方法と提案手法を組み合わせて運用。
解決法2:プレッシャープレート
オリジナルマインド社で販売されている基板加工機で採用されている方式。Z軸が基板に追従するため、基板が反っていても溝幅が一定となる画期的な方式。iModelaの改造がどう考えても無理なため不採用。
提案手法:基板の誤差を測定して補正
「基板の高さを測定して出力データの座標を補正してやればいいんじゃね?」
「基板の表面に機械的にZ軸を追従する方式が使えないなら、実測してプログラムでZ軸を追従させよう」
と思いついた。基板が斜めになっていても、実測したハイトマップをもとにZ軸を補正すれば正確になるはず。
基板の高さは、刃物を徐々に下げていき、基板と刃物が接触すると電流が導通することを利用して測定する。
実際の運用
今回は、基板の角の4点の高さを計測し、直線補間で基板の高さを推測するという方式を実装しました。基板と刃物の導通の検出はArduinoで行い、シリアルポートでPCへ送信されます。PC側のプログラムはC#で実装しました。
基板高さ測定のアルゴリズム
- 基板と刃物が導通しているなら、5へジャンプ、それ以外は2へジャンプ
- 刃物を0.01mm下げる
- 250ms待つ
- 1へジャンプ
- 現在の刃物の高さを出力する
任意の点の基板高さを推測するアルゴリズム
- 求めたい点をP(x,y)とする。四隅の点の高さをP(0,0),P(0,1),P(1,0),P(1,1)とする
- 4隅の点における基板高さを測定する
- P(0,0)-P(0,1)間を直線補間し、P(0,y)における基板高さを求める
- P(1,0)-P(1,1)間を直線補間し、P(1,y)における基板高さを求める
- P(0,y)-P(1,y)間を直線補間し、P(x,y)における基板高さを求める
結果


基板高さの誤差が最大で0.5mm程度ある状況で基板切削をしてみた。切削深さは0.06mm。このように、基板の傾きに追従して切削幅が一定に保たれていることがわかる。
目標の0.5mmQFPパターンをやってみたが、あんまりうまくいっていない。高さ追従はうまくいってるんだけど、きれいにパターンが掘れない。切削深さ以外の問題の影響が大きいと思われる。iModelaの機械精度、剛性、刃物の軸ブレなど。0.5mmQFP基板への道のりは遠い。