Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Arduino Servo-Motor Steuerung: Schritt-für-Schritt Anleitung

Einführung

In diesem Tutorial lernen Sie, wie Servomotoren funktionieren und wie man sie mit Arduino steuert. Servos sind in Arduino-Projekten sehr beliebt, da sie einfach anzusteuern sind und präzise Positionen ermöglichen.

Typische Anwendungen: Robotik, Automatisierung, RC-Modelle. Ich habe sie in vielen Projekten genutzt:

Video ansehen oder schriftliches Tutorial unten lesen. Enthält Verdrahtung, Codes und Anleitung für Mehrfach-Servo-Steuerung mit PCA9685 PWM-Treiber.

Was ist ein Servomotor?

Ein Servomotor ist ein geschlossenes Regelkreissystem, das Positionsrückführung nutzt, um Bewegung und Endposition zu kontrollieren. Hauptmerkmal: präzise Wellenpositionierung.

Arduino Servo-Motor Steuerung: Schritt-für-Schritt Anleitung

Industrielle Servos nutzen hochpräzise Encoder, Hobby-/RC-Servos meist ein einfaches Potentiometer. Die Ist-Position wird mit der Soll-Position verglichen; der Regler korrigiert über eine H-Brücke die Motordrehung bis Abweichung ≈ 0.

Arduino Servo-Motor Steuerung: Schritt-für-Schritt Anleitung

Dieses Tutorial fokussiert auf Hobby-Servos: Funktionsweise und Arduino-Steuerung.

Arduino Servo-Motor Steuerung: Schritt-für-Schritt Anleitung

Hobby-Servos sind kleine Aktuatoren für RC-Autos, Boote, Flugzeuge. Auch in Robotik-Prototyping (Roboterarme, bio-inspirierte Roboter, Humanoide) verbreitet.

Arduino Servo-Motor Steuerung: Schritt-für-Schritt Anleitung

Wie funktionieren Servomotoren?

Vier Hauptkomponenten im Hobby-Servo:

Arduino Servo-Motor Steuerung: Schritt-für-Schritt Anleitung

Steuerung: Pulssignal (50 Hz → alle 20 ms ein Puls). Pulsbreite bestimmt Winkel (typisch 180° mechanischer Anschlag).

Arduino Servo-Motor Steuerung: Schritt-für-Schritt Anleitung

Min/Max können je Hersteller abweichen.

Beliebte RC/Hobby-Servos für Arduino

Wichtige Kriterien: Drehmoment, Betriebsspannung, Stromaufnahme, Größe. Zwei Klassiker:

Arduino Servo-Motor Steuerung: Schritt-für-Schritt Anleitung

SG90 Micro Servo – Technische Daten

Stall-Drehmoment1,2 kg·cm @ 4,8 V / 1,6 kg·cm @ 6 V
Betriebsspannung3,5 – 6 V
Leerlaufstrom100 mA
Stallstrom650 mA
Max. Geschwindigkeit60° in 0,12 s
Gewicht9 g

MG996R Servo – Technische Daten

Stall-Drehmoment11 kg·cm @ 4,8 V / 13 kg·cm @ 6 V
Betriebsspannung4,8 – 7,2 V
Leerlaufstrom220 mA @ 4,8 V / 250 mA @ 6 V
Stallstrom650 mA (Original: bis 2,5 A!)
Max. Geschwindigkeit60° in 0,20 s
Gewicht55 g

Arduino Servomotor Steuerung

Praxisbeispiel mit MG996R (hohes Drehmoment, Metallgetriebe). Wichtig: Separate Stromversorgung nötig! Arduino 5 V Pin liefert max. 500 mA (USB) bis 1 A (Netzteil) – Servo kann deutlich mehr ziehen.

Arduino Servo-Motor Steuerung: Schritt-für-Schritt Anleitung

Schaltplan

Arduino Servo-Motor Steuerung: Schritt-für-Schritt Anleitung

Kleinerer SG90 kann direkt an Arduino 5 V (Vorsicht: Stallstrom ~500–700 mA). Empfehlung: Immer externe Versorgung für stabilen Betrieb.

Arduino Servo-Motor Steuerung: Schritt-für-Schritt Anleitung

Benötigte Bauteile

Servo Motor Arduino Code

Variante 1: Manuelle 50 Hz Puls-Erzeugung (ohne Library)

/* Servo Motor Control - 50Hz Pulse Train Generator
 * by Dejan, https://howtomechatronics.com
 */
#define servoPin 9

void setup() {
  pinMode(servoPin, OUTPUT);
}

void loop() {
  // Ein Puls alle 20 ms
  digitalWrite(servoPin, HIGH);
  delayMicroseconds(1450); // Pulsdauer µs (1450 ≈ 90°)
  digitalWrite(servoPin, LOW);
  delayMicroseconds(18550); // Rest bis 20 ms
  // Getestete Werte: 600 µs=0°, 1450 µs=90°, 2300 µs=180°
}

Variante 2: Arduino Servo Library (empfohlen)

/* Servo Motor Control using Arduino Servo Library
 * by Dejan, https://howtomechatronics.com
 */
#include <Servo.h>
Servo myservo;

void setup() {
  myservo.attach(9, 600, 2300); // Pin, Min-Puls(µs), Max-Puls(µs)
}

void loop() {
  myservo.write(0);   delay(1000);
  myservo.write(90);  delay(500);
  myservo.write(135); delay(500);
  myservo.write(180); delay(1500);
}

attach(pin, min, max) erlaubt Anpassung der Pulsbreiten an den jeweiligen Servo. write(winkel) setzt Position 0–180°.

Mehrere Servomotoren mit Arduino steuern

Die Servo-Bibliothek unterstützt bis zu 12 Servos (meiste Boards) bzw. 48 (Arduino Mega). Steuerung ist genauso einfach:

Arduino Servo-Motor Steuerung: Schritt-für-Schritt Anleitung
/* Controlling multiple servo motors with Arduino
 * by Dejan, https://howtomechatronics.com
 */
#include <Servo.h>
Servo servo1, servo2, servo3, servo4, servo5;

void setup() {
  servo1.attach(8); servo2.attach(9); servo3.attach(10);
  servo4.attach(11); servo5.attach(12);
}

void loop() {
  // Alle auf 0°
  servo1.write(0); servo2.write(0); servo3.write(0);
  servo4.write(0); servo5.write(0); delay(2000);
  // Alle auf 90°
  servo1.write(90); servo2.write(90); servo3.write(90);
  servo4.write(90); servo5.write(90); delay(2000);
  // Alle auf 180°
  servo1.write(180); servo2.write(180); servo3.write(180);
  servo4.write(180); servo5.write(180); delay(2000);
}

Beispiel: Mein Arduino Ameisen-Hexapod nutzt Arduino Mega für 22 Servos.

Arduino & PCA9685 PWM/Servo-Treiber

Für noch mehr Servos: PCA9685 – 16-Kanal 12-Bit PWM/Server-Treiber über I²C. Ein Arduino kann bis zu 62 Treiber kaskadieren → theoretisch 992 Servos an nur 2 Pins (SDA/SCL).

Arduino Servo-Motor Steuerung: Schritt-für-Schritt Anleitung

Adresswahl über 6 Lötbrücken (A0–A5):

Arduino Servo-Motor Steuerung: Schritt-für-Schritt Anleitung

Schaltplan

Arduino Servo-Motor Steuerung: Schritt-für-Schritt Anleitung

Wieder: Separate Servo-Stromversorgung nötig!

Benötigte Bauteile

Arduino & PCA9685 Code

Bibliothek: PCA9685-Arduino (GitHub)

/* Servo Motor Control using Arduino and PCA9685 Driver
 * by Dejan, https://howtomechatronics.com
 */
#include <Wire.h>
#include "PCA9685.h"

PCA9685 driver;
// 12-bit = 4096 Schritte
// 0,5 ms (2,5% von 20 ms) → 102 Schritte
// 2,5 ms (12,5%) → 512 Schritte
PCA9685_ServoEvaluator pwmServo(102, 470); // -90° bis +90° (angepasst)

void setup() {
  Wire.begin();
  Wire.setClock(400000); // 400 kHz I²C
  driver.resetDevices();
  driver.init(B000000); // Adresse A5-A0 = 0
  driver.setPWMFrequency(50); // 50 Hz
}

void loop() {
  driver.setChannelPWM(0, pwmServo.pwmForAngle(-90)); delay(1000);
  driver.setChannelPWM(0, pwmServo.pwmForAngle(0));   delay(1000);
  driver.setChannelPWM(0, pwmServo.pwmForAngle(90));  delay(1000);
}

Erklärung: ServoEvaluator(min, max) mappt Winkel auf PWM-Schritte. Unterschiedliche Servos → eigene Evaluator-Instanzen mit angepassten Min/Max/Nullpunkt.

Viele Servos mit mehreren PCA9685

Treiber kaskadieren, Adressen setzen, je Treiber ein PCA9685-Objekt erstellen. Code analog – nur mehrere Driver-Instanzen mit verschiedenen I²C-Adressen.

Arduino Servo-Motor Steuerung: Schritt-für-Schritt Anleitung

Fehlerbehebung (Troubleshooting)

Servo zittert / setzt Arduino zurück

Ursache: Hoher Strombedarf beim Anlauf/Last → Arduino-Spannung bricht ein. Lösung: Elko (z. B. 470–1000 µF) parallel zu Servo-Versorgung (GND/5 V) als Pufferkondensator.

Servo fährt nicht vollen Bereich (0–180°)

Pulsbreiten-Min/Max weichen ab. Lösung: In attach(pin, min, max) anpassen. Default: 544 µs / 2400 µs. Beispiel: myservo.attach(9, 600, 2300);

Abmessungen & 3D-Modelle

3D-Modelle (STL/STEP) für SG90 und MG996R zum Download auf Thangs.

SG90 Micro Servo

Arduino Servo-Motor Steuerung: Schritt-für-Schritt Anleitung
Arduino Servo-Motor Steuerung: Schritt-für-Schritt Anleitung

MG996R Servo

Arduino Servo-Motor Steuerung: Schritt-für-Schritt Anleitung
Arduino Servo-Motor Steuerung: Schritt-für-Schritt Anleitung

Fazit

Wir haben Servo-Grundlagen, Arduino-Steuerung (Library & manuell), Mehrfach-Steuerung, PCA9685-Erweiterung und Fehlerbehebung abgedeckt. Hersteller-/Modellunterschiede beachten – passenden Servo für die Anwendung wählen.

Viel Spaß beim Bauen! Fragen in den Kommentaren. Siehe auch meine Arduino-Projektsammlung.

Häufige Fragen (FAQ)

Wie benutze ich einen Servomotor mit Arduino?
Servo hat 3 Drähte: GND, 5 V (Strom), Signal → Arduino Digitalpin. Mit Servo-Bibliothek: myservo.attach(pin); myservo.write(winkel);
Kann Arduino Servomotoren direkt betreiben?
Kleine Servos (SG90) gehen notfalls direkt an 5 V Pin, aber bei >500 mA droht Arduino-Reset. Besser: Immer separate Stromquelle für Servos.
Wie viele Servos kann ein Arduino steuern?
Servo-Library: bis 12 (Uno/Nano), 48 (Mega). PCA9685 über I²C: 16 pro Treiber, bis 62 Treiber kaskadierbar. Immer externe Stromversorgung!

Herstellungsprozess

  1. Smartes Sparschwein: Münzprüfer mit Arduino Nano steuern
  2. Servogesteuerter Hindernisvermeidungs-Roboter: Bauen mit Arduino & HC-SR04
  3. LED per Bluetooth mit Arduino steuern – Einfache DIY-Anleitung
  4. Zwei Schrittmotoren mit Arduino Nano & Joystick steuern – Einfaches Tutorial
  5. Arduino & MPU6050: Präzise Servomotor-Steuerung mit SG90 & MG996R
  6. ThimbleKrox: Fingermontierte Maussteuerung mit Arduino Micro & MPU-6050
  7. Musikalische Töne mit Arduino erzeugen: Schritt-für-Schritt-Anleitung
  8. Arduino an NMEA‑0183 anschließen: Schritt-für-Schritt-Anleitung
  9. Aluminiumlöten meistern: Expertentechniken & praktische Anleitung
  10. Die Mechanik von Kupplungen: Umfassender Industrie-Leitfaden