Arduino Due と外部信号の接続

Dueの電源電圧と外部回路の接続

Due の基板上のマイクロコントローラはは3.3Vで動作します。

したがって、Due の入出力ポートにつながるものも3.3Vで動作する必要があります。5Vで動作するロジック回路は多いですが、Dueと接続する場合は注意が必要です。


5V振幅の出力をDue の入力につなぐときの注意点

5Vトレラントの設計であれば、5V振幅の信号を Due の入力につないでも壊れませんが、残念なことにDue の設計はそうなっていないらしく、外部の信号をつなぐときは3.3V振幅である必要があります。

Arduino のサイトには「5V振幅の信号をつなぐとボードが壊れる」という意味の記載があります。

「5Vトレラント (tolerant)」とは、CMOS (Complementary MOS)ロジック回路の入力にある、電源側のダイオードを除去し、5V振幅の電圧を入力しても過大な電流が流れないようにしたものです。


Due の出力を5V振幅回路の入力につなぐときの注意点

CMOS回路の入力振幅は、ロジックHi側が電源電圧の70%は必要です。5Vの70%は3.5Vですが、 Dueの出力は3.3Vが限界で、5V振幅のCMOS回路を駆動するには少し不足します。

実際にやってみるとこれでも動作します。ですが、最悪値設計の観点で考えるとまずいです。

趣味の範囲で適当に動けばいいというならこれでも構いませんが、高い信頼度を求めるときは使用できません。

こんな場合は、何らかの適切なレベル変換用のトランスレータが必要です。


レベル・トランスレータについて、具体的には次の情報があります。

NXPセミコンダクタ社のアプリケーション・ノートAN10441は有用です。
http://www.nxp.com/documents/application_note/AN10441.pdf

この資料では ディスクリートのMOSFETを使う方法を紹介しています。この回路を、回路シミュレータで検証しましたが、単純な回路にも関わらず実に巧妙な方法であることがわかりました。

回路を自作する場合は、適切なしきい値のものを選ぶ注意が必要です。


この回路を IC化して一つのパッケージに収めたものが市販されています。Maxim社の MAX3370/3371です。IC化したとは、さすがです。

MAX3370/3371の電源電圧は二つの回路を結ぶためにHi側とLo側の二つあります。一つ目は2.5V〜5.5Vの範囲で、二つ目は1.6V〜5.5Vの範囲で動作します。

接続さえ正しく行えば、簡単に回路を組むことができて便利です。

なお、3370と3371の違いは、シャットダウン機能の有無です。3371の5番ピンはアクティブローでシャットダウンします。したがって、つながったラインはトライステート機能を持つことができます。


トライ・ステート機能は、インアクティブの状態ではハイ・インピーダンスになる回路です。(電気的にほとんどつながっていない状態に近い)