Motoren direkt ansteuern

Erstellt von Viktor Reichert
Benötigtes Material
  • Arduino Uno
  • USB-Kabel für den Arduino
  • 2x Motor (N20 DC 6V 100RPM/80RPM)
  • 2x Motorhalterung
  • 4x Schraube
  • Holzbrett
Als PDF
PDF-Download
Arbeitsblatt
PDF-Download Lehrer
Lehrerblatt

Beschreibung

Der Arduino ist ein Mikrocontroller, mit dem man verschiedene technische Geräte bauen kann. Wir wollen zunächst gemeinsam einen fahrenden Roboter bauen.

Betrachten wir zunächst den Arduino selbst: Dieser hat viele verschiedene Pins, die man mithilfe von Kabeln mit Motoren, Sensoren und vielem mehr verbinden kann.

Zunächst interessieren uns folgende Pins:

Ardunio-PinFunktion
Digital I/O (0 bis 13)Steuerung von angeschlossenen Motoren, Sensoren usw.
GND“Minus-Pol” bzw. Ground
5VDauerhafte Stromversorgung (5 Volt)
Pins auf dem Arduino Uno

Verkabelung

Fertig zusammengebauter Ardunio
  • Befestige zwei Motoren mithilfe der Motorhalterungen und Schrauben an ein Holzbrett (siehe Foto). Bringe dann die Reifen an den Achse an.
    Es gibt auch eine genaue Fotoanleitung (Arbeitsschritte_Roboterfahrzeug_Fotoanleitung.pdf).

  • Verbinde einen Motor (motor_rechts) mit Pin 12 und GND.

  • Verbinde einen zweiten Motor (motor_links) mit PIN 13 und GND.

  • Verbinde deinen Arduino mit dem USB Kabel an deinen Rechner.

  • Öffne das Programm “motoren-ansteuern.ino”, um mit dem Programmieren zu starten. Du kannst aber auch das Skript unten einfach abtippen.

  • WICHTIG: Wähle unter “Werkzeuge >> PORT” den COMX mit der höchsten Zahl aus (das ist dein Arduino).

  • Lade den folgenden Code auf den Arduino hoch, indem du auf drückst. Achte dabei darauf, nicht gleichzeitig die Batterie am Arduino angeschlossen zu haben.

Code-Beispiel

// Wir geben den Pins mit Motoren Namen.
int motor_links  = 13;
int motor_rechts = 12;

// Dieser Code wird einmal beim Start des Arduinos ausgeführt.
void setup() {
  // Wir teilen dem Arduino mit, dass aus den Motorpins Strom kommen soll.
  pinMode(motor_links, OUTPUT);
  pinMode(motor_rechts, OUTPUT);
}

// Dieser Code wird immer wieder hintereinander ausgeführt.
void loop() {
  // Gib beiden Motoren Strom.
  digitalWrite(motor_links, HIGH);
  digitalWrite(motor_rechts, HIGH);

  // Warte 3 Sekunden bis zur Ausführung der nächsten Befehle.
  // ACHTUNG: Die Motoren haben weiterhin Strom,
  //          bis dem Arduino ein gegenteiliger Befehl gegeben wird.
  delay(3000);

  // Gib beiden Motoren KEINEN Strom.
  digitalWrite(motor_links, LOW);
  digitalWrite(motor_rechts, LOW);

  // Warte.
  delay(1000);
}

Aufgaben

Beschreibe, wie die Motoren sich verhalten, wenn du den obigen Code ausführst?

Der Roboter fährt drei Sekunden gerade aus und bleibt dann eine Sekunde lang stehen.

Was musst du am Code ändern, damit der Roboter länger stoppt?

Beim zweiten delay muss eine größere Zahl in die Klammern eingetragen werden.

Was passiert, wenn du bei einem Motor den GND und Zahlen-Pin vertauscht?

Der Motor wechselt die Fahrtrichtung.

Wie kannst du das Fahrzeug zuerst geradeaus und dann eine Kurve fahren lassen? Probiere deine Idee aus!

Es gibt verschiedene Möglichkeiten das zu lösen

  • Ändere die Zeile digitalWrite(motor\_right, LOW); zu digitalWrite(motor\_right, HIGH);
  • Oder ändere die Zeile digitalWrite(motor\_right, LOW); zu digitalWrite(motor\_left, HIGH);

Kannst du Dein Fahrzeug so programmieren, dass es 2m vorwärtsfährt, eine Kurve fährt und dann genau am Startpunkt wieder ankommt?

Ändere den Code, damit er eine Kurve fährt (s. o.) und passe die Zeit vom letzten delay an, sodass eine 180° Kurve gefahren wird. Passe die Zeit vom ersten ‘delay’ an, sodass 2 Meter gefahren werden.

Denke dir einen interessanten Parcours aus und programmiere diesen!

Das Material und dessen Inhalte sind - sofern nicht anders angegeben - lizenziert unter der Creative Commons Lizenz CC BY-NC-SA 4.0 (für den vollständigen Lizenztext siehe https://creativecommons.org/licenses/by-sa/4.0/legalcode )