今迄USBテンキーパッドを流用したCNCコントローラーを使ってましたが、ロータリーエンコーダーを
使った本格的な MPG(手動パルスジェネレーター(略称:手パ))が欲しくなり、作ってみました。 私の自作CNCフライス盤は、パラレルポートを使ったモータコントロールボードを使用してるのでロータリーエンコーダー式 手パを追加するにはパラレルポートを増設するか、USBの市販品購入が必要でした。 幸い私のパラレルポートPort#1には、今は使わなくなったHomeスイッチ用の入力端子が空いてるので、ここに接続すること にしました。 尚、Port#1の入力端子は、10~13と15の5ヶ所です。 「パラレルポート入力端子に2つの空きさえ有れば ロータリーエンコーダーが使えるのです」 モード切替やステップ値切り替えの他、通常PCのキーボードで行う操作を手元で操作出来るように、Arduinoマイコンを使い MPG用超小型のHIDキーボードを実装しました。 このMPGはパラレルポートとUSBのハイブリッド型手パとなり、パラレルポート式モータコントロールボード等の資産継承や パラレルポートが無い昨今のPCにPCIパラレルカードを追加する場合、PCIスロットの空きが1個しか無いPCに有効かと思います。 |
Arduino pro microは入出力端子を18個備えた便利なマイコンです。Arduino pro microのチップはArduino uno系の ATmega386と異なり、Arduino Leonardo系のATmega32u4チップが搭載されています。 注意:HID(HumanInterfaceDevice)USB Keyboard 機能はATmega32u4系でないと動作しません。 TXとRXやアナログI/OのA0~A3もデジタルI/Oとして使えるので、18個のI/Oをすべてスイッチの入力端子として使い、 SHIFTキーを設けることにより、最大17個×2のキー操作が使用可能ですが、ここでは27個のキー操作を行ないます。 余談ですが、Arduino pro microはマトリックス状にキースイッチを組めば最大9×9の81個のキーボードが作れます。 ロータリーエンコーダーの接続先ですが、使用するモータコントロールボードの入力端子に空きが有ることが前提です。 私の場合、モータコントロールボードに入力用コネクターがあり、そこにエンコーダーの出力を接続してます。 |
中央下がMPG用キーボードで安価なタクトスイッチ(1個10円)を使った18個のキースイッチを30年前に買って 残ってたベークライト製ユニバーサル基板を54×54㎜にカットして組み込みました。 Arduino pro microの互換機はアマゾンや中国のAliExpressで350~500円で購入可能です。(大きさは18×35㎜) ロータリーエンコーダーは1回転100パルスをAliExpressで約1,900円にて購入したものですが、秋月電子販売の 1回転16パルスのアルプス製ロータリーエンコーダー(1個200円)も同様に使え、極小MPGが安価に組めます。 USBケーブルはシールド線が入った製品を選んでください。最近はシールド線の無い粗悪品が有りますご注意ください。 |
後述の Mach3のスクリーン編集と関連しますが、今回のMPG用スケッチ(sketch)を添付します。 ここをクリックするとMPG用スケッチのページを開きます。 スケッチの内容はHID Keyboardライブラリーを使用し、各入力pin名の宣言と入力pinのプルアップを設定、 digitalRead関数でキーの状態を監視し、条件分岐によって選択されたキーに対応したキーデーターを Mach3へ送り、 Mach3ではそのキーのOEMボタンコードに対応した操作を実行します。 尚、Arduino pro microのHID Keyboardでは矢印キー等を押し続ける動作ではPCのKeyboardのように連続した 動きではなく断続的な動きとなります。HID Keyboardライブラリーではキーを押し下げるKeyboard.press() 関数とその動作を開放するKeyboard.release()及びKeyboard.releaseAll()の関数しかなく、キーを離した時の 処理関数が無いことです。私のスケッチではpressとreleaseの間に300mSのdelayを入れて対応してますが、 矢印キーで各軸の移動には不満が残るところです。しかし、Keyboard.press()には次のキーが押されるまで 保持するラッチ機能があり、選択スイッチ等には有効な手段でXYZ軸の切り替え等に使っています。 |
編集が終われば保存し、次に Mach3を起動してツールバーのViewを開き、一番上のLoad Screensを開いて編集した setファイルをロードします。 また、ボタン設定に必要なOEMコード表が、ここをクリックすると表示します。 私が今回のMPG用に編集したScreenデーター「1024_MPG1.set」を参考として添付しますがオリジナル画面からボタンの 位置等に少し変更を加えています。ここをクリックするとダウンロード出来ます。 では、最後にScreen4の使用例を2つ紹介しますので参考にして下さい。 |
Screen4の編集メイン画面のDRO下側のGOTO ZEROボタンをWクリックすると下図のようなダイアログが表示されます。 ここでFunction項目のSystem Functionのラジオボックスにチェックを入れ、右側リストボックスの下げボタンを押し、表示された リストからGoto Zero'sを選択、次にMPGキーボードのSHIFTキーを押したままSTOPキーを押すと右ボックスに34899と数値が表示されたら OKボタンを押します。保存後は、MPG用キーボードのSHIFTキーを押したままSTOPキーを押すとDROが0まで減算され、3軸が原点に戻ります。 |
Screen4ツールバーのTABボタンをクリックするとMPGモード画面に変わります。ここでX+ボタンをWクリックすると 下図のようなダイアログが表示されます。ここでFunction項目のOEM Code Functionのラジオボックスにチェックを入れ OEMボタン表のPush to jog X+に対応したOEMコード307を入力、Use Hotkeyにチェックを入れるとType the Hotkey Now. と表示されるのでMPG用キーボードのX-Rightキーを押すと右ボックスに39と数値が表示されたらOKボタンを押します。 保存後にMPG用キーボードのX-Rightキーを押すとJog ModeがCont及びStepの時にカウントアップが確認出来ます。 |
最後にロータリーエンコーダーのキャリブレートの方法を紹介します。 Mach3の操作画面からTABキーを押すと MPGモードの操作画面が開きます。このMPGモード画面右上CALボタンをクリックすると下図のCalibration MPG'sの ダイアログが開きます。 ①ダイアログのMPG#1ラジオボックスにチェックします。 ②Cal Detent Sizuボタンをクリックし、ロータリーエンコーダーのダイヤルを左右どちらかへ1目盛り動かすと 右ボックスに4等の数値が入ります。 ③次に下のCal Max Speedボタンをクリックし、ロータリーエンコーダーのダイヤルを左右どちらかへ通常使う速度で 回転させると右ボックスに数値が入ります。 ④今度はCal Step/vel Trans.ボタンをクリックし、ロータリーエンコーダーのダイヤルを左右どちらかへ早い速度で 回転させると右ボックスに数値が入ります。 ⑤次に右側のCalculateボタンをクリックして下のSaveボタンで保存します。この操作は何度でも出来るので最良の 状態を探すと使い易くなるそうです。 |
これまでは、USBテンキーパッドのボタン定義を変更した簡易型を使ってましたが、やはりロータリーエンコーダーを 使ったMPGはスピーディーで使い勝手が良いですね。このMPGは新規購入部品が3,000円ほどで安価に完成しました。 |