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 erzeugten PWM Signals ist nicht sehr hoch 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.

Ich hatte mir vor ca. 3 Jahren einen Server Kontroller zugelegt mit dem ich bis zu 32 Servo Motoren steuern konnte. 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. Diese Größe macht sich natürlich im Preis bemerkbar.

So habe ich mich auf die Suche gemacht und bei Adafruit ein kleines Board gefunden mit dem 16 Servo Motoren gesteuert werden können über die I2C Schnittstelle mit einen PCA9685 Chip. Die Kommunikation zwischen Raspberry Pi und Servo Kontroller geht über den I2C Bus. Die passende Bibliothek für Python liefert Adafruit gleich mit.

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 so auch LEDs ansteuern und z. B. dimmen.

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

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) GND
Pin 6 (GND) VCC

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.

SunFounder PCA9685 16 Channel 12 Bit PWM Servo Driver for Arduino and Raspberry Pi
Preis: EUR 11,99
1 neu von EUR 11,991 gebraucht von EUR 11,12
Introduction
PCA9685 16-Channel 12-Bit PWM Servo Driver can help a lot when there are insufficient PWM output pins for the MCU in your project. The only condition is that the main control chip supports I2C communication, which means enabling the communication between the chip and PCA9685, so as to control multiple servos simultaneously.

Component List
- 1 * PCA9685 16-Channel 12-Bit PWM Servo Driver

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

Mallofusa ® 2 DOF Pan and Tilt with Mg995 Servos Sensor Mount for Arduino Robot Set Car Plane DIY with Mallofusa Cable Tie
Price: $23.99
2 new from $23.990 used
Package list:
1 x 2 DOF Aluminium Clamp Kit
2 x MG995 Servos
2 x Metal Gear Set of Screws

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

Raspberry Pi 3 Model B
Preis: EUR 44,00
54 neu von EUR 40,060 gebraucht
1.2GHz Quad-Core, Broadcom BCM2836, 1GB Speicher, VideoCore, LAN, HDMI, 4xUSB 2.0,microSDHC-Cardreader, Bluetooth, W-LAN

CPU-Typen: 1.2GHz Quad-Core 64bit
Chipsatz: Broadcom BCM2837
Externe Anschlüsse: 4x USB 2.0, LAN, HDMI, microSD/SDHC/SDXC-Cardreader, 40pin GPIO, Audio 3.5mm
Netzwerk: 10/100Mbit Fast Ethernet
Grafik:

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.

Zum Teil 2 „Software Installation und die ersten Tests“

16-Kanal12-bit PWM/Servo Kontroller – Teil 2 Software Installation und Test

(Visited 126 times, 1 visits today)