<style>[reveal]{opacity:1 !important;transform:none !important}</style>

Open-Collector- und Open-Drain-Ausgang

Ein Transistor, der nur nach Masse zieht, plus Pull-up: Pegel von 3,3 V auf 12 V umsetzen, Ausgänge auf eine Leitung legen, Pull-up für die Flanken berechnen.

7 Min. LesezeitOpen-CollectorOpen-Drainoffener KollektorPull-up-Widerstand

Ein gewöhnlicher Logikausgang treibt aktiv in beide Richtungen: Er zieht die Leitung nach Plus oder nach Masse. Ein Open-Collector-Ausgang kann nur eins: nach Masse ziehen. Im anderen Zustand ist er einfach offen. Für den High-Pegel sorgt ein Pull-up-Widerstand nach einer Spannung, die du frei wählst. Mit einem MOSFET statt eines Bipolartransistors heißt dasselbe Open-Drain.

Das klingt nach einem Mangel, löst aber drei häufige Probleme. Ein 3,3-V-Mikrocontroller kann damit einen Eingang an 12 V oder 24 V ansteuern. Mehrere Ausgänge dürfen sich eine Leitung teilen, ohne sich gegenseitig kurzzuschließen – so funktionieren I²C, Interrupt- und Reset-Leitungen. Und Lasten wie Relais oder LEDs lassen sich direkt anschließen. Du findest Open-Collector-Ausgänge an Komparatoren wie dem LM393, am NE555 (Pin 7), an Optokopplern, an Hall-Sensoren und an vielen Sensor-Modulen.

Schaltplan

Zwei Ausgänge an einer gemeinsamen Leitung mit Pull-up RP 4,7 kΩ nach +12 V: T1 BC547B als Open-Collector mit R1 10 kΩ von GPIO 1 und R2 100 kΩ nach Masse, T2 BSS138 als Open-Drain mit R3 100 Ω von GPIO 2 und R4 100 kΩ nach Masse; die Leitung führt zum Eingang einer 12-V-Logik
Links ein Open-Collector-, rechts ein Open-Drain-Ausgang. Beide teilen sich die Leitung und den Pull-up.
  • RP, 4,7 kΩ nach +12 V: der Pull-up. Er legt den High-Pegel fest und lädt die Leitung, wenn kein Transistor zieht.
  • T1, BC547B mit R1 und R2: Open-Collector-Stufe. Emitter an Masse, Kollektor an der Leitung, sonst nichts – genau wie der NPN-Transistor als Low-Side-Schalter, nur mit dem Pull-up als Last.
  • T2, BSS138 mit R3 und R4: Open-Drain-Stufe mit einem kleinen N-Kanal-MOSFET im SOT-23. R3 dämpft die Gate-Leitung, R4 hält das Gate beim Booten auf Masse.
  • Leitung zum Eingang: etwa der Eingang einer 12-V-Steuerung, die bei 6 V umschaltet. Kabel und Eingang bringen zusammen rund 220 pF mit.

So funktioniert die Schaltung

Beide GPIOs low: T1 und T2 sperren. Die Leitung hängt nur am Pull-up und liegt auf 12 V. Der Eingang sieht High.

Ein GPIO high: Der zugehörige Transistor leitet und zieht die Leitung auf unter 0,1 V. Der Eingang sieht Low. Der Pull-up begrenzt den Strom auf 12 V / 4,7 kΩ ≈ 2,6 mA.

Daraus folgen die drei Eigenschaften der Schaltung:

  • Pegelwandlung: Der Mikrocontroller sieht von den 12 V nichts. Seine Pins arbeiten nur gegen Basis oder Gate. Der High-Pegel auf der Leitung ist die Spannung, an der RP hängt.
  • Invertierung: GPIO high ergibt Leitung low. Im Programm musst du das berücksichtigen.
  • Wired-AND: Die Leitung ist nur dann high, wenn alle Ausgänge loslassen. Jeder einzelne kann sie nach Masse ziehen, und weil keiner aktiv nach Plus treibt, entsteht nie ein Kurzschluss. Für Low-aktive Signale wie „Fehler“ oder „Interrupt“ wirkt das als ODER: Meldet irgendein Teilnehmer, ist die Leitung low.

Die Flanken sind ungleich. Nach Masse zieht der Transistor die Leitung mit Milliampere in wenigen Nanosekunden. Nach oben lädt nur RP die Kapazität der Leitung, und das dauert:

Spannung auf der Leitung: Abfall in wenigen Nanosekunden, Anstieg mit 4,7 kΩ in 2,27 μs von 10 auf 90 %, mit 1 kΩ in 0,48 μs; Schaltschwelle 6 V
Die fallende Flanke macht der Transistor, die steigende der Pull-up. Gerechnet mit 220 pF Leitungs- und Eingangskapazität.

Dimensionierung

1. Pull-up nach oben begrenzen: Anstiegszeit. Die Leitung lädt sich mit der Zeitkonstante τ = RP · C. Von 10 % auf 90 % braucht sie 2,2 τ:

tr = 2,2 · RP · C = 2,2 · 4,7 kΩ · 220 pF ≈ 2,3 μs

Bis zur Schaltschwelle von 6 V sind es τ · ln 2 ≈ 0,72 μs. Für Signale bis etwa 50 kHz genügt das; ein Signal mit 100 kHz hätte nur 5 μs je Halbperiode.

2. Pull-up nach unten begrenzen: Strom. Im Low-Zustand muss der Transistor den Strom durch RP aufnehmen, ohne dass seine Restspannung über die Low-Schwelle des Eingangs steigt:

Ilow = UPRP = 12 V4,7 kΩ ≈ 2,6 mA

Für den BC547B ist das wenig. R1 = 10 kΩ liefert am 3,3-V-Pin (3,3 V − 0,7 V) / 10 kΩ = 0,26 mA Basisstrom; mit hFE ≥ 200 könnte er 50 mA schalten. Seine Sättigungsspannung bleibt unter 0,1 V. Der BSS138 leitet ab 0,8 bis 1,5 V am Gate. Sein Widerstand bei 3,3 V liegt nach den typischen Kennlinien bei wenigen Ohm; selbst 10 Ω ergäben bei 2,6 mA nur 26 mV.

3. Wahl. Kleiner als 1 kΩ lohnt selten: Dann fließen 12 mA im Low-Zustand, und RP verheizt (12 V)2 / 1 kΩ = 144 mW. 4,7 kΩ sind für Steuersignale bis einige zehn Kilohertz ein guter Wert, bei langen Leitungen oder schnelleren Signalen 2,2 kΩ oder 1 kΩ.

Rechner

I²C-Pull-up-Widerstände

Rmin
967 Ω
Rmax
3,54 kΩ
Vorschlag (E12)
2,2 kΩ
Anstiegszeit damit
186 ns
Strom bei Low
1,32 mA
3,3 V70 %30 %00tr ≤ 300 ns300 nsZeit ab 30 % von VDD967 Ω2,2 kΩ3,54 kΩ

Nach NXP UM10204 (Rev. 7, Abschnitt 7.1): Rmin = (VDD − VOL,max) / IOL mit VOL,max = 0,4 V bei IOL = 3 mA, Rmax = tr / (0,8473 · Cb); 0,8473 = ln(0,7/0,3) ist die Zeit von 30 % auf 70 % in Zeitkonstanten. Der Vorschlag ist der größte E12-Wert bis 75 % von Rmax – Reserve für Toleranzen und eine zu knapp geschätzte Buskapazität. Cb schätzt du aus Pin-Kapazitäten (je Gerät etwa 5–10 pF) plus Leitung (grob 50–100 pF je Meter). Die steilste Flanke gehört zu Rmin, die flachste zu Rmax. Grenzen im Fast-mode: tr ≤ 300 ns, Cb ≤ 400 pF.

Der I²C-Bus ist das bekannteste Open-Drain-System. Mit dem Rechner kannst du dieselbe Abwägung zwischen Anstiegszeit und Low-Strom für 3,3 V oder 5 V durchspielen.

Weil die Leitung gegenüber dem Pin invertiert ist, schreibst du im Programm den umgekehrten Pegel:

const int FEHLER_OUT = 4;           // GPIO 1 → R1 → Basis T1

void meldeFehler(bool fehler) {
  // Leitung low = Fehler; dafür muss der Transistor leiten, also Pin high
  digitalWrite(FEHLER_OUT, fehler ? HIGH : LOW);
}

void setup() {
  pinMode(FEHLER_OUT, OUTPUT);
  meldeFehler(false);               // Leitung auf 12 V: alles in Ordnung
}

void loop() {
  bool zuHeiss = analogRead(A0) > 800;
  meldeFehler(zuHeiss);
  delay(100);
}

Bauteilliste

BezeichnerWert/TypHinweis
RP4,7 kΩPull-up nach +12 V, einmal pro Leitung
T1BC547BOpen-Collector, 45 V
R110 kΩBasiswiderstand
R2100 kΩhält T1 beim Booten gesperrt
T2BSS138N-Kanal, 50 V, SOT-23
R3100 ΩGate-Widerstand
R4100 kΩGate-Pull-down

Varianten

Fertige ICs. Der 74HC05 enthält sechs invertierende Open-Drain-Ausgänge für 5 V, der ULN2003 sieben Open-Collector-Darlingtons für 50 V und 500 mA, der 74LVC1G07 einen nichtinvertierenden Open-Drain-Puffer, der auch an 3,3 V mit 5-V-Pull-up arbeitet (Logikfamilien).

Im Mikrocontroller. Viele Controller können einen Pin selbst als Open-Drain betreiben, beim ESP32 etwa mit pinMode(pin, OUTPUT_OPEN_DRAIN). Der Pull-up darf dann aber nur an der eigenen Versorgung hängen, nicht an 12 V – die internen Schutzdioden würden leiten.

In beide Richtungen. Soll ein Signal auf derselben Leitung in beide Richtungen laufen, etwa bei I²C zwischen 3,3 V und 5 V, brauchst du den bidirektionalen Pegelwandler mit einem BSS138 in Gate-an-Versorgung-Schaltung. Wie der Bus beschaltet wird, zeigt I²C-Bus beschalten.

Last statt Pull-up. Ersetzt du RP durch eine LED mit Vorwiderstand oder ein Relais mit Freilaufdiode, ist der Open-Collector-Ausgang ein Schalter: der MOSFET als Low-Side-Schalter im Kleinen. Für galvanische Trennung tritt ein Optokoppler an die Stelle von T1, siehe Optokoppler-Eingang für 24 V.

Typische Fehler

  • Leitung bleibt immer low oder ist undefiniert: Der Pull-up fehlt. Ohne ihn ist ein Open-Collector-Ausgang im High-Zustand einfach offen; ein Multimeter zeigt irgendetwas zwischen 0 V und der Versorgung.
  • Signal kommt verschliffen an: RP zu groß für die Leitungslänge. Mit dem Oszilloskop siehst du die typische Haifischflosse. Pull-up verkleinern.
  • Pin wird warm oder der Controller startet nicht: Ein Pull-up nach 12 V hängt direkt an einem Pin, der selbst als Open-Drain arbeitet. Über seine Schutzdiode fließt Strom in die 3,3-V-Versorgung. Bei fremden Spannungen gehört immer ein externer Transistor dazwischen.
  • Zwei Pull-ups an derselben Leitung: Jedes Modul bringt seinen eigenen mit. Parallel ergeben drei 4,7-kΩ-Widerstände 1,6 kΩ – der Low-Strom steigt auf das Dreifache. Überzählige auslöten.
  • Logik verdreht: Die Stufe invertiert. Prüfe im Programm, ob „Pin high“ wirklich „Leitung low“ bedeuten soll.

Selbsttest

Warum gibt es keinen Kurzschluss, wenn zwei Open-Collector-Ausgänge an einer Leitung gegensätzliche Pegel wollen?

Keiner treibt aktiv nach Plus. Der eine zieht nach Masse, der andere ist offen; der Strom wird vom Pull-up begrenzt.

Wie groß ist die Anstiegszeit mit 2,2 kΩ und 220 pF?

2,2 · 2,2 kΩ · 220 pF ≈ 1,1 μs.

Welchen Pegel hat die Leitung, wenn T1 leitet und T2 sperrt?

Low; ein einziger leitender Transistor genügt.

Wie viel Strom muss der Transistor bei 24 V und 4,7 kΩ aufnehmen?

24 V / 4,7 kΩ ≈ 5,1 mA – und RP setzt dann 123 mW um.

Woran erkennst du auf dem Oszilloskop einen zu großen Pull-up?

Die fallende Flanke ist steil, die steigende rundet sich langsam ab und erreicht den High-Pegel spät oder gar nicht.