CNCの実験1:2005.09.11〜2005.12.31 2006.02.02(木)〜 / X,Y,Z軸改造。CNC App作成。
005.12.31(土) PCの内臓カウンタによるステップパルス幅制御その3です。 今回は、 [DllImport("kernel32.dll")] extern static short QueryPerformanceCounter(ref long x); [DllImport("kernel32.dll")] extern static short QueryPerformanceFrequency(ref long x); を使用しました。 パルス幅2[msec]以上で正確に制御できます。 最大送り速度は312[mm/min]です。 但し、パルス出力ループ内で、X,Y,Zの現在位置を数値で表示させると処理に時間が 掛かり、最大送り速度が92[mm/min]に減少します。 グラフィックで現在位置カーソルを描画した場合は、最小パルス幅 2[msec]を利用で きます。 今使用しているモータではF125程度が限界ですが、最高送り速度をさらに速くして アプリケーションとしての汎用性を向上させるためには、EZ-USBマイコン側でのパ ルス幅制御が必要になります。 2005.12.30(金) CNCアプリケーションにバックラッシュの補正機能を追加しました。 0.6mmピッチのQFPパターン切削に一歩近づいたような気がします。 1) 一往復での補正効果 補正は効果的で、特にZ軸の改善が顕著です。 移動順 X軸:X0→X10(0set)→X15→X10で測定。 Y軸:Y0→Y10(0set)→Y15→Y10で測定。 Z軸:Z0→Z10(0set)→Z15→Z10で測定。 補正なし 補正あり 補正量 (単位μm) ------+----------+----------+----------------------------- X軸 16.8 -3.6 17 Y軸 5.0 2.6 5 Z軸 137.8 -3.6 138 2) 繰り返しでの補正の影響 補正による累積誤差の増大はありませんでした。 安心して使えます。 移動順 X軸:X15→X10(0set)→X15→X10→X15→X10→X15→X10→X15→X10→X15→X10で測定 X軸:Y15→Y10(0set)→Y15→Y10→Y15→Y10→Y15→Y10→Y15→Y10→Y15→Y10で測定 X軸:Z15→Z10(0set)→Z15→Z10→Z15→Z10→Z15→Z10→Z15→Z10→Z15→Z10で測定 補正なし 補正あり 補正量 (単位μm) ------+----------+----------+----------------------------- X軸 1 -0.8 17 Y軸 -1 3.8 5 Z軸 10 0.6 138 1パルス当りの送り量が10.4μmの構成なら、補正によりバックラッシュが10.4μm以 内に納まります。 一回転当りのパルス数が400ならば、2.5μm以内という計算になり ます。 一回転当りのパルス数96、1パルス当りの送り量10.4μmで、しばらく続行 します。 2005.12.29(木) 各軸の設定項目で、軸1回転当りのパルス数と送りネジのピッチ入力を反映する様に しました。ステッピングモータを200ステップ/回転のものに交換しても即対応出来、 送りネジを換えてもプログラムを見直す必要がありません。 なにせ、数週間で作っ たプログラムを忘れる今日この頃、後になっての変更は苦痛を伴います。 パルス数は1-2相駆動の為、48パルス/回転で96。200パルス/回転で400と入力します。 ネジピッチの設定可能な最小値は0.001[mm]です。 次は、バックラッシュの処理を組込みます。 2005.12.27(火) バックラッシュのテストをしました。 一往復では、 X軸は量もバラツキも良い結果です。補正で対処できそうです。 Y軸のバラツキが気になります。軸受けの支持構造など要検討です。 Z軸は量は多めですがバラツキが少なく、補正で対処できそうです。 繰り返しでは、 X軸、Y軸ともに好結果です。 Z軸はやや多めですが、用途によっては十分な性能です。 繰り返しの中で移動方向の切り換わり毎に補正を行ったとしても、補正の向きが逆方 向でキャンセルされる為、累積誤差は無いものと考えています。 アプリケーション に補正処理を組み込み、実験で検証する必要があります。 以下は、今回のテスト結果です。 一往復 移動順=X0→X10(0set)→X15→X10で測定。 移動順=Y0→Y10(0set)→Y15→Y10で測定。 移動順=Z0→Z10(0set)→Z15→Z10で測定。 平均 最小 最大 単位=[μm] ----+----------+---------+----------------------- X軸 17 14 18 Y軸 -5 -23 32 Z軸 -138 -133 -146 繰り返し 移動順=X15→X10(0set)→X15→X10→X15→X10→X15→X10→X15→X10→X15→X10で測定 移動順=Y15→Y10(0set)→Y15→Y10→Y15→Y10→Y15→Y10→Y15→Y10→Y15→Y10で測定 移動順=Z15→Z10(0set)→Z15→Z10→Z15→Z10→Z15→Z10→Z15→Z10→Z15→Z10で測定 単位=[μm] ----+---------------------- X軸 1 Y軸 -1 Z軸 -10 2005.12.25(日) 初の切削テストをしました。 脱調は無かったようです。 バリはありますが、無事に終了しほっとしました。 テスト条件 項目 条件 -----------------+----------------------------------------------- 早送り速度 X=100[mm/min]、Y=100[mm/min]、Z=50[mm/min] 切削送り速度 20[mm/min] 切り込み深さ 0.2[mm] スピンドル回転数 目盛り2 (約5600[回転/min]) エンドミル刃径 1[mm] 材質 アルミニューム 切削油 使用せず データファイル 1st_mill.txt(CAD図面から手作業で変換しました。) (コード参照) 所要時間 約10分 2005.12.23(金) このところの冷え込みの所為でしょうか、Z軸が脱調しやすくなっています。 最大送り量を調整しやすくする為に、CNCアプリケーションのパネルに各軸の設定項 目を追加しました。 string sub_key = "SOFTWARE\\CNC\\SETTINGS"; RegistryKey reg_key = Registry.LocalMachine.OpenSubKey(sub_key); reg_key = Registry.LocalMachine.CreateSubKey(sub_key); reg_key.SetValue("X_MAX_FEED", x_max_feed); でレジストリに記録し、 reg_feed = (int)reg_key.GetValue("X_MAX_FEED"); で次回アプリケーションの起動時に値を再現します。 バックラッシュ、パルス、ピッチは、内部処理が未対応で表示だけです。 Z用の軸受けにベアリングを使うことで、最大送り量を改善できるかもしれません。 2005.12.22(木) CNCアプリケーションのパネルに、釦を追加しました。 原点合わせの操作がやりやすくなりました。 2005.12.21(水) 各軸ごとに送り速度の最大値を設定するようにしました。 X=125[mm/min]、Y=125[mm/min]、Z=60[mm/min]です。 G00はこの値を使用します。 G01、G02、G03では、Fがこの値を超えた場合に使用します。 2005.12.20(火) CAD図面からハンドアッセンブル(ハンドコンバート)しました。 初切削コード 迷子になったり、道草をくわなけれければいいのですが。 2005.12.19(月) G00は最高速度で移動し、G01(G02、G03)はF値の速度で移動するようにしました。 コード 移動所要時間(秒) ---------------+------------------ G00 X50 22.9 G00 X0 22.4 G00 X50 F50 22.8 G00 X0 F50 22.3 G01 X50 F50 56.3 G01 X0 F50 55.7 送り速度の設定と実行誤差レポート 2005.12.18(日) CNCアプリケーションにFコードの処理を追加しました。 G01 X100 F50 を実行し、移動の所要時間は107秒でした。 実質のF値は、56.1mm/minになります。 誤差が発生したいきさつについては、別途レポートします。 2005.12.11(日) G03のコード処理が完成。 コレットにボールペンの芯をくわえて半径20mmの円を描きました。 2005.12.07(水) G02コードの処理が完成しました。 上の円弧は G00X100Y40 G02X150Y10R-30 で描画 下の円弧は G00X100Y40 G02X57.73Y3.22R30 で描画 2005.11.30(水) VC#によるCNCプログラムの立ち上げが一段落したので、ここから再開です。 move_table関数をX,Yの2次元処理からX,Y,Zの3次元処理に変更しました。 各軸の移動量が X>=Y>=Z>0 なら、 for( i = 0; i < Zのステップ数; i++ ){ Zを1ステップ移動; for( n = 0; n < Zの1ステップ当りのYステップ数, n++){ Yを1ステップ移動; XをYの1ステップ当りのステップ数移動; } } このループ内と関数の終了直前に、ステップ数の誤差を補正します。 2005.11.02(火) モータ駆動回路基板をケースに収納しました。 黄色のケーブルはモータへの延長ケーブルです。 切削のプレビューを追加しました。 テーブルを実際に動かさなくても「Gコード」メニューのデバッグが出来る為、 プログラム設計の能率があがります。 今はX,Yですが、X,Y,Zの3Dが目標です。 2005.10.29(土) Z軸送りねじとステッピングモータをジョイントしました。 1パルス10msecでZ軸の全範囲を脱調せずに移動できます。 96(パルス/回転)×10(msec)=0.96(sec/回転)。 送り速度は、 1/0.96(回転/sec)×1(mm/回転)×60(sec/min)=62.5(mm/min)。 分解能は、1(mm/回転)÷96(パルス/回転)=10.4(μm/パルス)。 2005.10.27(木) 10.24(月)のジョイントではバックラッシュが多い為、X軸やY軸と同じ方式にしま した。 ハンドルは、にわか旋盤で切り取りました。 2005.10.24(月) Z軸用のジョイントです。 真鍮のスリーブに鉄の板を半田で固定しました。 ハンドル中央のー形の溝に挿入し回転を軸に伝えます。 Z軸の操作力はXやYより軽く、軸受けを改造せずに写真のモータでコラムが上下に 移動します。 最上部付近の10mmは脱調しますが、モータを支柱で固定して結果が同 じならOKとします。 Gコード G01X10.Y10. の実行結果で、傾き45度、長さ14mmです。 2005.10.23(日) CNCアプリケーションの「Gコード」メニューをクリックし、開いた入力用フォームの テキストボックスにGコードを入力したところです。 入力した文字列から字句の仕分けと内容の解析を行い、取得したデータをリストへ。 このデータと現在位置を move_table関数に引き渡すと、はたしてテーブルが動くは ず?。 今日は、G00とG01の解析と結果のリスト出力をデバッグ。 2005.10.20(木) 切子カバーを取り付ける為に、Y軸受板を作りかえました。 テーブルの上に乗っているものは厚みが5mm。今回のものは厚みが15mmです。 2005.10.17(月) 半径10mmに設定し円を描きました。 角度の増分は2π/720です。 直径がおよそ19mmで、始点と終点が一致せず、円とは言い難いものになりました。 ステッピングモータに印加すべき駆動パルスの数が約4.5%不足しており、角度増分ご との誤差が集積された為と思われます。 駆動パルスの誤差の集積を補正する処理を追加し、角度の増分を2π/1440に変更して 、半径10mmの円を描きました。 駆動パルスの誤差は1/1920個で、約0.01mmです。 ようやく円らしくなりました。 2005.10.15(土) CNCアプリケーションで一辺が10mmの四角形を描きました。移動量は1000で入力。 ボールペンのインク幅以内の誤差で開始点に戻り、一辺もほぼ10mmです。 2005.10.14(金)  CNCアプリケーションの親フォームとメニューから開いた移動量入力用の第2フォーム です。  久しぶりにBorland C#Builderを使ったので、プロジェクトの立ち上げに大分時間が 掛かりました。 今回、親フォームから第2フォームを生成することに初めてチャレ ンジしました。 今は入力する移動量がパルス数にしてありますが、いずれ1/100mm単位の移動距離に 変更します。 2005.10.09(日) ステッピングモータ3軸分のドライブ回路基板です。 汎用の基板で部品の配置を検討中です。 左のコネクタに挿入している基板は、 MINI EZ-USBキットです。 2005.10.08(土) > マイクロフライス本体に乗せたクロステーブルです。 Y方向送りねじと鞍のアリ溝に樹脂用のグリスを塗布し、写真のモータでテーブルを 滑らかに動かすことができます。 2005.10.07(金) Y軸用のジョイント、軸受板、支柱、ステッピングモータ、ベアリングです。 軸受板をアルミ板で作ります。 軸受板の加工が終わり、Y軸のモータを取り付けました。 支柱の長さを調整しモータとY軸をジョイントします。 2005.10.01(土) にわか旋盤でY軸のツマミを切り取ります。 ステッピングモータに取り付けたプーリーに、Y軸の操作ツマミを両面接着テープで 貼り付けて回転させ、糸鋸で切ります。 左手が刃物台、右手が芯押し台です。 作業終了です。 X軸のツマミはとても掲載できない方法で粉にしました。それに比べると切子の量や 作業時間に格段の進歩がみられ、残ったツマミは再利用ができます。 2005.09.30(金) MINI EZ-USBキットです。 PCからUSB経由で基板加工機を制御するために使用します。 ステッピングモータの駆動実験で使用したバージョンよりEEPROMのI/Fが拡張され、 組み込み用として使いやすくなっています。 これから半田付けをします。\1,000アップで半田付け済みもありました。 1時間半くらいで半田付けが終わり、ステッピングモータを制御して基板の動作テス トをしました。 2005.09.28(水) X軸のモータをテーブルに取り付けました。 ステップパルス幅8msecで、軸の一回転の所要時間は0.786secです。 軸ネジのピッチが1mmのため、テ ーブルの送り速度は78.1mm/分です。 このステッピングモータを1-2相励磁式で駆動すると96ステップで一回転する為、 分解能は約0.01mm/ステップになります。 2005.09.26(月) X軸用のジョイントです。 軸用はΦ10の真鍮で連結部は凹形です。 連結用はΦ11のジュラコンを使用し、連結 部は凸形で、両側の凸部は互いに90度回転した位置にあります。 軸に取り付けると見た目で偏芯が分かりますが、ステッピングモータは脱調すること なく回転をX軸に伝達しています。 連結部分にあるバックラッシュは制御プログラム で対処します。 2005.09.23(金) X軸の送りネジと左からストッパー、ベアリング(追加)、軸受け板、ベアリング(追加 )、ストッパー(追加)です。 軸受け板の軸穴を6mmから9.1mmに拡げ、内径6mmのベア リング2個で軸受け板を挟み、ストッパーで与圧して軸とテーブル間のガタをなくすよ うにします。 もう片方の軸受け板は軸穴を大きくして、軸をフリーにします。 軸受けと送りネジとの中心が一致していない為、両端付近で動きが重くなり、ステッ ピングモータが脱調し、さらに動かなくなる症状がなくなります。 また、テーブルの右側でアリ溝の勘合がきつくなりステッピングモータが脱調するた め、テーブルのアリ溝(凸)を紙やすりで、テーブルを縦にして自重で落下するまで削 ります。 さらに、軸とテーブルの摺動部分のグリスを樹脂用のものに換えます。 軸の回転力 が指で回した感じで一様になり、オイル臭が無くなります。 これらの対策を実施することで、写真のステッピングモータを用いてXテーブルが可 動範囲の全域で滑らかに動くようになります。 但し、追加したベアリングの厚みと ストッパーの長さ分、元の可動範囲より少なくなります。 使用したモータは、48ステップ5V仕様です。 2005.09.17(土) ステッピングモータをX軸の送りネジに取り付けたところ、クネクネと回ります。 直結は諦め、フレキシブルなカップリングを探さなくては。 テーブルと不釣合に大きく、出っ張りすぎのモータについても再考を要します。 2005.09.15(木) 5V 1.8°200ステップ/回転 のステッピングモータを1-2相励磁方式で回しました。 無負荷です。 1-2相励磁方式のタイミングチャート ├─┤ T1 ┌─────┐ ┌─────┐ X ┘ └─────────┘ └───── ┌─────┐ ┌─────┐ Y ────┘ └─────────┘ └─ ┌─────┐ ┌─── -X ────────┘ └─────────┘ ──┐ ┌─────┐ -Y └─────────┘ └───────── 脱調することなく回転する時のT1。 T1×360/0.9=1回転に要する時間。 5V 12V ---------------+---------------------+----------------------- 1-2相励磁方式 7msec(2.8sec/回転) 3msec(1.2sec/回転) 2相励磁方式 11msec(4.4sec/回転) 4msec(1.6sec/回転) 1相励磁方式 20msec(8sec/回転) 7msec(2.8sec/回転) 上の表から、1-2相励磁方式の方が高速回転が可能で、12Vで連続2時間回しても、2相 励磁式よりも温度上昇が少なめです。 各相の制御は複雑になりますが、1-2励磁方式がいいようです。 ちなみに1相励磁方式のタイミングチャートを以下に示します。 ├─┤T1 ┌─┐ ┌─┐ X ──┘ └─────┘ └───── ┌─┐ ┌─┐ Y ────┘ └─────┘ └─── ┌─┐ ┌─┐ -X ──────┘ └─────┘ └─ ┌─┐ ┌─ -Y ────────┘ └─────┘ 2005.09.14(水) 5V 1.8°200ステップ/回転 のステッピングモータを回してみました。 2相励磁式のタイミングチャート ├─┤T1 ┌───┐ ┌───┐ X ──┘ └───┘ └─── ┌───┐ ┌───┐ Y ────┘ └───┘ └─ ┌───┐ ┌─── -X ──────┘ └───┘ ┌───┐ -Y ────────┘ └───── CW(Clock Wise)(時計回り)は右向きの順に出力。 CCW(Counter Clock Wise)(反時計回り)は左向きの順に出力。 *時計回りは、軸側から見たときの回転方向。 無負荷で脱調することなく回転する時のT1。 T1×2×360/1.8=1回転に要する時間。 電源電圧 5V 12V ------------+---------------------+----------------------- 1相励磁方式 20msec(8sec/回転) 7msec(2.8sec/回転) 2相励磁方式 11msec(4.4sec/回転) 4msec(1.6sec/回転) 2005.09.13(火) Xテーブルの送りハンドルを取り外し、タミヤのギャボックスをジョイントで取り付 けました。 重々しげにゆっくりとXテーブルが移動しました。 手動でもテーブルの送りに力がいるので、テーブルの軸受けを滑り方式からベアリン グ方式にしたり、送りネジとナットおよびテーブルの軸受けの3点の位置あわせが必 要です。 使用したギャボックスは無負荷でも回転か遅い為、次はステッピングモー タでX軸の送りネジを回してみたいと思います。 2005.09.09(金) 通販でステッピングモーター2種類を発注したところ、5V仕様のモーターの方は在庫 切れでキャンセルになり、24V仕様のモーターが昨日届きました。 Z軸とY軸用には使えそうですが、Xテーブルの片側に取り付けて、テーブルと一緒に 動かすには躊躇する重さ(カタログで0.5Kg)があります。 クロステーブルの強度に合いそうなモーターを他に探した方がよさそうです。 2005.09.06(火) Xテーブルの送りダイヤルをモーターで回してみました。 約1/2回転しました。 軸のセンター合わせや、軸同士のカップリングをしっかり行えばもっと回るかも。 玩具工作用のギャーボックスで、メーカのHPにあった測定値よりトルク出力は大きい ようです。 2005.09.05(月) クロステーブルの操作ダイヤルの始動トルクを、分銅の代わりに10円硬貨を使って測  定しました。 X方向は\1790(左側),\630(中央),\800(右側)、各トルクは0.95Nm,0.33Nm,0.42Nm。 Y方向は\1300(奥),\950(中央),\1000(手前)、各トルクは0.69Nm,0.50Nm,0.53Nm。  軸の中心からダイヤルツマミまでの距離は1.2p。 分銅の重さは4.5g/10円で計算しました。 2005.09.04(日) マイクロ・フライステーブル 基板加工機用に池袋のハンズメッセで特価品を調達しました(08.26(金))。 別売のエンドミル(5本セット)がおまけです。 X,Y,Z各軸の回転をPCで制御し、プリント基板の回路パターンを切削する事が目的で す。 スライドシャフトや台形ネジなどを用いた機構を検討していましたが、材料費 が高くなることや、卓上でも大型の部類の旋盤やフライス盤が必要になること、工作 の精度に自信がないことなどで、出来合いの機械に駆動装置を取り付ける事にしまし た。
CNCの実験へ
サイトのTopへ
法律条項 この資料により生じたいかなる障害や損害に対し、著者は全てを免責されるものとします。 この資料は、著作権法の下で保護され、入手先、著者、日付、法律条項を含んだ場合にのみ複製が可能です。
inserted by FC2 system