1BIT I/Oでのシリアル送受信実験

1BIT I/Oでのシリアル送受信実験 2版

[TopPage] -> [PIC] -> [OneLineSerial]  |   [blog]
[初版]   [2版]

1.はじめに
 初版では5V対応で回路が結構複雑になってしまったので、もっとシンプルな回路で同様な機能を実現することを目指しました。

初版の回路を考える上で思考を束縛していた条件として

  1) 入出力の論理(負論理/正論理)を合わせる。
  2) PICの I/O ピンには電源電圧範囲外の電圧を印加してはいけない。

という前提が頭の中にあり、これらの条件によって回路検討時に思考範囲が狭められていましたが、このような常識を取り払って考えてみるといろんなアイディアが浮かんできます。^^


2.回路簡略化の方針
 上記の1)に関しては、入出力の論理が不揃いであってもシリアル通信処理はソフトウェアで実現しているのでソフト側で対応できます。実際PIC側からのシリアル出力を従来と逆の論理にすればトランジスタを1個減らせます。

 2)については、ある程度大きな抵抗を介していれば、電源電圧範囲外の電圧がかかってもPICは簡単にはへこたれません(笑)。従って今まではLEDで電圧上限をクリップしていましたが、クリップ部分も不要になります。


3.回路図
 PIC側からのシリアル送信の論理を反転したのでトランジスタを通常時 ON にするためにベースはプルアップし、1ビットで送受信するにはPIC側の送信信号が受信信号側からの影響を受けないようにする必要があります。
 そのために受信信号ラインにダイオードを入れ(負電圧時の保護も兼ねる)、送信側のトランジスタが受信信号によって OFF しないようにします。
・・・というような事を色々考えつつ(この辺の工程がパズルを解くような感じで面白い)できた回路がこれです。


4.アナログ系はシミュレータがお手軽
 今回は以前、トラ技についていた OrCAD の回路シミュレータを使用したので抵抗値の決定等がとても楽でした。
 回路自体がシンプルであることもありブレッドボードでの確認も行わず作成しましたが問題なく動作しました^^
(シミュレータの威力はすごい!。ラジコンヘリもPCのシミュレータで練習してから飛ばすのが王道らしい)


 まずはシリアル受信の場合を想定した回路とシミュレート結果が

回路図(受信時) シミュレート結果

 で、回路図内で

 ・ 赤プローブ:シリアル受信信号入力部(R6はパソコン側送信ドライバの内部抵抗のつもり←値は適当^^;)
 ・ 青プローブ:PICのI/Oピンにつながる部分で、受信時(PIC側I/Oは入力状態)なのでR5を1MΩに設定
 ・ 緑プローブ:PICのシリアル送信信号
 ・ 電圧源V2:RTSを整流し、コレクタに供給している直流電圧源
 ・ 電圧源V3:PIC側I/Oが出力(送信)になった場合の電圧源(入力なのでR5=1Mとしている)

となります。

 V1は矩形波でシミュレートすべきかもしれませんが、中間の各電圧値での動作を見るためにサイン波にしています。
 PIC側のシリアル出力には影響を与えず、かつPICの入力としてHigh/Lowレベルの判断が出来る値になっていることが確認できます。
 USB→シリアル変換ケーブルで実測したところ、シリアル受信信号がhighレベルでの値は7.8V程度(赤プローブ位置相当)だったのでシミュレート結果の赤グラフが7.8VでのPIC側入力電圧(青グラフ)は約4V程度であることがわかります。

 実際にV1を7.8Vにすると右のように青グラフのピーク値が約4Vになります。
V1=7.8V


 PIC側が送信する場合、下図のようにパソコン側からのシリアル送信信号(赤グラフ)の影響を受けずに、PICの出力(青グラフ)でPIC側シリアル送信信号(緑グラフ)が制御できています。

 以上のシミュレート結果からPICの電源電圧が5Vでも3Vでも問題なく動作しそうです。

回路図(送信時) シミュレート結果

5.製作
 シミュレータで問題ないことが確認できたのでブレッドボードでの確認はパスして作成しました^^
 部品としては、トランジスタ1個、抵抗4本、ダイオード2本という超シンプルな回路なのでコネクタに直に半田付けし、コネクタケースに収めました^^
 1/6Wの抵抗を使えば難なくコネクタケースに収まると思います(当然、コネクタの形状にも依存するでしょうが)。
 今回は手持ち部品の関係で1本だけ1/4Wの抵抗を使いましたがコネクタケースに収まりました。(^^)

コネクタへの部品取付け コネクタケースに格納


6.結果
 左下がパソコン側から 'A' (0x41) のデータを送り、PIC側でエコーバックして 'A' を応答している時の波形です。
 黄色がPIC側 I/O ピンでの波形で紫がパソコン側のシリアル受信部の波形です。
 PIC側が入力状態の時のhighレベルは3.5Vです(シミュレータでは約4Vなのでほぼシミュレートどおり)。

 右下の写真は実際に今回の I/F を使ってディバッグしている例(独自プロトコルでの赤外線コントロール送信機)で、PIC側の1個の I/O ピンに接続するだけで、OneBitLoaderでプログラム更新でき、そのままの状態でディバッグ用情報をシリアル送信(シリアル受信でポーズ状態)できます(^^)

サンプル波形 使用例
[初版]   [2版]

[TopPage] -> [PIC] -> [OneLineSerial]  |   [blog]