Buchempfehlung:
Roboter-Autos mit dem Raspberry Pi

Roboter Autos mit dem Raspberry Pi

In der Vergangenheit habe ich viele Roboter gebaut die eine L298N H-Brücke verwendet haben. Mit der L298N H-Brücke ist es möglich mit einen Raspberry Pi zwei Motoren anzusteuern und die Geschwindigkeit und die Drehrichtung zu bestimmen. Aber das Problem mit dem Raspberry Pi ist, dass kaum ein klares PWM Signal erzeugt werden kann. So passiert ist immer wieder das sich die Motoren nicht richtig drehen. Die Ursache liegt in dem durch Software erzeugten PWM Signal des Raspberry Pi. Damit ich ein sauberes und stabiles PWM Signal erzeugen kann habe ich mich dazu entschieden den Adafruit PCA9685 Servo Kontroller zu kaufen. Mit diesem Board ist es einfach ein PWM Signal für bis zu 16 Servo Motoren zu erzeugen.

Die Idee in dieser Anleitung ist es statt einem Servo Motor eine L298N H-Brücke am Servo Kontroller anzuschließen und so zwei DC Motoren über das generierte PWM Signal des PCA9685 Chips zu stuern.

Das folgende Bild zeigt meinen Versuchsaufbau mit einer L298N H-Brücke, einem Step-Down Konverter, dem PCA9685 Servo Kontroller, einem Levle-Shifter und dem Raspberry Pi. Ganz rechts sind die beiden Getriebemotoren zu sehen.

Komponenten Übersicht

Das ist die Liste der Komponenten die ich für meinen Aufbau eingesetzt habe.

  • PCA9685 Servo Kontroller
Loading ...
  • Step-Down Konverter
Loading ...
  • L298N H-Brücke bzw. Motor Treiber
Loading ...
  • I2C Level Shifter
Loading ...
  • Raspberry Pi 3 Model B
Loading ...
  • Zwei Getriebemotoren
Loading ...
  • Female to female Kabel
Loading ...
  • Kabel Y-Litze
Loading ...

Software PCA9685

Alle Programme die Du benötigst um die Getriebemotoren anzusteuern sind in Python geschrieben. Als erstes musst Du den I2C Bus an Deinem Raspberry Pi aktivieren und die Adafruit PCA9685 Bibliothek installieren.

Adafruit PCA9685 Bibliothek

Um die Adafruit Bibliothek für den PCA9685 Servo Kontroller zu installieren kannst Du die Adafruit GitHub Seite besuchen oder die nachfolgenden Befehle einem nach dem anderen ausführen im Terminal Fenster Deines Raspberry Pi. Ich habe auf Raspbian Jessie als Betriebssystem gesetzt.

Adafruit GitHub URL: https://github.com/adafruit/Adafruit_Python_PCA9685

Befehle für die Isntallation der Adafruit Bibliothek:

Befehl: sudo apt-get install git build-essential python-dev

Befehl: cd ~

Befehl: git clone https://github.com/adafruit/Adafruit_Python_PCA9685.git

Befehl: cd Adafruit_Python_PCA9685

Befehl: sudo python setup.py install

Nach der Installation der Bibliothek und nach dem alle Kabel verbunden wurden kannst Du überprüfen ob der Servo Kontroller am I2C Bus zu finden ist. Führe dazu den folgenen Befehl aus und Du solltest den Kontroller mit der initialen Adresse 40 sehen.

Befehl: sudo i2cdetect -y 1

Das folgende Bild zeigt das Ergebnis der Suche auf dem I2C Bus.

i2c detect bus result

i2c detect bus result

Jetzt kannst Du die beiden Python Programme herunter laden die ich geschrieben habe für die Ansteuerung der beiden Getriebemotoren über die H-Brücke zusammen mit dem PCA9685 Servo Kontroller.

Mit dem “RobotControlPCA9685.py” Programm kannst Du die Geschwindigkeit und Drehrichtung der beiden Motoren über die Konsole steuern. Dazu verwendest Du wie im Menü des Programmes beschrieben das Key Board. Das Programm wird im Terminal Fenster ausgeführt

Download: Robot Control PCA9685 Python program

Das Python Modul “L298NHBridgePCA9685.py“ kapselt die Logik wie der Adafruit Servo Kontroller mit der L298N H-Brücke sprechen muss damit sich die Motoren drehen. Das Modul wird durch das Programm “RobotControlPCA9685.py” importier und stellt so seine Funktionen bereit..

Download: L298N H-Bridge PCA9685 Python module

Meine Programme sind auch auf GitHub unter der folgenden URL verfügbar: https://github.com/custom-build-robots

Das folgende Bild zeigt den Versuchsaufbau aus einer anderen Perspektive.

L298N H-Bridge with a PCA9685 wiring

L298N H-Bridge with a PCA9685 wiring

Video

Das Video zeigt, wie sich die beiden Motoren drehen.

Zusammenfassung

Dieses Setup arbeitet perfekt vor allem für komplexe Roboter wie meinem Big Rob Raspberry Pi Roboter. Mit dem sehr genauen PWM Signal des PCA9685 Servo Kontroller kann ich jetzt meine Getriebemotoren sehr präzise steuern. Dieses Setup ist aus sehr kostengünstigen Komponenten aufgebaut, die es ermöglichen über die I2C Schnittstelle Getriebemotoren anzusteuern.


Ü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 1.320 times, 1 visits today)