回答:
オープンドレイン(またはBJTの場合はオープンコレクター)の2つの一般的なアプリケーションがあります。
1)複数の出力を同じラインに接続します。これはワイヤードORと呼ばれます。たとえば、デバイスに通常ハイのリセットピンがあり、マイクロコントローラーピンと別のソース(プッシュボタンなど)の両方からリセットされる場合があります。リセットピンはプルアップ抵抗でハイに接続されています。マイクロコントローラは、オープンドレイン出力として構成されています。押しボタンは、押すとグラウンドに接続されます。マイクロコントローラーがその出力を0にするか、プッシュボタンを押すと、デバイスがリセットされます。
マイクロコントローラが出力ピンを1に設定すると、ピンは事実上ラインから切断されます。電圧でラインを駆動(「ソーシング」)していないため、プッシュボタンでラインをグランドに引き下げても短絡は発生しません。
ワイヤードOR構成は非常に便利であるため、マイクロコントローラーのリセット、割り込みライン、フリップフロップなどのデバイスのクリアラインとイネーブルラインなどのピンはすべて「アクティブLOW」です。 、プルアップ抵抗を介して)、およびオープンドレインとして構成されたいくつかのデバイスのいずれかがそれらをローにプルすることがあります。このような入力は通常、信号名の上部にあるバーまたは先行!(!CLR)、または末尾の#記号(CLR#)。
2)異なる供給電圧に接続されたデバイスの制御。20 mAを必要とするが5ボルトの電圧のリレーがあるとします。ただし、マイクロコントローラーの出力は、3.3 Vの電源(VCC)電圧までしかピンを駆動できません。オープンドレイン出力では、リレーの片側を5 Vに接続し、もう一方をマイクロコントローラーの出力ピンに接続できます。のマイクロコントローラの出力が1の場合、何も起こりません(ここでも、ピンが切断されているように動作します)。0に設定すると、リレーの底面が接地され、回路が完成してリレーが動作します。そのようなアプリケーションでは、デバイスの電源が切れたときにマイクロコントローラーへの損傷を防ぐために、リレーコイルの両端に「フライバック」ダイオードを配置することが重要です。
ULN2803(ダーリントントランジスタアレイ)などの出力ドライバーの場合、50 vの高電圧に接続された負荷を駆動し、ロジック互換入力でそれらを制御できます。
a microcontroller can often sink more current (drive to ground) than it can source (drive to the VCC of the microcontroller)
それは、現代のCMOSマイクロコントローラーではもう当てはまりません
オープンドレイン出力は、0Vに接続されたオープンスイッチです。電流を流すには、電流を流す必要があり、これはプルアップ抵抗で行うことができます。ピンに電流を流さないと、電圧を見ることができません:-
同じオープンドレイン出力を共有する2つのデバイスがあります。プルアップ抵抗が+ 5Vになっていることに注意してください。実際、この回路は「オープンドレイン」を使用してロジックを実行します。NANDゲートのいずれかが1,1で「アクティブ化」されている場合、バスは0Vにプルダウンされます。したがって、バスに配信されるロジックは
バスの反転= AB + CD
通常のBJTでもこの機能を実行できますが、MOSFETは通常、オープンドレインデバイスとして使用されます。オープンドレイン出力は、通常のCMOS出力を簡略化したものです。グラウンドにターンオンするのは高速ですが、+ Logicへの戻り時に、プルアップ抵抗を介した寄生コンデンサの充電時間のため、遅くなります。
wikiのオープンコレクターは良い読み物です。これはオープンドレインと同じであり、上記の小さな図と同様に記事で言及されています。
1)tcrosleyによる回答の最初のポイントを簡略化するために、出力内にプルアップ抵抗を設けないことの利点は、多くの出力間でその非常にプルアップ抵抗を共有できることです。次に、出力が並列に配線され、すべてが共有抵抗とグランドに接続されます。
2)抵抗器(回路図内)の「下」のポイントは、結合された出力が回路の他の部分によって収集される場所です。(もちろん、それは地面と供給に関してすべて逆であった可能性があります。)
3)多くの出力から組み合わせた出力を収集したくない場合(および回路がどこでも同じ電圧供給を使用している場合)、プルアップパーツなしで出力を使用する必要はありません。それ以外の場合は、「不完全な」出力が(ある意味で)提供され、ニーズに合わせてカスタマイズできます。