Bis hierher hat sich eigentlich noch nicht viel bewegt auf deinem Breadboard, oder? Deshalb wird es jetzt für Motoren. Wir beginnen mit dem Gleichstrom-Motor. In dieser Lektion erfährst du, wie du ihn anschließt und verwendest.
Orientiere dich beim Aufbau an folgender Skizze. Da Gleichstrom-Motoren verhältnismäßig viel Strom benötigen, empfiehlt es sich, hierfür nicht nur den Arduino zu nutzen, sondern eine externe Stromquelle zu verwenden. Ebenso besteht die Gefahr, dass vom Motor auch Strom zurück in den Microcontroller fließt, was ihn beschädigen kann. Deshalb kommt hier als externe Stromquelle der Aufsatz für das Breadboard zum Einsatz.
Auf dem Breadboard findest du außerdem ein weiteres Bauteil, das du bisher im Kurs noch nicht verwendet hast: die H-Brücke L293D. Das ist eine sogenannte integrierte Schaltung (kurz IC für integrated circuit). Im inneren des Bauteils befinden sich zahlreiche Schaltkreise und Transistoren, die dir so manches Projekt vereinfachen. Ohne diese H-Brücke müsstest du den IC auf deinem Breadboard nachbauen – wofür vermutlich der Platz des ganzen Breadbaords draufgehen würde.
Achte beim Einbau der H-Brücke darauf, dass du sie mittig über den “Spalt” deines Breadboards setzt. Auch die Richtung ist wichtig. Der IC hat auf einer Seite eine Kerbe – diese muss für den obigen Aufbau nach links schauen.
Um den Gleichstrom-Motor betreiben zu können, benötigst du also zwei Stromquellen: Eine für den Arduino, also z.B. ein USB-Kabel. Vom Arduino erhält der Motor seine Befehle. Betrieben wird er jedoch vom Breadboard-Aufsatz. Diesen kannst du entweder ebenfalls mit einem USB-Kabel oder einer 9V-Batterie mit Strom versorgen.
___STEADY_PAYWALL___
Der passende Sketch
Beginnen wir mit einem einfachen Versuch. Du startest den Motor mit voller Geschwindigkeit und lässt ihn laufen. Kopiere dir hierfür den folgenden Sketch und lade ihn auf deinen Arduino.
#define ENABLE 5
#define DIRA 3
#define DIRB 4
void setup() {
pinMode(ENABLE,OUTPUT);
pinMode(DIRA,OUTPUT);
pinMode(DIRB,OUTPUT);
}
void loop() {
digitalWrite(ENABLE,HIGH);
digitalWrite(DIRA,HIGH);
digitalWrite(DIRB,LOW);
}
Hier legst du zunächst die drei Pins fest, mit denen dein Arduino über die H-Brücke den Motor steuert. Über Pin 5 (Enable) “startest” du den Motor. Über die Pins 3 und 4 kannst du ihm die Drehrichtung vorgeben.
Im obigen Beispiel beginnt der Motor sich in eine Richtung (DIRA für Direction A) zu drehen – und ändert daran auch nichts. Du setzt DIRA auf HIGH und entsprechend die andere Richtung DIRB auf LOW.
Richtungswechsel
Du kannst den Motor aber auch in die andere Richtung drehen lassen. Passe den Loop z.B. wie folgt an.
void loop() {
digitalWrite(ENABLE, HIGH);
digitalWrite(DIRA, HIGH);
digitalWrite(DIRB, LOW);
delay(500);
digitalWrite(DIRA, LOW);
digitalWrite(DIRB, HIGH);
delay(500);
}
Nun wechselt der Motor alle halbe Sekunde die Richtung – zunächst dreht er in Richtung A und nach einer kurzen Pause in Richtung B.
Verschiedene Geschwindigkeiten
Du kannst nicht nur die Richtung wechseln, sondern auch die Geschwindigkeit. Tausche den Loop in deinem Sketch für einen kleinen Test durch folgenden aus.
void loop() {
analogWrite(ENABLE, 255);
digitalWrite(DIRA, HIGH);
digitalWrite(DIRB, LOW);
delay(2000);
analogWrite(ENABLE, 180);
delay(2000);
analogWrite(ENABLE, 128);
delay(2000);
analogWrite(ENABLE, 50);
delay(2000);
analogWrite(ENABLE, 128);
delay(2000);
analogWrite(ENABLE, 180);
delay(2000);
analogWrite(ENABLE, 255);
delay(2000);
digitalWrite(ENABLE, LOW);
delay(2000);
}
Hier “startest” du den Motor diesmal mit der Funktion analogWrite() und gibst ihr als Parameter die Geschwindigkeit mit. Die 255 ist hierbei die Höchstgeschwindigkeit, die nun per Pulsweitenmodulation vorgegeben wird. Im Zwei-Sekundentakt fährst du Geschwindigkeit nun in mehreren Schritten herunter, um sie dann langsam wieder zu erhöhen. Am besten kannst du die Geschwindigkeiten erkennen, wenn du einen kleinen Rotor oder Ventilator auf den Motor setzt.
Apropos Ventilator. In der nächsten Lektion baust du dir mit dem Gleichstrom-Motor einen Ventilator, der anspringt, wenn es in deinem Zimmer zu warm wird. 🙂