Anzeige

Viele Servos mit Arduino steuern

Will man viele Servos mit Arduino steuern, stößt man schnell an die Grenze des Boards. Die USB-Stromversorgung reicht kaum für mehr als einen Servomotor. Um trotzdem viele Servos zu versorgen, gibt es einen Servomotor-Treiber. Diese Erweiterungsplatine kann bis zu 16 Servos steuern und verfügt darüber hinaus über eine Anschlussmöglichkeit für eine externe Stromversorgung. Entwickelt wurde sie von Adafruit und hört auf den schönen Namen PCA9685.

 Adafruit PCA9685

Dieser Servomotor-Treiber wird per I2C-Schnittstelle angesprochen und belegt dadurch nur zwei Arduino-Pins. Zum Betreiben gibt es eine eigene Arduino-Programmbibliothek, die die Nutzung extrem einfach macht.

Spannend am Servomotor-Treiber PCA9685 ist, dass er über Adress-Pins verfügt, die die Nutzung von bis zu 62 Servomotor-Treibern ermöglicht. Das führt zu einer Gesamtanzahl von gleichzeitig steuerbaren Servos von 992!! (die nötige Stromversorgung vorausgesetzt)

Viele Servos mit Arduino steuern - PCA9685

Installation der Adafruit PWM Programmbibliothek

Klicke in der Arduino-Software auf Sketch>Bibliothek einbinden>Bibliothek verwalten. Suche im Textfeld nach Adafruit PWM und installiere die Adafruit PWM Servo Driver Library in der aktuellen Version.

Code – Viele Servos mit Arduino steuern

In diesem Beispiel wird jeder Servo (von 0 bis 15) einmal hin und her bewegt. Den Original-Code findest du in der Arduino-Software unter Datei>Beispiele>Adafruit PWM Servo Driver Library>test.

#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>

Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();

#define SERVOMIN  150
#define SERVOMAX  600

uint8_t servonum = 0;
uint8_t numberOfServos = 16;

void setup() {
  pwm.begin();
  pwm.setPWMFreq(60);
  delay(10);
}

void loop() {
  for (uint16_t pulselen = SERVOMIN; pulselen < SERVOMAX; pulselen++) {
    pwm.setPWM(servonum, 0, pulselen);
  }

  delay(500);
  for (uint16_t pulselen = SERVOMAX; pulselen > SERVOMIN; pulselen--) {
    pwm.setPWM(servonum, 0, pulselen);
  }

  delay(500);

  servonum ++;
  if (servonum > numberOfServos-1) servonum = 0;
}

Bezugsquellen des PCA9685

Original PCA9685 von Adafruit (1 Stück für ca. $14.95)
AZDelivery PCA9685 auf Amazon* (3 Stück für ca. 12,99 €)

Projekte mit Servos

Ich würde mich freuen, wenn du diesen Beitrag bewerten würdest :-)

Durchschnittliche Bewertung 2.7 / 5. Anzahl Bewertungen: 3

Bisher keine Bewertungen! Sei der Erste, der diesen Beitrag bewertet.

Deine Meinung ist mir sehr wichtig!

Lasse uns diesen Beitrag verbessern!

Wie kann ich den Beitrag verbessern? Was würdest du dir wünschen? Was hat dir gefehlt?

Ich hoffe, der Beitrag hilft dir weiter. Und falls du weitere Fragen hast, stelle sie gern hier im Arduino-Forum.

Du willst noch tiefer in die Materie einsteigen? Dann präsentiere ich dir die neuen E-Books von StartHardware:

  • 20 Lektionen
  • Projektbasiert und kurzweilig
  • Aus den Erfahrungen unzähliger Workshops
  • Sofortiger Download

  • Die beliebtesten Projekte von StartHardware
  • Mit Code, Schaltplan und Erklärungen
  • Fachwissen-Kapitel
  • Sofortiger Download


Willst du lieber ein Buch zum Anfassen? Dann werde mit diesem hier zum Arduino-Experten! Arduino: Kompendium: Elektronik, Programmierung und Projekte* – Damit lernst du alle Tricks!

One thought on “Viele Servos mit Arduino steuern

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

 

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.