Zum Inhalt springen
Arduino Motor direkt

Motorsteuerung direkt per Arduino

    Simple Motorsteuerung

    Da das Arduino-Board nur sehr kleine Ströme pro DigitalOut zulässt, können so nur sehr kleine Motoren (z.B. Vibrationsmotoren aus Handys) gesteuert werden.

    Um größere Motoren zu steuern, gibt es eine Reihe von Optionen:

    Stepper-Motoren:

    DC-Motoren


    Weiter im Text: Das erste Beispiel zeigt den einfachsten Fall, wie ein Motor an das Arduino angeschlossen werden kann. Die Diode schützt das Arduino-Board vor Induktionsströmen. Der Motor kann sich nur in eine Richtung und mit einer Geschwindigkeit drehen. Zum Testen lässt sich der Blink-Code verwenden (Arduino>File>Examples>Digital>Blink).


    Sieh dir jetzt meinen neuen Arduino-Videokurs an: Jetzt ansehen!


    Im zweiten Beispiel ist der Motor an zwei Outputs angeschlossen. Damit lässt sich der Motor in beide Richtungen drehen. Die Geschwindigkeit lässt sich über die PWM-Kanäle regulieren. Bei dieser Schaltung sind vier Dioden nötig. In der Tabelle sind die möglichen Schaltzustände aufgeführt. LOW bedeutet GND, HIGH bedeutet 5V+.

    Digital 2Digital 3Motor
    LOWLOWStop
    LOWHIGHlinks
    HIGHLOWrechts
    HIGHHIGHStop
    LOWanalogWrite(Pin, 122);langsam links
    HIGHanalogWrite(Pin, 122);langsam rechts

    Der Code zum Testen sieht so aus:

    int motorPin1=2;
    int motorPin2=3; // PWM
    
    void setup(){
      pinMode(motorPin1,OUTPUT);
      pinMode(motorPin2,OUTPUT);
    }
    
    void motorStop(){
      digitalWrite(motorPin1,LOW);
      digitalWrite(motorPin2,LOW);
      delay(500);
    }
    
    void loop(){
      motorStop();                    // Motor Stop
    
      digitalWrite(motorPin1,HIGH);   // Motor Vor
      digitalWrite(motorPin2,LOW);
      delay(1000);
    
      motorStop();                    // Motor Stop
    
      digitalWrite(motorPin1,LOW);    // Motor Rueck
      digitalWrite(motorPin2,HIGH);
      delay(1000);
    
      motorStop();                    // Motor Stop
    
      digitalWrite(motorPin1, LOW);   // Motor langsam zu schnell
      for (int i=0; i<255; i++){
        analogWrite(motorPin2, i);
        delay(20);
      }
      motorStop();                    // Motor Stop
    }

    Wenn dir das Projekt gefallen hat und du von weiteren interessanten Projekten inspiriert werden willst, sieh dir doch mal mein neues E-Book »Arduino Projekte Volume 1« an!

    • Die beliebtesten Arduino-Projekte von StartHardware
    • Inklusive Schaltplan, Beschreibung und Code
    • Arduino-Schnellstart-Kapitel
    • Kompakter Programmierkurs


    0 0 votes
    Article Rating
    66 Comments
    Newest
    Oldest Most Voted
    Inline Feedbacks
    Alle Kommentare anzeigen
    Hannes
    7 Jahre zuvor

    Also was ich nicht ganz verstehe ist das 2. Schaltbild. Meiner Meinung nach sollte das einen Kurzschluss geben da ja die 5V doch direkt mit GND verbunden sind oder nicht? Wie kommt es dann, dass der Motor sich bewegt. So weit wie ich informiert bin sollte der Strom doch den Weg des kleinsten Widerstandes gehen und der wäre ja dann der direkte weg zum GND?!

    Thomas
    8 Jahre zuvor

    @RALF : Du schreibst:
    „Meiner Meinung nach soll man wenn man keine Ahnung hat einfach die Finger davon lassen. “
    Das gilt auch für das Kopieren von Sourcecode. Wer noch nicht mal einfache Syntaxfehler beheben kann verdient halt nun mal keine Eins…

    8 Jahre zuvor

    Meiner Meinung nach soll man wenn man keine Ahnung hat einfach die Finger davon lassen. ich sitze hier in der Schule und will die Kacke hier kopieren damit ich eine °°°°°°°°°°°°° Eins bekomm.
    ALSO KOPIERE ICH DES HIER UND WAS WIRD ANGEZEIGT? EINE FEHLERMELDUNG!!! Anscheinend wird ein IT nicht erklärt.
    UND SOWAS DANN INS NETZ STELLEN? MANN WAS SOLL DAS?

    Peter
    8 Jahre zuvor

    Tut mir leid für den falschen Ausdruck.
    Ich brauche eine Regelung.
    Kannst du mir einen speziellen mosfet empfehlen?

    Peter Plus
    8 Jahre zuvor

    Hallo, was benötige ich um einen Gleichstrommotor 36V und ungefähr 27A mit dem arduino zu steuern?

    LG

    Sirius
    8 Jahre zuvor

    Danke!

    Thomas
    8 Jahre zuvor

    Hallo,
    natürlich kann man mit einem Arduino auch Waschmaschinenmotoren o.ä. steuern. Im einfachsten Fall durch ein Relais (Frage mal Tante Google nach „arduino relais kaufen“). Das „stufenlose“ Regeln von großen Wechselstrommotoren ist ein Thema für Experten. Dem Laien rate ich dringend davon ab, irgendwelche wilden Schaltungen mit 220V zusammenzubasteln. Da können sonst auch mal schnell die 220V am Arduino anliegen. Netzspannung kann tödlich sein!

    Grüße
    Thomas

    Sirius
    8 Jahre zuvor

    Hi, gibt es per Arduino gar keine Möglichkeit, einen größeren Motor, z.B. Einer Waschmaschine, anzusteuern? Eventuell durch Anbauteile? Sorry, bin ein Elektronik-Nobody…

    Gruß

    Sirius

    Thomas
    8 Jahre zuvor

    Natürlich ist das möglich einen Schrittmotor so anzusteuern, dass er 1 Umdrehung/min macht: Wenn der Motor 200 Schritte/U macht, dann muss man ihn alle 5ms einen Schritt machen lassen. Dafür ist er ein Schrittmotor.

    Thomas
    8 Jahre zuvor

    Natürlich ist das möglich einen Schrittmotor so anzusteuern, dass er 1 U/min macht: Wenn der Motor 200 Schritte/U macht, dann muss man ihn alle 5ms einen Schritt machen lassen. Dafür ist er ein Schrittmotor.