LoginSignup
4

More than 3 years have passed since last update.

posted at

ロジックレベルを3.3Vと5Vで双方向にコンバートする

とあるプロジェクトで、Raspberry Pi(以下ラズパイ)からマイクロサーボSG90を動かす必要がありました。その際気づいたのは、ラズパイからサーボ駆動に必要な5VのPWM信号が出力できないということ。困った(ただ、実際は3.3Vの信号でも動くケースが多いみたいです)。

ロジックレベルコンバーター

必要なのは5VのPWM信号。やろうとしているのはいわゆる、「ロジックレベルコンバート」というテクニックで、あるいは「レベルシフト」とも言われます。ちなみに、ロジックレベルコンバーターに関しては、以下の記事が分かりやすく説明されています。
5V Arduino+3.3V I2Cデバイス+双方向ロジックレベルコンバータを試す

さて結論からすると、以下のような完成モジュールを使ってしまうのが手っ取り早いです。極めて安いですし。
TXB0104双方向レベルシフタ

まあ学習ということで、以下はディスクリートでやるときの解説です。

材料は、
- テキサスインスツルメンツのTXB0101DBVR
- バイパスコンデンサ0.1μFを2個
- カーボン抵抗4.7kΩ
- 配線材を適当に

TXB0101

ICですが、端子は、3.3V、5V、GND、OE、3.3V信号、5V信号の6本。5ピンのOEを少し解説すると、これは、Output Enableで、接地していると信号はHIGH/LOWいずれでもなくなる(ハイ・インピーダンス)ため、3.3V、5V両方が立ち上がるまではそうしておくのが教科書通りのようです。したがってここでは、OEは3.3Vに接続し、また同時にプルダウン抵抗を介して接地すればよいです。また、3.3V、5Vそれぞれはバイパスコンデンサで接地してノイズ対策しておきます。これは任意で。あとはピン通りにつなげるだけですが、1ピンを3.3V、2ピンを5Vとして電圧的には1ピン<2ピンとしてください。

回路図

level-shifter.png

ブレッドボード上に組むと以下のような感じになりました。表面実装のICなため、細かい半田付けで1時間かかりました。

foo.jpg

参考情報

公式データシート
TXB0101 1-Bit Bidirectional Level-Shifting and Voltage Translator

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
4