ラインドライバ出力をフォトカプラでIsolate

LinuxCNCで使うMesaAnything I/O CardsのDサブ25ピンのドーターカードである、7I85Sがラインドライバ入出力であったため、I/Oドーターカードから先、どうしようかと思い検索してたら、オリエンタルモーターの「オープンコレクタとラインドライバの違いってなんですか?」とゆうページに辿り着きました。

産業用に使われるStep/Dirのパルス列制御で使われるモータードライバの多くは、オープンコレクタや、ラインドライバ入力に対応しています。オープンコレクタ出力は、機器間での、電源電圧の違いを吸収出来たりと良い所はあるのですが、やはり差動入出力の方が断然にノイズに強く信頼性が有ります。

基本的にラインドライバ入出力はRS422の規格に準じており、使い方により相当な距離の信号の転送が可能です。
また、少々規格自体が違いますが、USBやLANの信号転送も差動入出力です。

今回は、AM26LS31、AM26LV31等のRS422準拠のラインドライバICの差動出力を使い、6N137とゆう割と安価で高速でロジック出力なフォトカプラの入力LED側の駆動をしてみました。

やさしい データ転送基礎講座5.絶縁とそのドライバ/レシーバのページの記述によると、差動の信号は平衡といい、ラインドライバの差動出力をフォトカプラで受ける事は厳密には擬似平衡 回路とゆうようです。
このページの[図.17] 両側絶縁と片側絶縁の図、(b)のように、フォトカプラと対抗させて電源が反転した時にフォトカプラを破損させないように対としてダイオード1N4148を入れ、抵抗も必要な抵抗値を半分とし、上下にひとつづつ取り付け、抵抗値は上下に120Ωで240Ωと120Ωを並列にし60Ωとしたものを上下に120Ωとしたものを試してみました。

この抵抗値、AM26LS31のデータシートにはHighレベル出力電圧は最低値しか書いて無く、また、AM26LV31のデータシートには一応typicalは載っているのですが、出力電流によって変動しそうなので、一応電源電圧以上になならないであろうとゆう憶測^^;で抵抗値を算出してみました。
データシート上では100Ω程度の終端抵抗を使用した時を基準としているようです。


6N137のデータシートに載っているRLは1kΩ、パスコンは0.1μFを使いました。


差動出力の出力信号のみで、グランドはフォトカプラのLED部分には繋いでませんが出力を確認しました。
シグナルグランドをフォトカプラの出力側に繋いでいないとゆうことで、ラインドライバ出力、フォトカプラのLED側の入力を入替えることで、ロジックの反転が可能です。
また、NCコントローラー、パルスジェネレータ側が3.3Vでモータードライバ側に5V欲しい、、、とゆうような時でも、フォトカプラ側の電流制限抵抗を入替えることによりロジックレベル変換も容易です。逆に、NCコントローラー側への信号入力時などには、差動ドライバは使用せず、フォトカプラだけを使用して入力電圧に合ったフォトカプラのLED入力側の電流制限抵抗を使用することによってロジックレベル変換が可能です。

もちろんフォトカプラを使うことによって信号の遅延も起きますが、オシロスコープで見た感じ100nS程度。
全てのモータードライブ用の信号にフォトカプラを使用すると全体的に同じように遅延するので、問題ないレベルだと思います。

もし、モータードライバへの信号を長く取るような場合、差動信号をツイストペアとなる信号線を使うとよりノイズに強くなると思います。

通常、モータードライバの電源電圧はモーションコントローラーや、パルスジェネレーター等の電源電圧より高いはずなので、フォトカプラ等で絶縁しておくと万が一の時にPC、モーションコントローラー、パルスジェネレーターを保護してくれます。また、絶縁することでカレントループを小さく、、。

DiffdrivePhotoCuppler.jpg

こうゆう保護回路的なもの、色々とコストアップに繋がるので最近のオープンソース系のモノには付いていない場合が多いですが、差動転送や、絶縁などなど、時と場合によってはとても重要になることも有ります。




スポンサーサイト

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

Pi3でもMachinekit/LinuxCNC

今現在RaspberryPi公式で配布されているKernel version4.4のRaspbian Jessieにrt-preemptとゆうリアルタイムパッチを当ててRT-OS化し、Machinekit/LinuxCNCを作動させる環境を構築するページがあったのでやってみました。

2016-06-25-172510_1912x1129_scrot.png
画像をクリックすると大きくなります。

上記画像上で、CPUのアーキテクチャがARMv7lとなってますが、Pi3です。
Pi3は作動上、十分な電流が取れない電源(PCのUSBコネクタ等)の場合、CPUの作動速度を600Mhzまで落とします。また、低負荷時にも、CPUの作動速度を600Mhzまで落とします。
この画像の状態では、十分に(2A以上)電流を供給出来る電源に繋いでいます。
Machinekit/LinuxCNCを作動させると、オーバークロックをさせない最大作動速度の1.2Ghzでの作動状態に張り付きます。
かなり熱くなるので、ヒートシンクやファンで冷やしたほうが良いかも。


参考とさせて頂いたページは

koppi/mkmk/Machinekit-RT-Preempt-RPI.mdとゆう記述。

記述通り、rt-preemptのパッチをOSのソースに当ててPi3上でコンパイル。
他LinuxなPCでクロスコンパイルすると、速くコンパイルが終わるのかもしれませんが、私にそんな知識は無く^^;記述通りに。

一つ、、、転びそうになった所は

Patch Kernel with RT Preempt Patch

Next, patch the kernel with the RT Preempt patch. Choose the patch matching your kernel version. To this end, have a look at the Makefile. VERSION, PATCHLEVEL, and SUBLEVEL define the kernel version. At the time of writing this tutorial, the latest kernel was version 4.4.9. Patches for older kernels can be found in folder "older".

とゆう記述のところでそのあとの手順の記述の
wget https://www.kernel.org/pub/linux/kernel/projects/rt/4.4/patch-4.4.9-rt17.patch.gz
とゆうところで、ファイルが無いと言われ、、上記の英文のようにolderファイルを探しました

ここに記述と同じファイルが有ります https://www.kernel.org/pub/linux/kernel/projects/rt/4.4/older/


元々この記述の著者さんは、EtherCATでのリアルタイムカーネルの評価が目的のご様子で、EtherCATのMasterのインストール方法も記載されています。



EtherCATといえば、つい最近トヨタが生産に使うとゆうようなニュースも有りましたが、LinuxCNC自体、既にEtherCATのマスターのドライバとかも有ったりしてnear産業用だったりします。
EtherCAT自体スレーブのサーボアンプや、各種I/O自体のソフトウエア部分にライセンスが掛かっており、スレーブを作ろうとするとライセンス料の支払いとなるようです。
既に、日本のオムロンや、オリエンタルモーターとかからも、EtherCAT対応機器が販売されてますね。

私自身EtherCATのスレーブを持ち合わせていないので、Machinekit/LinuxCNCでの作動を試してはいませんが、多分Pi2,3等を使ってEtherCATのMasterを駆動させることが可能なんだろうと思います。

以前の記事どおり、FPGAのMax10を使用したPluto-StepのPiでも使用できるSPI接続のものでの、パルス出力を確認しました。
多分大本のPICをパルスジェネレーター、I/Oとして使うPicnc2でも、パルス出力、I/Oピンの引き出しができるだろうと思います。


Pi3、Beagleboneに比べメディア再生とかスマホに使われるCPUなので、リモートデスクトップでのGUI操作、液晶画面での操作とうとうスムーズです。ただ、Beagleboneに比べLatencyTestの結果がアレなのはちょいと残念です。








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

RaspberryPiでのMachinekit/LinuxCNC

RaspberryPiのフォーラム内のLinuxCNCのトピックで、とうとう5軸、、なんて、、。



http://www.wire2wire.org/PICnc_5axis/PICnc_5axis.html

Wireb/PICnc-5axis

どうも、PICnc-V2の亜種的な、、で、送受信するデータを変更、して作動させているようです。

FPGAで動くんだから、多分動くのではないのかと^^;
動画上では、低価格な(日本で入手するにはそうでもない?)PiZeroとPICを使っているご様子。超安価ですね

基本的にLinuxCNCの問題点として、一定時間以内の制御ループを規定しているので、その一定時間(1ms以内)での送受信、処理が行わなければならず、割と高速なデータ転送が必要な所。

確実に動くコンポーネントファイルと、外部パルスジェネレーターとして動くプロセッサさえあれば、オープンソースとなっているのでMachinekitでのデータ入出力はコンポーネントファイルと、プロセッサのファームウエアの変更でいかようにもなるんでしょう。


また、BeagleboneBlackの方でも、、、

Machinekit con GUI gmoccapy_lcd7



などのように、GUI自体を自在に変更されてます。


NCコントローラーソフト、、、とか、別に拘らなくても、自分の機械が必要な入出力さえあれば、、、価格面で言えば下はGRBLでもいいはずです。

何を、どうやって、どのように、、、で、NCコントローラーの選択が変わってくるんではないかと思います。

Piにパルスジェネレーター的な物を付ける、、だけじゃなく、それこそ表示が綺麗で速いPIにてVCN接続のクライアントとして、BeagleboneBlackのデスクトップを表示させてBeaglebone上のLinuxCNC/Machinekitを使う、、ような使い方でもいいような気はします。
もちろんWinPCからの、、でも。


小型LinuxボードでのLinuxCNC、ボードのI/Oがプロセッサによってマチマチなのが、、、、かなり面倒な所なんですよね、、。













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

DIYプリンタとリニアドライブ

http://www.homofaciens.de/index_en_navion.htmより。

CNC V3.1 - Linear drives and DIY printer




最近の、、、昔のに比べると静音化されたプリンタの駆動ユニットを使用した、もっと大柄なプリンタの作成されてます。
記事、動画の内容としては、最近のプリンタに内蔵さたDCモーターと、超高分解能な光学式のエンコーダーを利用したサーボ制御を主体としています。

プリンタが静かになったのは、ステッピングモーターを使用したものから、周波数の高いPWMで作動させるDCモーターへ大本のモーターが変わったことが大きいと思います。また、これほど高分解能な光学式エンコーダーが量産効果により、安価で使用されるようになったこと、、が大きいのだと思います。

単純にサーボ制御とすることで、ステッピングモーターのように脱調して、制御がズレてズレっぱなし、ではなく、ずれた所はアレですが、司令に従った位置まで戻ろうとします。



チョット前に公開となった、PCのUSBマウスのセンサを利用したリニアエンコーダーの記事と動画です。

Computer mouse



シリアル通信の信号をArduinoで読み取ってますね。

一番上の動画では、USBマウスをリニアエンコーダーとしても利用してます。

シリアル通信でのデータの読取りなので、直接LinuxCNCに突っ込んでのモーション制御は出来ませんが、MCU等でStep/Dir入力のDCモーターサーボ制御ドライバを作れば、LinuxCNCにかぎらず、Mach3や、GRBL、その他Step/Dir信号出力なNCコントローラーでも、クローズドループなDCサーボ制御での作動が出来ると思います。

サーボ制御自体は、Step/Dir信号をUP/Downカウンタで読取り、位置指令とし、位置指令と、モーターに付けられたエンコーダー(こちらもUP/Downカウンタで読取り)の差をモーター作動用のPWM信号に変換するだけです。
MCU等から演算によって出力されたPWM信号を使用して、PWM信号を受けることの出来るDCモータードライバ(TB6643KQ等)を駆動させれば、サーボ制御することができます。

この演算時に、古典制御となるPID制御の演算式を入れています。


サーボ制御で問題となるのは、命令に対する現在位置の「遅れ」で、この遅れがあっても安定して制御できるようにしているのがPID制御の計算式です。

また、高速なインターフェースとプロセッサ、高分解能なエンコーダーにより、高速で正確な位置制御ができるようになったので、大きな負荷でない限り、割と簡単にサーボ制御ができるようになったと思います。


以前の記事DCモーターのサーボ制御や、位置フィードバックさせたDCモーターをロータリーエンコーダーで操作。でしているDCモーターのサーボ制御は極簡単なプログラムと回路で構成されています。





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

格安で工業用サーボ制御

http://hackaday.com/blog/ より。

HACKADAY PRIZE ENTRY: INDUSTRIAL SERVO CONTROL ON THE CHEAP






ブラシレスモーターのサーボ制御に関する記事です。もちろんオープンソースとしてハードウエアソフトウエアも公開されています。

madcowswe/Servo

ステッピングモーターより効率がよく、より大きいトルク、速度を出すことが出来るブラシレスモーター。コレをサーボ制御すると、すげぃ作動速度ですね。。もちろんレベル、サイズは違えど、工業用のNCで使われているモーターもブラシレスモーターで有ることが多いです。

ただ、DCモーターブラシレスモーターも、ステッピングモーターよりも効率がよく、小さなモーターで大きなトルク回転数を出せる反面、モーター自身が発電機となり発生する起電力、逆起電力と呼ばれるものも大きいので、その処理が結構面倒です。

大電流のブラシレスモーターによるサーボ制御がお手軽にできるようになると良いですね。





ブラシレスモーター、ステッピングモーターと構造的には似ていて、よくよく考えると、ステッピングモーター自体にブラシは無いのである意味ブラシレスモーターなのかしらん?とも思います。
また、駆動に必要な電気も、マイコンやFPGA等で波形を作り出し、相数こそ違いますが、なめらかに動かすには正弦波に近い波形で動きます。



コンピューター数値制御(NC)の良い所、とゆうか特徴として、位置制御であれば、ローターリーエンコーダやリニアエンコーダーの位置の数値なのですが、マイコンやFPGAを使うことにより、センサ、AD等の数値も、、、、例えばモーターの作動に変換することが出来ます。ちょっと考え方を変えれば、ロータリーエンコーダーやリニアエンコーダーでカウントした数値を、電気で動かすことの出来るもの、、電灯の光量や、電熱線の温度、などなどにも変換したりできます。

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

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

あきらひとし。

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

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

メールフォーム

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

リンク
最新記事
カテゴリ
スポンサードリンク
スポンサードリンク 
スポンサードリンク
オンラインカウンター
現在の閲覧者数:
検索フォーム
RSSリンクの表示
最新トラックバック
最新コメント
月別アーカイブ