2018年10月6日土曜日

VDIP1の使い方(2)

先回、VDIP1をデータモードで使用したが、コマンドモードではVinculumデバイスの各種設定を行う事が出来る。「VDIP1の使い方」の回路図を見ると、DATA-RQ(ADBUS5)がプルダウンされているが、これをHにするとコマンドモードとなる。この状態でTeraTerm経由でコマンドを送出した様子が以下の通り。
  1. IPA
    Vinculumデバイスへのコマンド送出は、バイナリモードとASCIIモードがある。このコマンドでASCIIモードへ切り替える。
  2. QP2
    USBポート2へ接続されているデバイス種類の問合せ。
    VDIP1ボードに実装されているUSB-Aコネクタはポート2である。この例ではFTDI社のFT232RLが接続されているので、その旨($01)返信されている。
  3. FBD #9C8000
    FT232RLが接続されている場合、そのBaud rateを変更する事が出来る。このコマンドで19200bpsに設定される。
  4. SBD $9C8000
    Vinculumデバイスとの通信Baud rateを設定。このコマンドで19200bpsに設定される。

コマンドの詳細はFTDI社のマニュアル、「Vinculum Firmware User Manual」を参照。


Arduinoマイコンと接続

予備的な実験が終わったので、本来の目的であるCDC class deviceのUSB出力を持つセンサをArduinoマイコンへ接続する。
回路図は以下の通り。


VDIP1の信号ピンの論理レベルは3.3Vであるが、データシートによると「5V safe bidirectional data」と明記してあるピンもあるので、それらは回路図の通り直結が可能である。そうでない信号(上図の場合、RS#)はレベル変換の必要がある。

この回路で以下のようなスケッチを組み、初期設定をした。


#define DATA_RQ 8
#define VDIP_RS 9

String rcvData;

//**********************************************************************************
//  初期化処理(リセット後一度だけ実行)
//**********************************************************************************
void setup()  
{
  char chkChr = '\0';

  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial); // wait for serial port to connect

  // IO settings
  pinMode(DATA_RQ,OUTPUT); digitalWrite(DATA_RQ,HIGH); //初期値はコマンドモード
  pinMode(VDIP_RS,OUTPUT);
  
  // VDIP1 Reset
  digitalWrite(VDIP_RS, LOW);
  delay(100);
  digitalWrite(VDIP_RS, HIGH);

  // Waiting for VDIP1 start up
  // VDIP1起動後、"Ver 03.64VDAPF On-Line:"→"Device Detected P2"受信待
  chkChr = '\0';
  rcvData = "";
  do {
    if (chkChr=='\r') rcvData = "";
    if (Serial.available()>0){
      chkChr = Serial.read();
      if (chkChr!='\r') rcvData.concat(chkChr);
    }
  } while (rcvData != "Device Detected P2");

  //VDIP1 初期設定  Baoud rate を変更する
  Serial.write("IPA\r");
  do {
    if (Serial.available()>0) chkChr = Serial.read();
  } while (chkChr != '\r');  //応答待ち

  Serial.write("SBD $34C000\r"); //57600bps
  
  //一旦ArduinoのSerialPortをClose、VDIP1のbaud rateに合わせて再開
  delay(100);Serial.end();                   // ウェイトを入れないとうまくいかなかった。
  delay(100);Serial.begin(57600);
  while (!Serial); // wait for serial port to connect.
  
  //VDIP1データモードへ移行
  digitalWrite(DATA_RQ,LOW);

}

//**********************************************************************************
//  メインループ(この処理を繰り返し実行)
//**********************************************************************************
void loop()
{
  char rcvChr;

  //VDIP1経由でCDC class deviceへ送信
  Serial.write("xxxxxxx\r");
  
  //VDIP1経由でCDC class deviceから1文字受信
  if (Serial.available()>0) 
    rcvChr = Serial.read();

}


2018年9月21日金曜日

VDIP1の使い方(1)

世の中に出回っている多くのUSBデバイスは、たいていターゲットコントローラで、USBメモリなどのUSBデバイスをマイコンなどで制御するとなると、USBホストコントローラを使用しなければならない。所が、USBホストコントローラは敷居が高く気軽に使えるものでなない。
FTDI社から出ているVinculumというUSBホストコントローラは簡単にホスト機能を持たせることができる様だ。
USB出力(VCDCクラス)の市販センサを使用する必要が生じ、Vinculumコントローラ搭載の評価用ボードVDIP1を利用してみた。

ファームウェアの書込み

VinculumにはFTDI社が公開している専用のファームウェアが必要になる。ファームウェアには、数種類が用意されている。VDIP1を購入すると、すでにVDAPファームウェア(Ver3.63)が書き込まれている。書き変えたい場合は、メーカサイトからファームウェアをダウンロードして、「FTRFB.FTD」というファイル名にrenameしたものをUSBメモリに保存してからVDIP1に差し込めば書き換えが行われる。

以下のような回路を組んでいて、PC側でターミナルソフトを立ち上げておくと、書込みの進捗状況が表示される。VDIP1は論理レベルが3.3Vなので5Vへレベル変換が必要となる。秋月電子からでているFXMA108モジュールを利用した。

注意したいのは、PCを接続していない場合で、CTS/RTSが接続されないとVDIP1上のLEDが点滅したまま動作しない。PCを接続しないでファームウェア書き換えを行いたい場合はVDIP1のCTS/RTSを短絡(ループバック)させておく必要がある。

データモードでの使用

Vinculumをデータモードで使用するとVDIP1 を介して、マイコンと VDIP1 に接続されたデバイス間で
データ送受信ができる。回路図の通りDATAREQピンをLowにすればデータモードになる。試しにVDIP1にFTDI社のFT232RL(秋月のモジュール)を接続し、ループバックさせてみた。(以下写真)
PC側でターミナルソフトを立ち上げVDIP1の電源を投入すると、起動メッセージおよびUSBデバイスを認識した旨のメッセージが表示される。その後適当にキーボードを叩くと、ループバックされて帰ってきたキャラクターが表示される。








2018年6月5日火曜日

接地を怠ると、こんな事が起こるかもです。

当然のことながら、電気機器はしっかりアースを取らなければならない。ある制御盤を納めた所、しばらくして 「筐体に触るとビリビリする」と連絡が来た。現地に赴き絶縁抵抗計(メガー)でを測定した所、正常。 しかし、メガーは直流電圧を印加して漏れ電流を計測している。シーケンサ等のスイッチング電源を内蔵した機器は、 下図のようにノイズカット用のコンデンサを介して交流的にはアースに接続されてるので、絶縁抵抗が正常でも、アース がされていない状態で筐体に触れると、感電する危険はあるのだ。



現地の状況をみるときちんとアースされている。~不思議だ~ 試しにコンクリートに水をまいて、電線の被覆を1mほど剥いて水溜りにはわせるという、簡易的なアースをしてみた。反対側を制御盤のアース に接続して電源を入れると、感電しなくなった。
こうなると、疑わしいのは建屋のアース線だ。壁を取り外してたどってみると、ナント途中でどこにも接続され ないまま、切り落とされていた!!
アースはしっかり取りましょう。

2018年5月3日木曜日

電子機器に巣食うアリ

インドネシアに出荷した計測機が動かなくなったという事で返却されてきた。ケースを開けると、緩衝材のウレタンにアリの巣のような模様が…


何だろうと思いつつ本体を分解すると、液晶と基板の間にスぺーサとして挟んであるウレタンにも同じような跡があり、アリの死がいが二匹ほど出てきた。


初めての経験であるがこのアリ、一体何者なのだろう。なぜか検疫所を思いつき、持ち込んだら、「アリ類データベース作成グループ」という所を紹介して頂いた。
早速死がいを送付し、同定依頼をしたところ、二週間ほどで結果が出た。

ミゾヒメアリ」という熱帯地方にいるアリだそうだ。電子機器への食害被害も報告されているという。日本にもヒメアリというアリがおり、食害被害が存在するようだ。程良く熱を発する電子機器は、以外にもアリの好む環境であり、侵入経路となる隙間はない様に機器を設計しなければならないとの事。