Seit längerem beschäftige ich mich mit dem Raspberry Pi und der Ansteuerung von Servo Motoren. Es ist möglich Servo Motoren direkt mit dem Raspberry Pi anzusteuern. Wie das funktioniert habe ich in diesem Artikel Servomotoren mit dem Raspberry Pi steuern beschrieben. Allerdings bin ich nie so richtig zufrieden mit dem Ergebnis. Denn die Genauigkeit des mit dem Raspberry Pi erzeugten PWM Signals ist nicht sehr gut und vor allem ist dieses nicht konstant. Das führt dann immer wieder dazu, dass die Servo Motoren zittern oder heftig ausschlagen. Die Ursache liegt daran, dass der Raspberry Pi über die GPIO Pins das PWM Signal via Software erzeugt. Eine Ausnahme bilden allerdings die GPIO Anschlüsse 12 und 18. Diese werden Hardwareseitig mit einem PWM Signal belegt. Eine Lösung ist hier der PCA9685 Servo Kontroller der via I2C Bus mit dem Raspberry Pi verbunden werden kann.

Mehrere Servo Motoren parallel mit dem Raspberry Pi steuern

Für dieses Vorhaben habe ich mich auf die Suche gemacht nach einem Servo Kontroller der mit dem Rasbperry Pi kompatibel ist. Bei Adafruit habe ich dann ein kleines Servo Kontroller Board gefunden mit dem bis zu 16 Servo Motoren ansteuert werden können. Die Kommunikation zwischen Raspberry Pi und dem Servo Kontroller (tech. Bezeichnung PCA9685) erfolgt über die I2C Schnittstelle. Die passende Bibliothek für Python liefert Adafruit gleich mit. So ist es spielerisch möglich eigene Python Programme zu schreiben.

Ich hatte mir vor ca. 3 Jahren einen Servo Kontroller zugelegt mit dem ich bis zu 32 Servo Motoren ansteuern kann. Das hat perfekt funktioniert und das Board ist immer noch in meinem Metallsuchroboter eingebaut Roboter-Auto Discoverer. Allerdings ist das Board recht groß, es wird über die serielle RX/TX Schnittstelle angesteuert und ist für 32 Servo Motoren ausgelegt. Die 32 Kanäle machen sich natürlich im Preis und in der Größe der Platine bemerkbar. So ist der PCA9685 Kontroller eine günstige und einfach zu verwendende Alternative.

Das hier gezeigte Board ist ein Nachbau des Adafruit Boards aber es funktioniert auch hervorragend.

16 Kanal Servo Kontroller I2C Schnittstelle PCA9685

16 Kanal Servo Kontroller I2C Schnittstelle PCA9685

Das Board verfügt über 16 Kanäle für die Ansteuerung der Servo Motoren. Dank dem I2C Bus können bis zu 62 Boards gleichzeitig angesteuert werden wenn diese in Reihe geschalten sind. Wer also ein richtig großes Projekt plant kann mit 16 x 62 Servo Motoren etwas richtig Großes bauen. Natürlich könnte man auch mit dem Servo Kontroller LEDs ansteuern oder eine L298N H-Brücke als Motor Treiber.

Einen Aufbau mit H-Brücke für die Ansteuerung von Gleichstrommotoren habe ich auch aufgebaut für eines meiner Roboter Autos. So habe ich in meinem Roboter mit dem PCA9685 und einer L298N H-Brücke zwei Motoren angesteuert.

Wer selber vielleicht ein Roboter Auto bauen möchte für den ist eventuell mein Buch etwas.

Buch - Roboter-Autos mit dem Raspberry Pi: Planen, bauen, programmieren

Ich habe auch ein Buch veröffentlicht, in dem ich den Bau von Roboter Autos mit dem Raspberry Pi Computer Schritt für Schritt beschreibe. Ich erkläre das notwendige Basiswissen beginnend bei der Roboter Elektronik, über das Design des Chassis bis hin zum Navigieren nach GPS. Python ist die für diese Bauanleitung gewählte Programmiersprache. So wird im Buch erklärt wie Ultraschallsensoren ausgelesen werden können oder ein Motortreiber angesteuert wird. Auch kommen der Raspberry Pi und das Betriebssystem Raspbin nicht zu kurz. Mit all diesem Wissen aus dem Buch ist es möglich selber Roboter auf Basis des Raspberry Pi zu bauen.

Loading ...

Der PCA9685 Chip bzw. die Logik wird mit 3,3 V betrieben. Für die Servo Motoren verfügt das Board über eine extra Stromversorgung. Im Bild ist diese oben mittig als grüne Lüsterklemmen herausgeführt zu sehen. Denn den Strom den die Servo Motoren benötigen kann der Raspberry Pi nicht über seine 5 V Pins liefern.

Aufgebaut mit zwei Servo Motoren sieht das Setup wie auf dem folgenden Bild aus. Auf dem Bild fehlt noch der Raspberry Pi. Der kommt etwas später in dieser Anleitung mit dazu.

16 Kanal Servo Kontroller I2C Schnittstelle Servo Motoren

16 Kanal Servo Kontroller I2C Schnittstelle Servo Motoren

Servo Kontroller mit Raspberry Pi verbinden

Ihr müsst den Servo Kontroller mit vier Kabeln am Raspberry Pi anschließen. Dafür benötigt Ihre vier Female-to-Female Jumper-Kabel. Wie genau das funktioniert erkläre ich im nachfolgenden Abschnitt.

Stromversorgung Anbindung

Zwei Kabel werden für die 3,3 V Stromversorgung der Logik des Kontrollers benötigt. Verbindet also zwei Female-to-Female Jumper-Kabel mit dem Raspberry Pi mit dem Pin 1 (+ 3,3V) und mit dem Pin 6 (- GND). Am Servo Kontroller Board schließt Ihr das 3,3 V Kabel (+) am Pin „VCC“ an und das GND Kabel (-) am Pi GND des Kontrollers an.

Raspberry Pi Servo Kontroller
Pin 1 (3,3 V) VCC
Pin 6 (GND) GND

I2C Bus Anbindung

Jetzt bracht Ihr noch einmal zwei Female-to-Female Jumper-Kabel die Ihr am Raspberry Pi anschließt. Dazu steckt ihr eines auf den GPIO Pin 2 (I2C1_SDA) und eines auf den GPIO Pin 3 (I2C1_SCL). Diese Kabel stellen jetzt die Verbindung zwischen Raspberry Pi und Servo Kontroller über den I2C Bus her. Die beiden anderen Enden des Kabels steckt Ihr vom GPIO Pin 2 kommend in den Pin SDA am Servo Kontroller. Das andere Kabel vom GPIO Pin 3 kommend steckt Ihr am Servo Kontroller auf den Stecker mit der Bezeichnung SCL.

Raspberry Pi Servo Kontroller
GPIO 2 (SDA) SDA
GPIO 3 (SCL) SCL

Sind alle vier Kabel zwischen Raspberry Pi und Servo Kontroller gesteckt sollte der Aufbau wie auf dem folgenden Bild zu sehen ist aussehen.

16 Kanal Servo Kontroller I2C Schnittstelle PCA9685 logisch angeschlossen

16 Kanal Servo Kontroller I2C Schnittstelle PCA9685 logisch angeschlossen

Ich hatte für das vorherige Bild der Übersichtlichkeit zu liebe die Servo Motoren nicht mit angeschlossen. Das hole ich jetzt wieder nach. Mit zwei angeschlossenen Servo Motoren sieht das Setup dann wie folgt aus.

16 Kanal Servo Kontroller I2C Schnittstelle PCA9685 logisch angeschlossen mit Servo Motoren

16 Kanal Servo Kontroller I2C Schnittstelle PCA9685 logisch angeschlossen mit Servo Motoren

Auf dem Bild fehlt noch die externe Stromversorgung mit einer 5 V Stromquelle. Ich werde hierfür wieder einen der gängigen Step-Down Konverter verwenden und die 5 V von der Rückseite des Konverters heraus führen.

Bezugsquelle und Empfehlung für die Hardware

Hier noch etwas Werbung in eigener Sache für die Hardware. Ich habe die entsprechenden Verkaufslinks auf die Webseite von Amazon hier eingefügt.

Bei dem folgenden Angebot handelt es sich nicht um den original Adafruit Servo Kontroller. Ich habe mir diesen selber gekauft und er hat sehr gut funktioniert.

Loading ...

Wer noch die passenden Servos benötigt dem kann ich die folgenden auf Amazon empfehlen.

Loading ...

Natürlich darf der Raspberry Pi auch nicht fehlen. Denn ohne einem Raspberry Pi kann der Servo Kontroller nicht angesteuert werden.

Loading ...

Achtung

Wenn ihr mit dem I2C Bus arbeitet achtet bitte immer darauf, dass der Raspberry Pi ein 3,3 V Computer ist und das die angeschlossenen Geräte auch 3,3 V verwenden. Andernfalls könntet Ihr den Raspberry Pi mit einer Überspannung beschädigen.


Übersicht der PCA9685 Servo Kontroller Anleitungen:

16-Kanal PCA9685 Servo Kontroller - Teil 1 Einführung und Aufbau
16-Kanal PCA9685 Servo Kontroller - Teil 2 Software Installation und Test
16-Kanal PCA9685 Servo Kontroller - Teil 3 Ansteuerung einer L298N H-Brücke
16-Kanal PCA9685 Servo Kontroller - Teil 4 Ansteuerung eines LED Bandes mit Dimm-Funktion
16-Kanal PCA9685 Servo Kontroller - Spezial: Raspberry Pi elektronischer Modellbau Fahrtenregler
(Visited 4.263 times, 1 visits today)