スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

HandWheelManualPulseGeneratorをLinuxCNCに入力する。

前記事 LinuxCNCのArduinoでのモーション以外のインターフェース。にて、LinuxCNCのPythonによるユーザーコンポーネントを使用したLinuxCNCへのデータ入力を試してみたわけですが、ソースコードが公開されていることも有り、今海外通販でわりとと安価に入手出来るHand WheelManualPulseGeneratorの出力信号をLinuxCNCのHALに入力、PyVCPを使用し表示してみました。



動画上右側がパルスカウント値、左側は接続に使用したPSoC5LP内での数値をただ、+1してるものを確認のために表示させてます。

前記事内のリンクに有るPythonで書かれたLinuxCNCのユーザーコンポーネント、HALファイル、PyVCP用のXMLファイルの内容を書き換えただけです。
ADC入力部分に渡す数値を、PSoC5LPのUDBで生成されたQuadDecoderのカウント数値に置き換え、他の余分な入出力部分を削除しました。

Linux側、マイコン側のUARTでの送受信のフォーマットさえ守れば、Arduinoを使おうが、PSoCを使おうが、大体の数値入力は可能だと思われます。

ArduinoではなくPSoC5LPを使用したのは、ペリフェラルに小規模のPLDを使うことができ、エンコーダー入力のカウントをハードウエアで行うことができるから。
数十Mhzレベルのクロックで作動するハードウエアカウンタなので、作動クロック以下の周波数でのカウントの取りこぼしがありません。

他MCU、私が触ってるSTM32シリーズのタイマ/カウンタにも、QuadEncoderの読取り用の仕組みが付いているので、同じ作動をさせることは可能だと思います。

今回はBeagleboneBlack/Greenでの作動はしてません。最初、PSoC5LPに付いているUSBに直接接続できるUSB_UARTを使用しようと思いましたが、私のWindowsの環境化で上手くドライバをインストールすることが出来ず、こりゃ、Linuxでも、、、と思い秋月で売ってるFTDIのFT232のモジュールを使用。BeagleboneBlackにてテストしようと思ったのですがこれもまた、上手くドライバをインストールすることが出来ず、、、Orz,,,.
結局LinuxCNCがインストールされているPCにての作動となりました。
手持ちのUSB UARTなデバイスがFTDIのモノしか無かったために、BeagleboneBlack/Greenでの作動は試すことができませんでした。
BeagleboneBlack/Greenも、ArduinoIDEをインストールしておけば、ArduinoIDEのパッケージ内にFTDIのUSBドライバ等入ってるかも?とは思います。入ってませんでした。。
中華Arduinoクローンに使われているCH340とゆうUSB UARTは、特にドライバ、ArduinoIDEをインストールせずとも認識、使用ができたので、今の所憶測でしかありませんが、CH340を使えばBeagleboneBlack/Greenでの作動も出来ると思われます。




自作NCや、市販のNCフレームの使用時の精度確保、基本的には各軸を動かすモーターがきちんと設定されたステップを刻む事と機械自体のガタやバックラッシュを押さえる事、フレームの剛性によってモーションの正確さを担保するものだと思うのですが、NCは数値制御コントローラーなので、LinuxCNCやMach3にはバックラッシの補正も有りますが、送りネジの補償も可能です。

参考URL
Mach3 Z Axis Screw Mapping, version 1.2 (PDF)
Screw compensation files, axes and joints.(LinuxCNCフォーラムより)
Screw Compensation


もちろん、作動速度によるモーションプランの有効誤差云々等々、正確なモーションに関しては「どこまで?」とゆう疑問もありますが、そもそもの基準となる計測ができていないと、その誤差がモーションによるものなのか、フレームの特性に依るものなのか、はたまた刃物のたわみによるものなのかの区別もつきません。

今回接続したエンコーダーは、単なるハンドパルスジェネレーターですが、コレを精度が高いリニアエンコーダー、リニアスケールとすると、補正値の計測が可能で、駆動モーター用のパルス列司令に対する移動量を測ることが出来ます。

また、モーションに掛かることなので、今回のUSBUARTのデータ入力ではアレですが、LinuxCNCの場合、モーションループを1ms単位で、NCコントローラーがフィードバックループ出来るので、MesaのPCI、PCIeでのFPGAカード等をとリニアスケールを利用すれば、位置フィードバックもできぬことでは無いと思います。


把握しきれない程の機能と自由度が有るLinuCNC、私も機能の極一部しか使ってませんが、単に安価に導入できるソフトウエアNCコントローラー、、、、、ってだけではないのです。


私はハードウエアもソフトウエアも不得手で、さっぱりなのでこの程度ですが、双方出来る人が触ると、相当凄いんだろうなぁ、と思ってます。機械、電気、ソフトウエアハードウエア、、、相当な分野横断が必要になりますが、高機能なこのようなソフトが公開されているとゆうことで、、、また、Web上へのフィードバックもあれば、尚の事、、と思います。




追記

BeagleboneGreenのボード上に有るUART器を使い(USB-UART変換を介さず)、この記事内のPSoCを繋ぎ軽くテストをした所、データ転送が出来てるご様子。Beagleboneでも、PySerialを使ったUARTでのデータ入出力は可能です。




スポンサーサイト

テーマ : 自作・改造
ジャンル : コンピュータ

コメントの投稿

非公開コメント

ライセンス
アクセスカウンター
プロフィール

あきらひとし。

Author:あきらひとし。
木工用CNCルーターフレームと、ステッピングモータードライバを作ってみました。
たぶん記事は一般的な人には殆ど必要のない事ばかりなの、かも。

モーターは回るだけでも楽しい。制御(速度、トルク、位置)できるともっと楽しい!

メールフォーム

名前:
メール:
件名:
本文:

リンク
最新記事
カテゴリ
スポンサードリンク
スポンサードリンク 
スポンサードリンク
オンラインカウンター
現在の閲覧者数:
検索フォーム
RSSリンクの表示
最新トラックバック
最新コメント
月別アーカイブ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。