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


    66 Gedanken zu „Motorsteuerung direkt per Arduino“

    1. 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

    2. 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

    3. 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.

    4. 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.

    5. Hallo
      Gibt es eine Möglichkeit mit Aduino einen Schrittmotor so an zu steuern, dass er nur 1 U/min macht.

    6. Ist selbstverständlich möglich. Einfach mit dem Aruino über einen Widerstand (300 Ohm oder mehr) ans Gate eines n-channel Mosfet gehen. Den Mosfet dann mit Source gegen Masse und an Drain den einen Pol vom Motor anschließen. Der andere Pol vom Motor kommt an die Motorbetriebsspannung (funktioniert aber so nur bei Gleichstrommotoren). Wichtig: Die Freilaufdiode parallel zum Motor nicht vergessen. Die Geschwindigkeitsregelung macht man dann per PWM mit dem anologWrite Befehl. Da die PWM-Freq. bei den Arudinos aber glaub ich nur um die 900 Hz hat, kann man das unter Umständen als Piepsen wahrnehmen. Wenn das stört, muss man von der Arduinosoftware weg und Atmelstudio nutzen.

    7. Hi,

      Interessanter Vortrag.
      Ich bin in dem Thema noch recht neu und habe daher eine Frage. Ist es möglich auch große Motoren damit zu regeln?
      Sprich das man den ESC weg lässt und alles übers Arduino macht aber so das man noch feinfühlig regeln kann.

    8. Man braucht gar keine Widerstände, nur Dioden. Wenn man den Motor hochdrehen lässt und dann abschaltet, dann kann er als Generator einen Spannung in Gegenrichtung induzieren. Die würde dem Arduino nicht gut tun.

    Die Kommentarfunktion ist deaktiviert.