Durstige Motoren

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 dem zwei Motoren gesteuert werden können. Er kann dauerhaft bis zu 600 mA pro Kanal zur Verfügung stellen. Hier der Plan zum Anschließen an einen Arduino:

Die Pins 4, 5, 12 und 13 sind untereinander verbunden. An einem dieser Pins muss GND anliegen. 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 und Pin 16 am L293D mit dem 5V-Pin am Arduino verbunden sein.

Die Ein- und Ausgänge zur Motorsteuerung sind:

Arduino ⇔ IN⇔ OUT Motorpin

    Pin 6 ⇔  2 ⇔   3

    Pin 9 ⇔  7 ⇔   6 

  Pin 10 ⇔ 15 ⇔  14

  Pin 11 ⇔ 10 ⇔  11 

Und so könnte das fertige bestückte Robotfahrzeug 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ückenund Dupont / Jumper Kabelkönnen bei Internetanbietern wie Roboter-Bausatz- oder Christians Technikshop gefunden werden.