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. So habe ich mich auf die Suche gemacht nach einem Servo Kontroller. Bei Adafruit habe ich dann ein kleines Board gefunden mit dem ich 16 Servo Motoren ansteuern kann. Die Kommunikation zwischen Raspberry Pi und dem PCA9685 Servo Kontroller erfolgt über die I2C Schnittstelle. Die passende Bibliothek für Python liefert Adafruit gleich mit.

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 macht sich natürlich im Preis und in der Größe der Platine bemerkbar. So ist der PCA9685 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 so auch LEDs ansteuern oder eine L298N H-Brücke als Motor Treiber.

Diesen Aufbau habe ich auch vorgenommen für meine Roboter Autos und habe 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.

Roboter-Autos mit dem Raspberry Pi: Planen, bauen, programmieren
Preis: EUR 29,90
38 neu von EUR 26,600 gebraucht
Planen, bauen, programmieren. Programmierung und Elektronik spielerisch entdecken. Geeignet für Maker jeden Alters!
Broschiertes Buch
Der Raspberry Pi lernt fahren! Und Sie sind sein Fahrlehrer ...

Let the good times roll: Ohne Vorwissen einfach einsteigen
Alle relevanten Programmier-, Elektronik- und Hardwaregrundlagen
Ferngesteuerte und autonome Modelle bauen; mit vollständiger Teile-Liste
Raspberry Pi und Robotik faszinieren Sie? Dann bringt Sie dieses Buch sicher richtig in Fahrt! Ob Einsteiger oder fortgeschrittener RasPi-Bastler: Schritt für Schritt lernen Sie, wie Sie mit dem Raspberry Pi ein ferngesteuertes Roboter-Auto entwickeln. Oder soll das Auto gleich selber fahren können? Perfekt, denn im zweiten Teil des Buches bauen Sie genau das: ein autonomes Roboter-Auto . Und quasi im Vorbeifahren lernen Sie alle Grundlagen , die Sie für beide Projekte benötigen. Hardware, Elektronik, Bau Ihres bevorzugten Auto-Chassis und natürlich die Programmierung der nötigen Software in Scratch und Python . Die Formel Eins gewinnen Sie mit dem Roboter-Auto vielleicht nicht - viele spannende Erkenntnisse und Lernspaß aber sicher!
Aus dem Inhalt:

Die elektronischen Komponenten kennenlernen: Raspberry Pi, Kamera- und W-LAN-Modul, Motoren, Step-Down-Converter, Ultraschall-Sensor, GPS-Empfänger u. v. m.
Die benötigten Werkzeuge kennenlernen: Lötkolben, Dritte Hand und Co.
Grundlagen zum Elektromotor
So fügt sich alles zusammen: Chassis basteln, Fahrgestell montieren, Elektronik verbauen
Grundlagen der Elektrizitätslehre
Verkabelung der elektronischen Komponenten
Den Raspberry Pi in Betrieb nehmen
Wichtige Linux-Grundlagen
Einführung in die Programmierung mit Scratch und Python
Das google-Auto hat eine und Ihres auch: Die Kamera nutzen
Auto-Steuerung: via W-LAN fernsteuern oder vollständig autonom
Liste der benötigten Elektronik-Komponenten sowie alle...

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) 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 12,99
1 neu von EUR 12,990 gebraucht
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.


Ü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
(Visited 2.553 times, 10 visits today)