LinuxCNCはバージョン2.7のLiveCDからインストールしました。LinuxCNCにはそのPCが向いているかどうかの指標としてレイテンシ・テストがあります。LinuxCNCはステッパーの回転パルスをリアルタイムに生成する為、一定間隔で処理を実行する必要があるのですが、レイテンシが大きいと間に合わなくなるのです。LinuxCNC付属のレイテンシ・テストを実行するとMAXジッターという値が表示されます。ドキュメントによるとこの値が50μSあたりまでならまあまあ良し、100μSを超えるマシンは制御には向かない様な事が書いてあります。このPCで実行したところ直ぐに200μSを超えてしまいました。現用のPentium4-2.8GHzが最大でも55μS程度なので不安視していなかったのですが、ビデオカードを交換してみたりBIOSの設定を変えたりとやっても改善しません。PC代¥2900円が無駄になるは悔しいので何とかしたいところです。そこで次善の策として考えてたのがこのPCでGrblのコントローラーを動かすという方法です。Grblならリアルタイムの部分はArduinoがやってくれるのでPC側はジッターを気にする必要がありません。BlackIIの制御基板(TRIO)にはサンケン電気のステッパードライバが載っておりこれは活用したいので、Arduino+CNCシールドではなく、ArduinoをTRIOにつないで制御してみたいと思います。ステッピングモーターの制御信号がDIRとSTEPという基本は変わらないので何とかなると思っています。D-SUB25ピンのコネクタはジャンクのマザーから取り外した物です(なので紫色)。TRIOをイネーブル状態にする信号はSN74HC00を使った非安定マルチバイブレータでチャージポンプ信号を入れて動作させましたが、これではGrblが準備できたらONになるという本来の動きはできないので、最終的にはTRIOのJP1をオープンにする事で、単にLに下がればイネーブルとなる制御にしようと思います。この段階で色々とマニュアルに記載が見当たらない細かいところも試してみました。以下ここまでで分かった事の備忘録TRIOのSPINDLE入力はLが回転、Hが停止。BlackIIのリミットスイッチ(フォトインタラプタ)は普段はLでセンサーをさえぎるとHになる。ArduinoのA0ピン(GrblではReset/Abort端子。内部プルアップされている。)は動作中にLに落とすと動作がキャンセルされて停止する。続きの動作はできず、HOMINGからやり直す必要あり。CNCシールドのE-STOP端子は回路図を辿るとArduinoのリセットに繋がっている。A0端子で止めてもReset端子で止めても動作は変わらないように見える。内部プルアップされている。)はLに落とすとスピンドルは回ったままステッピングモーターだけが停止する。コントロールソフト(Candleを使用)のステータスにはHOLDと表示され、Pauseボタンを押すと動作が再開する。ArduinoのA2ピンはGrblではCycleStart/Resume端子であるが、これをLに落としても特に何事も起こらなかった。GrblではZ-probe/Heightmap)もプルアップされていて、高さ検出の際にこれがLになったら刃物がワークに接触したと認識する。Z-probeはCandle右上ボタン群の下向き矢印みたいなボタンを押すと始まる。Height-mapはCandle右部分のheightmapメニューからCreateを押すと採取用設定が現れる。TRIOにはEMG信号という出力があり、スピンドルに過電流が流れたりするとL→Hに変化する。「TRIOのSPINDLE制御入力はLだと回転」というのがGrblの標準とは異なるのでconfig.hの下の行のコメント記号を外しました。INVERT_SPINDLE_ENABLE_PINまたスピンドルの回転数をPWMで制御する事はTRIOのマニュアルを見る限り書かれておらず、当面はON/OFFだけで実行します。この為以下をコメントアウト。VARIABLE_SPINDLEなおこのコメントをを外すとGrblは旧版との互換性の為、スピンドルイネーブル端子とZ-LIMIT端子の機能が入替わる(HかLかを切り替えるだけでなく、端子の割り当てまで一緒に変更してしまう)。入替わる前提で使ってもいいが将来的な互換性を考えると端子割り当ては標準のままにしたかったので、cpu_map.hの以下を変更しました。3ところでGrblのヘッダ類を書き換える場合は~/Arduino/libraries/grblの下にあるファイルを変更しなければなりません。最初普通に~/Arduino/grbl-master下のファイルを変更してコンパイルしても変更が反映されなかったので要注意です。次に非常停止をスイッチをどうするか、以下を候補に考えています。ArduinoのReset端子をLに下げる。ArduinoのA0端子(Reset/Abort)をLに下げる。TRIOのイネーブル信号(チャージポンプ又はH/L)を使ってOFFにする。非常停止は極力ノーマリONのスイッチにすべきです。ノーマリOFFを使ってしまうと接点が劣化していた場合に非常停止を押しても止まらないという事態が予想されます。Grbl標準はReset端子を使うにしてもA0端子を使うにしてもノーマリOFFが標準なのでA0端子の機能を逆転させる事にします。一つ、TRIOからEMG(エマージェンシー)信号というのが出てきます。これはスピンドルモーターに過電流が流れた場合等にHになる信号なので、何とかGrblに伝えたいと思います。いう事でTRIOのEMG信号と非常停止スイッチを両方生かす為、次の様に配線する事にしました。Grblの設定でA0信号はHとLの意味を反転させ、正常時がL、異常時がHと認識する様に変更しています。これでTRIOから出るEMG信号も非常停止スイッチも反映させる事ができます。A0信号のHとLの意味を反転させるにはconfig.hに以下を追加します。((1<<CONTROL_RESET_BIT))以上で回路が決まりました。次に基板を作っていくのですが、折角なのでこのCNCを用いて基板を切削してみようと思っています。その為にはスピンドルに基板切削用刃物を取付ける方法を考えねばなりません。・・・という事で次に続きます。admin1ぽんさんに頂いた旋盤に続きCNCフライスも稼働させたいと思います。このCNCはスピンドルの横に1Wのレーザーが取付けられていますが安全のため一旦取り外していずれ活用したいと思います。ORIGINALMIND製BLACKII1520コントローラーはORIGINALMIND製のTRIOが筐体の下に収まっています。TRIOはORIGINALMIND社のWebページで見かけますが実物を見るのは初めてです。ステッピングモーターのドライバには昔欲しかったけど手に入らなかったサンケンのSLA7078が載っています。基本的にTRIOはPCのパラレルポート(プリンターポート)から接続しますが、最近のPCにはパラレルポートはありません。USBからパラレルに変換する為のCNCdrive製UC100も一緒に頂きました。因みにCNCをコントロールする場合、USBからパラレルポートに変換するアダプタとして普通に売られている物ではうまく動きません。USBは大量のデーターを送るには優れていますがリアルタイム性は今一つなのでモーター駆動パルスのタイミングが間に合わないのです。このUC100というインターフェースは内部にDSPを備えておりタイミング精度が必要な処理は内部で行ってしまうそうです。Mach専用でLinxCNCは対象外です。)を使用しましたがそれ以降使っていません。最終的にどうするか未定ですが、まずは使い慣れたLinuxCNCで(古いPCのパラレルポートで)動作を確認してみる事にします。・・・と簡単に考えていたらハマりました。原因はTRIOに入れるイネーブル信号という物。当初マニュアル無しで動かそうとしていたのでORIGINALMIND社のピンアサイン表にあったM-ENBという信号がイネーブル信号であろうという事までは検討がついたのですが、単にHかLを入れてやればいいものだろうと思っていました。ところが全く動作しないので色々調べてみるとH/Lを繰り返す矩形波を入れ続ける必要があったのです。HかLだとPCの電源投入直後にたまたまそのレベルが出て不用意な動作をしてしまう危険があるので「たまたま」では出てこない信号を入れてやる事がPC側が準備できた証という訳です。この信号はチャージポンプと言うそうです。LinuxCNCのマニュアルにもチャージポンプの事が書かれていましたが関係ないものかと思っていました(だってチャージポンプっていったらデバイス内で電圧を2倍とかに上げてFLASHの書込み電圧などを作るやつを思い浮かべますもん。それがLinuxCNCで要る理由は思い浮かびませんが。)という事でLinuxCNCから「チャージポンプ」信号を出してTRIOのM-ENB入力(17pin)に入れてやる事で動作し始めました。後日ぽんさんにTRIOのマニュアルを見せて頂き、TRIOは5~10KHzの信号をイネーブルと判断するという事が判りました(実際にLinuxCNCから何KHzが出ているのかは確かめていませんが)。基板上のジャンパー1をオープンにする事で単にLを入れるとイネーブルになる方式にも変更できる様です。ここまででステッピングモーターは動作する様になったのですが、スピンドルを駆動するプーリーベルトが切れてしまいました。モーター側は良いのですが、Oリングが太いのでスピンドル軸側のプーリー溝には完全には嵌っていません。いい加減なところもありますが動作し始めたので適当なデータで木を削ってみます。切り口がササクレましたが削れています。ササクレは条件を詰めれば良くなると思います。最低限の動作が確認できました。この後ですが・・・現在LinuxCNCを動かしているマシンはレーザー加工機と基板切削CNCを受け持っており、新しいCNCを設置したい場所とは部屋の反対側になってケーブルが届きません。基板切削CNCを撤去して代りに今回のBlackII1520を置くというのもアリかと思いますが、まだ基板を削れる状態にはなっていないのです(スピンドルが基板切削用刃物のサイズに合っていないのをどうするか・・)。コントローラもLinuxCNCで行くか、Machにするか、またはGrblにしてしまうか思案中です。admin1ぽんさんのご家庭の事情により工作機械を手放さなければならなくなったとの事で、卓上旋盤とCNCフライスが要らないかと声をかけて頂きました。地理的に近い工作仲間であるぽんさんが工作から離れられるのは悲しいのですが、勿論旋盤とCNCは頂きに上がりました。型番わかりませんが400WのものそしてCNCフライスはこれ・・・ORIGINALMINDのBLACKII1520これらを頂きに上がった時、ぽんさんは家庭の事情が許すというラズパイ工作をされていました。これなら騒音や油類を出さないのでOKだそうです。現在ぽん工房は更新されていませんが、いずれラズパイ工作の成果をアップされるのを楽しみにしています。旋盤は前から欲しかったのですが、実は使った事がありません。勉強しながら、大切に使わせていただきます。CNCフライスはORIGINALMIND製の素晴らしいものです。今まで基板の切削に使っていた木製CNCとは比べ物にならないと思われ、早期に稼働させたいと思います。・・・という事で現在これらを設置する作業台を製作中です。admin5フライトシミュレータのモーション化を進めていますが、次の作業としてラダーペダルやフライトヨークを座席と一体にになる様に固定したいところです。この作業には鉄を切ったり貼ったりする予定なのですが先週末は天気が悪くて外での作業が出来ませんでした。仕方ないので現在ブレッドボードのままであるコントロール回路の基板作成を始めたのです。いつもの様にKi-cadで図面を描き、ガーバーデータを作成してgynostemmaで切削データを作成しました。基板切削CNCをスタートさせてしばらくしたところでガタガタという音がし始めました。最初は送りねじの油切れかなとか思っていたらそのうちX軸が回らなくなり、同じところばかり削り始めたので非常停止ボタンを押して止めました。X軸のドライバ基板とステッピングモーターをつなぐナイロンコネクタ付近が接触不良みたいです。このあたりをグリグリやるとX軸が回ったり止まったりします。結局配線中の1本が切れかかっているのを見つけたので半田で付け直しました。再スタートしたら今度はY軸がガタガタと言って回らなくなりました。これもコネクタ回りの配線が切れかかっており、半田で付け直しました。これで一応動作する様になったのですがコネクタ回りをしつこくグリグリやってみるともう一か所怪しいところがあり、これも半田で付け直しました。ナイロンコネクタは電極をカシメて止めますが、このCNCを作った時はまだカシメ工具を持っておらず、適当な事をした記憶があります。それがいま一気に噴出したのでしょうか?もしかすると今まで何回か切削を失敗した事があるのもこれが原因だったのかもしれません。ナイロンコネクタの切れたところを半田で修理このドライバ基板、今では考えられませんが当時市販のステッピングモータドライバが手に入らなかったのでPICマイコンとMOSFETで作りました。ユニポーラのモーターを3個駆動するのでMOSFETを12個並べており配線もぐちゃぐちゃです。ぶら下がっており、そりゃ配線切れも起こすってもんです。以上の修理で今のところ普通に動作する様になったのですが、いつまた再発するか分かりません。コネクタの配線を全部やり直せばいいのですが、それよりもArduino+CNCシールドに変えようかと検討しています。前にレーザー加工機をArduino制御に変えようと思ってCNCシールドは購入していましたが、非常停止スイッチ、水流センサー、上蓋開閉センサー等の接続を考えていたら面倒になってそのままにしています。このCNCシールドを流用しようかと考えています。修理完了ぼちぼちとやります。admin返信プリント基板切削用のCNCを今年の初め頃から作っている。日本版Make誌Vol10に触発されたのだ。なんとか動き出したので写真をUPする。基板を切削するデータがまだできてないので、切れっぱしの基板にくまモンを彫ってみた(ちょっと掘り込みが深すぎたか?)。RSSWordPress.orgこちらも見てちょ~だい。