Transistoren

Mikrocontroller dienen zur Ansteuerung externer Geräte, wie LEDs, Motoren oder Ventilen usw. (so genannte Aktoren) sowie zur Abfrage von Schaltern und Sensoren. Sensoren umfassen hierbei Geräte wie Temperatur-, Luftfeuchte-, Druck- oder Kraftmesseinrichtungen. Mit den so genannten GPIO-Ports (GPIO = General Purpose Inputs and Outputs) bieten Mikrocontroller genau die Anschlüsse, die hierfür verwendet werden können. Bei ihrem Einsatz ist aber zu beachten, dass die einzelnen Anschlüsse für sich betrachtet üblicherweise nicht in der Lage sind, diese Geräte direkt anzuschließen: Die Stromaufnahme der Aktoren bzw. der von Sensoren gelieferte Strom ist im Allgemeinen deutlich höher als der Strom, der über einen GPIO-Port fließen darf. Die exakten Werte, mit denen die Anschlüsse belastet werden dürfen, können dem Datenblatt des jeweils verwendeten Mikrocontrollers entnommen werden: Sie befinden sich üblicherweise in einem Kapitel mit der Überschrift Electrical Specifications. Dies bedeutet aber nicht, dass Sie jeden GPIO-Port mit dem maximalen Strom belasten dürfen: Ebenfalls in den Electrical Specifications finden Sie eine Angabe über die maximale Belastbarkeit (der maximale Strom), den der Mikrocontroller liefern kann.

Schalten kleiner Ströme

Prinzipiell existieren zwei Möglichkeiten, externe Geräte (Verbraucher) an einen Mikrocontroller anzuschließen. Die erste Möglichkeit besteht darin, dass der GPIO-Port den Verbraucher ansteuert (treibt): Sie wird als Current Sourcing bezeichnet. Die Alternative besteht darin, dass der Verbraucher von der Versorgungsspannung getrieben wird: Sie wird als Current Sinking bezeichnet. Die beiden folgenden Abbildungen zeigen die Funktionsweise der beiden Betriebsarten als Schaltskizze.

Current Sourcing
Current Sinking

Anmerkung

Beim Current Sourcing stellt der GPIO-Port die treibende Kraft dar, das heißt, dass der Strom dem Mikrocontroller entnommen wird. Beim Current Sinking fließt der Strom, der durch den Verbraucher geleitet wird, in den Mikrocontroller hinein. In beiden Fällen wird der fließende Strom durch den Widerstand R, der mit dem Verbraucher (hier eine LED) in Reihe geschaltet ist, auf den maximal zulässigen Strom begrenzt.

Dimensionierung der Schaltung

Beiden Schaltskizzen ist zu entnehmen, dass über den Widerstand R die Spannung UR und über den Verbraucher die Spannung UF abfällt. Durch beide Komponenten, also Widerstand und Leuchtdiode, fließt der gleiche Strom, der hier mit IF bezeichnet wurde. Aus den Kirchhoffschen Gesetzen folgt, dass die Summe aller Spannungen und Ströme in einem geschlossenen Stromkreis gleich Null ist.

IF wird durch den Verbraucher (in diesem Beispiel handelt es sich um eine LED) vorgegeben und wird im Datenblatt der LED als Vorwärtsstrom bezeichnet. Der maximal zulässige Strom, der dem GPIO-Port entnommen werden kann bzw. der in den GPIO-Port hineinfließen kann ist hierbei das Maß aller Dinge: Wird der Vorwärtsstrom zu groß gewählt (z.B. bei einer sehr leuchtstarken LED), kann dies zur Zerstörung des GPIO-Ports oder sogar des gesamten Mikrocontrollers führen.

Berechnungsbeispiel

Wir treffen folgende Annahmen:

IF der Leuchtdiode beträgt 15 mA. Der Port darf in der Betriebsart Current Sourcing einen maximalen Strom von 8 mA treiben. Die Ausgangsspannung VDD am GPIO-Port beträgt 3.3 V, die Vorwärtsspannung UF der LED, bei der diese anfängt zu leuchten, beträgt 2 V. Am Widerstand R muss daher eine Spannung von

UR = VDD - UF = 3.3V - 2V = 1.3V

abfallen. Der Widerstand muss nun so dimensioniert werden, dass der maximale Strom, der dem GPIO-Port entnommen wird, 8 mA beträgt. Da der Strom in einer Reihenschaltung überall gleich ist, ist IF = IR = 8 mA. Das ohmsche Gesetz hilft uns nun dabei, den Widerstandswert von R so zu berechnen, dass dieser Strom fließt.

R = UR / IR = 1.3 V / 0.008 A = 162 Ω.

Einen solchen Widerstand werden Sie aber nicht kaufen können. In der E24-Widerstandsreihe werden Sie nur die Widerstandswerte 150 Ω und 180 Ω finden. Würden Sie sich nun für den kleineren Widerstand entscheiden, so würde ein Strom von

IR = IF = UR / R = 1.3 V / 150 Ω = 8.67 mA

fließen. Dieser Wert ist zwar nicht viel zu groß, entspricht aber nicht den Spezifikationen des Mikrocontrollers. Wir können also nur den 180-Ω-Widerstand verwenden. Der dann fließende Strom berechnet sich dann zu

IR = IF = UR / R = 1.3 V / 180 Ω = 7.22 mA.

Der Strom beträgt also weniger als die Hälfte des Maximalstroms IF, der durch die LED fließen darf. Dies bedeutet dann, dass die LED nicht in ihrer maximalen Leuchtstärke leuchtet. Ob die Helligkeit der LED ausreichend ist, müssen Sie nun selbst entscheiden. Sind Sie der Ansicht, dass die LED nicht hell genug leuchtet, so müssen Sie andere Maßnahmen ergreifen. Diese werden nachfolgend beschrieben.

Schalten größerer Ströme

In dem einfachen Berechnungsbeispiel haben Sie gesehen, dass die LED mit einem Strom betrieben wird, der weniger als 50% des zulässigen Maximalstroms beträgt. Falls die LED überhaupt leuchtet, so wird ihre Helligkeit vermutlich viel zu schwach sein und Ihren Ansprüchen möglicherweise nicht genügen. In diesem Abschnitt wird beschrieben, wie Sie durch den Einsatz von Transistoren den durch die LED fließenden Strom so erhöhen können, dass die LED in maximaler Helligkeit leuchtet und der GPIO-Port des Mikrocontrollers dennoch nicht wesentlich belastet wird: Sie werden im Gegenteil feststellen, dass der GPIO-Port des Mikrocontrollers sogar deutlich geringer belastet wird, als im Berechnungsbeispiel gezeigt wurde.

Bipolartransistoren

In diesem Abschnitt werden nur so genannte Bipolartransistoren behandelt. Mit Feldeffekttransistiren (FET) oder Darlingtonschaltungen existieren weitere Lösungsmöglichkeiten: Diese sind aber nicht Bestandteil dieses Abschnitts.

Bipolartransistoren sind als sogenannte NPN- bzw. PNP-Transistoren erhältlich. Die Funktionsweise und die Berechnung sind identisch. Es ist nur zu beachten, dass die Polarität der beiden Varianten genau entgegengesetzt ist. Aus diesem Grund erfolgt die weitere Betrachtung nur am Beispiel eines NPN-Transistors.

Anmerkung:

Der Aufbau und die Funktionsweise von Transistoren werden hier nicht erläutert. Genauere Erklärungen hierzu finden Sie in meinem Buch "ARM Cortex-M3 Mikrocontroller", in Grundlagenbüchern zu elektronischen Schaltungen (z.B. Klaus Beuth Elektronik 2, Beuth/Schmusch Elektronik 3, in Tietze/Schenk Halbleiterschaltungstechnik und vielen weiteren Büchern) sowie natürlich auch im Internet.

Die folgende Abbildung zeigt die Schaltzeichen von NPN- und PNP-Transistoren.

Schaltzeichen NPN- und PNP-Transistoren

Der NPN-Transistor als Schalter

Bipolartransistoren werden hauptsächlich für zwei Einsatzgebiete verwendet: dem Einsatz als Verstärker analoger Signale sowie als Schalter für größere Leistungen. Für die Ansteuerung externer Hardware, die, wie bereits erwähnt, häufig größere Ströme benötigt, als sie von einzelnen GPIO-Ports geliefert werden können, interessiert der Einsatz von Bipolartransistoren als Schalter: Dieses Einsatzgebiet wird im Rest dieses Artikels behandelt, auf den Einsatz von Transistoren als Verstärker wird hier verzichtet.

Das Funktionsprinzip ist sehr einfach zu verstehen. Zwischen der Basis und dem Emitter des Transistors wird eine Spannung angelegt. Liegt die Spannung unterhalb eines bestimmten Schwellwertes, so ist der Transistor gesperrt: Die Spannung zwischen Kollektor und Emitter des Transistors ist dann gleich Null. In die Kollektor-Emitter-Strecke wird der Verbraucher, also z.B. eine LED, geschaltet und hierüber mit dem Strom versorgt, der die LED (oder allgemein: den Verbraucher) treibt. Darüberhinaus ist festzuhalten, dass die mit UCE bezeichnete Spannung deutlich höher sein darf, als der GPIO-Port des Mikrocontrollers liefern kann: Zulässige Maximalwerte sind dem jeweiligen Datenblatt des Transistors zu entnehmen. Es ist aber problemlos möglich, Typen zu finden, die Spannungen zwischen 12 und 100 Volt (oder mehr) schalten können!

Wird die Spannung zwischen Basis und Emitter nun erhöht und überschreitet hierbei den erwähnten Schwellwert, so wird die Diode zwischen Basis und Emitter leitend, und es beginnt ein Strom zu fließen. Gleichzeitig kommt nun der Strom hinzu, der über die Kollektor-Emitter-Strecke fließen darf (Maximalwerte sind wieder dem Datenblatt des Transistors zu entnehmen). Der Kollektor, der an eine positive Spannungsquelle angeschlossen ist, stößt zusätzliche Protonen ab (zur Abstoßung gleicher Ladungen bzw. der Anziehung entgegengesetzter Ladungen siehe Der Gleichstromkreis). Diese zusätzlichen Protonen führen zu einem erhöhtem Stromfluss, der dazu führt, dass der Verbraucher mit einem deutlich höheren Strom betrieben werden kann, als ein GPIO-Port liefern kann. Die folgende Abbildung zeigt einen einfachen NPN-Transistor im Betrieb als Schalter.

NPN-Transistor als Schalter

Auswahl der LED und des Transistors

Anmerkung:

Der folgende Abschnitt ist ein Auszug aus meinem bereits erwähnten Buch "ARM Cortex-M3 Mikrocontroller, mitp-Verlag, 2014.

Es soll eine rote LED angesteuert werden. Das Szenario beschreibt die Produktion einer Großserie, sodass jeder gesparte Cent von Bedeutung ist. Aus Kostengründen wird daher die Kingbright-LED L-314RT ausgewählt, deren Vorwärtsstrom IF = 15 mA bei einer Vorwärtsspannung UF = 2,3 V (typischer Wert) beträgt. Entsprechend ist ein Transistor zu wählen, der mindestens einen Strom von 15 mA schalten kann. Die Wahl fällt auf einen einfachen Standard-Transistor 2N2222 der Firma CDIL (Continental Device India Limited). Der maximale Kollektorstrom dieses Transistors beträgt 800 mA: Er ist also mehr als ausreichend dimensioniert! Wenn Sie gerade in das Datenblatt des Transistors schauen, überprüfen Sie hier noch zwei weitere Werte: die Basis-Emitter-Spannung VBESAT (600 mV) und die Kollektor-Emitter-Spannung VCE (400 mV). Der minimale Wert der Stromverstärkung hFE (in Datenblättern manchmal auch als DC Current Gain bezeichnet) beträgt 75 (bei einem Kollektorstrom von 10 mA und einer Spannung UCE von 10 V). Die Stromverstärkung ist das Verhältnis von Kollektorstrom zu Basisstrom.

Hinweis

Je kleiner die Stromverstärkung eines Transistors ist, umso größer muss der Basisstrom sein, um einen bestimmten Kollektorstrom fließen zu lassen. Da der Basisstrom aber vom Mikrocontroller geliefert wird, wird dieser umso stärker belastet, je kleiner die Stromverstärkung ist. Um abschätzen zu können, ob der gewählte Mikrocontrolleranschluss den erforderlichen Strom liefern kann, wird daher die minimale Stromverstärkung für die Dimensionierung der Schaltung verwendet.

Dimensionierung des Basiswiderstandes RB

Um den Basiswiderstand RB bestimmen zu können, muss zunächst der Basisstrom berechnet werden. Aus den Angaben »gewünschter Kollektorstrom = 15mA« und der Stromverstärkung hFE = 75 errechnet sich der Basisstrom zu

IB = IC / hFE --> 16 mA / 75 = 213 µA

Aufgrund von Exemplarstreuungen des Transistors wird eine Sicherheit von ca. 30% auf den errechneten erforderlichen Basisstrom aufgeschlagen.

IB = 213 µA x 1,3 --> IB = 280µA

Der rechnerische Werte des Basisstroms beträgt also 213 µA, durch den Sicherheitsaufschlag von 30% dann 280 µA. Um mit runden Werten arbeiten zu können, wird der Basisstrom deshalb direkt auf 300 µA hochgesetzt.

Anmerkung

Ein Strom von 300 µA ist ein sehr geringer Wert! In industriellen Produktionsbetrieben kann dieser Strom aufgrund von Umwelteinflüssen zu gering sein. In jedem Einzelfall muss geprüft werden, ob sich diese Umwelteinflüsse nachteilig auf die Elektronik auswirken. Zur Erhöhung der Sicherheit ist es unter Umständen ratsam, den Basisstrom auf einen Wert von ungefähr 1 mA einzustellen.

Hinweis

Sie erkennen hier, dass der Strom, mit dem der GPIO-Port belastet wird, tatsächlich deutlich kleiner geworden ist: Statt mit dem eingangs ermittelten Strom in Höhe von ca. 7 mA wird der Port jetzt nur mit einem Strom von ca. 300 µA belastet!

Mit den bisher ermittelten Werten lässt sich nun der Basiswiderstand RB berechnen. Die Ausgangsspannung des Ports liegt bei typischen 3,3V, aus dem Datenblatt hatten Sie weiter oben bereits VBESAT mit einem Wert von 600 mV bestimmt. Nach Kirchhoff wird nun die Spannung berechnet, die über dem Widerstand RB abfallen muss:

URB = UDDIO - UBE --> URB = 3,3 V - 0,6 V = 2,7 V

Die Anwendung des ohmschen Gesetzes ergibt dann für RB

RB = URB / IB  --> RB = 2,7 V / 300 µA = 9 kΩ (9 Kiloohm)

Der nächste Wert in der Widerstandsreihe E24 ist der 9k1-Widerstand. Der Basisstrom IB verringert sich beim Einsatz dieses Widerstands auf ca. 297 µA, was innerhalb der Messgenauigkeit liegt.

Nur zur Sicherheit wird anschließend die Belastbarkeit des Widerstands ermittelt. Hierzu wird die Formel

P = I2 x R

verwendet. (300 µA)2 x 9 kΩ = 810 µW. Ein 1/8-Watt-Widerstand (die Belastbarkeit beträgt also 125 mW) ist hier also völlig ausreichend.

Dimensionierung des Kollektorwiderstands RC

Die Berechnung erfolgt nach dem gleichen Prinzip wie die Berechnung des Basiswiderstands. Sie haben sicherlich bemerkt, dass die oben gezeigte Abbildung keine Angabe zur Höhe der Versorgungsspannung VCC macht: Die maximalen Werte sind durch das Datenblatt des Transistors vorgegeben. Das Datenblatt des 2N2222 benennt eine maximale Kollektor-Emitter-Spannung VCE0 von 40 V. Im folgenden Berechnungsbeispiel wird von einer Versorgungsspannung VCC von 3,3 V ausgegangen, für Ihre eigenen Anwendungen haben Sie aber einen Spielraum bis hinauf zu 40 V.

URC = VCC - UF - UCE --> URC = 3,3 V - 2,3 V - 0,4 V = 0,6 V

RC = URC / IC --> RC = 0,6 V / 15 mA = 40 Ω

Anmerkung

Wird der Transistor beispielsweise an eine Spannungsquelle angeschlossen, die eine Spannung von 12 V liefert, so berechnet sich URC zu 12 V - 2,3 V - 0,4 V = 9,3 V. Dann muss als RC entsprechend ein Wert von 9,3 V / 15 mA = 620 Ω haben.

Die E24-Widerstandsreihe listet hier Widerstandswerte von 39Ω bzw. 43Ω auf. Da das Datenblatt der LED einen IF von 15 mA vorgibt, wählen wir den 43Ω-Widerstand und nehmen in Kauf, dass der gewünschte Strom von 15 mA nicht ganz erreicht wird (Der Strom wird auf knapp unter 14 mA begrenzt, was einer Abweichung von weniger als 10% vom gewünschten Wert entspricht).

Auch hier soll wieder die Verlustleistung ermittelt werden, für die der Widerstand ausgelegt sein muss.

P = I2 x R --> P = (14 mA)2 x 43 Ω = 8,4 mW.

Auch hier reicht also ein 1/8-Watt-Widerstand aus.

Seiteneffekte

Wenn Sie die Schaltung (ohne den Widerstand RB') nachgebaut haben, werden Sie feststellen, dass die Schaltung prinzipiell funktioniert. Aber etwas scheint noch nicht ganz in Ordnung zu sein, denn die LED leuchtet sofort nach Einschalten der Versorgungsspannung auf, obwohl der Anschluss des Mikrocontrollers, an den der Basiswiderstand angeschlossen ist, nach dem Einschalten doch als Input konfiguriert sein sollte! (Diese Angabe bezieht sich auf den Cortex-M3-Mikrocontroller AT91SAM3S4C von Atmel.)

Vorsicht

Bei einer LED kann prinzipiell nichts passieren. Wenn aber stattdessen ein Motor angeschlossen wäre, würde dieser möglicherweise unkontrolliert hochlaufen!

Es gibt verschiedene Möglichkeiten, den geschilderten Effekt zu verhindern: Eine Möglichkeit besteht darin, den im Schaltplan bereits vorgesehenen Widerstand RB' einzusetzen, der parallel zum Widerstand der Basis-Emitter-Strecke (RBE) des Transistors geschaltet wird. Ist dieser Widerstand klein gegenüber RBE, so wird der Basisstrom IB über den Widerstand RB' abfließen und nicht in die Basis des Transistors. Auf diese Weise wird das Durchschalten des Transistors verhindert, und die LED bleibt ausgeschaltet. Die zweite Möglichkeit zur Verhinderung dieses Effekts liegt in der Verwendung eines PNP-Transistors. Allerdings hat dieser Weg seine Einschränkungen: VCC (bzw. UCC) darf einen Wert von 3,3 V nicht überschreiten!

Hinweis

Tests haben gezeigt, dass das Durchschalten des Transistors ab einem Widerstandswert von RB' < 10k verhindert wurde. Im Zweifelsfall müssen Sie hier mit verschiedenen Widerständen experimentieren. Zur Sicherheit können Sie auch direkt einen Wert von 1 kΩ wählen.

Dies hat zwei Gründe:

  • Nach dem Reset sind die Pullup-Widerstände der Ports eingeschaltet (beim AT91SAM3S4C).
  • Der zweite Grund ist viel trivialer: Wenn z.B. eine Versorgungsspannung von 5 V angenommen wird, so liegt an dem Pin immer die Differenz zwischen UDDIO und VCC, also in diesem Beispiel 1,7 V. Dadurch würde der Transistor immer leiten und ließe sich gar nicht mehr abschalten!

Zusätzliche Absicherung des Mikrocontrollers

Es ist vorstellbar, dass der Transistor durch einen äußeren Einfluss so beschädigt wird, dass ein viel zu hoher Strom in den GPIO-Port hineinfließt. Dies kann den Mikrocontroller beschädigen. Die Verwendung eines zusätzlichen Optokopplers kann dies verhindern.

Optokoppler