読者です 読者をやめる 読者になる 読者になる

0.5mm厚アルミ板の切削(熱収縮チューブ用ヒートガンの治具)

概要

ヒートガンで50mm径以上の熱収縮チューブを加熱するために,0.5mm厚のアルミ板を切削して治具を作成した.(市販の治具は最大45mm径までで,径が足らないので)
アルミ板をT字型に削り出して,適当なビンで丸みをつけて形を作る.ふにゃふにゃで頼りないけど,太い熱収縮チューブを縮める役目はちゃんと果たしてくれた.
f:id:sosoru_m:20170324193449j:plain:w200f:id:sosoru_m:20170324193544j:plain:w200

切削条件

主軸回転数S10000rpm,送り速度F75mm/min,Z方向切り込み0.1mm/パスで,0.5mm厚のアルミ板を切断する.この条件は,エンドミルの推奨切削条件の各パラメータの比率を参考に,切削部の過加熱を防ぐために主軸回転数を落として決定した.
切削対象には霧吹きで定期的に水溶性切削油をかけておき,エンドミルへのアルミ材溶着を防ぐ.
エンドミルはミスミの(XAL-PEM2S2)を使用する.
ワークへの固定は0.8mm厚の両面テープを用いる.Z方向のズレは不問とする.

流れ

最初はS20000・F150・Z切り込み0.5mmで試みたが,どうやらエンドミルにアルミ材が溶着し,切削性能が落ちたようで,切断面のバリが非常に多く出ていた.
f:id:sosoru_m:20170324194721j:plain:w200

バリを防ぐために条件だしを行い,Z切り込み量を減らしたが,0.05mm/パスでも効果はなかった.10mm程度の直線部であっても,1〜2mm削ったところで大きなバリが発生する.
主軸回転数を落とし,S2000・F15・Z切り込み0.1mm/パスで切削して,ようやくバリの減少が見られた.ただし,これでも完全にバリがなくなった訳ではなかった.
f:id:sosoru_m:20170324194047j:plain:w200
↑条件出しで使った板(上:F15 下:F150).上のパスは裏に両面テープがあって削りきれていない.

最終的には切削油を垂らさなければ,目立ったバリをなくすことはできなかった.最終的に,S10000 F75 Z切り込み0.1mm/パスで決定.
f:id:sosoru_m:20170324194633j:plain:w200

設計と成果物

成果物は設計寸法と比べて0.1mm程度短い.これは,アルミ板が撓んだ状態になったままワークに固定され,斜めに板材が切断されたためと考えている.ワーク固定時に少し撓んでいることは目視で分かっていたが,切断目的で削っているのでZ方向の歪みは不問としていた.Z方向の歪みはXY方向にも意外と効いてくるらしい.XY方向もシビアな長さ制約はないので,このまま成果物を使用する.
以下,OpenSCADのコード(後処理で角をR=1mmで丸めている):

L1 = 31 * PI; // ヒートガンのノズル径の円周
L2 = 60 * PI * 0.6;  //引き出す板の長さ,チューブの円周長さー余白

s1 = 6;    //板を曲げる起点の長さ
s2 = s1/2;

Wg = 15;    //ヒートガンノズルの幅
Wn = 20;    //引き出す板の幅

module p() {
    polygon(points=[[L1/2,0],[L1/2,Wg],[Wn/2, Wg],[Wn/2,Wg+s1+s2+L2],[0,Wg+s1+s2+L2],[0,0]]);
    
    polygon(points=[[Wn/2, Wg+s1],[0, Wg+s1],[0, Wg+s1+s2],[Wn/2, Wg+s1+s2]]);
    }

union(){p(); mirror() {p();}}

VCarveのモデル位置決定の罠(?)

はじめに

VCarveでは,Z軸方向に対するモデル位置の決定に2つの変数を用いる.
位置決定には2通りの組み合わせがあるが,両者の生み出す切削パスは異なる.
以下の目的によって,組み合わせを絞り込めばよい:

  • 端部を縁取りたい,など,通常の場合:

①にてモデルをゼロ平面より上に設定する

  • 表札のように,モデルを沈み込ませた図形を彫りたい:

f:id:sosoru_m:20170221211222p:plain
①にてモデルをゼロ平面より下に設定する
f:id:sosoru_m:20170221211231p:plain

記事を書いていて分かったけれども,両者のパラメータは連携しているらしい?事実上,①のみ変更すればいい気がする.

VCarve Proの見えない平面について

VCarveでは一つだけ3Dコンポーネントを読み込むことができる.
ただ,読み込み時に2つのモデルゼロ平面座標を考慮する必要がある.

①モデルのゼロ平面設定
読み込まれたモデルデータのZ座標のオフセット量.切削の都合で,どこから上の形状を使用するかを調整する際に使用する.モデルが読み込まれたときにスケーリング倍率と共に設定できる.

②素材内部へのゼロ平面設置座標
読み込んだモデルのゼロ平面と,素材中の座標と対応づけるオフセット量.既定では素材中央となっている.切削パスの設定で一度設定するのみ?モデルが読み込まれたときに聞いてこない量.

2変数を設定してモデルと素材形状の位置を決める.どちらもZ軸に対するオフセット量で,2変数であることから,モデル位置の決定には解が2通りありそうに見える.実際,Z軸位置とモデルの対応は取れるが,両者の切削パスが異なる場合があるので注意が必要.
特に,角を面取るような,Z軸方向ベクトルに近い形状を刈り込むと,切削パスが描画されない組み合わせがある(パスが描かれないところはプレビューで緑色に表示される)

②の素材内部のゼロ平面の中に,モデルが沈み込むような設定をすると,②で設定されたZ座標に対応した平面が「崖」のような働きをする.このとき,外周部がZ軸方向ベクトルに近いと境界部が急峻な形状となって,太さを持つエンドミルが刈り込むことができない.これが切削パスの異なる原因である.

注意すべきは,②で設定された平面は素材の大きさによらず発生することで,板の端部を縁取るような目的の場合,素材サイズと3Dモデルが同じにしたいが,モデルがゼロ平面に沈むように設定すると,「見えない平面」に阻まれて切削パスが生成されない.
さらに,モデルが①のゼロ平面より上である場合と,両者の見た目が変わらないので,切削パスが生成されない原因の追及に時間を取られる.

CNCフライスに掃除機を接続する(補足)

以下の記事を補足です.ソフトウェア編
sosoru.hatenablog.jp

概要

掃除機をリモコンで操作するために,赤外線信号パターンを市販のリモコンキットで模倣した.
元々,掃除機自体がリモコンでオンオフ出来るようになっていたが,送信機が破損していた.特殊な操作をすれば,送信機から赤外線パターンを読み取れるので,市販のいわゆる学習型のリモコンキットに覚えさせて,操作できるようにした.この際,送信機のパターン発生や,リモコン周りのソフトウェアでトラブルが生じたのでメモっておく.

今回使用したファームウェアについて,ソースコードgithubで変更点を公開している.有志で変更版を公開している人がいるから問題ないはず.
GitHub - sosoru/RemoconServant_sosoru: BTO社赤外線リモコンキットのファームウェア 改変版

送信機の故障

2つに割れたリモコンは片面一層で修復は容易であったが,結局,ICの破損によって常用できる状態ではなかった.
破損といっても,リモコンの送信スイッチの検出端子(スイッチを押すと端子にパルスが入力される)と,ICの赤外線送信パルス出力端子を指の静電容量でカップリングすることで,正常な送信パルスを生成できる.
f:id:sosoru_m:20170324190156j:plain:w400
なぜ,このような操作が正常動作のトリガーになっているか不明だが,正常な送信パルスが得られるので,赤外線リモコンキットに覚えさせればリモコン機能を模倣できる.

赤外線リモコンキット

PICベースで書かれていて,ユーザーがプログラム書き込み機無しでファームウェアを書き換えられる赤外線リモコンキットがBTO社から販売されている.
PICの空きピンも十分にあり,筐体が別売りなので加工もしやすいので,今回の用途にとてもフィットしているので採用.
欠点はプログラムメモリの空きがそのままでは非常に少ないことと,ソースコード自体が1ファイルで2000行を超えており,様態をつかみにくいことである(microchipの元々長いサンプルコードをベースにしたもので,コメントも割と豊富ではある.)

リモコンパターンのエンドトレーラーパルス

リモコンキットを使用し,掃除機のパターンを学習させたが,掃除機側でパターンを正常に認識できない.オシロスコープでオリジナルのパターンと学習したパターンを比較したところ,トレーラーの後ろの約8msecのところにヒゲパルスがある.(長さ1Tに相当).このパルスは家電協会の規格には乗っ取っていない.幸い赤外線リモコンキットはPICのソースコードが公開されているので修正可能.
ソースコードを修正し,エンドトレーラーパルスの後,8msec後に1TのONパルスを立てることで,この問題は解消された.
f:id:sosoru_m:20170324190555j:plain:w500
↑矢印部が問題のパルス

赤外線リモコンキットにオリジナルリモコンのスイッチ機能を追加する

元々のリモコンはスイッチの押下を検出できるが,赤外線リモコンキットにはそのような機能はない.しかし,ソースコードが公開されており,PICベースのプログラムを書き換え可能なので,ユーザーで実装できる.幸い,空きピンもあるのでハード的な実装コストは低く,容易に組み立てられた.
ただし,ソフト側はいくつか苦労を強いられる点があった.

  • IDEのバージョン

上にも記載したが,最新のIDEはMPLABXらしくMPLABではない(?)赤外線リモコンキットのソースコードコンパイルする場合,コード上の#pragma系命令が古く,最新のコンパイラでは通らない.ソースコードにはIDE設定ファイルが含まれているので,バージョンが一致するコンパイラを使用する.

  • メモリ不足

プログラムメモリ,RAM,ともに割り当て領域を変更しないと新しい実装を入れられなかった.特にRAM割り当て領域の空きはゼロに等しく,1byteのグローバル変数を定義するだけでリンカスクリプトが通らない.今回の場合,赤外線送信機能のみ必要なので,受信機能は削除し,コンパイルを通した.

  • プログラムメモリに書き込む定数の処理

定数にromをつけておけばプログラムメモリ上にデータが配置される.この定数を使用するとき型不一致との警告が出る場合がある.
一見,許容できそうにも思えるが,この警告が出た場合,その定数は使用できていないと考えた方がよく,注意深く検証するべき.

箱について

文字がかすれているのは切削ミス.表記は掃除機の元々の表記を引用しており,「じゅうたん」と「ゆか・たたみ」は中と弱設定に対応する(ファジー制御している?).
赤いボタンを押すと掃除機が動作し,黒いボタンを押すと停止する.側面には故障した送信機からレンズを流用しており,信号を拡散してくれている.
電源はNCフライス制御用のPCからUSB給電している.PCが起動していないとリモコンを使用できないが,切削時のみ使用するので問題ない.
リモコンキットはUSBで給電とデータ転送を兼ねているので,LinuxCNCからUSB側にコマンドを送れば,切削開始時と終了時に掃除機がオンオフするよう連携できる.(自動で切ってくれる機能はあってもいいかもしれないが,今のところ,連携する必要はあまり感じない.)

f:id:sosoru_m:20170225235814j:plain:w200

参考

赤外線リモコンキットについて
株式会社 ビット・トレード・ワン | USB接続 赤外線リモコンキット
Assembly Desk - USB接続 赤外線リモコン

赤外線リモコンパターンのフォーマットについては以下が詳しい
赤外線リモコンの通信フォーマット

pgmからromに落とす方法は以下を参照した
まいまいこん: PIC C18 メモ( Warning 2066 )

CNCフライスに掃除機を接続する

経緯

NCフライスで木材を加工する際,大量の粉じんが舞い,ワークのみならず工作機械全体に木くずが付着する.工作後に,掃除機で吸い取れば問題ないが,現在,コンセント分岐のタップを工作空間内に設置しており,粉じんが舞うのは爆発を引き起こしそうでちょっと怖い.
現在構成で切削液を用いた加工はできるが,木材の加工には使用できない.幸い,壊れかけた掃除機があるので,これを流用して工作中に粉じんを吸い取れるようにする
f:id:sosoru_m:20170225230239j:plain:w300

補足情報

リモコンのソフトウェア等について
sosoru.hatenablog.jp

配管図

f:id:sosoru_m:20170225230945p:plain:w400

材料等

ほとんどはミスミで購入可能だった.購入履歴が消える前に,備忘録として記入する.

- 掃除機型番 日立 CV-W65
- リモコン用アルミ箱 タカチMB-3(高さ60mm 幅90mm 奥行き125mm 板厚1mm)
- ホース1 十川産業 SP-19-3(呼び内径:19mm 外径:26mm )
- ホース2 掃除機付属ホース流用
- T字バルブ 東洋バルヴ RB-3N-32A (3方向分岐 径:1 1/4B(32A))
- ホース用継ぎ手 リガルジョイント TH19-3/4-B-N(ホース内径:19mm 接続ネジ:3/4B)
- ねじ径変換用継ぎ手1 ミスミ SGPPB610 (1 1/4B → 3/4B)
- ねじ・配管変換用継ぎ手2 アロン化成 TS-VS-30 (ねじ 1 1/4B → 配管外径38mm) 
- ニトムズ ホーステープ(継ぎ手とホース接着用.スーパーに売っていたやつ)
- 赤外線リモコンキット BitTradeOne USB接続 赤外線リモコンキット
- 長めのタイ,ネジで止められるタイ(ホームセンターで売っていた汎用品)
- 両面テープがついたアルミの配線固定具(汎用品)

その他:
- エアフィルター エスコ EA997PE-6 (掃除機の交換用フィルタ)
- クーラントプライナー MSTコーポレーション PL6-1 (クーラントのプライヤー.高いけど,これ無しでは配管接合できなかった)

流れ

1,掃除機のリモコン基板の修繕

基板が真ん中から割れており,修理が必要.片面一層基板だから,配線を修復するだけで復活する予定だったが,IC側が故障しているようで,別途,購入した赤外線リモコンキットで代用した.
f:id:sosoru_m:20170225231819j:plain:w200
▲真ん中から割れてるので配線修復した状態.

2,リモコン設置用の箱の加工.

【表】
文字は主軸回転数20000[mm/min] F100[mm/min] φ0.5mmのボールエンドミルで加工.
ホールは主軸回転数20000[mm/min] F200[mm/min] φ2mmのスクエアエンドミルで加工.
バリ取りは主軸回転数20000[mm/min] F100[mm/min] φ2mmのスクエアエンドミルで加工.(中止)

【側面】
赤外LED設置のためφ5mmの穴を開ける.
f:id:sosoru_m:20170225235855j:plain:w200
▲文字の部分のバリがひどい.浅い加工であっても,ボールエンドミルを一発目で使うのは良くない?

2-1,箱を加工したあと,被加工部にはバリが多く出てくる,これをリューターとオービタルサンダーで取り除く.(ただしこれはちょっと失敗)

f:id:sosoru_m:20170225235814j:plain:w200
▲完成時の状態.文字の部分のバリ取りを行ったが,アルマイト塗装が剥がれたらしく,とても汚い仕上がりになった.

3,掃除機と工作機械を接続

接続のために塩ビ管の継ぎ手を使用する.掃除機側のジャバラホースは外径38mm程度で,呼び径1 1/4とだいたい等しい.
(実は呼び径よりもホースが若干太い.切れ込みを入れてねじ込んだ後,ホーステープで漏れが無いように固定する.)

f:id:sosoru_m:20170226000110j:plain:w200f:id:sosoru_m:20170226000128j:plain:w200
▲バルブ付近の写真.下から来ている透明なホースがNCフライスに繋がっている.(もう一端は手動掃除用ホース)
奥側に掃除機が接続されている.固定はアルミフレーム用ナットのネジとタイで固定.
実はホース用継ぎ手にホースが微妙に繋がっていない.ホース内径が適合していても,吻合しない場合があるらしい.ホースが抜けないようにタイで固定している.

ちなみに,バルブからNCフライスまでは呼び径3/4のホースを使用する.設置計画の関係で30mm以上の管を通したくないためである.
この影響で,ホースとバルブの継ぎ手では1 1/4から3/4に径を変更する必要がある.この用途では,黄銅製のブラケットが存在しないので,亜鉛メッキの鋼鉄製ブラケットを用いた.

3-1,集塵用配管を設置する.

f:id:sosoru_m:20170226000014j:plain:w200f:id:sosoru_m:20170226000032j:plain:w200
▲NCフライス回りにはタイを使って何とか這い回せる.エンドミル付近のホース端はクーラントホースで固定する.実際の所,先端の固定が難しく,ちょっと使いづらいので何とかしたい.

4,動作確認,MDF板の面取り切削でキチンと集塵できているか確認する.

f:id:sosoru_m:20170226000206j:plain:w200f:id:sosoru_m:20170226000224j:plain:w200
▲切削中の様子と切削直後の状態.大きな木片は残っているものの,粉状の切削片は吸い取られており,効果を確認できる.

動作

動作音はNCフライスの切削音よりも体感的にはうるさい.木製のドアを隔てて数m離れた場所でも騒音を聞き取れる.将来的にフライスが置いてある棚に防音扉を設置すれば,騒音が大きく軽減される見込みである.
MDF板の面だしのような,表面薄く削る作業では非常に効果が大きく,大きな木片は吸い込めないものがあったが,粉じん状のゴミは見当たらなかった.
しかし,板を深く切削する場合には効果が低い.エンドミルが板に深く入るため,集塵ホース端を高く設置する都合,効率よい集塵が行えないためで,切削パス周辺に多くの粉じんがたまる.ただ,NCフライスに付着するような粉じんはある程度吸い込めるので,ないよりはマシである.
板上の粉じんは他方のバルブにつないだ手動掃除用ホースで容易に吸い込めるので,併用すれば問題ない.
総合的には,掃除機システム設置の効果は非常に高く,切削作業に欠かすことはできないシステムである.

LinuxCNCでジョイスティック代わりにトラックボールを使う

経緯

我が家のNCフライスは,設置場所が想定以上に狭く,Z軸の調整用ハンドルが天井に当たってしまい,場合によっては接触して異音の原因となることがあった.調整用ハンドルを除去すれば問題は解決するが,エンドミルの位置決めなど,目視での軸移動が必要な際に不便であるのは必至であった.
そこで,Z軸調整の代替を目的としたジョイスティックを導入する.調整用ハンドルと同様に360度回転可能で,左右にひねれば上下し,材料にぶつかれば感触がフィードバックする機構があれば良い.しかし,現実的にはぶつかった感触を知るのは難しいので,前者の2つをサポートしてれば良い.
市販されている機器の中では,Kensington社が販売しているトラックボールのスクロールリング機能が,求めている機構と最も近い.幸い,4000円以下の廉価なモデルでもスクロールリングが備わっており,これをジョイスティックとして利用することにした.
XY軸移動用にトラックボールは役に立ちそうだが,一方の軸だけを動かす用途には向いていないだろう.アバウトな位置設定用として上手く利用したい.

f:id:sosoru_m:20170109201945j:plain:w300
▲Z軸当たってる

使用したモデル

Kensington社のOrbitTrackball with Scroll Ring 72337JP
https://d107iaxg6vni3j.cloudfront.net/mbank38730_560_560.jpg
https://www.kensington.com/ja/jp/4493/72337jp/orbit-scroll-ring-trackball
https://www.amazon.co.jp/gp/product/B004QE4JXA/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1
購入時は3800円程度.トラックボール・スクロールリングの他,ボタンは2つのみ.
普段使いのマウスとしてはちょっとボタンが少なすぎるかも.LinuxCNCが提供しているDebian環境では特に問題も起きずに認識した.

f:id:sosoru_m:20170113233500p:plain:w300
▲LinuxCNCのShow Hal Configurationで見たトラックボールの状態(loadrt後).トラックボールだと各軸の座標が浮動小数ではない?(参考:Shimalith氏のページでのアナログパッドは浮動小数点を返している)

設定したい機能

トラックボール XY軸移動に対応
スクロールリング Z軸移動に対応
左クリック ジョイスティック有効
右クリック ジョイスティック無効

HAL

LinuxCNCではHALと呼ばれる,ちょっとした設定記述用言語が用意されている.これは,ワイヤードロジックっぽい感じで書かねばならず,C言語というよりかはHDL系の言語に近い.
例えば,クリックでスイッチのON/OFFを切り替える場合,if文で現在と過去のマウスボタンの状態を見てスイッチを変えましょう,というわけにはいかず,まずマウスボタンの現在の状態を2入力and素子で受け取り,その出力をnot素子を通してもう一方のand入力に接続することで過去の状態を取得する.ほとんどデジタル電子回路である.

LinuxCNC側の設定

トラックボールを検出するには,まず

$ less /proc/bus/input/devices

にて,デバイスの名前を確認する.これはhalコードでデバイスを指定するときに必要になる.今回のデバイスは「Eagle」が含まれており,これを利用する.
Xがマウスとして認識した場合には回避する必要があるらしいが,当環境では発生しなかったため,設定は割愛する.(参考:Movement for atomic step(s) by mouse scroll wheel?には書いてある)
次に認識したデバイスを一般ユーザーでも扱えるようにするために,udevの設定を変更する.

$ sudo echo '' >> /etc/udev/rules.d/99-rtai.rules
$ sudo echo 'SUBSYSTEM=="input", MODE="0660", GROUP="plugdev"' >> /etc/udev/rules.d/99-rtai.rules

以上の設定が済めば,halrunコマンドの後に動作を確認する.

$ halrun
halrun : loadusr -W hal_input -KRAL Eagle
halrun :

halrunに何も言われなければOK.
MANを読め,みたいなことを言われたら,上のudevの設定が上手く行っていない可能性あり.その場合,rootで実行すれば成功する.

その他の設定のポイントを以下に示す.

  • 各軸の移動とトラックボール・スクロールリングの移動を対応するには,input.0-rel-?-positionとaxis.?.jog-countsを接続すれば良いが,整数型から浮動小数点型に型変換する必要があるため,conv-floats-32を通して接続する必要がある.
  • ジョイスティックの有効無効を左クリックと右クリックに対応させるにはRS型フリップフロップを用いて対応している.また,jog-enableを切り替えるとトラックボールのボタンが効かなくなる恐れがあるため,jog-scaleを変更し,左クリックが押されるとjogscale=0.1,右クリックが押されるとjogscale=0に設定される.
  • 左クリックはbtn-mouse~を使用する.

halコード

# load remote joystick
loadusr -W hal_input -KRAL Eagle

# define components
loadrt conv_float_s32 count=3
loadrt and2 count=2 
loadrt not count=2
loadrt mux2 count=3

# set clock
addf conv-float-s32.0 servo-thread
addf conv-float-s32.1 servo-thread
addf conv-float-s32.2 servo-thread
addf and2.0 servo-thread
addf and2.1 servo-thread
addf not.0 servo-thread
addf not.1 servo-thread
addf mux2.0 servo-thread
addf mux2.1 servo-thread
addf mux2.2 servo-thread

# setting joystick
setp axis.0.jog-vel-mode 0
setp axis.1.jog-vel-mode 0
setp axis.2.jog-vel-mode 0

setp axis.0.jog-enable 1
setp axis.1.jog-enable 1
setp axis.2.jog-enable 1

# connecting as RS-FF; Q --> muxer.sel
net rsff-sb and2.0.in0 <= input.0.btn-mouse-not
net rsff-rb and2.1.in0 <= input.0.btn-right-not
net rsff-nand-s and2.0.out => not.0.in 
net rsff-nand-r and2.1.out => not.1.in 
net rsff-qb not.1.out => and2.0.in1
net rsff-q not.0.out => and2.1.in1 mux2.0.sel mux2.1.sel mux2.2.sel

# set muxer and connects for changing jog-scale
setp mux2.0.in0 0 
setp mux2.0.in1 0.01 
setp mux2.1.in0 0 
setp mux2.1.in1 0.01 
setp mux2.2.in0 0 
setp mux2.2.in1 0.01 

net x-jog-scale mux2.0.out => axis.0.jog-scale 
net y-jog-scale mux2.1.out => axis.1.jog-scale 
net z-jog-scale mux2.2.out => axis.2.jog-scale 

# connecting moving trackballs with positioning axes, through float casting
net x-float conv-float-s32.0.in <= input.0.rel-y-position
net x-s32 conv-float-s32.0.out => axis.0.jog-counts

net y-float conv-float-s32.1.in <= input.0.rel-x-position
net y-s32 conv-float-s32.1.out => axis.1.jog-counts

net z-float conv-float-s32.2.in <= input.0.rel-wheel-position
net z-s32 conv-float-s32.2.out => axis.2.jog-counts
  • 入力信号をnet文で2回以上使用するとエラーが出る.出力が複数にわたる場合(例えばRS-FFのQ端子)には,スペース区切りで複数指定可能.(参考:Basic HAL)
  • 動作確認後,直感的な動作では無かったため,rel-x-positionとrel-y-positionを入れ替えた.
  • RS-FFのR=S=1は禁止だから,同時に押すとどうなるのか気になるが,ソフトが落ちることは無かった.不定な動作になりそうだが.

動作確認

X軸Y軸の対応が直感的では無かったため修正したが,おおむね期待通り動作した,ジョイスティックだとトップスピードで軸移動するっぽいのが少し不安.
Z軸のスクロールリングは,1周で約80ノッチに相当しており,現在は,0.8mm/周で運用している.感覚的な不具合があれば追記したい.
f:id:sosoru_m:20170113234115p:plain:w300
▲適当に動かせば適当に動いてくれる

CNCフライスでHOME位置割り出し用パーツを作る

はじめに

NCフライスは,軸移動の限界位置を知るため,軸の端の部分に光センサー(フォトインタラプタ)が設置されていて,この位置より先には動かせないような安全機構がある.
制御ソフトにもよるが,LinuxCNCでは軸位置の基準であるHOME位置を知るために使われていて,起動時にこのセンサーがちょうど引っかからない場所を自動で見つける手順(Homing)を踏まないと,Gコードを流し込めない.
しかし,我が家のNCフライスは設置場所の都合上,Y軸方向の移動に制限があり,付属しているHOME位置割り出し用のパーツ(フォトインタラプタの遮光板)では,限界位置を割り出せない.
LinuxCNCのHomingは必須であるから,これまでは適当なアルミ定規で光センサーを引っかけて,Y軸のHOME位置を適当に設定していた.
さすがにこのままでは良くないので,今回は,ちゃんとパーツを作ってやって,LinuxCNCが自動でHomingが出来るようにすることが目的である.

f:id:sosoru_m:20170109200737j:plain:w300
▲作成したパーツを設置したところ(銅箔の基板)

f:id:sosoru_m:20170109200657j:plain:w300
▲手に持っているのが付属していたパーツ,裏の基板が今回作成したパーツ

条件

  • スピンドル回転数S 12000rpm
  • 送り速度F 300mm/min
  • 被切削材 厚さ1.6mmの片面生基板(材質:CEM-3)
  • 直径2mmの超硬エンドミルを使用.

コード

OpenSCADのコード.実際のパーツの角の丸めは1mm(長穴は6mm).これはGコード生成の際,VCarveで付加したので,下記コードでは得られない.
(また,長穴については6mm空けるべき所を5mmで開けていたので修正した)

difference(){
    polygon(points=[[0,0],[65,0],[65,40],[45,40],[45,10],[0,10]]);
    translate([50,29,0], center=true) square([10,6]);
}

流れ

付属していたパーツの寸法を測って,足りない長さを加味しつつ,OpenSCADで形を作る.生成したDXFデータをVCarveにインポート.角を丸めてGコードとして出力する.これをLinuxCNCに渡す.
秋月で購入した片面の生基板の両端に,強力な両面テープを張る(厚さ1mm位).面出しを行ったMDF板にこれを固定.切削を行う.
(一番最初はテープで4辺を固定してたけど,全然固定できていなくて失敗した.)

f:id:sosoru_m:20170109202514j:plain:w300
▲秋月の生基板.赤線で囲んだ両端に両面テープを張る

f:id:sosoru_m:20170109202937j:plain:w300
▲削りたて

f:id:sosoru_m:20170109200107j:plain:w300
🔺作成したパーツ,切削時に材料がビビった様な音がしていた.手元のノギスではピッタリ寸法が出ていたので問題ない.

作成したパーツは長穴の寸法が1mm狭かったのでヤスリで削って調整した.調整後,実際に設置してみてHoming動作確認.問題なし.

反省点

  • 材料の固定で妥協しちゃいけない.
  • 長穴の寸法.5mmのネジを入れるのに5mmしか開けていなくて入らない.ひどいミスをした.
  • ビビり音の原因については,材料の固定が甘いというよりも,NCのZ軸が鉄板に接触して,切削時に鉄板自体が震えて異音を生じたと見ている.これについては後日対策を行う.

f:id:sosoru_m:20170109201945j:plain:w300
▲NCフライスのZ軸が上の鉄板に触れている.ちゃんと回転はするものの,回りずらい感触がする.NCフライスの端の部分では,回りずらさは感じられない.

  • 切削作業自体を夜中の3時に行ったので,今回のビビり音は近隣住民の迷惑になったかもしれない.反省.