Tutorial – Raspberry Pi Roboter – Teil 2: Antrieb

Im zweiten Teil der Tutorial Reihe über Raspberry Pi Roboter geht es um den Antrieb für den Roboter.

Antrieb

Der einfachste Antrieb für einen Roboter ist der differentielle Antrieb. Dafür werden 2 unabhängig voneinander angetriebene Räder benötigt. Die Vorteile dieser Antriebsart sind:

  • Kleiner Wendekreis. Drehen auf der Stelle möglich
  • Einfache Steuerung. Wie bei einem Panzer sind rechter und linker Antrieb getrennt voneinander ansteuerbar

Gleichstrommotor

Der einfachste Radantrieb ist ein Gleichstrommotor. Ein Gleichstrommotor lässt sich einfach durch Anlegen einer Gleichspannung zum Drehen überreden. Polt man die Spannung um, läuft der Motor in die andere Richtung. Je höher die Spannung, desto schneller läuft der Motor.

[pe2-image src=“http://lh3.googleusercontent.com/-ywKcKaebc9E/VLG5riYMDyI/AAAAAAAANlw/MYBL3wy8kHc/s144-c-o/IMG_4672.JPG“ href=“https://picasaweb.google.com/100614490999857774768/RoboterStarterKitV2#6102863127677505314″ caption=“stronger 130 size motor Pololu #1117 800mA stall“ type=“image“ alt=“IMG_4672.JPG“ ]

Gleichstromgetriebemotor

Allerdings hat ein Gleichstrommotor zu wenig Drehmoment. Deshalb ist noch ein Getriebe notwendig, um ein größeres Drehmoment zu erhalten. Sonst wird sich der Roboter nicht von der Stelle bewegen. Bei einem Gleichstrom-Getriebemotor sind Motor und Getriebe in einem Gehäuse integriert.

Räder und Motoren

Wichtig bei der Auswahl der Motoren ist, dass man auch die passenden Räder findet, die an der Motorachse befestigt werden können. Des weiteren müssen die Motoren auch irgendwie mit dem Chassis verbunden werden. Wer hier nicht lange herumprobieren möchte, ist mit einem fertigen Chassis sicher besser bedient.

Als geeignete Getriebe-Motoren kommen z.B. die Solarbotics GM3/GM9 Motoren infrage. Dazu gibt es mit den GMPW-Wheels die passenden Räder.

Die GM3 Motoren haben ein Getriebe-Untersetzung von 224:1. Die GM9 Motoren haben dagegen eine kleinere Untersetzung von 143:1. Sie laufen damit annähernd doppelt so schnell als die GM3 Motoren, bei etwa dem halben Drehmoment.

[pe2-image src=“http://lh3.googleusercontent.com/-sN5FOd5SVTQ/VYbYmcaV3OI/AAAAAAAANs8/Uki39ork57g/s144-c-o/IMG_4894.JPG“ href=“https://picasaweb.google.com/100614490999857774768/MURCSPi#6162851295076408546″ caption=““ type=“image“ alt=“IMG_4894.JPG“ ]

Eine alternative Getriebe-Motor/Rad Kombination wären die Dagu DG01D Getriebemotoren mit den passenden 65mm Rädern an. Allerdings kauft man die besser zusammen mit einem passenden Chassis anstatt einzeln, wie z.B. das Dagu Magician Chassis. Die Dagu Motoren ähneln stark den Solarbotics Motoren, haben aber unterschiedliche Abmessungen und sind nicht zueinander kompatibel. Auch sind die Dagu Räder sind nicht kompatibel zu den Solarbotics Rädern.

[pe2-image src=“http://lh3.googleusercontent.com/-ANqLKW9r6lM/VYxyzO5ldSI/AAAAAAAANuI/5AAmwjnTQjg/s144-c-o/IMG_5531.JPG“ href=“https://picasaweb.google.com/100614490999857774768/MURCSPi#6164428214461887778″ caption=““ type=“image“ alt=“IMG_5531.JPG“ ]

Die Eckdaten der hier vorgestellten Getriebemotoren:

[table id=5 /]

Motor-Treiber

Die Motoren können natürlich nicht direkt an einen Raspberry Pi Ausgang gehängt werden. Dazu ist ein Motor Treiber notwendig, der den geforderten Motor-Strom liefern kann. Da die Motoren sowohl vorwärts als auch rückwärts laufen sollen, kommt als Motor-Treiber nur eine H-Brücke, auch Vierquadrantensteller genannt, in Frage. H-Brücken gibt es als fertige ICs inklusive einer vereinfachten Steuer Logik, so dass pro Motor nur 2 Prozessor Pins benötigt werden.

Der DRV8835 ist ein 2-fach Motor-Treiber in einem SMD Gehäuse. Da SMD Bauteile schwer zu verlöten sind, gibt es fertige Module im Bastler freundlichen DIL-Format. Das DRV8835 Modul von Pololu hat ein DIL-14 Format und reicht aus, um zwei Getriebemotoren mit je 1.5 A Spitzenstrom bzw. 1.2 A Dauerstrom zu versorgen.

[pe2-image src=“http://lh3.googleusercontent.com/-AnxtGvFm5LE/VYXYpJaEbcI/AAAAAAAANgw/ebqFczMST6A/s144-c-o/IMG_5516.JPG“ href=“https://picasaweb.google.com/100614490999857774768/MURCSPi#6162569866537889218″ caption=““ type=“image“ alt=“IMG_5516.JPG“ ]

De Eckdaten des DRV8835 Moduls:

[table id=4 /]

Motor-Ansteuerung

Das DRV8835 Motor-Treiber-Modul kann Motoren in zwei Betriebsarten steuern. Über den Mode Pin kann zwischen Phase/Enable Mode (Mode Pin HIGH) und In/In Mode (Mode Pin offen) umgeschaltet werden. Für unseren Fall ist der Phase/Enable Mode die richtige Wahl. Dazu wird je Motor ein Enable Pin für die Geschwindigkeitsregelung und ein Phase Pin für die Drehrichtung benötigt.

Wie regelt man die Geschwindigkeit des Motors? Wie oben bereits beschrieben durch die Höhe der anliegenden Spannung. Da ein Prozessor wie der Raspberry Pi nur digitale Ein-und Ausgänge besitzt, ist hier ein besonderer Trick notwendig. PWM, Pulsweitenmodulation heißt das Zauberwort. Hierbei wird ein Ausgang des Prozessors schnell ein und ausgeschaltet. Da der Motor recht träge reagiert, verhält sich dieser geschaltete Ausgang wie eine regelbare Ausgangsspannung. Die Regelung wird durch das Verhältnis von HIGH zu LOW bestimmt. Dieser Wert nennt man Pulsweite und wird in Prozent angegeben. Eine Pulsweite von 50 % entspricht dabei der halben Ausgangsspannung. Wollte man diese Pulsweiten durch Ein-und Ausschalten des Pins per Software steuern, wäre der Prozessor ganz schön beschäftigt. Dafür gibt es extra PWM-fähige Ausgänge, die die Pulsweiten per Hardware erzeugen. Davon stehen beim Raspberry Pi ab Version B+ 3 Stück auf der Pfostenleiste zur Verfügung (Pin #12, #13 und #18).

pwm

Für die beiden Motoren werden insgesamt 4 Pins benötigt. Um kompatibel zum Motor-Treiber Kit für Raspberry Pi und der Pololu Treiber Bibliotheken zu bleiben, werden die PWM Pins #12 und #13 und die GPIO #5 und #6 für die Richtungsumschaltung verwendet.

raspi-drv8835

[pe2-image src=“http://lh3.googleusercontent.com/-iME844YB2Fc/VYat8yDMk9I/AAAAAAAANsk/snXdNVSAVrw/s144-c-o/DRV8835-RasPi_Steckplatine.jpg“ href=“https://picasaweb.google.com/100614490999857774768/MURCSPi#6162804399842038738″ caption=““ type=“image“ alt=“DRV8835-RasPi_Steckplatine.jpg“ ]

Was die Bezeichnung der Raspberry Pi Pins betrifft; mit der Pin Nummer #12 ist nicht der Pin 12 des Steckverbinders gemeint, sondern der GPIO 12. Zur besseren Übersicht folgt hier die Belegung der 40-poligen Stiftleiste mit den GPIO Bezeichnungen:

raspi-pinout

Pin 1 der Stiftleiste ist links unten, wenn der Raspbery Pi so vor einem liegt, dass der Steckverbinder oben ist. Pin 40 ist dann der Pin rechts oben. Die Zählweise ist also alternierend unten, oben.

RasperryPi-Pinout

Software Motor-Test

Die Software basiert auf der DRV8835 Pi Library von Pololu. Das Testprogramm beschleunigt die Motoren und lässt sie abwechselnd vorwärts/rückwärts laufen.

from __future__ import print_function
import time
from pololu_drv8835_rpi import motors, MAX_SPEED

# Set up sequences of motor speeds.
test_forward_speeds = list(range(0, MAX_SPEED, 1)) + \
  [MAX_SPEED] * 200 + list(range(MAX_SPEED, 0, -1)) + [0]  

test_reverse_speeds = list(range(0, -MAX_SPEED, -1)) + \
  [-MAX_SPEED] * 200 + list(range(-MAX_SPEED, 0, 1)) + [0]  

try:
    motors.setSpeeds(0, 0)

    print("Motor 1 forward")
    for s in test_forward_speeds:
        motors.motor1.setSpeed(s)
        time.sleep(0.005)

    print("Motor 1 reverse")
    for s in test_reverse_speeds:
        motors.motor1.setSpeed(s)
        time.sleep(0.005)

    print("Motor 2 forward")
    for s in test_forward_speeds:
        motors.motor2.setSpeed(s)
        time.sleep(0.005)

    print("Motor 2 reverse")
    for s in test_reverse_speeds:
        motors.motor2.setSpeed(s)
        time.sleep(0.005)

finally:
  # Stop the motors, even if there is an exception
  # or the user presses Ctrl+C to kill the process.
  motors.setSpeeds(0, 0) 

Weblinks

Bezugsquellen für das DRV8835 Motor Treiber Modul und die Solarbotics Getriebmotoren und Räder sind Watterott und EXP-Tech.

Wie geht es weiter

Im dritten Teil geht es weiter mit dem Chassis für den Roboter.

Links

Die weiteren Teile der Serie:

2 Antworten auf „Tutorial – Raspberry Pi Roboter – Teil 2: Antrieb“

Schreibe einen Kommentar

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