• ベストアンサー

シリアル通信の電圧変換

シリアル通信に関する質問です。 出力が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

  • 指定した電圧になると電源ラインを接続する回路

    5Vの昇圧回路を使用しています。 昇圧回路が完全に動作してから電源ラインを接続するような回路はないでしょうか? 昇圧回路に電源を投入後、昇圧回路出力が5V付近まで上がりきったところで昇圧出力を ある別回路に接続したいのです。 元電源が徐々に上昇し、合わせて昇圧電圧も徐々に上昇してしまうので、昇圧終了電圧を 一気に接続したいのです。 あまり詳しくないので、簡単な回路があれば助かります。

  • 最大電圧5Vのアナログ信号を最大電圧3.3Vに変換したいのですが

    3.3V動作のマイコンでAD変換をするために 最大電圧5Vのアナログ信号を最大電圧3.3Vに変換したいのですが どのような回路を組めばいいのでしょうか。

  • H8 3052Fマイコンでシリアル通信を2チャンネル同時に使うとエラーが出る理由はなんでしょうか?

    秋月の3052マイコンボードを使ってサーボコントローラ、RS-232Cでパソコンとの通信にそれぞれ1チャンネルずつの計2チャンネルのシリアル通信を行っています。 PCとの通信(ビットレート:57600)単独で行うと、PC上には表示したいものがきちんと表示されるのですが、サーボコントローラとの通信(ビットレート:9600)と同時に行うと表示がおかしくなります。 その際他のところはいじっていません。 この理由がわからないので、ご存知の方がいらっしゃればよろしくお願い致します。

  • 入力電圧に対して反比例して電圧を出す回路

    入力した電圧に対して反比例した電圧を出す回路があれば教えていただけないでしょうか? 例えば3Vを入れると0.1Vの出力、2Vを入れると1.5Vの出力、1Vを入れると3Vの出力となるようなものです。 簡単な回路での構成は難しい場合、小さなICが売っているのでしたら、それでもかまいません。 よろしくお願いします。

  • シリアルポートより電圧が出力?

    SOTEC社のノートPCを使用しています。 シリアルポート(D-Sub 9ピン)で シーケンサなどを通信させて使用しているのですが 相手側の機器によっては電圧変動でのトラブルが起こってしまいます。 とある方より「PCによってはDC5Vが出てしまう機種がある」 と言われました。 本当なのでしょうか? もし詳しくわかる方がいらっしゃれば その辺の説明を記載していただきたいのと同時に 5V出力を無効にする設定などがあれば 教えて下さい。

  • コントローラの出力を増幅する理由について教えてください

    大学の実験でコントローラ(マイコン)から電圧を出力してモータを制御する実験を行ったのですが、その際にモータドライバを用いてコントローラからの出力電圧を増幅する理由がよくわかりませんでした。 先輩に聞いたところ、コントローラからの出力では小さすぎるために増幅するのだと教えてくれましたが、例えば、コントローラからDC3Vの電圧を出力すれば、小さめのモータ(単3乾電池1.2Vで回るようなもの)を動かすことは可能ではないのでしょうか? 試しにコントローラから直接モータに配線し、コントローラから3Vの電圧を出力してオシロスコープで信号を観測してみましたが、モータは回らない&電圧が生じませんでした。 負荷が原因なのかな・・・と考えているのですが、はっきりした理由を知りたく、今回質問させていただきました。 電気・電子回路についてはあまり知識が無いのですが、説明された事項をしっかり調べて理解するようにしますので、よろしくお願い致します。

  • C言語によってシリアル通信をおこないたいのですが

    PCとマイコンとでシリアル通信でデータの受け渡しを行いたいのですがよくわかりません。 PC←マイコン方向はハーイパーターミナルを使え値を確認できるのでよいのですが、PC→マイコンの方向でのプログラムがわかりません何か参考になるものはありませんか? PCはVC++を使用しています。 マイコンはH8/3664です。

  • トランジスタを使った、電圧変換回路について教えてください。

    トランジスタを使い、12Vの電源を使っている回路から、5Vに電圧を下げ、別のマイコンを動作させたいのですが。 簡単な回路や参考になるURLなどはありますか。 ご教授ねがいます。

  • 電圧を増幅できる回路

    自分は、昇圧回路,2倍電圧全波整流回路,3倍電圧全波整流回路,4倍電圧全波整流回路について特性を調べています。これらは、入力電圧を出力電圧において大きくしてくれます。 このような回路、電圧を増幅させてくれる回路が他にあるのか探しています。自分ではこれ以上探してもみつかりません。知っている方いましたら、教えてください。よろしくお願いします。

  • 電圧の安定についてお教えください

    困っております。 電源回路で入力電圧の変動があっても出力電圧が一定になるような 回路もしくは部材をご存じの方お教え下さい。 直流12Vで入力側の電圧が11.5Vから14.3V位変動します。 出力側電圧は常に一定な12Vを必要としています。 電流的には余裕はあります。 よろしくお願いします。