Friday, July 30, 2010

DMXの絶縁

DMXの絶縁についてメモしておきます。
自作でDMX機器を作るには、「RS485」という通信を行います。この通信を行うには、トランシーバになるICが必要で、マイコンからはこのトランシーバ経由で送受信を行います。代表的なICには、「MAX485」などがありますが、絶縁はされていません。

絶縁とはどういうことかといいますと、たとえば、外部に接続したDMX機器が何らかの原因でショートして壊れたとします。ショートするということは、グランドと電源がつながってしまったりすることなので、このとき通信ケーブル経由で他の機器にも、影響が及んでしまいます。これを防ぐ方法が絶縁です。

DMXのRS485通信には、「プラスの信号/マイナスの信号/グランド」の3つの線が必要です。これを絶縁するということは、「グランドを外界と切り離す」ことになります。

簡単に絶縁するには、マイコンに使う電源と、MAX485などのトランシーバICに使う電源を別にしてあげることで、はやい話、ACアダプタを2つ使えば絶縁できます。

でも、でっかくなりますし、ケーブルも増えてしまいます。

そこで、絶縁対応のトランシーバICを使います。でもこれだけではまだダメで、「コイル」か「トランス」が必要になります。入手が簡単なものは、これまた大きくなってしまいますので、RS485の絶縁のためのコイルを使います。

こちらで入手できて、確認できたものは、以下の組み合わせです。
3.3Vのマイコンを使ったので、3.3V動作できる条件です。

MAX3535E(正確には、MAX3535ECWI+を使用)
782485/35C(PDFへリンク。いきなり数字から始まる型番。MURATA製のRS485絶縁用コイル)
※ちなみに、「782482/35C」っていう「485」が「482」になっただけの、見た目もほぼ同じコイルがあります。間違って買ってしまった・・。みなさんもご注意。

さらに、コイルから電圧を取り出すためのダイオードが必要になります。見落としがちだったのですが、ダイオードなら汎用のものが在庫あるしと思い、これを使っていましたが動作が不安定でした。結論から言うと、「ショットキーバリアダイオード」が必要です。

汎用ダイオードでは、コイルの電圧が上がらず(本来なら3.3Vになるはずが2.89V付近)、MAX3535がとても不安定になりました。データシートによると3Vから動き出すので、それが原因でしょう。6台作ったうちの3台はきちんと動き、2台はハンダを温め直して動作するようになり、残り1台は全然動かない。で、動いてた2台が次の日には動かない・・。というような不安定さ。動くものがあるので、汎用ダイオードは疑わず、ひたすら表面実装のハンダを見直していたのですが、ショットキーバリアに変更したら、全て完全動作!

ショットキーバリアダイオードは、スイッチング速度が速いそうだ。

そんなわけで、DMXの絶縁、部品の種類もポイントです。

ハードとソフトの開発案件にUSBキーボードはいかが?(2)

Flashとデバイスを同時に開発するような場合、一般的にはFlashとデバイスを通信させて作ります。ですが、Flashの場合、デバイスとの通信は直接ではなく、間接的にサーバを介してしか通信できません。つまり、Flashの側でもデバイスと通信できるスキルが必要になり、Flashを作り込む場合も常に通信処理を気にしていなければなりません。

今回は実験的に、Flashとデバイスの同時開発の案件で、USBキーボードとして機能するデバイス+キー入力で動くFlashコンテンツを作りました。

結論から言うと、デバイスからFlashへの一方向の入力装置としてなら、この方法もアリです。Flash作業との切り分けがしやすく、細かい修正はありましたがメールでのやり取りで終わりました。納品先でのセットアップ作業も、USBの抜き差しだけで、起動する順番などがないのもメリットでした。

ひとつだけ、キーボードのNumLockで(テンキー付きキーボードか、テンキーなしキーボードか)、小さなトラブルがありましたが、テンキー部分は使わないことにして解決できました。

キーボードのキーでいろんな処理をするには、キーの数が足りるのか?、と思うかもしれませんが、たとえば、デバイスのボタンを押したら、”「A」>「スペース」>「Enter」の順にUSBキーボードを押したことにする”ということもできます。

外界からFlashへ信号を送り続けるのも、USBキーボードでできそうです。「A000」〜「A999」のように、「A」をヘッダにしたりして。

USBキーボードを自作するのは、ちょっと敷居が高いのですが、Flashの細かい調整を考えるとこちらのほうが楽かもしれませんね。

ちなみに、納品先ではセットアップが簡単なことが意外に気に入られました。USBを差せば動くので、違う部署の方にもプレゼンできたりしたそうです。

ハードとソフトの開発案件にUSBキーボードはいかが?(1)

PIC18F2550でUSB HIDキーボードを作ったことがあります。技術習得のために作ってみただけで何に使うかはあまり意識してませんでした。いま、PSoCでUSB HIDキーボードを作ってます。

FlashやProcessingなどの画面のGUIと、それを操作するデバイスを作る案件で、今回USB HID キーボードにしてみました。従来なら、シリアル通信するデバイスを作って、FlashやProcessingとやり取りさせるのですが、Flashでシリアル通信をするのは面倒だったり、シリアル通信のプロトコル仕様を決定してからFlashやProcessingで作っていくような作業になります。

こうなると、完全に分業することはできいし、開発にも時間がかかってしまいます。FlashやProcessingも通信させる処理を行うので管理が面倒ですし、マシンに負荷をかけることもあります。

そこでUSBキーボードにしたわけですが、FlashやProcessingではキーボードでシミュレーションやデバックができ、デバイスではどのキーを押すのか・どう押すのか(押したままにするのか、いったんキーを離して押すことにするのかなど)なども、デバイス側でどうにでもできます。入力のみの場合に限られますが、ひとつのいい方法だと思います。

PSoCのタッチセンサ感度の確認

Cypressからダウンロードできる、MultiChartというアプリ(シリアル通信で、センサーの状態をチェックできるツール)を使って、タッチセンサの状態をチェック。デバッグのときだけ必要なので、ユーザモジュールを使って、すぐに準備できて、すぐに消去できるのが気に入っています。しかも、MultiChartアプリが意外と軽くてスムーズ。色の変更とか、グラフを3Dにしたりもできます。

上の画像のグラフは、1つのセンサだけをチェックしていて、軽くタッチした(指が軽く乗っている)とき、ぐっと押さえるようにタッチしたとき、指が近づいたとき、などの確認です。これだけ、ビジュアルでわかりやすく確認できると安心。

AN2397(アプリケーションノート2397)からダウンロードできます。