Ich möchte das Konzept von Open-Drain-Ports wie Port P0 des 8051-Mikrocontrollers verstehen. Warum müssen wir Pull-up-Widerstände an den Port P0 anschließen?
Ich habe Grundkenntnisse in MOSFETs und anderen elektronischen Geräten.
Ich möchte das Konzept von Open-Drain-Ports wie Port P0 des 8051-Mikrocontrollers verstehen. Warum müssen wir Pull-up-Widerstände an den Port P0 anschließen?
Ich habe Grundkenntnisse in MOSFETs und anderen elektronischen Geräten.
Antworten:
Ignorieren Sie die Vor- und Nachteile der Funktionsweise von Mosfets. Der Ausgang wirkt wie ein Schalter gegen Masse. Es kann selbst kein hohes (+ 5V) Signal erzeugen. Der Pull-up-Widerstand wird verwendet, damit der Ausgang bei geöffnetem Schalter hoch ist. Wenn der Schalter geschlossen ist, ist der Ausgang niedrig (0 V).
Es gibt zwei übliche Anwendungen von Open-Drain (oder Open-Collector im Fall von BJTs):
1) Anschließen mehrerer Ausgänge an dieselbe Leitung. Dies wird als verdrahtetes ODER bezeichnet. Beispielsweise kann ein Gerät einen normalerweise hohen Reset-Pin haben, der sowohl von einem Mikrocontroller-Pin als auch von einer anderen Quelle, beispielsweise einem Druckknopf, zurückgesetzt wird. Der Rücksetzstift ist mit einem Pull-up-Widerstand hochgebunden. Der Mikrocontroller ist als Open-Drain-Ausgang konfiguriert. Der Druckknopf wird beim Drücken mit dem Boden verbunden. Wenn entweder der Mikrocontroller seinen Ausgang auf 0 zieht oder der Druckknopf gedrückt wird, wird das Gerät zurückgesetzt.
Beachten Sie, dass der Pin von der Leitung getrennt wird, wenn der Mikrocontroller seinen Ausgangspin auf 1 setzt. Die Leitung wird nicht mit Spannung angesteuert ("Sourcing"). Wenn also der Druckknopf die Leitung auf Masse zieht, liegt kein Kurzschluss vor.
Da die verdrahtete ODER-Konfiguration so nützlich ist, sind Pins wie das Zurücksetzen auf einem Mikrocontroller, Interrupt-Leitungen, Löschen und Aktivieren von Leitungen auf Geräten wie Flip-Flops alle "aktiv niedrig" - was bedeutet, dass sie normalerweise (wieder hoch) gebunden sind über einen Pull-up-Widerstand) und jedes von mehreren als Open-Drain konfigurierte Gerät kann sie nach unten ziehen. Solche Eingänge werden normalerweise als aktiv-niedrig bezeichnet, entweder mit einem Balken über dem Signalnamen oder einem führenden! (! CLR) oder ein nachfolgendes # -Zeichen (CLR #).
2) Steuergeräte, die an unterschiedliche Versorgungsspannungen angeschlossen sind. Angenommen, Sie haben ein Relais, das 20 mA, aber eine Spannung von 5 Volt benötigt. Ihr Mikrocontroller-Ausgang kann jedoch nur Pins bis zu seiner Versorgungsspannung (VCC) von 3,3 V ansteuern. Mit einem Open-Drain-Ausgang können Sie eine Seite des Relais an 5 V und die andere an den Ausgangspin des Mikrocontrollers anschließen. Wenn der Ausgang des Mikrocontrollers in 1 ist, passiert nichts (verhält sich wieder so, als ob der Pin getrennt wäre). Wenn es auf 0 gesetzt ist, erdet dies die Unterseite des Relais, um den Stromkreis zu vervollständigen und das Relais zu betreiben. In einer solchen Anwendung ist es wichtig, eine "Fly-Back" -Diode über der Relaisspule zu platzieren, um eine Beschädigung des Mikrocontrollers zu vermeiden, wenn das Gerät stromlos ist.
Bei Ausgangstreibern wie dem ULN2803 (Darlington Transistor Array) können Sie Lasten anlegen, die an Spannungen bis zu 50 V angeschlossen sind, und diese mit einem logikkompatiblen Eingang steuern.
a microcontroller can often sink more current (drive to ground) than it can source (drive to the VCC of the microcontroller)
Das stimmt nicht mehr mit dem modernen CMOS-Mikrocontroller
Ein offener Drain-Ausgang ist nur ein offener Schalter, der an 0 V angeschlossen ist. Um Strom durch ihn zu leiten, müssen Sie Strom in ihn einspeisen, und dies kann mit einem Pull-up-Widerstand erfolgen. Wenn Sie keinen Strom in den Pin leiten, können Sie keine Spannung sehen: -
Hier sind zwei Geräte, die sich den gleichen Open-Drain-Ausgang teilen - beachten Sie den Pull-up-Widerstand auf + 5V. Tatsächlich verwendet diese Schaltung "Open-Drain", um eine Logik auszuführen. Wenn eines der NAND-Gatter mit 1,1 "aktiviert" wird, wird der BUS auf 0 V heruntergezogen. Somit ist die an den BUS gelieferte Logik
INVERSE von BUS = AB + CD
MOSFETs werden normalerweise als Open-Drain-Bauelemente verwendet, obwohl auch normale BJTs diese Funktion ausführen können. Ein Open-Drain-Ausgang ist eine Vereinfachung eines regulären CMOS-Ausgangs - er lässt sich schnell auf Masse einschalten, ist jedoch auf dem Rückweg zu + Logic aufgrund der Ladezeiten parasitärer Kondensatoren durch den Pull-up-Widerstand langsamer.
Open Collector im Wiki ist eine gute Lektüre - es funktioniert genauso wie Open Drain und wird im Artikel erwähnt, ebenso wie das kleine Diagramm oben.
1) Um den ersten Punkt in der Antwort von tcrosley zu vereinfachen, besteht der Vorteil, den Pull-up-Widerstand nicht in einem Ausgang bereitzustellen, in der Fähigkeit, diesen Pull-up-Widerstand unter vielen Ausgängen zu teilen. Die Ausgänge werden dann parallel verdrahtet und alle mit dem gemeinsamen Widerstand und mit Masse verbunden.
2) Der Punkt "unter" dem Widerstand (in den Schaltplänen) ist der Ort, an dem der kombinierte Ausgang von anderen Teilen der Schaltung gesammelt wird. (Natürlich hätte alles in Bezug auf den Boden und die Versorgung umgekehrt sein können.)
3) Wenn Sie den kombinierten Ausgang nicht von vielen Ausgängen sammeln möchten (und die Schaltung überall dieselbe Spannungsversorgung verwendet), möchten Sie die Ausgänge nicht ohne Pull-up-Teile verwenden. Andernfalls erhalten Sie (in gewisser Weise) „unvollständige“ Ausgaben, die Sie an Ihre Bedürfnisse anpassen können.