Menü Schließen

Das Arduino-Board kann über seine Ausgänge nur kleine Ströme (20 – 40 mA) bereitstellen. Sollen Motoren angeschlossen werden, die mehr Strom benötigen, muss die Versorgung direkt von der Stromquelle erfolgen und das Ein- und Ausschalten über externe Schalter realisiert werden. Für solche Schaltvorgänge ist der Transistor „TIP 120 STM“ geeignet. Das Schalten geht über drei Anschlüsse: Gate (Tor), Drain (Auslass) und Source (Quelle).

Im Anschlussplan unten versorgt der 9V Block sowohl das Board als auch den Motor mit Strom. Der Arduino muss also nur zur Programmierung mit dem Computer verbunden sein. 

Wie die Abbildung oben zeigt, ist der Minuspol des 9V Blocks mit GND, der Pluspol mit einem Pin des Motors und Vin am Arduino verbunden. Das Gate des Tansistors ist mit Pin13, Drain ist mit dem Motor und Source mit GND verbunden. 

Zum Ausprobieren eignet sich das Programm „Blink“, das in der Arduino-Software als Beispiel geliefert wird. Immer wenn Pin13 auf „HIGH“ gesetzt wird, werden Drain und Source kurzgeschlossen: Strom fließt, der Motor läuft an.

Genügt es nicht, Motoren nur an- und auszuschalten, sondern soll auch auf die Drehrichtung Einfluss genommen werden, wird ein Motorentreiber benötigt. Bewährt hat sich der L293D, mit zwei H-Brücken, die das Steuern von Motoren ermöglichen.

L293D Schaltschema

Der L293D kann dauerhaft bis zu 600 mA pro Kanal zur Verfügung stellen, was auch für leistungshungrige Motoren hinreichend sein sollte. Die mittleren 4 Pins (4, 5 und 12, 13) sind aus kühlungstechnischen Gründen miteinander verbunden, wobei einer in Kontakt mit GND stehen muss ist. Die übrige Verdrahtung kann an der folgenden Übersicht und den anschließenden Erklärungen nachvollzogen werden:

Der 9V Block versorgt das Arduino-Board und den L293D mit Strom. Dazu muss der Batterie-Pluspol mit Pin 8 am L293D und mit Vin am Arduino, der Batterie-Minuspol mit einem der Pins 4, 5, 12 oder 13 am L293D und mit GND am Arduino verbunden sein. Pin 16 des L293D wird mit dem 5V-Pin am Arduino zusammengeführt. In diesem Beispiel dienen die Pins 6, 9, 10 und 11 des Arduino als Steuerleitungen. Sie sind verbunden (in der genannten Reihenfolge) mit den Pins 2, 7, 15 und 10 am L293D.

Realisierung der Anschlüsse zwischen Motoren, Treiber und Arduino Nano mithilfe eines Breadboards.

In dieser Zusammenstellung können zwei Motoren vollumfänglich gesteuert werden. Das heißt, sie können gestartet und gestoppt werden sowie vor- und rückwärts laufen.

Wie ein Fahrzeug mit einer solchen Ausstattung programmiert werden kann zeigt der folgende Beispielcode. Mit ihm fährt das Fahrzeug ein Stück geradeaus, dreht auf der Stelle und kommt zum Ausgangspunkt zurück.

 void setup() {
  pinMode(6, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT); 
  pinMode(11, OUTPUT); 
  
  analogWrite(6, 150);
  digitalWrite(9, LOW);
  analogWrite(10, 150); 
  digitalWrite(11, LOW);
  delay(3000); //beide Motoren 3s gleichsinnig mit regulierten Drehzahlen
  digitalWrite(6, LOW);
  digitalWrite(10, LOW);
  delay(500); // beide Motoren stoppen kurz
  analogWrite(9, 150); 
  analogWrite(10, 150);
  delay(400); // Motoren drehen gegensinnig (auf der Stelle wenden)
  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
  delay(500); //beide Motoren stoppen kurz

  analogWrite(6, 150); 
  analogWrite(10, 150);
  delay(3000); //beide Motoren 3s gleichsinnig mit regulierten Drehzahlen 
  digitalWrite(6, LOW); 
  digitalWrite(10, LOW);
  } 
void loop() {  
} 

Und so könnte das fertige bestückte Fahrzeug aussehen:

Als Untersatz dient ein 9 x 14 cm großes Sperrholzbrettchen, das Platz bietet für zwei Getriebemotoren mit den dazugehörigen Rädern und ein Breadboard. Arduino Nano und Motorentreiber können dort mit ihren Stiften eingesteckt werden.

Eine Tischtennisballhälfte an der Unterseite hält das Fahrzeug in der Waage. 

Programmierbeispiel:

Ein „HIGH“ zusammen mit dem Befehl „digitalWrite“ macht einen Pin zum Pluspol, ein „LOW“ zum Minuspol. Mit zwei programmierbaren Pins können Motoren nicht nur an- und abgeschaltet sondern auch für den Vor- und Rücklauf programmiert werden.

Die Drehzahlen der Motoren können mit dem Befehl „analogWrite“ beeinflusst werden. Die Werte können zwischen 0 (Stillstand) und 255 (höchstmögliche Drehzahl) variieren.

Mit dem nachfolgenden Programmierung fährt das Fahrzeug mit reduzierter Geschwindigkeit ein Stück weit geradeaus, stoppt, vollführt eine180-Grad-Drehung auf der Stelle, stoppt erneut, fährt dann zurück und hält an.

 void setup() {
  pinMode(6, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT); 
  pinMode(11, OUTPUT); 
  
  analogWrite(6, 150);
  digitalWrite(9, LOW);
  analogWrite(10, 150); 
  digitalWrite(11, LOW);
  delay(3000); //beide Motoren 3s gleichsinnig mit regulierten Drehzahlen
  digitalWrite(6, LOW);
  digitalWrite(10, LOW);
  delay(500); // beide Motoren stoppen kurz
  analogWrite(9, 150); 
  analogWrite(10, 150);
  delay(400); // Motoren drehen gegensinnig (auf der Stelle wenden)
  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
  delay(500); //beide Motoren stoppen kurz

  analogWrite(6, 150); 
  analogWrite(10, 150);
  delay(3000); //beide Motoren 3s gleichsinnig mit regulierten Drehzahlen 
  digitalWrite(6, LOW); 
  digitalWrite(10, LOW);
  } 
void loop() {  
} 

Der Baustein „L293D“ und der Transistor TIP 120 STM können kostengünstig bei der Firma Reichelt erworben werden.

Nano,  Reifen inkl. GetriebemotorBreadboardSteckbrücken und Dupont / Jumper Kabel können bei Internetanbietern wie Roboter-Bausatz- oder Christians Technikshop gefunden werden.

Folgekapitel (Lichtsensor) >>>