Willkommen auf unserem Seminar-Blog

Immer auf dem aktuellen Stand bleiben

Dieser Seminar-Blog befindet sich noch im Aufbau und wird in den kommenden Tagen entsprechend verfeinert.

Member Login

Lost your password?

Registration is closed

Sorry, you are not allowed to register by yourself on this site!

You must either be invited by one of our team member or request an invitation by email at viad.info {at} zhdk {dot} ch.

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