• ベストアンサー

シリアル通信の電圧変換

シリアル通信に関する質問です。 出力が3.3Vのマイコンから入力電圧が5V必要なサーボコントローラの間で、シリアル通信をしたいのですが、どうやったらいいのでしょうか? 信号の方向は、 マイコン(3.3V)→サーボコントローラ(5V)です。 昇圧回路?とかを通すのでしょうか?その辺はよくわかってませんが。。

質問者が選んだベストアンサー

  • ベストアンサー
  • nta
  • ベストアンサー率78% (1525/1942)
回答No.4

No1,3です。  サーボコントローラのボードを見た感じではシリアル入力なるものがTTLレベルなのかCMOSレベルなのか判然としません。おそらくCMOSレベルかと思いますので直結できません。TTLレベルであれば直結も可能です。そこで74HC05のようなオープンドレインタイプの論理ICを入れると5Vの回路とインタフェースできます。 http://www001.upp.so-net.ne.jp/FITDESIGN/manu6.htm (ここのコラム2の最初の図のような方法です。サーボコントローラ上に余分な抵抗を実装する必要がありますが。)  しかし、機器間の距離がかなり短い場合を除いて、この方法はお勧めしません。なぜかといいますと、論理ICの電流ドライブ能力が低く、数mものばすとコードの抵抗によって通信ができなかったり、誤動作したりするからです。  こうした場合にはやはりある程度の電圧振幅と電流ドライブ能力のあるRS-232CのインターフェースICが適しています。これをマイコン側に使えば、サーボコントローラ側はRS-32Cの端子に接続するだけで、余分な加工が要りません。 NO1のURLにあげているような +3V to +5.5V RS-232 Transceivers となっているICがいいでしょう。やや入手性に問題がある製品もありますので入手しやすいものをお使いください。

SY2525
質問者

お礼

ありがとうございます。 解決しました!この製造元のPololuという会社に直接問い合わせてみたところ、信号を反転しさえすれば、RS-232Cのところに直接つないで大丈夫、とのことでした! レベル変換用のICはもうそのサーボコントローラに実装されていたようです。 実際にためしてみたところ、うまくいきました。

その他の回答 (4)

  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.5

筐体内で配線ケーブル長が数10cmでいいのなら、単純なレベル変換でもいいとおもいます。たとえば、ちょっと前のPCだとパラレルIDEでMHzの信号を50cmほど延長できていたわけですし。。 サーボコントローラが電磁ノイズを沢山出すとか、距離が遠いとかなら、Ano4で言われているように、RS232Cに変換するのが妥当でしょう。これだったら数m(9600bpsなら15m)届きます。 たとえば、これ。1セット250円です。3.3V/5Vどちらの電源でも動きます。 http://akizukidenshi.com/catalog/items2.php?q=%22I-00198%22&s=score&p=1&r=1&page= こういうのを2セット作って、マイコン基板側とサーボコントローラにそれぞれ取り付けます。

SY2525
質問者

お礼

ありがとうございます。 解決しました!この製造元のPololuという会社に直接問い合わせてみたところ、信号を反転しさえすれば、RS-232Cのところに直接つないで大丈夫、とのことでした! レベル変換用のICはもうそのサーボコントローラに実装されていたようです。 実際にためしてみたところ、うまくいきました。

  • nta
  • ベストアンサー率78% (1525/1942)
回答No.3

No1です。  1200~34800bpsのは低速なのでおそらく機器間の距離がある程度長くてもよいという用途だと考えられます。この場合にはレベル変換用の論理ICは不向きです。  そして、サーボコントローラは誤動作は困りますから、5VというのはTTLではなくて、RS-422かRS-485の平衡インターフェースに準拠しているのではないかと思います。ここをメーカに確認しなければなりません。それを確認してから、マキシム社などが出荷しているインターフェースICを選んでください。同社のICには内部にDC-DCコンバータが搭載されていて1電源で動作するものがいろいろあります。サーボコントローラがRS-422などの仕様に準拠しているのであれば、マイコン側にインターフェースICを付けるだけで通信できます。

参考URL:
http://www.ibsjapan.com/RS485.htm
SY2525
質問者

補足

わざわざありがとうございます。 ちゃんと使っている機器のことを最初から言っておいたほうがよかったかも知れません。 サーボコントローラはpololu社のマイクロシリアルサーボコントローラhttp://www.mecharoboshop.com/Products/motorcontroller/MicroSerialServoController_japanese_guide.pdf で、マイコンはフリースケール社のMC9S08QG8というものです。 http://www.freescale.co.jp/pdf/MC9S08QG8J.pdf サーボコントローラの方は、「0-5Vのロジックレベルシリアル入力もしくはRS-232Cレベルシリアル入力に接続されていなければなりません」と書いてありますので、どちらか選べるようになっています。 この”ロジックレベル”というほうを使いたいんですが(RC-232Cを使いたくないという明確な理由はないんですが。。。)、その際に、まさに使わなきゃいけないもの(ICなり、その他もろもろ)を教えていただけるとすごく助かります。 ちなみにH8でそのサーボコントローラ自体の動作確認はできています。 (そのときは出力が5Vのため、変換の必要がなかった)

  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.2

電圧の整合に関しては、論理レベル変換回路を間に入れるだけです。 (通信プロトコルの話は別にして) 図書館などでトランジスタ技術2006年6月号を探してみてください。インターネットで検索してもレベル変換ICなどの情報は豊富です。 通信速度が遅いのなら抵抗とダイオードで簡単なレベルコンバータを自作できますが。

参考URL:
http://www.cqpub.co.jp/toragi/TRBN/contents/2006/tr0606/0606toku.pdf
SY2525
質問者

補足

通信速度は1200~34800bpsの中から選べます。 ロジックICなるものを間にはさむだけでいい、ということでしょうか? そういえば使ったことがありません。 ふと思ったんですが、DCDCコンバータとかって使えるんですか? こちらも同様にして使ったことがないのでよくわからないのですが。。

  • nta
  • ベストアンサー率78% (1525/1942)
回答No.1

 シリアル通信と書かれていますがRS232Cなどの正規の規格準拠での動作が求められるのでしょうか。独自の規格で短距離、低速度であれば直結でも通信できるかもしれません。そうではなく、規格に準拠するのであればその規格に応じた通信用ICが販売されていますので、それを利用するのが簡単です。たとえばURLにあげるのはRS-232C用です。それぞれの入出力電圧に適したものを通信ラインの両側に付けることになります。  マイコンが3.3VCMOS サーボコントローラが5V TTLの規格であり、短距離(およそ10cm以内)で高速通信(MHz以上)の高速性が求められる場合には、レベル変換機能のある標準ロジック(74ACT , 74VHC 74LVTなど最後にTのつくシリーズ)が使いやすいと思います。 http://homepage1.nifty.com/x6/elecmake/digital/std-logic.htm

参考URL:
http://www.chip1stop.com/AT105_M20_01_02.cfm

関連するQ&A