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

パラレル・インターフェース・アダプタ
< Parallel Interface Adapter >


トランジスタ技術別冊で「VBと製作で学ぶ、初めてのパソコン応用工作」(CQ出版社)という書籍で、”おおっ、これはおもしろそう〜”という製作記事をみつけました。パソコンのプリンタポートを汎用インターフェースとして使用するアダプタの製作記事です。セントロニクス準拠などどいわれているI/Oポートで、パソコンの背面に出ているD-SUB-25Pのコネクタです。これにアダプタを作って接続し、汎用で使用できるパラレルI/O インターフェースにしてしまおうというわけです。製作するパラレルインターフェースアダプタの物理的な位置は下図のとおりです。見ておわかりのように、これだけ製作してもなんの役にもたちません。パソコンから8bitのデータをこのパラレルインターフェースアダプタに書き込むと、アダプタは同じ値の8bitデータを応用回路側に出力するだけです。またパソコンは応用回路側から与えられた8bitデータをパラレルインターフェースアダプタを介して読み取るだけです。応用回路はまだなにもないので、一見こんなものを製作してどうするんじゃい? と思いますが、実はこれが重要なのです。このデータの入出力が自由に行えるということは後段の応用回路さえ製作すれば利用価値は無限に広がります。オリジナルのロボットを作ることも夢じゃない。アマチュア無線で使っているロータだってパソコンでガンガン回せちゃう。つまり後は応用回路を考案することでどんなことでもできちゃうのです。ただし、←(ほらほら、やっぱりただし書きが出てきた!!)、ハードだけ作ってもダメで、コントロールするソフトも作らなくてはなりません。今回はとりあえず筆者の老化防止のため、手先を使うハード(パラレルインターフェースアダプタ)の製作と、頭を使うソフト(アダプタのテストプログラム)にチャレンジしました。といってもソフトはこの書籍に付属してきたものを使いましたが、勉強のため多少手を加えて使用しています。(^^; なお、動作原理など詳細は「・・・初めてのパソコン応用工作」を入手し参照してください。この他にも参考になるハード製作と対応ソフトの解説などが多数掲載されています。

パラレルインターフェースアダプタの物理的な位置

まずは製作したパラレルインターフェースアダプタの写真を見てください。TTL-IC5個とフラットケーブルコネクタが7個でほぼ基板を占領しています。実は前述の書籍の記事ではIC2個と抵抗など若干の回路定数を使用しているのみで、こんなにゴチャゴチャしていません。が・・・あまのじゃくの筆者は、まったく同じものを作るのも芸がないとばかり、少しばかり回路を付加してこんな形のものが出来上がったというわけです。付加した部分は回路図で説明します。手前の出っ張った部分はパソコンのプリンタ端子とケーブルで接続するD-SUB-25Pコネクタ(メス)です。配線はすべてジャンパリングで行っています。ICは、トラブル時に簡単に交換できるよう全てICソケットを使用して装着しています。論理回路は無線機のように高調波とか同調とか結合とか回り込みとか、厄介な問題が少ないので、このような配線でも結構、再現性は高いようです。もちろんエッチング処理をしてスッキリした基板を製作したほうがFBですが・・・。

パラレルインターフェースアダプタの回路図を示します。左側のCN1がパソコンと接続するD-SUB-25Pのコネクタです。パソコンとのデータのやり取りは全てこの端子を通して行われます。ICは入力データのバッファとして使用する74LS245(Octal 3 State Bus Buffers)と出力データをラッチする74ALS573(Octal 3 state D-Latch)で、ともに TTL-ICです。前述しましたが「・・・初めてのパソコン応用工作」の記事ではこの2個のICと周辺の回路定数のみで構成され、とてもコンパクトに作られています。回路図を見ておわかりのように筆者はこれに加え入力データ 8bit(IN0〜IN7) および出力データ 8bit(OUT0〜OUT7) 計 16bit のデータをLEDで目視観測できるようにしました。このLEDを点灯させるため 74LS04(Hex Inverters)を3個使用しています。また、74LS245の入力端子(B1〜B8)と74ALS573の出力端子(Q0〜Q7)を後述するコンソール盤のスイッチ操作で入出力のループ回路をつくり簡単に折り返し試験ができるようにしてあります。さらにコンソール盤のスイッチとLEDに配線を引き出すためフラットケーブルコネクタ5個(CN5〜CN9)を取り付けています。CN2・CN3もフラットケーブルコネクタで応用回路からの入力(IN0〜IN7)および応用回路への出力(OUT0〜OUT7)用端子です。左下のVcc(+5V)電源入力は+5V安定化電源に接続します。筆者は自作の+5V安定化電源パッケージに接続しています。

パラレルインターフェースアダプタをコンソール盤に取り付けた様子です。いままでコンソール盤という言葉を多用してきましたが、これはジャンク品として入手していた電話交換機のコンソール盤です。LEDやスイッチがたくさん付いていたので部品取り目的で入手していました。その後、利用チャンスもなく物置にガラクタと一緒に放り込んでいたものを、今回製作したパラレルインターフェースアダプタに利用することにしました。写真左がコンソール盤内部に取り付けたパラレルインターフェースアダプタです。内部はまだガラガラの状態ですが、これから、シリアルインターフェースアダプタや応用回路などを製作し、取り付けていく予定です。写真右は、取り付けられたパラレルインターフェースアダプタの拡大写真です。フラットケーブルの終端はコンソール盤前面に取り付けられたLEDおよびスイッチに直接配線されています。パソコンと接続されているケーブルは見えませんが、基板左側にあるD-SUB-25Pコネクタに裏側からコネクトされています。

左の写真は使用したWindows98ノートパソコンと、ガラクタから蘇ったコンソール盤です。LEDやスイッチが32bit分、横に並んでいます。このうちパラレルインターフェースアダプタ用に利用したLEDは16bit分です。右の拡大写真をご覧ください。16bitのうち右側の8bitはパラレルインターフェースアダプタの入力データ観測用、左側8bitは出力データ観測用です。右側8bit LED下のスイッチがONになっています。回路図でも説明しましたが74LS245の入力端子(B1〜B8)と74ALS573の出力端子(Q0〜Q7)をループにした状態です。この状態でパソコンからテストプログラムを走らせ、回路の動作チェックを行います。プログラムは、0〜255(&H00〜&HFF)の値をパラレルインターフェースアダプタに対し、書き込み読み出しを行います。書き込んだ値と読み出した値のコンペアをして、同じ値ならOKとするものです。0〜255のコンペアチェックは一瞬で終了するためLEDもピカピカっと瞬間点灯で終了し、味も素っ気もありません。そこでこの試験を32,000回連続(int型整数値のほぼ最大値)で実行するようにプログラムを修正してみました。すると2時間近くも、LEDのピカピカを楽しむことができました。左側の写真をクリックするとビデオ映像がご覧になれます。←(こんなもん2時間も眺めていてどうするんじゃ?) なおテストプログラムのソースコードおよび dll ファイルなどについては、「・・・初めてのパソコン応用工作」を参照してください。

接続したパソコンはWindows98がプレインストールされたSONY-PCG-505RXです。実はこのパソコン本体にはプリンタポートの接続端子(D-SUB-25P)が実装されていません。パソコン本体が超薄型設計のためプリンタポートが実装できないのです。そこでオプション品としてポートリプリケータなるものがあります。左の写真をごらんください。パソコン側面からコネクタで各種拡張用端子が引き出されています。これがポートリプリケータです。写真でおわかりのように、D-SUB-25Pの接続コードは、このポートリプリケータで引き出されたプリンタポートに接続され、パラレルインターフェースアダプタとつながっています。もちろんパソコン本体にプリンタポートが実装されていれば、このようなものは不要です。蛇足ですがこのポートリプリケータにはプリンタポートの他に、RS-232Cシリアルポート、アナログRGBディスプレイ端子、PS/2準拠キーボードおよびマウス端子が引き出されています。

参考としてフラットケーブルのメス側コネクタの付け線方法を紹介します。今回製作したパラレルインターフェースアダプタはLEDやスイッチへの引き込み線が42本もあります。これをどう結線するかを考えるとき、誰しもフラットケーブルが頭に浮かぶでしょう。ところがいざフラットケーブルをコネクタに接続加工しようとしたとき、どうやって接続するの? と戸惑う方もおられることと思います。でも、心配はいりません。写真に示したように小型の万力を使用するのです。コネクタ(メス)の金属端子の谷にフラットケーブルの山をキチンとあわせ、その上から押さえのプラ部品を被せます。これを万力に挟み込みハンドルをゆっくり回しながらプラ部品に挟まれたフラットケーブルを押し込んでいきます。カチッっという感じがしたらプラ部品がロックした証拠で、接続作業は完了です。注意点としては、このカチッの感じがわからず締め過ぎてしまい、コネクタを破壊してしまうことです。なんてったって万力っていうぐらいですから小さくても力があります。とくに大型の万力を使用すると、このカチッの感じがさらにわかりずらくなります。筆者はこの作業のためわざわざアルミ製ミニチュア万力をDIY店で購入しました。最後に作成したフラットケーブル両端で導通および混線有無の確認をします。フラットケーブルの結線方法をマスターすると、数十本のリード線を半田付けで一本いっぽん結線して製作するコネクタはあまりに手間ひまがかかり過ぎ使用する気になれません。ただし、フラットケーブルは線径が細いため、電源線など電流値の多い区間の配線には注意が必要です。今回の使用例のように、せいぜいTTLレベルのデータ線の配線程度に限定すべきでしょう。

今回使用した74LS245と74LS573のIC内部の結線図および基板上の部品配置図を以下に示します。

製作したパラレルインターフェースアダプタへのアクセスはパソコン内部のプリンタポートへアクセスすることにほかなりません。筆者は最初Windows2000でプリンタポートへアクセスしてみましたが、うまくいきませんでした。そこでよくよく、「・・・初めてのパソコン応用工作」を読むと専用ドライバが必要なことがわかりました。書籍に付属してくるIN・OUT命令を実行するためのdllはWindows98用です。インターネットで調べると、Windows2000用のdllファイルがシェアウェアで入手できそうでしたがあえて購入せず、OSがWindows98のノートパソコン(SONY-PCG-505RX + ポートリプリケータ)に変更し、ようやく正常動作を確認しました。XPの時代に無印98とは・・・。まあ、お遊びですし、ちょうどそろそろお払い箱にしようと思っていた98マシンがあったのでこれを有効利用しました。おかげで数百円のシェアウェアも購入しないで済みました。←(ケチッ!!)  (^^;

2005.12.18

その後、JE1TSN渡辺OMが開発された、XPマシンで直接I/O制御を可能にするフリーウェアドライバがHP上で見つかりました。さっそくダウンロードしてサンプルプログラムをインターフェースアダプタ試験プログラム用に書き直し実行したところすこぶる快調に動作しました。プログラムは98用と同様に、0〜255(&H00〜&HFF)の値をパラレルインターフェースアダプタに対し、書き込み読み出しを実行し、書き込んだ値と読み出した値のコンペアを行って、同じ値ならOKとするものです。試験回数のデフォルト値は 32,000 回になっていますが、”Const c = 32000”を INT整数値の範囲内で自由に設定できるようにしてあります。32,000回試験で98(Pentium/266MHZ)のときは2時間以上かかっていた実行時間が、XP(Pentium4/2.2GHz)では、わずか1分45秒で終了してしまうのには驚きました。(TNX JE1TSN)

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

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


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

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