とあるプロジェクトで、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ピンとしてください。
回路図
ブレッドボード上に組むと以下のような感じになりました。表面実装のICなため、細かい半田付けで1時間かかりました。
参考情報
公式データシート
TXB0101 1-Bit Bidirectional Level-Shifting and Voltage Translator