3.3V入力/出力を5V出力/入力にインターフェースするICはありますか?主にArduino Dueのために必要ですが、そのように動作する双方向ICがある場合は素晴らしいでしょう。
SN74AHC125およびCD4050 ICを使用するように勧められた人もいますが、それらがどのように機能するか、またはそれらとどのようにインターフェイスするかがわかりません。
3.3V入力/出力を5V出力/入力にインターフェースするICはありますか?主にArduino Dueのために必要ですが、そのように動作する双方向ICがある場合は素晴らしいでしょう。
SN74AHC125およびCD4050 ICを使用するように勧められた人もいますが、それらがどのように機能するか、またはそれらとどのようにインターフェイスするかがわかりません。
回答:
単一のN-mosfetを使用して、非常に単純な双方向レベルトランスレーターを作成できます。
使用するMOSFETは、目的の入力電圧レベル(この場合は3.3v)でRds-ON(オン抵抗)が比較的低くなるように、Vgsしきい値が低いモデルにする必要があります。そのような例の
BSS138は、Vgs-thが最大1.5vであり、Vgs電圧が2.5vと低いドレイン-ソース抵抗を持つように指定されています(わずかに低い場合もあります)。
示されている例では3.3v <-> 5v変換を使用していますが、2.5v <-> 3.3vまたは2.5v <-> 5v、2.5v <-> 12vの間でも動作します。範囲は、使用するMOSFETの特性によってのみ制限されます。
示されている回路は、NXP
AN97055 I2Cバスおよびその他のシステム用の双方向レベルシフターのアプリケーションノートに基づいています。
新しい短縮バージョン:AN10441 I2Cバス設計のレベルシフト技術
L1がハイ(3v3)またはフローティングR1の場合、MOSFETはオフのままなので、R2はドレイン側をハイ(5v)に引き上げます。
L1がローに引き下げられると、MOSFETが導通し、ドレインがローになります。
低レベル(0)がH1に印加されると、その電圧は基板ダイオードを介してソース側(L1)に転送されます。
抵抗のサイズは速度に影響する可能性があることに注意してください(画像ソース)
役に立つと思われる関連記事:
質問は双方向レベルシフトを提供するICに向けられているように見えるので、テキサスインスツルメンツのTXB010xファミリのパーツを検討してください。TXB0102には2チャネル、TXB0104には4チャネル、TXB0108には8チャネルがあります。
このICファミリの優れた機能は、信号の方向が自動的に検出されるため、方向設定ピンを別に用意する必要がないことです。
最大10 MHzのスイッチング速度が確実に機能します。理論上の最大速度はより高くなる可能性があります-データシートは、私が決定できることから、これについて明示的ではありません。
3.6ボルトMSP430ラウンチパッドと5ボルトArduino Nanoの間で動作するTXB0108があるので、質問のユースケースがカバーされています。
試してみる目的で、AdafruitはTXB0108を組み込んだビルド済みモジュールを提供します。これにより、SMD部品をはんだ付けする手間が省けます。それらまたは他から0102および0104の同様のオプションがあります。
TXBシリーズICに理想的には適さないI2C信号のレベルシフトが目的の場合、I2Cのプルアップ抵抗とオープンコレクタトポロジに特に対処するオプションは、Adafruitが販売しているこのようなモジュールですおよび他のベンダー。
このモジュールは、alexan_eの回答で説明されている方法でBSS138 MOSFETを使用します。質問が求めるような単一のICではありませんが、おそらく意図した目的を果たします。あるいは、MOSFETを使用してこの回路を自分で作成するのは簡単です。
考慮すべきもう1つのことは、実際にレベルシフトが必要かどうかです。多くのチップには、3.3などの低い電圧で動作している場合でも5V許容入力ピンがあります。atmega CPUは、arduinoの0.6 * Vccまたは3Vを超えるものをすべてロジックHighと解釈するため、3.3V信号はレベルシフトなしでArduinoピンを直接駆動できます。
5VのArduinoを使用しており、3.3Vのデバイスと通信する必要があると仮定すると、そのデバイスに5Vの許容入力がある場合(最近は多くのことが行われています)、emを接続するだけで機能します。双方向ラインが、デバイスがラインをローにプルするだけのi2cなどのオープンコレクター設計の場合、プルアップ抵抗を5Vではなく3.3Vに接続するだけで機能します。
それ以外の場合は、ラインが3.3Vを超えないようにする必要があります。抵抗とツェナーを使用して、arduinoラインに抵抗を配置し、ツェナーを使用して電圧を3.3Vにクランプします。(ソース:repetae.net)
危険な状態で生活し、10k抵抗器だけを使用するように誘惑されるかもしれません。これが(時には!)動作する理由は、過剰な電圧をvccまたは3.3Vにシャントするクランプダイオードが受信チップ内にあるためです。このダイオードは、3.3Vライン全体を5Vに引き上げようとすると燃え尽きます(そのラインを5Vに引き下げることによって生じる損傷に加えて)。ただし、抵抗器では3.3Vラインを想定してあまり電流は流れません。自明ではない負荷がかかっているため、電力線のレベルは実質的に変化しませんが、多くの注意事項があります。したがって、一般に、ローカルの分離された3.3Vバスがあり、実際にツェナー用に余分な2セントを節約できない場合を除き、これを行わないでください。あなたがebayに乗ってそれをコピーしようとするかもしれない汚れの安いブレイクアウトボードの回路図でそれを見るので、私はそれを言及するだけです ただブレッドボードを越えて本番設計に忍び込まないでください。:)
編集はただ単に私が上記の言ったことを反転させるので、ツェナー抵抗トリックはまだ仕事明らかに起因上に線O I /のいくつかは5Vトレラントかもしれますが、いくつかの意見の相違があるようです、あなたは新しい3.3Vのarduinoのを使用していた気づきましたフォーラムで。teensy 3.1は、すべての5Vトレラントピンを備えた素敵な小さなARMボードでもあり、適切な設計のIMHO http://www.pjrc.com/store/teensy31.htmlの半分以下のコストです。
安価なソリューション部門では、FET(NXP appnoteに基づいて受け入れられた回答から)は、Silicon Labs AN883のようにBJTおよびショットキーダイオードに置き換えることができます。それらの回路図は他のものとは少し複雑なので、ここで重要な部分を抽出し、2つの回路図を簡単に比較できるように受け入れられた答えのように再配置しました。
BJTは、シングルトランジスタレベルアップシフターで説明されているとおり、ロー→ハイ方向にのみ変換を行います。ショットキーはFETのボディダイオードを置き換えて、高→低変換を行います。
以下は、3.3 <-> 1.8V変換器の拡大されたスコープ測定です。彼らはまた、5 <-> 1.8V変換などのためにこの回路図を提案しています。BAS40ダイオードでは、逆方向に350mVの降下がありました。これらのオフセットは、トランスレータのロー側とハイ側のロジックローレベル出力に(明らかに)影響します。
両側に素敵なCMOSデバイスがあったので、入力インピーダンスはさほど問題ではありませんでした。1V / divトレースのロジック高マージンの目に見える劣化/オフセットはなかったので、ここに含めて気にしませんでした。それらのデバイスの入力インピーダンスは、シミュレーションからわかることから少なくとも1Mohmでした。ロジックハイマージンは、100K入力インピーダンス以下で低下し始めます。
また、このBJTベースのトランスレータは最大300KHz程度しかお勧めしません。
これらのソリューションのどれが実際に安価であるかは分かりませんが、FETまたはショットキー+ BJT ...しかし、これは確かにより多くの部品を必要とします...存在するそれらのダイオード+トランジスタパッケージの1つ、例えばPZMT1101を使用しない限り。ただし、3つの抵抗も必要です。
まあ、たくさんあります。最大周波数、必要なビット数などを指定する必要があります。要するに、任意の電圧レベル変換ICを使用できます。Texas Instrumentsには、まったく同じ目的のためのきちんとした選択ツールがあります:http : //www.ti.com/logic/docs/translationresults.tsp?sectionId= 458&voltageIn=5.0&searchDirection=2&voltageOut=3.3#voltintf
ここですべての方法の概要を見つけることができます
http://playground.arduino.cc/Main/I2CBi-directionalLevelShifter
最も簡単な解決策は、すべての回路を3.3Vで実行することです。HCチップはそのレベルで問題なく動作します。
それが不可能な場合は、自分を一方向に制限することで物事をより簡単にすることができます。5VのHCTチップは3.3Vレベルを問題なく受け入れ、単純な2抵抗分割器で5Vを3.3Vに低減できます。一部のuCはピンで5Vに耐性があるため、分周器は必要ありません。また、ピンに5Vプルアップを配置し、グランドとオープン(=入力)を切り替えると、0〜5Vの許容範囲の出力が得られます。
オープンコレクタバス(I2C、ダラス1線)を結合するには、BS138トリックが最適です。1つのハウジングに2つのFETを配置するI2C用の小さなチップがあります。(PCA9306など)
ただし、双方向レベルの変換が本当に必要な場合、そのようなチップが存在する場合は、TXB0108を確認してください。