スポンサーサイト

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

フォトカプラ。&追記。





速くてお値打ち?
GRBLとかも安価にIsolate出来そう。

追記



私はLattice使ってないのですが、安価ですね。。

も一つ追記。




パスコンは?


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

タッチ付き液晶パネルと手製のリニアエンコーダー




以前から触っているebayやAliで今、安価に入手できるILI9341を液晶パネルのコントローラーとして持つ、中華液晶パネルをSTM32F410RBを使用して簡易的なDigitalReadOutを作りました。
この安価に入手出来るILI9341のSPIインターフェースの液晶パネル、マイコンから単純にSPI通信を使って単純に通信を行って制御すると、描画速度がとても遅く、リアルタイムの表示に近い速い表示はできません。
どうも、マイコン側が表示速度のネックとなるようで、DMAを通したSPIマスターとすると高速に送信できるようです(STM32の場合)

このあたりの液晶パネルの表示速度に関しては、通信の速度に依存していて、私が触った中では、STM32F4の100ピン以上の物に付いているFSMCとゆうメモリコントローラーを使い、16bit幅のパラレルで通信(ILI9325を使用)した時が最も速かったです。

ただ、国内で販売されているこのような小型液晶パネル、パラレル接続、SPI接続共良いお値段なので、そうそうバカスカ使うわけにもいかずですし、また、海外で何故かSPIインターフェースのILI9341がとても安価だったので数枚購入してあります。
また、ILI9341の液晶パネル、タッチパネルとタッチパネルコントローラーであるSPI接続のADC、SDカードスロットが付いているものと、SDカードスロットだけの物があり、SDカードスロットのみの物の方が若干お求めやすいのですが、タッチパネルとタッチパネルコントローラーの付いたものの方が他にスイッチ等を付けなくとも、選択入力が可能なので、タッチパネル付きを使いました。

載っているタッチパネルコントローラーはADS7843ピン互換のSPT2046。もちろんマイコンのADCを使用してタッチパネル制御(とゆうかADCでの読取り)も出来るのですが、コントローラーICはタッチパネルにタッチした時に信号が出るので、この信号で外部割り込みを起こし、SPI通信にてX,Y軸のADCの値を読みこみます。


参考リンク(ebay)
2.4" 240x320 SPI TFT LCD Touch Panel Serial Port Module with PBC ILI9341 3.3V
2.2 inch 2.2" SPI TFT LCD Display module 240x320 ILI9341 51/AVR/STM32/ARM/PIC


使用したMCUはSTM32F410RB。たまたま出荷初期の物だったようで現在の価格よりお求めやすい価格で購入できました。
STM32F4を選んだのは、単純に以前からF4を触っていてF4のスタンダードペリフェラルライブラリに慣れていたからからとゆうのが大きな理由ですが、このILI9341のSPIインターフェースのものをSTM32F4のDMAを通したバースト?SPI通信が出来るライブラリがWeb上に公開されていました。

http://stm32f4-discovery.net/より
Library 08- ILI9341 LCD for STM32F4

このページ内にあるライブラリをEm::Blocks IDEのプロジェクトにインポートして使わさせていただきました。

ところで、このEm::Blocks、私自身入力補完とかがとても便利で使いやすいのですが、新しいバージョンへの移行なのかどうか解りませんが極最近発売されたMCUの設定がありません。もちろんSTM32F410自体新しいもの、なので、設定は有りませんでしたが、STM32F401RBの設定でプロジェクトを作成、メモリサイズが違うのでビルド時に使うファイル内のメモリサイズを変更してビルド、書き込みをしました。F4シリーズ内では、メモリマップされたI/O部分はほぼ同じで、小変更でのプログラムの使い回しが利きやすいです(要データシートでの確認)

このSTM32F410、F4品種内での各種機能削除された廉価品とゆう位置づけで、USBとかの機能が削減されています、が、エンコーダーの出力信号を直接受けて、32bitのカウンタで計数できる直交エンコーダーインターフェースが載っています。
STM32F410自体の最大作動周波数は100Mhzで、このカウンタの最大作動周波数も100Mhzです。モーション系の制御に直交エンコーダーを使うときに、エンコーダーパルスの落ちによる計数不良は出したくないので、ハードウエアとして載っている直交エンコーダーインターフェースを使いました。

STM32に限らず、他のMCUでも直交エンコーダーインターフェースの載っているものが沢山あるので、同じ事を他のMCUでもできると思います。

液晶パネルの載っているMCU基板は、液晶パネルが簡単に載るように基板CADのEagleで作図、中華基板作成会社に発注しました。
DigitalReadOutとするため、、に基板を作りましたが必要なものを作るために割と汎用的にSTM32F410RBの全てのピンを引き出し、シルクにて各ポート番号を両面に書いてあります。
基板の回路としては、各ピン引き出しと、液晶パネル取り付け用の配線と引き出し、LDOにての電源と、電源周りのバイパスコンデンサとアナログ電源へのフィルタの追加程度で、内部OSCを使用しているためメインクロック生成用のクリスタルすら載ってません(取り付けは可能)。

パスコンの数、容量等々は、基本、STM32F410RBのデータシートに記載されてます。

このようなボードを作ると収まりが良いのですが、秋月電子で売っているSTM32の、タイマ/カウンタに直交インターフェースの載っているものであれば、ほぼ同じことが出来ると思います。

Nucleoや、STM32Discoボードなど、書き込みに必要なSTlinkが付いているので別途書き込みにSTLinkV2などを購入する必要が有りません。また、自作MCUボードを作った場合、NucleoやDiscoボード上のターゲットデバイスとSTLinkをジャンパで接続を切り離し、STLink単体としても使用できるのでお得です。
このボードにも、STM32F3Discovery上のSTLinkと、STMicroがMCU書き込み用に公開しているSTlink-utilityを使用して書き込んでいます。

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

ラインドライバ出力をフォトカプラで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

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




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

回路図で学べるFPGA入門 とゆう本。

かなり前の記事CPLDの参考。にて、CPLDを使うにあたって参考にした書籍を紹介させていただきましたが、その中の「FPGA入門 回路図とHDLによるディジタル回路設計」とゆう本がつい最近「回路図で学べるFPGA入門 回路図は読める人のためのHDLガイド」として、新たに出版されています。
ただ本の題名を変えただけでなく、FPGAによるモーター駆動の記述等々、追加されています。

で、そのモーターの駆動の中にステッピングモーターのフルステップ駆動とマイクロステップ駆動に関する記述があります。


 この本全体の記述は、XilinxのFPGAを対象jに書かれていますが、開発環境であるIDEは違えど、AlteraのFPGAでも、同じように回路図、VHDL、VerilogHDLでの記述ができるので、違う部分を読み替えることで、問題なく同じ作動をさせることができます。

この事は、そのFPGA特有のグルーロジック、ハードウエアで作られた機能部分を使わない記述となっており、容量さえ足りればCPLDでも問題なく作動させることができます。
実際、私がこの本の前の版の物を読んで触ってた時はxilinxのCPLDで全く同じことをしてました。。

この本の記述で素晴らしいと思う所は回路図と、VHDLとVerilogHDLの全く同じ動きをするソースが書いてある事です。
VHDLや、VerilogHDLなんてサッパリ解らなくても、回路図で入力し、解説を理解すれば割と容易に読み解くことができます。
また、VHDLやVerilogHDLを学ぶ際にも、比較対象となる回路図とかがあるので、そうゆう先々でも、利用価値があるのでは?と思います。

特に堅苦しい記述でもなく、ロジック回路を「使う」基礎的な本だと思います。


あ、そうそう。この本の中に確か再トリガ可能なワンショットタイマーってゆうのがあって、コレを上手に使うとカレントダウン信号の生成が出来るようになります。カレントダウンについては左リンク内のSECさんがパラレルポートインターフェースとSLA7078のステッピングモータードライバキットに組み込まれていて、回路図等も公開されていますが、FPGAを利用した物も作れます。。






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

しなぷすさんの本「Arduino 電子工作」が出版されます。

Twitter上等でお世話になっており、このブログの左側リンク内に有るページ「しなぷすのハード製作記」の中の人、しなぷすさんが「Arduino 電子工作」とゆう本を書かれました。

しなぷすさんのページ自体も、その作動の理屈から丁寧に解りやすく書かれていますので、今回のこの本の内容にも期待してます。


私が色々なマイコンやFPGA、その他電子デバイスを節操無く触る原因?として、しなぷすさんが、「基本マイコンどれもいっしょ」と仰ってくれたから。

今現在割と安価に入手しやすいArduinoを題材とされています。








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

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

あきらひとし。

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

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

メールフォーム

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

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