Suzulan > しろうと無線 > ハンドメイド >

 シリアル・インターフェース・アダプタ
< Sirial Interface Adapter >



トランジスタ技術別冊で「VBと製作で学ぶ、初めてのパソコン応用工作」(CQ出版社)に掲載されていたシリアルインターフェースアダプタを作成してみました。パソコンの背面に出ているD-SUB-9PのCOMポートを介して入出力を行う汎用インターフェースです。製作したシリアルインターフェースアダプタの物理的な位置は下図のとおりです。パソコンの通信制御により、COMポートを介して8bitのシリアルデータ(1bitずつ順次伝送するデータ)をシリアルインターフェースアダプタに送り込むと、アダプタは8bitパラレルデータ(8bitをまとめて並列に伝送するデータ)に変換し応用回路側に出力します。また応用回路側から与えられた8bitパラレルデータをCOMポートを介してシリアルデータでパソコンに読み込むことができます。図に示すとおり応用回路はまだ製作されていないため、このままではなんの役にもたちません。しかしさまざまな応用回路を考案することによって利用価値は無限に広がります。モータを制御する回路を製作してロボットを作ったり、温度を感知する回路を製作し気温を測ったりと、まぁ応用回路を考案することでなんでもできちゃうのです。ただし、ハードだけ作ってもダメで、コントロールするソフトも作らなくてはなりません。今回はとりあえずシリアルインターフェースアダプタの製作と、アダプタの正常性を確認するテストプログラムを走らせてみました。なお、詳細な動作原理などは「・・・初めてのパソコン応用工作」を入手し参照してください。この他にも参考になるハード製作と対応ソフトの解説などが多数掲載されています。


製作したパラレルインターフェースアダプタです。IC6個とフラットケーブルコネクタ、RS232Cコネクタで構成されています。実は前述の書籍の記事ではIC2個と抵抗など若干の回路定数で製作されておりとてもコンパクトです。筆者は、まったく同じものを作るのも芸がないとばかり、少しばかり回路を付加して製作してみました。付加した部分は回路図で説明します。右側の出っ張った部分はパソコンのCOMポート端子と接続するD-SUB-9Pコネクタ(メス)です。配線はすべてジャンパリングで行っています。ICは、トラブル時に簡単に交換できるよう全てICソケットを使用して装着しています。
シリアルインターフェースアダプタの回路図を示します。左側のCN1がパソコンと接続するD-SUB-9Pのコネクタです。パソコンとのデータのやり取りは全てこの端子を通して行われます。ICは8bitパラレルデータをシリアルデータに変換するための74HC165 (Parallel-load 8bit Serial-IN Shift Register) とパソコンからの8bitシリアルデータをパラレルデータに変換およびラッチをするための74HC595 (8bit 3 State outputs Shift Register/Latch)を使用しています。前述しましたが「・・・初めてのパソコン応用工作」の記事ではこの2個のICと周辺の回路定数のみで構成され、とてもコンパクトに作られています。回路図を見ておわかりのように筆者はこれに加え入力データ 8bit(IN0〜IN7) および出力データ 8bit(OUT0〜OUT7) 計 16bit のデータをLEDでモニタできるようにしました。このLEDを点灯させるため 74LS04(Hex Inverters)を3個使用しています。また、COMポートの通信(TxD,DTR,DSR,RTSリード)をモニタするため74LS00(Quad 2 Input NAND)を1個使用しています。(74LS04でもかまいません。) さらに74HC165の入力端子(A〜H)と74HC595の出力端子(QA〜QH)を後述するコンソール盤のスイッチ(SW0〜SW7)操作で入出力のループ回路をつくり簡単に折り返し試験ができるようにしてあります。コンソール盤のスイッチとLEDに配線を引き出すため26Pフラットケーブルコネクタ2個(CN5〜CN6)を取り付けています。CN2・CN3は10Pフラットケーブルコネクタで応用回路からの入力(IN0〜IN7)および応用回路への出力(OUT0〜OUT7)用端子です。左下のVcc(+5V)電源入力は+5V安定化電源に接続します。筆者は自作の+5V安定化電源パッケージに接続しています。

シリアルインターフェースアダプタをコンソール盤に取り付けた様子です。いままでコンソール盤という言葉を使用してきましたが、これはジャンク品として入手していた電話交換機のコンソール盤のことです。LEDやスイッチがたくさん付いていたので部品取り目的で入手していました。その後、利用チャンスもなく物置にガラクタと一緒に放り込んでいたものを、インターフェースアダプタの収納や、LEDによる入出力データのモニタに利用することにしました。フラットケーブルの終端はコンソール盤前面に取り付けられたLEDおよびスイッチに直接配線されています。右端にパソコンと接続されているRS232Cコードのコネクタが見えます。

使用したWindows98ノートパソコン(SONY PCG505RX)とコンソール盤前面です。LEDやスイッチが32bit分、横に並んでいます。このうちパラレルインターフェースアダプタ用に利用したLEDは左からの16bit分です。右側の拡大写真を見てください。16bitのうち右側8bitは入力データのモニタ用、左側8bitは出力データのモニタ用です。右側8bit LED下のスイッチがONになっていますが、回路図でも説明したように74HC165の入力端子(A〜H)と74HC595の出力端子(QA〜QH)をループ接続にした状態です。この状態でパソコンからテストプログラムを走らせ、回路の動作チェックを行います。なお下列右側の4個のLEDが点灯していますが、COMポートの通信モニタ(TxD,DTR,DSR,RTS)として使用しています。テストプログラムは0〜255(&H00〜&HFF)の値をシリアルインターフェースアダプタに対し送信、折り返したデータを受信します。送信した値と受信した値のコンペアを実行し、等しければらOKとするものです。0〜255のコンペアチェックは一瞬で終了するためLEDもピカっと瞬間点灯で終了し、味も素っ気もありません。そこでこの試験を32,000回連続(int型整数値のほぼ最大値)で実行するようにプログラムを修正してみました。するとかなりの時間、LEDの瞬きを確認することができます。32,000回、正常に動作を終えれば「エラーはありませんでした」とメッセージBOXが表示されます。もし途中でエラーが検出されると「エラー発生」のメッセージBOXが表示され、プログラムはその時点で停止します。なおテストプログラムのソースコードなど詳細については、「・・・初めてのパソコン応用工作」を参照してください。

今回使用した74HC165と74HC595のIC内部の結線図を示します。パラレルからシリアルへの変換は74HC165で行います。S/Lを"L"にすることによりA〜Hに設定されている8bitデータをシフトレジスタにロードします。S/Lを"H"にし、CKにクロックを与えることによりデータは1クロックごとにシフトレジスタを左から右に移動していき、QHから溢れるようにシルアルデータとして出力されます。QHはパソコンのCOMポートに接続されており、パソコンで受信されます一方シリアルからパラレルへの変換は74HC595により行われます。パソコンのCOMポートから送られてくるシリアルデータはSIで受けます。シリアルデータに同期したクロックがSCKに与えられるとシリアルデータは1クロックごとにFFAからFFHに向かって移動していきます。8bitを受けたところでRCKの立上がりパルスにより、LA〜LHにパラレルデータとしてラッチします。ラッチされたデータは、Gが"L"になっていると、QA〜QHにそのまま8bitパラレルデータとして出力されます。

基板上の部品配置図を以下に示します。

参考に製作ステージを紹介します。2.54mmピッチのユニバーサル基板を使用し、ジャンパリング配線で回路を組みました。このような方法で製作する場合、最も注意しなければならない点は、ブリッジ(隣の端子にまたがって半田が盛られ導通状態になること)です。反対にあたかも半田が盛られているように見えていても実は半田の線材への吸い込みが悪く不導通状態になっていることもあります。半田が終わったらルーペなどでブリッジになっていないか確認するとともに、線材をチョット引っ張ってみて抜けてこないかを必ずチェックします。また、あるブロックの配線が終わったら、その都度こまめにテスターなどによる配線チェックをすることが大切です。これをしないで全ての配線が終了したあとチェックをして、不幸にも異常が発見された場合、異常個所の特定が困難になるばかりでなく、配線が混み入っていて修復も難しくなるからです。急がば回れのたとえどおり、少し配線したらチェックの繰り返しが、後々苦労しない製作方法です。なお写真 はPCG-505RXノートパソコンのポートリプリケータにRS232Cコードを接続した様子です。


 部品の確認  部品配置の決定・半田付け  アース線・電源線の配線・通電試験
 回路の配線
 
 結束・IC装着・FCケーブル、
   RS232Cコードつなぎ込み
 パソコンに接続・テストプログラムに
   よる動作試験


製作したあとのテストプログラムで引っかかりました。どうしてもうまく動作してくれないのです。テストプログラムを走らせてもモニタ用のLEDに変化がありません。基板を取り外して配線チェックしても異常なしです。基板を再度取り付け、電源を入れてパソコンに接続し主要ポイントの電圧をチェックしたところどうもCOMポートに接続されている箇所がおかしいことに気がつきました。まさかと思いつつもRS232C接続ケーブルの導通試験をしたところ案の定、片方の2番ピンがもう片方の3番ピンに、片方の3番ピンがもう片方の2番ピンに接続されています。ここはストレートケーブルを使用しなければなりませんがリバースケーブルを使用していたのです。ストレートケーブルに取替えテストプログラムを走らせたら一発でOKとなりました。初歩的なミスですがよくあるミスです。なおテストプログラムはWindows98上で走らせました。

その後、WindowsXPのAPI(Application Programming Interface)関数を使用したアクセスを試みてみました。Windows98上で正常動作が確認されたテストプログラムをWindowsXPのAPI関数を使用したプログラムに修正しアクセスしたところうまく動作してくれました。APIを使用するには参照宣言など難解な手続きが必要ですが、「VBと製作で学ぶ初めてのパソコン応用工作」付属のCD-ROMに収録されていましたので、これをそのまま利用しました。またCOMポートの設定プログラムについてもCD-ROM収録のものをそのまま利用しています。詳細については同文献を参照してください。以下に参考として今回最製作したシリアルインターフェースアダプタをアクセスするプログラムと、このプログラムをCallしてシリアルインターフェースアダプタの試験をするプログラムを示します。



 シリアルインターフェースアダプタアクセスプログラム(VB) 
  * 使用しているEscapeCommFunction( )はAPI関数です。

 シリアルインターフェースアダプタ試験プログラム(VB) 



◎ このコーナーで公開した自作品は、筆者の単なる個人的な趣味で製作したものです。
本機製作により発生したいかなる不具合もしくは損害について、筆者が責任を負うものではありません。


◎本機の製作にあたり、JA8JCR(松田OM)から技術的な支援をいただきました。TNX .

◎引用文献:VBと製作で学ぶ初めてのパソコン応用工作 ( CQ出版社 )