Arduino: Transistor als Schalter
Transistor
Wenn wir von einem "Transistor" sprechen, dann ist zumeist ein bipolarer Transistor gemeint. Transistoren bestehen aus Halbleitern, dass heisst sie können leitend oder auch sperrende Eigenschaften besitzen. Diese Eigenschaften werden genutzt um den Transistor als eine Art "Schalter" zu verwenden. Er ermöglicht es, größere Lasten mit kleinen zu schalten. Dies kann zum Beispiel sehr nützlich sein, wenn mit dem Arduino Board ein größeres Relais, ein Motor usw. geschaltet werden soll.
Man kann sich den Transistor wie einen Schalter vorstellen. Wenn der Schalter betätigt wird, so fliesst der Strom. Wird der Schalter dagegen losgelassen, so fliesst kein Strom mehr. Der Transistor besitzt drei Anschlüsse: Base, Emitter und Collector. Mit der Spannung an der Base-Emitter wird die Strecke Collector–Emitter geschaltet. Die Beschaltung eines Transistors hängt von seinem Typ ab. Es gibt im wesentlichen zwei unterschiedliche Arten von Transistoren: NPN und PNP Transistoren. Generell gilt: Es muss unbedingt die Stromrichtung (Collector-Emitter) beachtet werden, da ansonsten der Transistor beschädigt werden könnte. Meistens werden NPN Transistoren verwendet, deswegen soll dessen Funktionsweise im folgenden verdeutlicht werden. Hier eine Zeichnung aus dem
Datenblatt des TIP 122, die verdeutlicht, wo Base, Emitter und Collector herausgeführt werden.
In der folgenden Darstellung werden der Stromfluss (I/rot) und der Spannungsfluss (U/blau) welche am Transistor anliegen visualisiert. Wichtig: Für eine korrekte Funktionsweise immer einen Basiswiderstand (RB) und eine Last benötigt.
UCE = Kollektor-Emitter-Spannung
UE = Steuerspannung
UBE = Basis-Emitter-Spannung (Schwellwert)
IC = Kollektorstrom / Verbraucherstrom
IB = Basisstrom
RB = Basiswiderstand
Der Transistor als Schalter:
Die häufigste Verwendung findet der Transistor in der Schaltung höherer Lasten – da die meisten Mikrocontroller in ihrer Ausgangsleistung begrenzt sind. Das Arduino kann pro Ausgang z.B. eine Last von 5V bei 20mA schalten. Dies reicht für LED's und auch ein kleines Vibrationsmodul kann direkt an das Arduino angeschlossen werden. Wird jedoch ein Ventilator, eine High-Power-LED, ein Solenoid, ein Motor, usw. angeschlossen benötigt man unbedingt eine Transistorschaltung. Der Transistor wirkt in diesem Fall ähnlich wie ein Relais: Er schaltet höhere Lasten mit kleineren Lasten. Grundsätzlich muss unterschieden werden zwischen dem Schalten von nicht-induktiven Lasten (z.B. LED) und induktiven Lasten (z.B. Ventilator, Relais, Motor).
Schalten einer nicht-induktiven Last:
Für das Schalten einer nicht-induktiven Last ist die Transistorschaltung sehr einfach aufzubauen. Man benötigt lediglich einen NPN Transistor (hier TIP 122) und einen Vorwiderstand in der Strecke IB (1 kOhm). Der Schaltplan sieht folgendermassen aus:
R1 = 1 kOhm (Richtwert)
Transistor = TIP 122
Beispiel
In diesem Beispiel wollen wir den RGB LED Streifen zum leuchten bringen, sowie dessen Helligkeit regeln. Laut Beschriftung und Datenblatt benötigt der Streifen 12V Versorgungsspannung – entsprechende Widerstände sind bereits vorhanden und fest auf dem Streifen verlötet. Um diese Schaltung zu realisieren benötigen wir also eine 12V Spannungsquelle (Netzteil), pro Kanal einen Transistor (TIP 122 NPN), pro Kanal einen Widerstand (1kOhm) und das Arduino.
Folgender Aufbau wird zum ansteuern einer Farbe (hier Rot) benötigt...
Das Arduino programmieren wir mit folgendem Beispiel Code, welcher den roten Kanal hin und her fadet.
#define RED_LED 11 // PWM fähiger PIN
void setup()
{
pinMode(RED_LED, OUTPUT);
}
void loop()
{
for(int i=0; i<255; i++)
{
analogWrite(RED_LED, i); // Den Wert i an RED_LED setzen
delay(10);
}
for(int i= 255; i>0; i--)
{
analogWrite(RED_LED, i); // Den Wert i an RED_LED setzen
delay(10);
}
}
Aufgaben
1. Erweitert die zuvor entwickelte Schaltung so weiter, dass alle drei Kanäle des RGB LED Streifens unterschiedlich angesteuert werden können.
2. Programmiert einen Farbwechsel welcher zwischen Rot, Grün und Blau fadet (Logik: Aus>Rot>Grün>Blau>Aus).
#define RED_LED 11 // PWM fähiger PIN
#define GRN_LED 10 // PWM fähiger PIN
#define BLU_LED 9 // PWM fähiger PIN
void setup()
{
pinMode(RED_LED, OUTPUT);
pinMode(GRN_LED, OUTPUT);
pinMode(BLU_LED, OUTPUT);
}
void loop()
{
for(int i=0; i<255; i++)
{
analogWrite(RED_LED, i); // Den Wert i an RED_LED setzen
delay(10);
}
for(int i= 255; i>0; i--)
{
analogWrite(RED_LED, i); // Den Wert i an RED_LED setzen
analogWrite(GRN_LED, (-1)*(255-i)); // Den Wert i umkehren und an GRN_LED setzen
delay(10);
}
for(int i= 255; i>0; i--)
{
analogWrite(GRN_LED, i); // Den Wert i an RED_LED setzen
analogWrite(BLU_LED, (-1)*(255-i)); // Den Wert i umkehren und an BLU_LED setzen
delay(10);
}
for(int i= 255; i>0; i--)
{
analogWrite(BLU_LED, i); // Den Wert i an RED_LED setzen
delay(10);
}
}
Weitere Informationen
Make Presents: The Transistor
Bipolarer Transistor – Erklärung im Elektronik Kompendium
Der Transistor als Schalter – Erklärung der Funktionsweise im Elektronik Kompendium