簡易シリアル接続

 ワンチップマイコンとPCを接続するポピュラな方法としてRS-232Cを使ったシリアル接続があげられます。通信手順が単純なことやPC側のドライバーの心配も無いのでUSBよりも手軽で使いやすいインタフェースと言えるでしょう。

 RS-232Cの規格では1,0を表現するときに+3V〜+15V、-3V〜-15Vの電圧であることになっています。ここに登場するマイナス側の電圧を生成することは少々厄介なので、RS-232Cへ接続するときは専用のレベル変換IC(MAX232など)を使用するのが一般的です。

◆ちょっとケチくさい話になりますが・・・

 例えば、秋月で1個140円のマイコン(PIC12F675)を使って電圧ロガーを作成し、PCと接続するために1個200円のインタフェースIC(ADM3202AN)を使用する。こんなシーンがあったりします。

 マイコン本体よりもインタフェースの方が高額になること、単純なデータ垂れ流し動作の場合、インタフェースICは(2チャンネルあるのに)1チャンネルが無駄になること、しかも送信の機能しか使わないことを考えると損をしている気分になります。

◆ジャンク箱の部品で作る

 そこで今回の企画はこの200円をケチる方法です。ジャンク箱に転がっていそうな部品を使ってレベル変換を簡易的に行う回路を実験しました。作成した回路は以下の通りです。

 マイコン→PCの経路は2SC1815を使って負論理への変換を行わせます。PIC12F675使ってPCと接続して比較的良好にデータが見えるように抵抗を調整します。意外とPC側の入力インピーダンスが低くコレクタの抵抗を小さくしないといけませんでした。

 PC→マイコンの経路にはFET(2SK30A)を使用しました。2SC1815も考えましたが、BE間に逆電圧がかかるのでやめにしました。こちらは大きな抵抗でもOKでした。

◆速度が速いとちょっと化ける

 9600bps,8ビット,ノンパリ,STOP1で通信してみます。私の環境では先頭のビットを間違えることが多いみたいです。8ビットの通信を設定していますが、漢字データをやり取りすることもないので、0x7fでANDを取ってごまかすことにします。 これで9600bpsで通信ができるようになりました。

 記載の内容はRS-232Cの規格を無視した簡易接続法です。この通りにやっても正常に通信できないこともあります。同じことをされる場合は自己責任でされてください。


Latest update at 2007/6/24